Merge change I30d0cce2 into eclair

* changes:
  Add ContactsContract.CALLER_IS_SYNCADAPTER query parameter to the ContentProviderOperation which updates group display/should_sync values.
diff --git a/res/drawable-finger/arrow_down.png b/res/drawable-finger/arrow_down.png
deleted file mode 100644
index 8af76a3..0000000
--- a/res/drawable-finger/arrow_down.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/arrow_up.png b/res/drawable-finger/arrow_up.png
deleted file mode 100644
index b5a1f51..0000000
--- a/res/drawable-finger/arrow_up.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/dial_num_pound_blk.png b/res/drawable-finger/dial_num_pound_blk.png
deleted file mode 100644
index 4dabda4..0000000
--- a/res/drawable-finger/dial_num_pound_blk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/dial_num_pound_wht.png b/res/drawable-finger/dial_num_pound_wht.png
deleted file mode 100644
index f27ae87..0000000
--- a/res/drawable-finger/dial_num_pound_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/dial_num_star_blk.png b/res/drawable-finger/dial_num_star_blk.png
deleted file mode 100644
index af917ef..0000000
--- a/res/drawable-finger/dial_num_star_blk.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/dial_num_star_wht.png b/res/drawable-finger/dial_num_star_wht.png
deleted file mode 100644
index ffbd43f..0000000
--- a/res/drawable-finger/dial_num_star_wht.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_dark_normal.png b/res/drawable-finger/fasttrack_badge_dark_normal.png
deleted file mode 100644
index 5d10608..0000000
--- a/res/drawable-finger/fasttrack_badge_dark_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_dark_pressed.png b/res/drawable-finger/fasttrack_badge_dark_pressed.png
deleted file mode 100644
index 8cccedc..0000000
--- a/res/drawable-finger/fasttrack_badge_dark_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_light_normal.png b/res/drawable-finger/fasttrack_badge_light_normal.png
deleted file mode 100644
index 2d19931..0000000
--- a/res/drawable-finger/fasttrack_badge_light_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_light_pressed.png b/res/drawable-finger/fasttrack_badge_light_pressed.png
deleted file mode 100644
index e0ed3b6..0000000
--- a/res/drawable-finger/fasttrack_badge_light_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_badge_shadow.png b/res/drawable-finger/fasttrack_badge_shadow.png
deleted file mode 100644
index 8fe85d5..0000000
--- a/res/drawable-finger/fasttrack_badge_shadow.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_background.9.png b/res/drawable-finger/fasttrack_slider_background.9.png
deleted file mode 100644
index dc28aa7..0000000
--- a/res/drawable-finger/fasttrack_slider_background.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_normal.png b/res/drawable-finger/fasttrack_slider_btn_normal.png
deleted file mode 100644
index 0c45399..0000000
--- a/res/drawable-finger/fasttrack_slider_btn_normal.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_on.png b/res/drawable-finger/fasttrack_slider_btn_on.png
deleted file mode 100644
index 4107d82..0000000
--- a/res/drawable-finger/fasttrack_slider_btn_on.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_pressed.png b/res/drawable-finger/fasttrack_slider_btn_pressed.png
deleted file mode 100644
index ba04e06..0000000
--- a/res/drawable-finger/fasttrack_slider_btn_pressed.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_btn_selected.png b/res/drawable-finger/fasttrack_slider_btn_selected.png
deleted file mode 100644
index 126b1ed..0000000
--- a/res/drawable-finger/fasttrack_slider_btn_selected.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/ic_menu_split.png b/res/drawable-finger/ic_menu_split.png
deleted file mode 100644
index 9d69e4c..0000000
--- a/res/drawable-finger/ic_menu_split.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi-finger/badge_action_call.png b/res/drawable-hdpi-finger/badge_action_call.png
new file mode 100755
index 0000000..105f7d0
--- /dev/null
+++ b/res/drawable-hdpi-finger/badge_action_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/badge_action_sms.png b/res/drawable-hdpi-finger/badge_action_sms.png
new file mode 100755
index 0000000..a7862f6
--- /dev/null
+++ b/res/drawable-hdpi-finger/badge_action_sms.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_disable.png b/res/drawable-hdpi-finger/btn_circle_disable.png
new file mode 100755
index 0000000..ae063b5
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_disable.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_disable_focused.png b/res/drawable-hdpi-finger/btn_circle_disable_focused.png
new file mode 100755
index 0000000..7a5d4fe
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_disable_focused.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_normal.png b/res/drawable-hdpi-finger/btn_circle_normal.png
new file mode 100755
index 0000000..5eda668
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_normal.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_pressed.png b/res/drawable-hdpi-finger/btn_circle_pressed.png
new file mode 100755
index 0000000..88848ba
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_pressed.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/btn_circle_selected.png b/res/drawable-hdpi-finger/btn_circle_selected.png
new file mode 100755
index 0000000..7469070
--- /dev/null
+++ b/res/drawable-hdpi-finger/btn_circle_selected.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/contact_picture_border_highlight.9.png b/res/drawable-hdpi-finger/contact_picture_border_highlight.9.png
new file mode 100755
index 0000000..776d614
--- /dev/null
+++ b/res/drawable-hdpi-finger/contact_picture_border_highlight.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/contact_picture_border_in_list.9.png b/res/drawable-hdpi-finger/contact_picture_border_in_list.9.png
new file mode 100755
index 0000000..8166d4f
--- /dev/null
+++ b/res/drawable-hdpi-finger/contact_picture_border_in_list.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/contact_picture_border_normal.9.png b/res/drawable-hdpi-finger/contact_picture_border_normal.9.png
new file mode 100755
index 0000000..be67b1a
--- /dev/null
+++ b/res/drawable-hdpi-finger/contact_picture_border_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/contact_picture_border_pressed.9.png b/res/drawable-hdpi-finger/contact_picture_border_pressed.9.png
new file mode 100755
index 0000000..32fbaa5
--- /dev/null
+++ b/res/drawable-hdpi-finger/contact_picture_border_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_arrow_down.png b/res/drawable-hdpi-finger/fasttrack_arrow_down.png
new file mode 100644
index 0000000..7eba756
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_arrow_down.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_arrow_up.png b/res/drawable-hdpi-finger/fasttrack_arrow_up.png
new file mode 100644
index 0000000..6daf90a
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_arrow_up.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_bottom_frame.9.png b/res/drawable-hdpi-finger/fasttrack_bottom_frame.9.png
new file mode 100644
index 0000000..9fac225
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_bottom_frame.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_disambig_bottom_bg.9.png b/res/drawable-hdpi-finger/fasttrack_disambig_bottom_bg.9.png
new file mode 100644
index 0000000..4702f16
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_disambig_bottom_bg.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_disambig_checkbox_off.png b/res/drawable-hdpi-finger/fasttrack_disambig_checkbox_off.png
new file mode 100644
index 0000000..f87572c
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_disambig_checkbox_off.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_disambig_checkbox_on.png b/res/drawable-hdpi-finger/fasttrack_disambig_checkbox_on.png
new file mode 100644
index 0000000..3ea5360
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_disambig_checkbox_on.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_divider.9.png b/res/drawable-hdpi-finger/fasttrack_disambig_divider.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_divider.9.png
rename to res/drawable-hdpi-finger/fasttrack_disambig_divider.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_drop_shadow.9.png b/res/drawable-hdpi-finger/fasttrack_drop_shadow.9.png
new file mode 100644
index 0000000..5049903
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_drop_shadow.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_frame_divider_med.png b/res/drawable-hdpi-finger/fasttrack_frame_divider_med.png
new file mode 100644
index 0000000..e0e9ca4
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_frame_divider_med.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_background.png b/res/drawable-hdpi-finger/fasttrack_slider_background.png
new file mode 100644
index 0000000..c9c09ee
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_background.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_btn_normal.9.png b/res/drawable-hdpi-finger/fasttrack_slider_btn_normal.9.png
new file mode 100644
index 0000000..9d3d7ad
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_btn_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_btn_on.9.png b/res/drawable-hdpi-finger/fasttrack_slider_btn_on.9.png
new file mode 100644
index 0000000..ac2b496
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_btn_on.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_btn_pressed.9.png b/res/drawable-hdpi-finger/fasttrack_slider_btn_pressed.9.png
new file mode 100644
index 0000000..d9da598
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_btn_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_btn_selected.9.png b/res/drawable-hdpi-finger/fasttrack_slider_btn_selected.9.png
new file mode 100644
index 0000000..72d053b
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_btn_selected.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_grip_left.png b/res/drawable-hdpi-finger/fasttrack_slider_grip_left.png
new file mode 100644
index 0000000..97f12aa
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_grip_left.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_grip_right.png b/res/drawable-hdpi-finger/fasttrack_slider_grip_right.png
new file mode 100644
index 0000000..e410059
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_grip_right.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_presence_active.png b/res/drawable-hdpi-finger/fasttrack_slider_presence_active.png
new file mode 100644
index 0000000..f62e681
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_presence_active.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_presence_away.png b/res/drawable-hdpi-finger/fasttrack_slider_presence_away.png
new file mode 100644
index 0000000..0516b97
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_presence_away.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_presence_busy.png b/res/drawable-hdpi-finger/fasttrack_slider_presence_busy.png
new file mode 100644
index 0000000..26063f4
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_presence_busy.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_slider_presence_inactive.png b/res/drawable-hdpi-finger/fasttrack_slider_presence_inactive.png
new file mode 100644
index 0000000..fdcf75e
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_slider_presence_inactive.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/fasttrack_top_frame.9.png b/res/drawable-hdpi-finger/fasttrack_top_frame.9.png
new file mode 100644
index 0000000..4556bb2
--- /dev/null
+++ b/res/drawable-hdpi-finger/fasttrack_top_frame.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_btn_round_minus.png b/res/drawable-hdpi-finger/ic_btn_round_minus.png
new file mode 100755
index 0000000..27af3fa
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_btn_round_minus.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_btn_round_more.png b/res/drawable-hdpi-finger/ic_btn_round_more.png
new file mode 100755
index 0000000..9883d55
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_btn_round_more.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_btn_round_plus.png b/res/drawable-hdpi-finger/ic_btn_round_plus.png
new file mode 100755
index 0000000..b24168c
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_btn_round_plus.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_header_incoming_call.png b/res/drawable-hdpi-finger/ic_call_log_header_incoming_call.png
new file mode 100755
index 0000000..95c0255
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_header_incoming_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_header_missed_call.png b/res/drawable-hdpi-finger/ic_call_log_header_missed_call.png
new file mode 100755
index 0000000..0a43e69
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_header_missed_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_header_outgoing_call.png b/res/drawable-hdpi-finger/ic_call_log_header_outgoing_call.png
new file mode 100755
index 0000000..d061ba3
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_header_outgoing_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_list_incoming_call.png b/res/drawable-hdpi-finger/ic_call_log_list_incoming_call.png
new file mode 100755
index 0000000..9c016fa
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_list_incoming_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_list_missed_call.png b/res/drawable-hdpi-finger/ic_call_log_list_missed_call.png
new file mode 100755
index 0000000..8dcb279
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_list_missed_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_call_log_list_outgoing_call.png b/res/drawable-hdpi-finger/ic_call_log_list_outgoing_call.png
new file mode 100755
index 0000000..256de19
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_call_log_list_outgoing_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_contact_list_picture.png b/res/drawable-hdpi-finger/ic_contact_list_picture.png
new file mode 100755
index 0000000..296ab9f
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_contact_list_picture.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_contact_picture.png b/res/drawable-hdpi-finger/ic_contact_picture.png
new file mode 100755
index 0000000..7c34f5c
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_contact_picture.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_contact_picture_2.png b/res/drawable-hdpi-finger/ic_contact_picture_2.png
new file mode 100755
index 0000000..5e65276
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_contact_picture_2.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_contact_picture_3.png b/res/drawable-hdpi-finger/ic_contact_picture_3.png
new file mode 100755
index 0000000..a8ec1e1
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_contact_picture_3.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_default_number.png b/res/drawable-hdpi-finger/ic_default_number.png
new file mode 100755
index 0000000..cdc05a8
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_default_number.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dial_number_blk.png b/res/drawable-hdpi-finger/ic_dial_number_blk.png
new file mode 100755
index 0000000..cad1d80
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dial_number_blk.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dial_number_wht.png b/res/drawable-hdpi-finger/ic_dial_number_wht.png
new file mode 100755
index 0000000..54f5ac0
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dial_number_wht.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dialer_fork_add_call.png b/res/drawable-hdpi-finger/ic_dialer_fork_add_call.png
new file mode 100755
index 0000000..e046996
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dialer_fork_current_call.png b/res/drawable-hdpi-finger/ic_dialer_fork_current_call.png
new file mode 100755
index 0000000..6e1a395
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_dialer_fork_tt_keypad.png b/res/drawable-hdpi-finger/ic_dialer_fork_tt_keypad.png
new file mode 100755
index 0000000..6b50da1
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_account_list.png b/res/drawable-hdpi-finger/ic_menu_account_list.png
new file mode 100755
index 0000000..a69c642
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_account_list.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_add_picture.png b/res/drawable-hdpi-finger/ic_menu_add_picture.png
new file mode 100755
index 0000000..85faf1c
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_add_picture.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_export_contact.png b/res/drawable-hdpi-finger/ic_menu_export_contact.png
new file mode 100755
index 0000000..c9781f7
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_export_contact.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_import_contact.png b/res/drawable-hdpi-finger/ic_menu_import_contact.png
new file mode 100755
index 0000000..18de61f
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_import_contact.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_merge.png b/res/drawable-hdpi-finger/ic_menu_merge.png
new file mode 100644
index 0000000..d3ed8cc
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_merge.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_menu_show_barcode.png b/res/drawable-hdpi-finger/ic_menu_show_barcode.png
new file mode 100755
index 0000000..e36efdd
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_menu_show_barcode.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_tab_selected_friends_list.png b/res/drawable-hdpi-finger/ic_tab_selected_friends_list.png
new file mode 100755
index 0000000..201b80f
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_tab_selected_friends_list.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/ic_tab_unselected_friends_list.png b/res/drawable-hdpi-finger/ic_tab_unselected_friends_list.png
new file mode 100755
index 0000000..6a31485
--- /dev/null
+++ b/res/drawable-hdpi-finger/ic_tab_unselected_friends_list.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_add.png b/res/drawable-hdpi-finger/sym_action_add.png
new file mode 100755
index 0000000..45a9ec5
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_add.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_map.png b/res/drawable-hdpi-finger/sym_action_map.png
new file mode 100755
index 0000000..cf00c7b
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_map.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_organization.png b/res/drawable-hdpi-finger/sym_action_organization.png
new file mode 100755
index 0000000..9db8b44
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_organization.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_sms.png b/res/drawable-hdpi-finger/sym_action_sms.png
new file mode 100755
index 0000000..4596737
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_sms.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_action_view_contact.png b/res/drawable-hdpi-finger/sym_action_view_contact.png
new file mode 100755
index 0000000..3a016ff
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_action_view_contact.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_note.png b/res/drawable-hdpi-finger/sym_note.png
new file mode 100755
index 0000000..5257329
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_note.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_ringtone.png b/res/drawable-hdpi-finger/sym_ringtone.png
new file mode 100755
index 0000000..ad103e8
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_ringtone.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/sym_send_to_voicemail.png b/res/drawable-hdpi-finger/sym_send_to_voicemail.png
new file mode 100755
index 0000000..ac43473
--- /dev/null
+++ b/res/drawable-hdpi-finger/sym_send_to_voicemail.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/title_bar_shadow.9.png b/res/drawable-hdpi-finger/title_bar_shadow.9.png
new file mode 100755
index 0000000..a5e458a
--- /dev/null
+++ b/res/drawable-hdpi-finger/title_bar_shadow.9.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_contacts_details.png b/res/drawable-hdpi/ic_contacts_details.png
new file mode 100755
index 0000000..35f8106
--- /dev/null
+++ b/res/drawable-hdpi/ic_contacts_details.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_mark.png b/res/drawable-hdpi/ic_menu_mark.png
new file mode 100755
index 0000000..724d787
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_mark.png
Binary files differ
diff --git a/res/drawable-finger/badge_action_call.png b/res/drawable-mdpi-finger/badge_action_call.png
similarity index 100%
rename from res/drawable-finger/badge_action_call.png
rename to res/drawable-mdpi-finger/badge_action_call.png
Binary files differ
diff --git a/res/drawable-finger/badge_action_sms.png b/res/drawable-mdpi-finger/badge_action_sms.png
similarity index 100%
rename from res/drawable-finger/badge_action_sms.png
rename to res/drawable-mdpi-finger/badge_action_sms.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_disable.png b/res/drawable-mdpi-finger/btn_circle_disable.png
similarity index 100%
rename from res/drawable-finger/btn_circle_disable.png
rename to res/drawable-mdpi-finger/btn_circle_disable.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_disable_focused.png b/res/drawable-mdpi-finger/btn_circle_disable_focused.png
similarity index 100%
rename from res/drawable-finger/btn_circle_disable_focused.png
rename to res/drawable-mdpi-finger/btn_circle_disable_focused.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_normal.png b/res/drawable-mdpi-finger/btn_circle_normal.png
similarity index 100%
rename from res/drawable-finger/btn_circle_normal.png
rename to res/drawable-mdpi-finger/btn_circle_normal.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_pressed.png b/res/drawable-mdpi-finger/btn_circle_pressed.png
similarity index 100%
rename from res/drawable-finger/btn_circle_pressed.png
rename to res/drawable-mdpi-finger/btn_circle_pressed.png
Binary files differ
diff --git a/res/drawable-finger/btn_circle_selected.png b/res/drawable-mdpi-finger/btn_circle_selected.png
similarity index 100%
rename from res/drawable-finger/btn_circle_selected.png
rename to res/drawable-mdpi-finger/btn_circle_selected.png
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_highlight.9.png b/res/drawable-mdpi-finger/contact_picture_border_highlight.9.png
similarity index 100%
rename from res/drawable-finger/contact_picture_border_highlight.9.png
rename to res/drawable-mdpi-finger/contact_picture_border_highlight.9.png
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_in_list.9.png b/res/drawable-mdpi-finger/contact_picture_border_in_list.9.png
similarity index 100%
rename from res/drawable-finger/contact_picture_border_in_list.9.png
rename to res/drawable-mdpi-finger/contact_picture_border_in_list.9.png
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_normal.9.png b/res/drawable-mdpi-finger/contact_picture_border_normal.9.png
similarity index 100%
rename from res/drawable-finger/contact_picture_border_normal.9.png
rename to res/drawable-mdpi-finger/contact_picture_border_normal.9.png
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_pressed.9.png b/res/drawable-mdpi-finger/contact_picture_border_pressed.9.png
similarity index 100%
rename from res/drawable-finger/contact_picture_border_pressed.9.png
rename to res/drawable-mdpi-finger/contact_picture_border_pressed.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_down.png b/res/drawable-mdpi-finger/fasttrack_arrow_down.png
similarity index 100%
rename from res/drawable-finger/fasttrack_arrow_down.png
rename to res/drawable-mdpi-finger/fasttrack_arrow_down.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_up.png b/res/drawable-mdpi-finger/fasttrack_arrow_up.png
similarity index 100%
rename from res/drawable-finger/fasttrack_arrow_up.png
rename to res/drawable-mdpi-finger/fasttrack_arrow_up.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_bottom_frame.9.png b/res/drawable-mdpi-finger/fasttrack_bottom_frame.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_bottom_frame.9.png
rename to res/drawable-mdpi-finger/fasttrack_bottom_frame.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_bottom_bg.9.png b/res/drawable-mdpi-finger/fasttrack_disambig_bottom_bg.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_bottom_bg.9.png
rename to res/drawable-mdpi-finger/fasttrack_disambig_bottom_bg.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_checkbox_off.png b/res/drawable-mdpi-finger/fasttrack_disambig_checkbox_off.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_checkbox_off.png
rename to res/drawable-mdpi-finger/fasttrack_disambig_checkbox_off.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_checkbox_on.png b/res/drawable-mdpi-finger/fasttrack_disambig_checkbox_on.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_checkbox_on.png
rename to res/drawable-mdpi-finger/fasttrack_disambig_checkbox_on.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_divider.9.png b/res/drawable-mdpi-finger/fasttrack_disambig_divider.9.png
similarity index 100%
copy from res/drawable-finger/fasttrack_disambig_divider.9.png
copy to res/drawable-mdpi-finger/fasttrack_disambig_divider.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_drop_shadow.9.png b/res/drawable-mdpi-finger/fasttrack_drop_shadow.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_drop_shadow.9.png
rename to res/drawable-mdpi-finger/fasttrack_drop_shadow.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_frame_divider_med.png b/res/drawable-mdpi-finger/fasttrack_frame_divider_med.png
similarity index 100%
rename from res/drawable-finger/fasttrack_frame_divider_med.png
rename to res/drawable-mdpi-finger/fasttrack_frame_divider_med.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/fasttrack_slider_background.png b/res/drawable-mdpi-finger/fasttrack_slider_background.png
new file mode 100644
index 0000000..b6a9f91
--- /dev/null
+++ b/res/drawable-mdpi-finger/fasttrack_slider_background.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/fasttrack_slider_btn_normal.9.png b/res/drawable-mdpi-finger/fasttrack_slider_btn_normal.9.png
new file mode 100644
index 0000000..cf4f1e4
--- /dev/null
+++ b/res/drawable-mdpi-finger/fasttrack_slider_btn_normal.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/fasttrack_slider_btn_on.9.png b/res/drawable-mdpi-finger/fasttrack_slider_btn_on.9.png
new file mode 100644
index 0000000..330f49b
--- /dev/null
+++ b/res/drawable-mdpi-finger/fasttrack_slider_btn_on.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/fasttrack_slider_btn_pressed.9.png b/res/drawable-mdpi-finger/fasttrack_slider_btn_pressed.9.png
new file mode 100644
index 0000000..d4916f5
--- /dev/null
+++ b/res/drawable-mdpi-finger/fasttrack_slider_btn_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/fasttrack_slider_btn_selected.9.png b/res/drawable-mdpi-finger/fasttrack_slider_btn_selected.9.png
new file mode 100644
index 0000000..b910028
--- /dev/null
+++ b/res/drawable-mdpi-finger/fasttrack_slider_btn_selected.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_grip_left.png b/res/drawable-mdpi-finger/fasttrack_slider_grip_left.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_grip_left.png
rename to res/drawable-mdpi-finger/fasttrack_slider_grip_left.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_grip_right.png b/res/drawable-mdpi-finger/fasttrack_slider_grip_right.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_grip_right.png
rename to res/drawable-mdpi-finger/fasttrack_slider_grip_right.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_active.png b/res/drawable-mdpi-finger/fasttrack_slider_presence_active.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_active.png
rename to res/drawable-mdpi-finger/fasttrack_slider_presence_active.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_away.png b/res/drawable-mdpi-finger/fasttrack_slider_presence_away.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_away.png
rename to res/drawable-mdpi-finger/fasttrack_slider_presence_away.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_busy.png b/res/drawable-mdpi-finger/fasttrack_slider_presence_busy.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_busy.png
rename to res/drawable-mdpi-finger/fasttrack_slider_presence_busy.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_inactive.png b/res/drawable-mdpi-finger/fasttrack_slider_presence_inactive.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_inactive.png
rename to res/drawable-mdpi-finger/fasttrack_slider_presence_inactive.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_top_frame.9.png b/res/drawable-mdpi-finger/fasttrack_top_frame.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_top_frame.9.png
rename to res/drawable-mdpi-finger/fasttrack_top_frame.9.png
Binary files differ
diff --git a/res/drawable-finger/ic_btn_round_minus.png b/res/drawable-mdpi-finger/ic_btn_round_minus.png
similarity index 100%
rename from res/drawable-finger/ic_btn_round_minus.png
rename to res/drawable-mdpi-finger/ic_btn_round_minus.png
Binary files differ
diff --git a/res/drawable-finger/ic_btn_round_more.png b/res/drawable-mdpi-finger/ic_btn_round_more.png
similarity index 100%
rename from res/drawable-finger/ic_btn_round_more.png
rename to res/drawable-mdpi-finger/ic_btn_round_more.png
Binary files differ
diff --git a/res/drawable-finger/ic_btn_round_plus.png b/res/drawable-mdpi-finger/ic_btn_round_plus.png
similarity index 100%
rename from res/drawable-finger/ic_btn_round_plus.png
rename to res/drawable-mdpi-finger/ic_btn_round_plus.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_header_incoming_call.png b/res/drawable-mdpi-finger/ic_call_log_header_incoming_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_header_incoming_call.png
rename to res/drawable-mdpi-finger/ic_call_log_header_incoming_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_header_missed_call.png b/res/drawable-mdpi-finger/ic_call_log_header_missed_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_header_missed_call.png
rename to res/drawable-mdpi-finger/ic_call_log_header_missed_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_header_outgoing_call.png b/res/drawable-mdpi-finger/ic_call_log_header_outgoing_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_header_outgoing_call.png
rename to res/drawable-mdpi-finger/ic_call_log_header_outgoing_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_list_incoming_call.png b/res/drawable-mdpi-finger/ic_call_log_list_incoming_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_list_incoming_call.png
rename to res/drawable-mdpi-finger/ic_call_log_list_incoming_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_list_missed_call.png b/res/drawable-mdpi-finger/ic_call_log_list_missed_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_list_missed_call.png
rename to res/drawable-mdpi-finger/ic_call_log_list_missed_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_list_outgoing_call.png b/res/drawable-mdpi-finger/ic_call_log_list_outgoing_call.png
similarity index 100%
rename from res/drawable-finger/ic_call_log_list_outgoing_call.png
rename to res/drawable-mdpi-finger/ic_call_log_list_outgoing_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_contact_list_picture.png b/res/drawable-mdpi-finger/ic_contact_list_picture.png
similarity index 100%
rename from res/drawable-finger/ic_contact_list_picture.png
rename to res/drawable-mdpi-finger/ic_contact_list_picture.png
Binary files differ
diff --git a/res/drawable-finger/ic_contact_picture.png b/res/drawable-mdpi-finger/ic_contact_picture.png
similarity index 100%
rename from res/drawable-finger/ic_contact_picture.png
rename to res/drawable-mdpi-finger/ic_contact_picture.png
Binary files differ
diff --git a/res/drawable-finger/ic_contact_picture_2.png b/res/drawable-mdpi-finger/ic_contact_picture_2.png
similarity index 100%
rename from res/drawable-finger/ic_contact_picture_2.png
rename to res/drawable-mdpi-finger/ic_contact_picture_2.png
Binary files differ
diff --git a/res/drawable-finger/ic_contact_picture_3.png b/res/drawable-mdpi-finger/ic_contact_picture_3.png
similarity index 100%
rename from res/drawable-finger/ic_contact_picture_3.png
rename to res/drawable-mdpi-finger/ic_contact_picture_3.png
Binary files differ
diff --git a/res/drawable-finger/ic_default_number.png b/res/drawable-mdpi-finger/ic_default_number.png
similarity index 100%
rename from res/drawable-finger/ic_default_number.png
rename to res/drawable-mdpi-finger/ic_default_number.png
Binary files differ
diff --git a/res/drawable-finger/ic_dial_number_blk.png b/res/drawable-mdpi-finger/ic_dial_number_blk.png
similarity index 100%
rename from res/drawable-finger/ic_dial_number_blk.png
rename to res/drawable-mdpi-finger/ic_dial_number_blk.png
Binary files differ
diff --git a/res/drawable-finger/ic_dial_number_wht.png b/res/drawable-mdpi-finger/ic_dial_number_wht.png
similarity index 100%
rename from res/drawable-finger/ic_dial_number_wht.png
rename to res/drawable-mdpi-finger/ic_dial_number_wht.png
Binary files differ
diff --git a/res/drawable-finger/ic_dialer_fork_add_call.png b/res/drawable-mdpi-finger/ic_dialer_fork_add_call.png
similarity index 100%
rename from res/drawable-finger/ic_dialer_fork_add_call.png
rename to res/drawable-mdpi-finger/ic_dialer_fork_add_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_dialer_fork_current_call.png b/res/drawable-mdpi-finger/ic_dialer_fork_current_call.png
similarity index 100%
rename from res/drawable-finger/ic_dialer_fork_current_call.png
rename to res/drawable-mdpi-finger/ic_dialer_fork_current_call.png
Binary files differ
diff --git a/res/drawable-finger/ic_dialer_fork_tt_keypad.png b/res/drawable-mdpi-finger/ic_dialer_fork_tt_keypad.png
similarity index 100%
rename from res/drawable-finger/ic_dialer_fork_tt_keypad.png
rename to res/drawable-mdpi-finger/ic_dialer_fork_tt_keypad.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_account_list.png b/res/drawable-mdpi-finger/ic_menu_account_list.png
similarity index 100%
rename from res/drawable-finger/ic_menu_account_list.png
rename to res/drawable-mdpi-finger/ic_menu_account_list.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_add_picture.png b/res/drawable-mdpi-finger/ic_menu_add_picture.png
similarity index 100%
rename from res/drawable-finger/ic_menu_add_picture.png
rename to res/drawable-mdpi-finger/ic_menu_add_picture.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_export_contact.png b/res/drawable-mdpi-finger/ic_menu_export_contact.png
similarity index 100%
rename from res/drawable-finger/ic_menu_export_contact.png
rename to res/drawable-mdpi-finger/ic_menu_export_contact.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_import_contact.png b/res/drawable-mdpi-finger/ic_menu_import_contact.png
similarity index 100%
rename from res/drawable-finger/ic_menu_import_contact.png
rename to res/drawable-mdpi-finger/ic_menu_import_contact.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_merge.png b/res/drawable-mdpi-finger/ic_menu_merge.png
similarity index 100%
rename from res/drawable-finger/ic_menu_merge.png
rename to res/drawable-mdpi-finger/ic_menu_merge.png
Binary files differ
diff --git a/res/drawable-finger/ic_menu_show_barcode.png b/res/drawable-mdpi-finger/ic_menu_show_barcode.png
similarity index 100%
rename from res/drawable-finger/ic_menu_show_barcode.png
rename to res/drawable-mdpi-finger/ic_menu_show_barcode.png
Binary files differ
diff --git a/res/drawable-finger/ic_tab_selected_friends_list.png b/res/drawable-mdpi-finger/ic_tab_selected_friends_list.png
similarity index 100%
rename from res/drawable-finger/ic_tab_selected_friends_list.png
rename to res/drawable-mdpi-finger/ic_tab_selected_friends_list.png
Binary files differ
diff --git a/res/drawable-finger/ic_tab_unselected_friends_list.png b/res/drawable-mdpi-finger/ic_tab_unselected_friends_list.png
similarity index 100%
rename from res/drawable-finger/ic_tab_unselected_friends_list.png
rename to res/drawable-mdpi-finger/ic_tab_unselected_friends_list.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_add.png b/res/drawable-mdpi-finger/sym_action_add.png
similarity index 100%
rename from res/drawable-finger/sym_action_add.png
rename to res/drawable-mdpi-finger/sym_action_add.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_map.png b/res/drawable-mdpi-finger/sym_action_map.png
similarity index 100%
rename from res/drawable-finger/sym_action_map.png
rename to res/drawable-mdpi-finger/sym_action_map.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_organization.png b/res/drawable-mdpi-finger/sym_action_organization.png
similarity index 100%
rename from res/drawable-finger/sym_action_organization.png
rename to res/drawable-mdpi-finger/sym_action_organization.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_sms.png b/res/drawable-mdpi-finger/sym_action_sms.png
similarity index 100%
rename from res/drawable-finger/sym_action_sms.png
rename to res/drawable-mdpi-finger/sym_action_sms.png
Binary files differ
diff --git a/res/drawable-finger/sym_action_view_contact.png b/res/drawable-mdpi-finger/sym_action_view_contact.png
similarity index 100%
rename from res/drawable-finger/sym_action_view_contact.png
rename to res/drawable-mdpi-finger/sym_action_view_contact.png
Binary files differ
diff --git a/res/drawable-finger/sym_note.png b/res/drawable-mdpi-finger/sym_note.png
similarity index 100%
rename from res/drawable-finger/sym_note.png
rename to res/drawable-mdpi-finger/sym_note.png
Binary files differ
diff --git a/res/drawable-finger/sym_ringtone.png b/res/drawable-mdpi-finger/sym_ringtone.png
similarity index 100%
rename from res/drawable-finger/sym_ringtone.png
rename to res/drawable-mdpi-finger/sym_ringtone.png
Binary files differ
diff --git a/res/drawable-finger/sym_send_to_voicemail.png b/res/drawable-mdpi-finger/sym_send_to_voicemail.png
similarity index 100%
rename from res/drawable-finger/sym_send_to_voicemail.png
rename to res/drawable-mdpi-finger/sym_send_to_voicemail.png
Binary files differ
diff --git a/res/drawable-finger/title_bar_shadow.9.png b/res/drawable-mdpi-finger/title_bar_shadow.9.png
similarity index 100%
rename from res/drawable-finger/title_bar_shadow.9.png
rename to res/drawable-mdpi-finger/title_bar_shadow.9.png
Binary files differ
diff --git a/res/drawable/ic_contacts_details.png b/res/drawable-mdpi/ic_contacts_details.png
similarity index 100%
rename from res/drawable/ic_contacts_details.png
rename to res/drawable-mdpi/ic_contacts_details.png
Binary files differ
diff --git a/res/drawable/ic_menu_mark.png b/res/drawable-mdpi/ic_menu_mark.png
similarity index 100%
rename from res/drawable/ic_menu_mark.png
rename to res/drawable-mdpi/ic_menu_mark.png
Binary files differ
diff --git a/res/layout-finger/contacts_list_item.xml b/res/layout-finger/contacts_list_item.xml
index 0e7852e..775e163 100644
--- a/res/layout-finger/contacts_list_item.xml
+++ b/res/layout-finger/contacts_list_item.xml
@@ -58,7 +58,9 @@
                 <View android:id="@+id/divider"
                     android:layout_width="1px"
                     android:layout_height="fill_parent"
-                    android:background="@*android:drawable/divider_vertical_dark_opaque"
+                    android:layout_marginTop="5dip"
+                    android:layout_marginBottom="5dip"
+                    android:background="@drawable/divider_vertical_dark"
                 />
 
                 <com.android.contacts.ui.widget.DontPressWithParentImageView android:id="@+id/call_button"
diff --git a/res/layout-finger/contacts_list_item_photo.xml b/res/layout-finger/contacts_list_item_photo.xml
index b15c586..f387502 100644
--- a/res/layout-finger/contacts_list_item_photo.xml
+++ b/res/layout-finger/contacts_list_item_photo.xml
@@ -30,7 +30,7 @@
     <RelativeLayout
         android:layout_width="fill_parent"
         android:layout_height="?android:attr/listPreferredItemHeight"
-        android:paddingLeft="5dip"
+        android:paddingLeft="4dip"
     >
 
         <LinearLayout android:id="@+id/right_side"
@@ -58,7 +58,9 @@
                 <View android:id="@+id/divider"
                     android:layout_width="1px"
                     android:layout_height="fill_parent"
-                    android:background="@*android:drawable/divider_vertical_dark_opaque"
+                    android:layout_marginTop="5dip"
+                    android:layout_marginBottom="5dip"
+                    android:background="@drawable/divider_vertical_dark"
                 />
 
                 <com.android.contacts.ui.widget.DontPressWithParentImageView android:id="@+id/call_button"
diff --git a/res/layout-finger/list_item_text_icons.xml b/res/layout-finger/list_item_text_icons.xml
index f87aab8..552d28a 100644
--- a/res/layout-finger/list_item_text_icons.xml
+++ b/res/layout-finger/list_item_text_icons.xml
@@ -43,28 +43,28 @@
             android:textAppearance="?android:attr/textAppearanceLarge"
         />
 
-		<LinearLayout
-		    android:layout_width="wrap_content"
-		    android:layout_height="wrap_content"
-		    android:orientation="horizontal"
-		>
-		    
-	        <TextView android:id="@android:id/text2"
-	            android:layout_width="wrap_content"
-	            android:layout_height="wrap_content"
-	            android:layout_gravity="center_vertical"
-	            android:textAppearance="?android:attr/textAppearanceSmall"
-	        />
-	
-	        <ImageView android:id="@+id/primary_icon"
-	            android:layout_width="wrap_content"
-	            android:layout_height="wrap_content"
-	            android:layout_gravity="center_vertical"
-	            android:paddingLeft="3dip"
-	            android:src="@drawable/ic_default_number"
-	        />
-    	</LinearLayout>
-    	
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+        >
+            
+            <TextView android:id="@android:id/text2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical"
+                android:textAppearance="?android:attr/textAppearanceSmall"
+            />
+    
+            <ImageView android:id="@+id/primary_icon"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical"
+                android:paddingLeft="3dip"
+                android:src="@drawable/ic_default_number"
+            />
+        </LinearLayout>
+        
     </LinearLayout>
 
     <ImageView android:id="@+id/presence_icon"
@@ -85,8 +85,10 @@
     />
     
     <View android:id="@+id/divider"
-        android:layout_width="1dip"
+        android:layout_width="1px"
         android:layout_height="fill_parent"
+        android:layout_marginTop="5dip"
+        android:layout_marginBottom="5dip"
         android:background="@drawable/divider_vertical_dark"
     />
 
diff --git a/res/menu/edit.xml b/res/menu/edit.xml
index 3a24f27..658a567 100644
--- a/res/menu/edit.xml
+++ b/res/menu/edit.xml
@@ -47,4 +47,13 @@
         android:icon="@android:drawable/ic_menu_delete"
         android:title="@string/removePicture" />
 
+    <item
+        android:id="@+id/menu_split"
+        android:icon="@drawable/ic_menu_merge"
+        android:title="@string/menu_splitAggregate" />
+
+    <item
+        android:id="@+id/menu_join"
+        android:icon="@drawable/ic_menu_merge"
+        android:title="@string/menu_joinAggregate" />
 </menu>
diff --git a/res/values/ids.xml b/res/values/ids.xml
index cf1d419..92b0eac 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -41,6 +41,12 @@
     <item type="id" name="dialog_io_exception" />
     <item type="id" name="dialog_error_with_message" />
 
+    <!-- For ContactsListActivity -->
+    <item type="id" name="dialog_delete_contact_confirmation" />
+    <item type="id" name="dialog_cannot_delete_readonly_contact" />
+    <item type="id" name="dialog_multiple_contact_delete_confirmation" />
+    <item type="id" name="dialog_readonly_contact_delete_confirmation" />
+
     <!-- For ExportVCard -->
     <item type="id" name="dialog_export_confirmation" />
     <item type="id" name="dialog_fail_to_export_with_reason" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4df8b7c..5bdc152 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -165,7 +165,16 @@
     <!-- Confirmation dialog title after users selects to delete a contact. -->
     <string name="deleteConfirmation_title">Delete</string>
 
-    <!-- Confirmation dialog contents after users selects to delete a contact. -->
+    <!-- Warning dialog contents after users selects to delete a ReadOnly contact. -->
+    <string name="readOnlyContactWarning">You cannot delete contacts from read-only accounts.</string>
+
+    <!-- Warning dialog contents after users selects to delete a contact with ReadOnly and Writable sources. -->
+    <string name="readOnlyContactDeleteConfirmation">This contact contains information from multiple accounts. The information from read-only accounts will not be deleted.</string>
+
+    <!-- Warning dialog contents after users selects to delete a contact with multiple Writable sources. -->
+    <string name="multipleContactDeleteConfirmation">Deleting this contact will delete information from multiple accounts.</string>
+
+    <!-- Confirmation dialog contents after users selects to delete a Writable contact. -->
     <string name="deleteConfirmation">This contact will be deleted.</string>
 
     <!-- Menu item to indicate you are done editing a contact and want to save the changes you've made -->
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index c7d06e2..9fcc8a6 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -102,8 +102,11 @@
 import android.widget.TextView;
 import android.widget.AbsListView.OnScrollListener;
 
+import com.android.contacts.model.ContactsSource;
+
 import java.lang.ref.SoftReference;
 import java.lang.ref.WeakReference;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -306,6 +309,12 @@
         ContactMethods.DATA, //3
         People.DISPLAY_NAME, // 4
     };
+    static final String[] RAW_CONTACTS_PROJECTION = new String[] {
+        RawContacts._ID, //0
+        RawContacts.CONTACT_ID, //1
+        RawContacts.ACCOUNT_TYPE, //2
+    };
+
     static final int POSTAL_ID_COLUMN_INDEX = 0;
     static final int POSTAL_TYPE_COLUMN_INDEX = 1;
     static final int POSTAL_LABEL_COLUMN_INDEX = 2;
@@ -324,6 +333,7 @@
     private String mQuery;
     private boolean mJustCreated;
     private boolean mSyncEnabled;
+    private Uri mSelectedContactUri;
 
 //    private boolean mDisplayAll;
     private boolean mDisplayOnlyPhones;
@@ -332,6 +342,10 @@
 
     private long mQueryAggregateId;
 
+    private ArrayList<Long> mWritableRawContactIds = new ArrayList<Long>();
+    private int  mWritableSourcesCnt;
+    private int  mReadOnlySourcesCnt;
+
     /**
      * Used to keep track of the scroll state of the list.
      */
@@ -388,7 +402,15 @@
         }
 
         public void onClick(DialogInterface dialog, int which) {
-            getContentResolver().delete(mUri, null, null);
+	    if (mReadOnlySourcesCnt > 0) {
+	        for (long rawContactIdToDelete: mWritableRawContactIds) {
+		    final Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI,
+                            rawContactIdToDelete);
+                    getContentResolver().delete(rawContactUri, null, null);
+		}
+            } else {
+	        getContentResolver().delete(mUri, null, null);
+            }
         }
     }
 
@@ -854,11 +876,44 @@
             }
             case R.id.dialog_sdcard_not_found: {
                 AlertDialog.Builder builder = new AlertDialog.Builder(this)
-                .setTitle(R.string.no_sdcard_title)
-                .setIcon(android.R.drawable.ic_dialog_alert)
-                .setMessage(R.string.no_sdcard_message)
-                .setPositiveButton(android.R.string.ok, null);
+                        .setTitle(R.string.no_sdcard_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.no_sdcard_message)
+                        .setPositiveButton(android.R.string.ok, null);
+		break;
             }
+	    case R.id.dialog_delete_contact_confirmation: {
+                AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                        .setTitle(R.string.deleteConfirmation_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.deleteConfirmation)
+                        .setNegativeButton(android.R.string.cancel, null)
+                        .setPositiveButton(android.R.string.ok, new DeleteClickListener(mSelectedContactUri));
+                break;
+            }
+            case R.id.dialog_cannot_delete_readonly_contact: {
+                AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                        .setTitle(R.string.deleteConfirmation_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.readOnlyContactWarning)
+                        .setPositiveButton(android.R.string.ok, null);
+		break;
+            }
+            case R.id.dialog_readonly_contact_delete_confirmation: {
+                AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                        .setTitle(R.string.deleteConfirmation_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.readOnlyContactDeleteConfirmation)
+                        .setPositiveButton(android.R.string.ok, new DeleteClickListener(mSelectedContactUri));
+                }
+	    case R.id.dialog_multiple_contact_delete_confirmation: {
+                AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                        .setTitle(R.string.deleteConfirmation_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.multipleContactDeleteConfirmation)
+                        .setPositiveButton(android.R.string.ok, new DeleteClickListener(mSelectedContactUri));
+                }
+
         }
         return super.onCreateDialog(id);
     }
@@ -1061,8 +1116,8 @@
             }
 
             case MENU_ITEM_DELETE: {
-                final Uri selectedUri = getContactUri(info.position);
-                doContactDelete(selectedUri);
+                mSelectedContactUri = getContactUri(info.position);
+                doContactDelete();
                 return true;
             }
         }
@@ -1082,8 +1137,8 @@
             case KeyEvent.KEYCODE_DEL: {
                 final int position = getListView().getSelectedItemPosition();
                 if (position != ListView.INVALID_POSITION) {
-                    final Uri selectedUri = getContactUri(position);
-                    doContactDelete(selectedUri);
+                    mSelectedContactUri = getContactUri(position);
+                    doContactDelete();
                     return true;
                 }
                 break;
@@ -1096,14 +1151,41 @@
     /**
      * Prompt the user before deleting the given {@link Contacts} entry.
      */
-    protected void doContactDelete(Uri contactUri) {
-        new AlertDialog.Builder(ContactsListActivity.this)
-            .setTitle(R.string.deleteConfirmation_title)
-            .setIcon(android.R.drawable.ic_dialog_alert)
-            .setMessage(R.string.deleteConfirmation)
-            .setNegativeButton(android.R.string.cancel, null)
-            .setPositiveButton(android.R.string.ok, new DeleteClickListener(contactUri))
-            .show();
+    protected void doContactDelete() {
+        mReadOnlySourcesCnt = 0;
+	mWritableSourcesCnt = 0;
+        mWritableRawContactIds.clear();
+
+	if (mSelectedContactUri != null) {
+            Cursor c = getContentResolver().query(RawContacts.CONTENT_URI,
+	            RAW_CONTACTS_PROJECTION, RawContacts.CONTACT_ID + "="
+		    + ContentUris.parseId(mSelectedContactUri), null, null);
+            Sources sources = Sources.getInstance(ContactsListActivity.this);
+            if (c != null) {
+                while (c.moveToNext()) {
+                    final String accountType = c.getString(2);
+		    final long rawContactId = c.getLong(0);
+                    ContactsSource contactsSource = sources.getInflatedSource(accountType,
+                            ContactsSource.LEVEL_SUMMARY);
+                    if (contactsSource != null && contactsSource.readOnly) {
+                        mReadOnlySourcesCnt += 1;
+                    } else {
+                        mWritableSourcesCnt += 1;
+			mWritableRawContactIds.add(rawContactId);
+		    }
+                 }
+            }
+            c.close();
+	    if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt > 0) {
+	        showDialog(R.id.dialog_readonly_contact_delete_confirmation);
+	    } else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
+	        showDialog(R.id.dialog_cannot_delete_readonly_contact);
+	    } else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
+	        showDialog(R.id.dialog_multiple_contact_delete_confirmation);
+            } else {
+	        showDialog(R.id.dialog_delete_contact_confirmation);
+	    }
+	}
     }
 
     @Override
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index bec871f..0e03cf3 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -99,6 +99,8 @@
     private static final boolean SHOW_SEPARATORS = false;
 
     private static final int DIALOG_CONFIRM_DELETE = 1;
+    private static final int DIALOG_CONFIRM_READONLY_DELETE = 2;
+    private static final int DIALOG_CONFIRM_MULTIPLE_DELETE = 3;
 
     private static final int REQUEST_JOIN_CONTACT = 1;
     private static final int REQUEST_EDIT_CONTACT = 2;
@@ -154,6 +156,9 @@
     private static final String SAVED_STATE_TABS_VISIBLE_KEY = "tabsVisibleKey";
 
     protected Long mSelectedRawContactId = null;
+    protected int mReadOnlySourcesCnt;
+    protected int mWritableSourcesCnt;
+    protected ArrayList<Long> mWritableRawContactIds = new ArrayList<Long>();
 
     private static final int TOKEN_QUERY = 0;
 
@@ -173,7 +178,15 @@
 
     public void onClick(DialogInterface dialog, int which) {
         closeCursor();
-        getContentResolver().delete(mLookupUri, null, null);
+	if (mReadOnlySourcesCnt > 0) {
+	    for (long rawContactIdToDelete: mWritableRawContactIds) {
+		final Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI,
+                        rawContactIdToDelete);
+                getContentResolver().delete(rawContactUri, null, null);
+            }
+        } else {
+	    getContentResolver().delete(mLookupUri, null, null);
+	}
         finish();
     }
 
@@ -297,6 +310,24 @@
                         .setPositiveButton(android.R.string.ok, this)
                         .setCancelable(false)
                         .create();
+            case DIALOG_CONFIRM_READONLY_DELETE:
+                return new AlertDialog.Builder(this)
+                        .setTitle(R.string.deleteConfirmation_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.readOnlyContactDeleteConfirmation)
+                        .setNegativeButton(android.R.string.cancel, null)
+                        .setPositiveButton(android.R.string.ok, this)
+                        .setCancelable(false)
+                        .create();
+            case DIALOG_CONFIRM_MULTIPLE_DELETE:
+                return new AlertDialog.Builder(this)
+                        .setTitle(R.string.deleteConfirmation_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.multipleContactDeleteConfirmation)
+                        .setNegativeButton(android.R.string.cancel, null)
+                        .setPositiveButton(android.R.string.ok, this)
+                        .setCancelable(false)
+                        .create();
         }
         return null;
     }
@@ -597,6 +628,10 @@
         final boolean hasRawContact = (mRawContactIds.size() > 0);
         menu.findItem(R.id.menu_edit).setEnabled(hasRawContact);
 
+        // Disable delete for readonly contact
+	if (mWritableSourcesCnt == 0) {
+            menu.findItem(R.id.menu_delete).setEnabled(false);
+        }
         return true;
     }
 
@@ -667,7 +702,13 @@
             }
             case R.id.menu_delete: {
                 // Get confirmation
-                showDialog(DIALOG_CONFIRM_DELETE);
+		if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
+                    showDialog(DIALOG_CONFIRM_READONLY_DELETE);
+		} else if (mWritableSourcesCnt > 1) {
+		    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
+		} else {
+		    showDialog(DIALOG_CONFIRM_DELETE);
+		}
                 return true;
             }
             case R.id.menu_join: {
@@ -857,7 +898,13 @@
             }
 
             case KeyEvent.KEYCODE_DEL: {
-                showDialog(DIALOG_CONFIRM_DELETE);
+		if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
+                    showDialog(DIALOG_CONFIRM_READONLY_DELETE);
+		} else if (mWritableSourcesCnt > 1) {
+		    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
+		} else {
+		    showDialog(DIALOG_CONFIRM_DELETE);
+		}
                 return true;
             }
         }
@@ -915,6 +962,9 @@
         }
 
         mRawContactIds.clear();
+        mReadOnlySourcesCnt = 0;
+	mWritableSourcesCnt = 0;
+        mWritableRawContactIds.clear();
 
         Sources sources = Sources.getInstance(this);
 
@@ -936,6 +986,12 @@
 
                 final ContactsSource source = sources.getInflatedSource(accountType,
                         ContactsSource.LEVEL_SUMMARY);
+	        if (source.readOnly) {
+		    mReadOnlySourcesCnt += 1;
+		} else {
+		    mWritableSourcesCnt += 1;
+                    mWritableRawContactIds.add(rawContactId);
+		}
                 final String accountName = entValues.getAsString(RawContacts.ACCOUNT_NAME);
                 mAccountName.setText(getString(R.string.account_name_format,
                         source.getDisplayLabel(this), accountName));
diff --git a/src/com/android/contacts/model/EntitySet.java b/src/com/android/contacts/model/EntitySet.java
index adc87ee..be2f70f 100644
--- a/src/com/android/contacts/model/EntitySet.java
+++ b/src/com/android/contacts/model/EntitySet.java
@@ -43,6 +43,8 @@
  * and applying another {@link EntitySet} over it.
  */
 public class EntitySet extends ArrayList<EntityDelta> implements Parcelable {
+    private boolean mSplitRawContacts;
+
     private EntitySet() {
     }
 
@@ -128,15 +130,22 @@
         }
 
         final int assertMark = diff.size();
+        int backRefs[] = new int[size()];
+
+        int rawContactIndex = 0;
 
         // Second pass builds actual operations
         for (EntityDelta delta : this) {
             final int firstBatch = diff.size();
+            backRefs[rawContactIndex++] = firstBatch;
             delta.buildDiff(diff);
 
             // Only create rules for inserts
             if (!delta.isContactInsert()) continue;
 
+            // If we are going to split all contacts, there is no point in first combining them
+            if (mSplitRawContacts) continue;
+
             if (rawContactId != -1) {
                 // Has existing contact, so bind to it strongly
                 final Builder builder = beginKeepTogether();
@@ -157,6 +166,10 @@
             }
         }
 
+        if (mSplitRawContacts) {
+            buildSplitContactDiff(diff, backRefs);
+        }
+
         // No real changes if only left with asserts
         if (diff.size() == assertMark) {
             diff.clear();
@@ -177,6 +190,47 @@
     }
 
     /**
+     * Builds {@link AggregationExceptions} to split all constituent raw contacts into
+     * separate contacts.
+     */
+    private void buildSplitContactDiff(final ArrayList<ContentProviderOperation> diff,
+            int[] backRefs) {
+        int count = size();
+        for (int i = 0; i < count; i++) {
+            for (int j = 0; j < count; j++) {
+                if (i != j) {
+                    buildSplitContactDiff(diff, i, j, backRefs);
+                }
+            }
+        }
+    }
+
+    /**
+     * Construct a {@link AggregationExceptions#TYPE_KEEP_SEPARATE}.
+     */
+    private void buildSplitContactDiff(ArrayList<ContentProviderOperation> diff, int index1,
+            int index2, int[] backRefs) {
+        Builder builder =
+                ContentProviderOperation.newUpdate(AggregationExceptions.CONTENT_URI);
+        builder.withValue(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_SEPARATE);
+
+        Long rawContactId1 = get(index1).getValues().getAsLong(RawContacts._ID);
+        if (rawContactId1 != null && rawContactId1 >= 0) {
+            builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, rawContactId1);
+        } else {
+            builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID1, backRefs[index1]);
+        }
+
+        Long rawContactId2 = get(index2).getValues().getAsLong(RawContacts._ID);
+        if (rawContactId2 != null && rawContactId2 >= 0) {
+            builder.withValue(AggregationExceptions.RAW_CONTACT_ID2, rawContactId2);
+        } else {
+            builder.withValueBackReference(AggregationExceptions.RAW_CONTACT_ID2, backRefs[index2]);
+        }
+        diff.add(builder.build());
+    }
+
+    /**
      * Search all contained {@link EntityDelta} for the first one with an
      * existing {@link RawContacts#_ID} value. Usually used when creating
      * {@link AggregationExceptions} during an update.
@@ -249,6 +303,10 @@
         return randomEntry;
     }
 
+    public void splitRawContacts() {
+        mSplitRawContacts = true;
+    }
+
     /** {@inheritDoc} */
     public int describeContents() {
         // Nothing special about this parcel
diff --git a/src/com/android/contacts/ui/EditContactActivity.java b/src/com/android/contacts/ui/EditContactActivity.java
index 9c0c69a..5e9959f 100644
--- a/src/com/android/contacts/ui/EditContactActivity.java
+++ b/src/com/android/contacts/ui/EditContactActivity.java
@@ -96,6 +96,9 @@
     private static final String KEY_EDIT_STATE = "state";
     private static final String KEY_SELECTED_RAW_CONTACT = "selected";
 
+    /** The result code when view activity should close after edit returns */
+    public static final int RESULT_CLOSE_VIEW_ACTIVITY = 777;
+
     private String mQuerySelection;
 
     private ScrollingTabWidget mTabWidget;
@@ -363,7 +366,7 @@
             this.setSelectedRawContactId(selectedRawContactId);
         } else {
             // Nothing remains to edit, save and bail entirely
-            this.doSaveAction();
+            this.doSaveAction(RESULT_OK);
         }
 
         // Show editor now that we've loaded state
@@ -461,7 +464,7 @@
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.btn_done:
-                doSaveAction();
+                doSaveAction(RESULT_OK);
                 break;
             case R.id.btn_discard:
                 doRevertAction();
@@ -472,7 +475,7 @@
     /** {@inheritDoc} */
     @Override
     public void onBackPressed() {
-        doSaveAction();
+        doSaveAction(RESULT_OK);
     }
 
     /** {@inheritDoc} */
@@ -519,7 +522,7 @@
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.menu_done:
-                return doSaveAction();
+                return doSaveAction(RESULT_OK);
             case R.id.menu_discard:
                 return doRevertAction();
             case R.id.menu_add:
@@ -530,6 +533,10 @@
                 return doPickPhotoAction();
             case R.id.menu_photo_remove:
                 return doRemovePhotoAction();
+            case R.id.menu_split:
+                return doSplitContactAction();
+            case R.id.menu_join:
+                return doJoinContactAction();
         }
         return false;
     }
@@ -552,8 +559,11 @@
 
         private WeakReference<ProgressDialog> progress;
 
-        public PersistTask(EditContactActivity target) {
+        private final int mResultCode;
+
+        public PersistTask(EditContactActivity target, int resultCode) {
             super(target);
+            mResultCode = resultCode;
         }
 
         /** {@inheritDoc} */
@@ -599,7 +609,7 @@
                          final Uri contactLookupUri = RawContacts.getContactLookupUri(resolver,
                                  rawContactUri);
                          intent.setData(contactLookupUri);
-                         target.setResult(RESULT_OK, intent);
+                         target.setResult(mResultCode, intent);
                          target.finish();
                     }
                     result = (diff.size() > 0) ? RESULT_SUCCESS : RESULT_UNCHANGED;
@@ -665,10 +675,10 @@
      * Saves or creates the contact based on the mode, and if successful
      * finishes the activity.
      */
-    private boolean doSaveAction() {
+    private boolean doSaveAction(int resultCode) {
         if (!hasValidState()) return false;
 
-        final PersistTask task = new PersistTask(this);
+        final PersistTask task = new PersistTask(this, resultCode);
         task.execute(mState);
 
         return true;
@@ -751,6 +761,16 @@
         }
     }
 
+    private boolean doSplitContactAction() {
+        mState.splitRawContacts();
+        return doSaveAction(RESULT_CLOSE_VIEW_ACTIVITY);
+    }
+
+    private boolean doJoinContactAction() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+