Merge change Ie07ae802 into eclair

* changes:
  New icon
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 67a55c0..0950ff0 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -261,14 +261,14 @@
             </intent-filter>
         </activity>
 
-        <!-- Used to show FastTrack window over a translucent activity, which is a
+        <!-- Used to show QuickContact window over a translucent activity, which is a
              temporary hack until we add better framework support. -->
         <activity
-            android:name=".ui.FastTrackActivity"
-            android:theme="@style/FullyTranslucent.FastTrack">
+            android:name=".ui.QuickContactActivity"
+            android:theme="@style/FullyTranslucent.QuickContact">
 
             <intent-filter>
-                <action android:name="com.android.contacts.action.FAST_TRACK" />
+                <action android:name="com.android.contacts.action.QUICK_CONTACT" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
             </intent-filter>
diff --git a/res/anim/fasttrack.xml b/res/anim/quickcontact.xml
similarity index 100%
rename from res/anim/fasttrack.xml
rename to res/anim/quickcontact.xml
diff --git a/res/anim/fasttrack_above_enter.xml b/res/anim/quickcontact_above_enter.xml
similarity index 100%
rename from res/anim/fasttrack_above_enter.xml
rename to res/anim/quickcontact_above_enter.xml
diff --git a/res/anim/fasttrack_above_exit.xml b/res/anim/quickcontact_above_exit.xml
similarity index 100%
rename from res/anim/fasttrack_above_exit.xml
rename to res/anim/quickcontact_above_exit.xml
diff --git a/res/anim/fasttrack_below_enter.xml b/res/anim/quickcontact_below_enter.xml
similarity index 100%
rename from res/anim/fasttrack_below_enter.xml
rename to res/anim/quickcontact_below_enter.xml
diff --git a/res/anim/fasttrack_below_exit.xml b/res/anim/quickcontact_below_exit.xml
similarity index 100%
rename from res/anim/fasttrack_below_exit.xml
rename to res/anim/quickcontact_below_exit.xml
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-finger/fasttrack_disambig_checkbox.xml b/res/drawable-finger/quickcontact_disambig_checkbox.xml
similarity index 84%
rename from res/drawable-finger/fasttrack_disambig_checkbox.xml
rename to res/drawable-finger/quickcontact_disambig_checkbox.xml
index 0bd2030..4add69c 100644
--- a/res/drawable-finger/fasttrack_disambig_checkbox.xml
+++ b/res/drawable-finger/quickcontact_disambig_checkbox.xml
@@ -18,8 +18,8 @@
     android:dither="true">
 
     <item android:state_checked="true"
-        android:drawable="@drawable/fasttrack_disambig_checkbox_on" />
+        android:drawable="@drawable/quickcontact_disambig_checkbox_on" />
     <item
-        android:drawable="@drawable/fasttrack_disambig_checkbox_off" />
+        android:drawable="@drawable/quickcontact_disambig_checkbox_off" />
 
 </selector>
diff --git a/res/drawable-finger/fasttrack_slider_btn.xml b/res/drawable-finger/quickcontact_slider_btn.xml
similarity index 72%
rename from res/drawable-finger/fasttrack_slider_btn.xml
rename to res/drawable-finger/quickcontact_slider_btn.xml
index b89a543..a1be8f4 100644
--- a/res/drawable-finger/fasttrack_slider_btn.xml
+++ b/res/drawable-finger/quickcontact_slider_btn.xml
@@ -18,14 +18,14 @@
     android:dither="true">
 
     <item android:state_checked="true"
-        android:drawable="@drawable/fasttrack_slider_btn_on" />
+        android:drawable="@drawable/quickcontact_slider_btn_on" />
     <item android:state_window_focused="false"
-        android:drawable="@drawable/fasttrack_slider_btn_normal" />
+        android:drawable="@drawable/quickcontact_slider_btn_normal" />
     <item android:state_pressed="true"
-        android:drawable="@drawable/fasttrack_slider_btn_pressed" />
+        android:drawable="@drawable/quickcontact_slider_btn_pressed" />
     <item android:state_focused="true"
-        android:drawable="@drawable/fasttrack_slider_btn_selected" />
+        android:drawable="@drawable/quickcontact_slider_btn_selected" />
     <item
-        android:drawable="@drawable/fasttrack_slider_btn_normal" />
+        android:drawable="@drawable/quickcontact_slider_btn_normal" />
 
 </selector>
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/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/quickcontact_arrow_down.png b/res/drawable-hdpi-finger/quickcontact_arrow_down.png
new file mode 100644
index 0000000..7eba756
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_arrow_down.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_arrow_up.png b/res/drawable-hdpi-finger/quickcontact_arrow_up.png
new file mode 100644
index 0000000..6daf90a
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_arrow_up.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_bottom_frame.9.png b/res/drawable-hdpi-finger/quickcontact_bottom_frame.9.png
new file mode 100644
index 0000000..9fac225
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_bottom_frame.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_disambig_bottom_bg.9.png b/res/drawable-hdpi-finger/quickcontact_disambig_bottom_bg.9.png
new file mode 100644
index 0000000..4702f16
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_disambig_bottom_bg.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_off.png b/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_off.png
new file mode 100644
index 0000000..f87572c
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_off.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_on.png b/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_on.png
new file mode 100644
index 0000000..3ea5360
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_disambig_checkbox_on.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_divider.9.png b/res/drawable-hdpi-finger/quickcontact_disambig_divider.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_divider.9.png
rename to res/drawable-hdpi-finger/quickcontact_disambig_divider.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_drop_shadow.9.png b/res/drawable-hdpi-finger/quickcontact_drop_shadow.9.png
new file mode 100644
index 0000000..5049903
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_drop_shadow.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_frame_divider_med.png b/res/drawable-hdpi-finger/quickcontact_frame_divider_med.png
new file mode 100644
index 0000000..e0e9ca4
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_frame_divider_med.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_background.png b/res/drawable-hdpi-finger/quickcontact_slider_background.png
new file mode 100644
index 0000000..c9c09ee
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_background.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_btn_normal.9.png b/res/drawable-hdpi-finger/quickcontact_slider_btn_normal.9.png
new file mode 100644
index 0000000..9d3d7ad
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_btn_normal.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_btn_on.9.png b/res/drawable-hdpi-finger/quickcontact_slider_btn_on.9.png
new file mode 100644
index 0000000..ac2b496
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_btn_on.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_btn_pressed.9.png b/res/drawable-hdpi-finger/quickcontact_slider_btn_pressed.9.png
new file mode 100644
index 0000000..d9da598
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_btn_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_btn_selected.9.png b/res/drawable-hdpi-finger/quickcontact_slider_btn_selected.9.png
new file mode 100644
index 0000000..72d053b
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_btn_selected.9.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_grip_left.png b/res/drawable-hdpi-finger/quickcontact_slider_grip_left.png
new file mode 100644
index 0000000..97f12aa
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_grip_left.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_grip_right.png b/res/drawable-hdpi-finger/quickcontact_slider_grip_right.png
new file mode 100644
index 0000000..e410059
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_grip_right.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_presence_active.png b/res/drawable-hdpi-finger/quickcontact_slider_presence_active.png
new file mode 100644
index 0000000..f62e681
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_presence_active.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_presence_away.png b/res/drawable-hdpi-finger/quickcontact_slider_presence_away.png
new file mode 100644
index 0000000..0516b97
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_presence_away.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_presence_busy.png b/res/drawable-hdpi-finger/quickcontact_slider_presence_busy.png
new file mode 100644
index 0000000..26063f4
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_presence_busy.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_slider_presence_inactive.png b/res/drawable-hdpi-finger/quickcontact_slider_presence_inactive.png
new file mode 100644
index 0000000..fdcf75e
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_slider_presence_inactive.png
Binary files differ
diff --git a/res/drawable-hdpi-finger/quickcontact_top_frame.9.png b/res/drawable-hdpi-finger/quickcontact_top_frame.9.png
new file mode 100644
index 0000000..4556bb2
--- /dev/null
+++ b/res/drawable-hdpi-finger/quickcontact_top_frame.9.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_import_export.png b/res/drawable-hdpi/ic_menu_import_export.png
new file mode 100644
index 0000000..1cefb7c
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_import_export.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/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/fasttrack_arrow_down.png b/res/drawable-mdpi-finger/quickcontact_arrow_down.png
similarity index 100%
rename from res/drawable-finger/fasttrack_arrow_down.png
rename to res/drawable-mdpi-finger/quickcontact_arrow_down.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_arrow_up.png b/res/drawable-mdpi-finger/quickcontact_arrow_up.png
similarity index 100%
rename from res/drawable-finger/fasttrack_arrow_up.png
rename to res/drawable-mdpi-finger/quickcontact_arrow_up.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_bottom_frame.9.png b/res/drawable-mdpi-finger/quickcontact_bottom_frame.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_bottom_frame.9.png
rename to res/drawable-mdpi-finger/quickcontact_bottom_frame.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_bottom_bg.9.png b/res/drawable-mdpi-finger/quickcontact_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/quickcontact_disambig_bottom_bg.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_checkbox_off.png b/res/drawable-mdpi-finger/quickcontact_disambig_checkbox_off.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_checkbox_off.png
rename to res/drawable-mdpi-finger/quickcontact_disambig_checkbox_off.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_checkbox_on.png b/res/drawable-mdpi-finger/quickcontact_disambig_checkbox_on.png
similarity index 100%
rename from res/drawable-finger/fasttrack_disambig_checkbox_on.png
rename to res/drawable-mdpi-finger/quickcontact_disambig_checkbox_on.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_disambig_divider.9.png b/res/drawable-mdpi-finger/quickcontact_disambig_divider.9.png
similarity index 100%
copy from res/drawable-finger/fasttrack_disambig_divider.9.png
copy to res/drawable-mdpi-finger/quickcontact_disambig_divider.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_drop_shadow.9.png b/res/drawable-mdpi-finger/quickcontact_drop_shadow.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_drop_shadow.9.png
rename to res/drawable-mdpi-finger/quickcontact_drop_shadow.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_frame_divider_med.png b/res/drawable-mdpi-finger/quickcontact_frame_divider_med.png
similarity index 100%
rename from res/drawable-finger/fasttrack_frame_divider_med.png
rename to res/drawable-mdpi-finger/quickcontact_frame_divider_med.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_background.png b/res/drawable-mdpi-finger/quickcontact_slider_background.png
new file mode 100644
index 0000000..b6a9f91
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_background.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_btn_normal.9.png b/res/drawable-mdpi-finger/quickcontact_slider_btn_normal.9.png
new file mode 100644
index 0000000..cf4f1e4
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_btn_normal.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_btn_on.9.png b/res/drawable-mdpi-finger/quickcontact_slider_btn_on.9.png
new file mode 100644
index 0000000..330f49b
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_btn_on.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_btn_pressed.9.png b/res/drawable-mdpi-finger/quickcontact_slider_btn_pressed.9.png
new file mode 100644
index 0000000..d4916f5
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_btn_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi-finger/quickcontact_slider_btn_selected.9.png b/res/drawable-mdpi-finger/quickcontact_slider_btn_selected.9.png
new file mode 100644
index 0000000..b910028
--- /dev/null
+++ b/res/drawable-mdpi-finger/quickcontact_slider_btn_selected.9.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_grip_left.png b/res/drawable-mdpi-finger/quickcontact_slider_grip_left.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_grip_left.png
rename to res/drawable-mdpi-finger/quickcontact_slider_grip_left.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_grip_right.png b/res/drawable-mdpi-finger/quickcontact_slider_grip_right.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_grip_right.png
rename to res/drawable-mdpi-finger/quickcontact_slider_grip_right.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_active.png b/res/drawable-mdpi-finger/quickcontact_slider_presence_active.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_active.png
rename to res/drawable-mdpi-finger/quickcontact_slider_presence_active.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_away.png b/res/drawable-mdpi-finger/quickcontact_slider_presence_away.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_away.png
rename to res/drawable-mdpi-finger/quickcontact_slider_presence_away.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_busy.png b/res/drawable-mdpi-finger/quickcontact_slider_presence_busy.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_busy.png
rename to res/drawable-mdpi-finger/quickcontact_slider_presence_busy.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_slider_presence_inactive.png b/res/drawable-mdpi-finger/quickcontact_slider_presence_inactive.png
similarity index 100%
rename from res/drawable-finger/fasttrack_slider_presence_inactive.png
rename to res/drawable-mdpi-finger/quickcontact_slider_presence_inactive.png
Binary files differ
diff --git a/res/drawable-finger/fasttrack_top_frame.9.png b/res/drawable-mdpi-finger/quickcontact_top_frame.9.png
similarity index 100%
rename from res/drawable-finger/fasttrack_top_frame.9.png
rename to res/drawable-mdpi-finger/quickcontact_top_frame.9.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-mdpi/ic_menu_import_export.png b/res/drawable-mdpi/ic_menu_import_export.png
new file mode 100644
index 0000000..4f1b608
--- /dev/null
+++ b/res/drawable-mdpi/ic_menu_import_export.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/drawable/fasttrack.9.png b/res/drawable/quickcontact.9.png
similarity index 100%
rename from res/drawable/fasttrack.9.png
rename to res/drawable/quickcontact.9.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/layout-finger/fasttrack.xml b/res/layout-finger/quickcontact.xml
similarity index 79%
rename from res/layout-finger/fasttrack.xml
rename to res/layout-finger/quickcontact.xml
index 46e5d63..33007f7 100644
--- a/res/layout-finger/fasttrack.xml
+++ b/res/layout-finger/quickcontact.xml
@@ -18,7 +18,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:background="@drawable/fasttrack_drop_shadow">
+    android:background="@drawable/quickcontact_drop_shadow">
 
     <FrameLayout
         android:id="@+id/header"
@@ -31,21 +31,21 @@
             android:inflatedId="@+id/header_small"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout="@layout/fasttrack_header_small" />
+            android:layout="@layout/quickcontact_header_small" />
 
         <ViewStub
             android:id="@+id/header_medium"
             android:inflatedId="@+id/header_medium"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout="@layout/fasttrack_header_med" />
+            android:layout="@layout/quickcontact_header_med" />
 
         <ViewStub
             android:id="@+id/header_large"
             android:inflatedId="@+id/header_large"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout="@layout/fasttrack_header_large" />
+            android:layout="@layout/quickcontact_header_large" />
 
     </FrameLayout>
 
@@ -55,11 +55,11 @@
         android:layout_height="wrap_content"
         android:layout_below="@id/header"
         android:fadingEdgeLength="0dip"
-        android:background="@drawable/fasttrack_slider_background"
+        android:background="@drawable/quickcontact_slider_background"
         android:scrollbars="none">
 
         <LinearLayout
-            android:id="@+id/fasttrack"
+            android:id="@+id/quickcontact"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:paddingTop="4dip"
@@ -69,12 +69,12 @@
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:src="@drawable/fasttrack_slider_grip_left" />
+                android:src="@drawable/quickcontact_slider_grip_left" />
 
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:src="@drawable/fasttrack_slider_grip_right" />
+                android:src="@drawable/quickcontact_slider_grip_right" />
 
         </LinearLayout>
 
@@ -85,14 +85,14 @@
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_below="@id/scroll"
-        android:background="@drawable/fasttrack_bottom_frame" />
+        android:background="@drawable/quickcontact_bottom_frame" />
 
     <LinearLayout
         android:id="@+id/footer_disambig"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_below="@id/scroll"
-        android:background="@drawable/fasttrack_disambig_bottom_bg"
+        android:background="@drawable/quickcontact_disambig_bottom_bg"
         android:orientation="vertical"
         android:visibility="gone">
 
@@ -101,8 +101,8 @@
             android:layout_width="fill_parent"
             android:layout_height="0dip"
 	    android:layout_weight="1"
-            android:background="@color/fasttrack_disambig"
-            android:divider="@drawable/fasttrack_disambig_divider"
+            android:background="@color/quickcontact_disambig"
+            android:divider="@drawable/quickcontact_disambig_divider"
             android:cacheColorHint="@null" />
 
         <CheckBox
@@ -114,9 +114,9 @@
             android:minHeight="60dip"
             android:textColor="#f000"
             android:textStyle="bold"
-            android:text="@string/fasttrack_remember_choice"
+            android:text="@string/quickcontact_remember_choice"
             android:textAppearance="?android:attr/textAppearanceSmallInverse"
-            android:button="@drawable/fasttrack_disambig_checkbox" />
+            android:button="@drawable/quickcontact_disambig_checkbox" />
 
     </LinearLayout>
 
@@ -124,7 +124,7 @@
         android:id="@+id/arrow_up"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:src="@drawable/fasttrack_arrow_up" />
+        android:src="@drawable/quickcontact_arrow_up" />
 
     <ImageView
         android:id="@+id/arrow_down"
@@ -132,6 +132,6 @@
         android:layout_height="wrap_content"
         android:layout_marginTop="-1dip"
         android:layout_below="@id/footer"
-        android:src="@drawable/fasttrack_arrow_down" />
+        android:src="@drawable/quickcontact_arrow_down" />
 
 </RelativeLayout>
diff --git a/res/layout-finger/fasttrack_header_large.xml b/res/layout-finger/quickcontact_header_large.xml
similarity index 94%
rename from res/layout-finger/fasttrack_header_large.xml
rename to res/layout-finger/quickcontact_header_large.xml
index f950349..c94f1ad 100644
--- a/res/layout-finger/fasttrack_header_large.xml
+++ b/res/layout-finger/quickcontact_header_large.xml
@@ -20,7 +20,7 @@
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:minHeight="87dip"
-    android:background="@drawable/fasttrack_top_frame"
+    android:background="@drawable/quickcontact_top_frame"
     android:gravity="center_vertical"
     android:orientation="horizontal">
 
@@ -57,7 +57,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginRight="15dip"
-        android:src="@drawable/fasttrack_slider_presence_active"
+        android:src="@drawable/quickcontact_slider_presence_active"
         android:scaleType="centerInside" />
 
 </LinearLayout>
diff --git a/res/layout-finger/fasttrack_header_med.xml b/res/layout-finger/quickcontact_header_med.xml
similarity index 93%
rename from res/layout-finger/fasttrack_header_med.xml
rename to res/layout-finger/quickcontact_header_med.xml
index 98e9233..3533502 100644
--- a/res/layout-finger/fasttrack_header_med.xml
+++ b/res/layout-finger/quickcontact_header_med.xml
@@ -20,7 +20,7 @@
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:minHeight="45dip"
-    android:background="@drawable/fasttrack_top_frame"
+    android:background="@drawable/quickcontact_top_frame"
     android:gravity="center_vertical"
     android:orientation="horizontal">
 
@@ -40,7 +40,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="1dip"
-        android:src="@drawable/fasttrack_frame_divider_med" />
+        android:src="@drawable/quickcontact_frame_divider_med" />
 
     <ImageView
         android:id="@+id/source"
diff --git a/res/layout-finger/fasttrack_header_small.xml b/res/layout-finger/quickcontact_header_small.xml
similarity index 93%
rename from res/layout-finger/fasttrack_header_small.xml
rename to res/layout-finger/quickcontact_header_small.xml
index feb49f2..3711dcc 100644
--- a/res/layout-finger/fasttrack_header_small.xml
+++ b/res/layout-finger/quickcontact_header_small.xml
@@ -19,5 +19,5 @@
     android:id="@+id/header_small"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
-    android:background="@drawable/fasttrack_top_frame"
+    android:background="@drawable/quickcontact_top_frame"
     android:orientation="horizontal" />
diff --git a/res/layout-finger/fasttrack_item.xml b/res/layout-finger/quickcontact_item.xml
similarity index 94%
rename from res/layout-finger/fasttrack_item.xml
rename to res/layout-finger/quickcontact_item.xml
index 58d85aa..819915d 100644
--- a/res/layout-finger/fasttrack_item.xml
+++ b/res/layout-finger/quickcontact_item.xml
@@ -25,4 +25,4 @@
     android:scaleType="centerInside"
     android:focusable="true"
     android:clickable="true"
-    android:background="@drawable/fasttrack_slider_btn" />
+    android:background="@drawable/quickcontact_slider_btn" />
diff --git a/res/layout-finger/fasttrack_resolve_item.xml b/res/layout-finger/quickcontact_resolve_item.xml
similarity index 100%
rename from res/layout-finger/fasttrack_resolve_item.xml
rename to res/layout-finger/quickcontact_resolve_item.xml
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/menu/list.xml b/res/menu/list.xml
index b5a2750..b8f9b76 100644
--- a/res/menu/list.xml
+++ b/res/menu/list.xml
@@ -38,7 +38,7 @@
 
     <item
         android:id="@+id/menu_import_export"
-        android:icon="@drawable/ic_menu_export_contact"
+        android:icon="@drawable/ic_menu_import_export"
         android:title="@string/menu_import_export" />
 
 </menu>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 2b3c3fc..79c7f19 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Aplikace potřebná k provedení této akce nebyla nalezena"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Zapamatovat tuto volbu"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Neznámé"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Aplikace potřebná k provedení této akce nebyla nalezena"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Zapamatovat tuto volbu"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Neznámé"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Účty"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 88d3563..1a3d060 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Der blev ikke fundet noget program til denne handling"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Husk dette valg"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Ukendte"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Der blev ikke fundet noget program til denne handling"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Husk dette valg"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Ukendte"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Konti"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index b45e33a..e13626a 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Für diese Aktion wurde keine Anwendung gefunden."</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Diese Auswahl speichern"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Unbekannt"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Für diese Aktion wurde keine Anwendung gefunden."</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Diese Auswahl speichern"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Unbekannt"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Konten"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index ce6be87..71bb3bd 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Δεν υπάρχει εφαρμογή για τη διαχείριση αυτής της ενέργειας"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Διατήρηση αυτής της ρύθμισης"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Άγνωστος"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Δεν υπάρχει εφαρμογή για τη διαχείριση αυτής της ενέργειας"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Διατήρηση αυτής της ρύθμισης"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Άγνωστος"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Λογαριασμοί"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index d051af8..8372650 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"No se encontró aplicación para permitir esta acción"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Recuerda esta opción"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Desconocido"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"No se encontró aplicación para permitir esta acción"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Recuerda esta opción"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Desconocido"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Cuentas"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index ad45fb6..3ea81a0 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"No se ha encontrado ninguna aplicación que pueda realizar esta acción."</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Recordar esta opción"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Desconocido"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"No se ha encontrado ninguna aplicación que pueda realizar esta acción."</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Recordar esta opción"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Desconocido"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Cuentas"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 26b026b..0aba70f 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Aucune application pour gérer cette action"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Mémoriser ce choix"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Inconnu"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Aucune application pour gérer cette action"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Mémoriser ce choix"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Inconnu"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Comptes"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 5797d61..9e28302 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Nessuna applicazione trovata in grado di gestire questa azione"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Memorizza questa scelta"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Sconosciuto"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Nessuna applicazione trovata in grado di gestire questa azione"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Memorizza questa scelta"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Sconosciuto"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Account"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 1e539dd..b6abc9a 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"この操作を行うアプリケーションが見つかりません"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"この選択を保存"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"不明"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"この操作を行うアプリケーションが見つかりません"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"この選択を保存"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"不明"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"アカウント"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index cd45ca9..f07aec0 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"이 작업을 처리하는 응용프로그램을 찾을 수 없습니다."</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"이 선택사항 저장"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"알 수 없음"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"이 작업을 처리하는 응용프로그램을 찾을 수 없습니다."</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"이 선택사항 저장"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"알 수 없음"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"계정"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 57d17c1..e04b8da 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Ingen programmer som kan utføre denne handlingen ble funnet"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Husk dette valget"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Ukjent"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Ingen programmer som kan utføre denne handlingen ble funnet"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Husk dette valget"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Ukjent"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Kontoer"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index d2ca5b3..e3a6ac8 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Er is geen toepassing gevonden om deze actie uit te voeren"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Deze keuze onthouden"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Onbekend"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Er is geen toepassing gevonden om deze actie uit te voeren"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Deze keuze onthouden"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Onbekend"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Accounts"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 02797d5..06523ca 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Nie znaleziono aplikacji do obsługi tej akcji"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Zapamiętaj ten wybór"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Nieznane"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Nie znaleziono aplikacji do obsługi tej akcji"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Zapamiętaj ten wybór"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Nieznane"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Konta"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 5802679..3de0004 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Não foram encontradas aplicações para executar esta acção"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Memorizar esta escolha"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Desconhecido"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Não foram encontradas aplicações para executar esta acção"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Memorizar esta escolha"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Desconhecido"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Contas"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 86423f1..6438046 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Nenhum aplicativo foi encontrado para executar esta ação."</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Lembrar desta escolha"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Desconhecido"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Nenhum aplicativo foi encontrado para executar esta ação."</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Lembrar desta escolha"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Desconhecido"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Contas"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index aa5d2f8..76256f4 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Отсутствует приложение для обработки этого действия"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Запомнить выбранное"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Неизвестно"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Отсутствует приложение для обработки этого действия"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Запомнить выбранное"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Неизвестно"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Аккаунты"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 50d9f8d..728fbca 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Inget program som kan hantera åtgärden hittades"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Kom ihåg det här valet"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Okänd"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Inget program som kan hantera åtgärden hittades"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Kom ihåg det här valet"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Okänd"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Konton"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index c8ae19c..1df1655 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"Bu eylemi gerçekleştirecek bir uygulama bulunamadı"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"Bu tercihi anımsa"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"Bilinmiyor"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"Bu eylemi gerçekleştirecek bir uygulama bulunamadı"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"Bu tercihi anımsa"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"Bilinmiyor"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Hesaplar"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 4ee3b92..cf30983 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"未找到可处理此操作的应用程序"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"记住此选择"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"未知"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"未找到可处理此操作的应用程序"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"记住此选择"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"未知"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"帐户"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index e0f04cf..df5a614 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -281,9 +281,9 @@
     <skip />
     <!-- no translation found for make_primary (5829291915305113983) -->
     <skip />
-    <string name="fasttrack_missing_app" msgid="1181287640680679441">"找不到可以處理這個動作的應用程式"</string>
-    <string name="fasttrack_remember_choice" msgid="2858356075887897116">"記住這個選擇"</string>
-    <string name="fasttrack_missing_name" msgid="7806083820928955853">"不明"</string>
+    <string name="quickcontact_missing_app" msgid="1181287640680679441">"找不到可以處理這個動作的應用程式"</string>
+    <string name="quickcontact_remember_choice" msgid="2858356075887897116">"記住這個選擇"</string>
+    <string name="quickcontact_missing_name" msgid="7806083820928955853">"不明"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"帳戶"</string>
     <!-- no translation found for menu_import_export (3765725645491577190) -->
     <skip />
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 12630c0..880c269 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -18,6 +18,6 @@
     <color name="textColorIconOverlay">#fff</color>
     <color name="textColorIconOverlayShadow">#000</color>
     <color name="sect_secondary">#4fff</color>
-    <color name="fasttrack_disambig">#f2f2f2</color>
-    <color name="fasttrack_disambig_divider">#afafaf</color>
+    <color name="quickcontact_disambig">#f2f2f2</color>
+    <color name="quickcontact_disambig_divider">#afafaf</color>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4361fd4..845c3dc 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -15,7 +15,7 @@
 -->
 
 <resources>
-    <dimen name="fasttrack_shadow">37dip</dimen>
+    <dimen name="quickcontact_shadow">37dip</dimen>
     <dimen name="edit_photo_size">76dip</dimen>
         
     <!-- The height of the ScrollingTabWidget -->
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 407d1c5..60f784d 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 -->
@@ -909,15 +918,15 @@
 
     <!-- Shown as a toast when the user taps on a Fast-Track icon, and no application
          was found that could perform the selected action -->
-    <string name="fasttrack_missing_app">No application found to handle this action</string>
+    <string name="quickcontact_missing_app">No application found to handle this action</string>
 
     <!-- Shown as the checkbox label that, when checked, will store remember the
          selected choice and shortcut to it in the future.  For example, this would
          make a selected phone number the default. -->
-    <string name="fasttrack_remember_choice">Remember this choice</string>
+    <string name="quickcontact_remember_choice">Remember this choice</string>
 
     <!-- Shown as the header name for a person when the name is missing or unknown. -->
-    <string name="fasttrack_missing_name">Unknown</string>
+    <string name="quickcontact_missing_name">Unknown</string>
 
     <!-- The menu item to open the list of accounts -->
     <string name="menu_accounts">Accounts</string>
@@ -945,6 +954,8 @@
     <string name="organizationLabelsGroup">Organization</string>
     <!-- Header that expands to list all website types when editing a website of a contact -->
     <string name="websiteLabelsGroup">Website</string>
+    <!-- Header that expands to list all event types when editing an event of a contact -->
+    <string name="eventLabelsGroup">Event</string>
 
     <!-- Single-character overlay for home phone numbers when creating desktop shortcuts -->
     <string name="type_short_home">H</string>
@@ -962,7 +973,7 @@
 
     <!-- Shown as the header title over a collapsible section that, by default, hides
          secondary contact detail edit fields, such as birthday. -->
-    <string name="edit_secondary_collapse">Secondary details</string>
+    <string name="edit_secondary_collapse">More</string>
 
     <string name="dialog_primary_name">Primary name</string>
     <string name="dialog_new_contact_account">Create contact under account</string>
@@ -1156,7 +1167,7 @@
     <string name="split_label">Split</string>
     <!-- The explanation of what "split" will do. This needs word-smithing. -->
     <string name="split_explanation">Make this data its own contact.</string>
-    
+
     <!-- Formatting string for account name -->
     <string name="account_name_format">From <xliff:g id="source" example="Gmail">%1$s</xliff:g> account: <xliff:g id="account" example="user@gmail.com">%2$s</xliff:g></string>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 05c0916..8c5ae35 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -52,15 +52,15 @@
         <item name="android:windowContentOverlay">@null</item>
     </style>
 
-    <style name="FullyTranslucent.FastTrack">
+    <style name="FullyTranslucent.QuickContact">
         <!-- This is a hack because we want to be able to animate away the
-             FastTrack window, and we close its containing activity at the
+             QuickContact window, and we close its containing activity at the
              same time.  So put in a dummy animation so this guy sticks around
              while the fast track window is animating. -->
         <item name="android:windowAnimationStyle">@style/DummyAnimation</item>
     </style>
 
-    <style name="FastTrack">
+    <style name="QuickContact">
         <item name="android:windowFrame">@null</item>
         <item name="android:windowBackground">@android:color/transparent</item>
         <item name="android:windowIsFloating">true</item>
@@ -71,14 +71,14 @@
         -->
     </style>
 
-    <style name="FastTrackAboveAnimation">
-        <item name="android:windowEnterAnimation">@anim/fasttrack_above_enter</item>
-        <item name="android:windowExitAnimation">@anim/fasttrack_above_exit</item>
+    <style name="QuickContactAboveAnimation">
+        <item name="android:windowEnterAnimation">@anim/quickcontact_above_enter</item>
+        <item name="android:windowExitAnimation">@anim/quickcontact_above_exit</item>
     </style>
 
-    <style name="FastTrackBelowAnimation">
-        <item name="android:windowEnterAnimation">@anim/fasttrack_below_enter</item>
-        <item name="android:windowExitAnimation">@anim/fasttrack_below_exit</item>
+    <style name="QuickContactBelowAnimation">
+        <item name="android:windowEnterAnimation">@anim/quickcontact_below_enter</item>
+        <item name="android:windowExitAnimation">@anim/quickcontact_below_exit</item>
     </style>
 
     <style name="DummyAnimation">
diff --git a/src/com/android/contacts/ContactOptionsActivity.java b/src/com/android/contacts/ContactOptionsActivity.java
index fbe4604..f93ddf8 100644
--- a/src/com/android/contacts/ContactOptionsActivity.java
+++ b/src/com/android/contacts/ContactOptionsActivity.java
@@ -52,13 +52,13 @@
     private TextView mRingtoneTitle;
     private CheckBox mSendToVoicemailCheckbox;
 
-    private Uri mAggregateUri;
+    private Uri mLookupUri;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        mAggregateUri = getIntent().getData();
+        mLookupUri = getIntent().getData();
 
         setContentView(R.layout.contact_options);
 
@@ -176,7 +176,7 @@
 
     private boolean loadData() {
         Cursor c =
-                getContentResolver().query(mAggregateUri, AGGREGATES_PROJECTION, null, null, null);
+                getContentResolver().query(mLookupUri, AGGREGATES_PROJECTION, null, null, null);
         try {
             if (!c.moveToFirst()) {
                 return false;
@@ -195,7 +195,7 @@
         ContentValues values = new ContentValues(2);
         values.put(Contacts.CUSTOM_RINGTONE, mCustomRingtone);
         values.put(Contacts.SEND_TO_VOICEMAIL, mSendToVoicemail);
-        getContentResolver().update(mAggregateUri, values, null, null);
+        getContentResolver().update(mLookupUri, values, null, null);
     }
 }
 
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index c228178..5e1638f 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;
@@ -186,8 +189,8 @@
     static final int MODE_MASK_NO_DATA = 0x04000000;
     /** Mask for showing a call button in the list */
     static final int MODE_MASK_SHOW_CALL_BUTTON = 0x02000000;
-    /** Mask to disable fasttrack (images will show as normal images) */
-    static final int MODE_MASK_DISABLE_FASTTRACK = 0x01000000;
+    /** Mask to disable quickcontact (images will show as normal images) */
+    static final int MODE_MASK_DISABLE_QUIKCCONTACT = 0x01000000;
     /** Mask to show the total number of contacts at the top */
     static final int MODE_MASK_SHOW_NUMBER_OF_CONTACTS = 0x00800000;
 
@@ -205,16 +208,16 @@
     static final int MODE_STREQUENT = 35 | MODE_MASK_SHOW_PHOTOS | MODE_MASK_SHOW_CALL_BUTTON;
     /** Show all contacts and pick them when clicking */
     static final int MODE_PICK_CONTACT = 40 | MODE_MASK_PICKER | MODE_MASK_SHOW_PHOTOS
-            | MODE_MASK_DISABLE_FASTTRACK;
+            | MODE_MASK_DISABLE_QUIKCCONTACT;
     /** Show all contacts as well as the option to create a new one */
     static final int MODE_PICK_OR_CREATE_CONTACT = 42 | MODE_MASK_PICKER | MODE_MASK_CREATE_NEW
-            | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_FASTTRACK;
+            | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_QUIKCCONTACT;
     /** Show all people through the legacy provider and pick them when clicking */
     static final int MODE_LEGACY_PICK_PERSON = 43 | MODE_MASK_PICKER | MODE_MASK_SHOW_PHOTOS
-            | MODE_MASK_DISABLE_FASTTRACK;
+            | MODE_MASK_DISABLE_QUIKCCONTACT;
     /** Show all people through the legacy provider as well as the option to create a new one */
-    static final int MODE_LEGACY_PICK_OR_CREATE_PERSON = 44 | MODE_MASK_PICKER | MODE_MASK_CREATE_NEW
-            | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_FASTTRACK;
+    static final int MODE_LEGACY_PICK_OR_CREATE_PERSON = 44 | MODE_MASK_PICKER
+            | MODE_MASK_CREATE_NEW | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_QUIKCCONTACT;
     /** Show all contacts and pick them when clicking, and allow creating a new contact */
     static final int MODE_INSERT_OR_EDIT_CONTACT = 45 | MODE_MASK_PICKER | MODE_MASK_CREATE_NEW;
     /** Show all phone numbers and pick them when clicking */
@@ -236,7 +239,7 @@
 
     /** Show join suggestions followed by an A-Z list */
     static final int MODE_JOIN_CONTACT = 70 | MODE_MASK_PICKER | MODE_MASK_NO_PRESENCE
-            | MODE_MASK_NO_DATA | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_FASTTRACK;
+            | MODE_MASK_NO_DATA | MODE_MASK_SHOW_PHOTOS | MODE_MASK_DISABLE_QUIKCCONTACT;
 
     /** Maximum number of suggestions shown for joining aggregates */
     static final int MAX_SUGGESTIONS = 4;
@@ -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
@@ -1918,7 +2000,7 @@
         public CharArrayBuffer dataBuffer = new CharArrayBuffer(128);
         public ImageView presenceView;
         public QuickContactBadge photoView;
-        public ImageView nonFastTrackPhotoView;
+        public ImageView nonQuickContactPhotoView;
     }
 
     final static class PhotoInfo {
@@ -2138,7 +2220,8 @@
                         parent, false);
                 int stringId = mDisplayOnlyPhones ? R.string.listTotalPhoneContacts
                         : R.string.listTotalAllContacts;
-                totalContacts.setText(getString(stringId, getCount()));
+
+                totalContacts.setText(getString(stringId, getRealCount()));
                 return totalContacts;
             }
 
@@ -2221,7 +2304,7 @@
             cache.dataView = (TextView) view.findViewById(R.id.data);
             cache.presenceView = (ImageView) view.findViewById(R.id.presence);
             cache.photoView = (QuickContactBadge) view.findViewById(R.id.photo);
-            cache.nonFastTrackPhotoView = (ImageView) view.findViewById(R.id.noQuickContactPhoto);
+            cache.nonQuickContactPhotoView = (ImageView) view.findViewById(R.id.noQuickContactPhoto);
             view.setTag(cache);
 
             return view;
@@ -2288,7 +2371,7 @@
 
             // Set the photo, if requested
             if (mDisplayPhotos) {
-                boolean useFastTrack = (mMode & MODE_MASK_DISABLE_FASTTRACK) == 0;
+                boolean useQuickContact = (mMode & MODE_MASK_DISABLE_QUIKCCONTACT) == 0;
 
                 long photoId = 0;
                 if (!cursor.isNull(SUMMARY_PHOTO_ID_COLUMN_INDEX)) {
@@ -2296,18 +2379,18 @@
                 }
 
                 ImageView viewToUse;
-                if (useFastTrack) {
+                if (useQuickContact) {
                     viewToUse = cache.photoView;
                     // Build soft lookup reference
                     final long contactId = cursor.getLong(SUMMARY_ID_COLUMN_INDEX);
                     final String lookupKey = cursor.getString(SUMMARY_LOOKUP_KEY);
                     cache.photoView.assignContactUri(Contacts.getLookupUri(contactId, lookupKey));
                     cache.photoView.setVisibility(View.VISIBLE);
-                    cache.nonFastTrackPhotoView.setVisibility(View.INVISIBLE);
+                    cache.nonQuickContactPhotoView.setVisibility(View.INVISIBLE);
                 } else {
-                    viewToUse = cache.nonFastTrackPhotoView;
+                    viewToUse = cache.nonQuickContactPhotoView;
                     cache.photoView.setVisibility(View.INVISIBLE);
-                    cache.nonFastTrackPhotoView.setVisibility(View.VISIBLE);
+                    cache.nonQuickContactPhotoView.setVisibility(View.VISIBLE);
                 }
 
 
@@ -2570,19 +2653,33 @@
 
         @Override
         public int getCount() {
+            if (!mDataValid) {
+                return 0;
+            }
+            int superCount = super.getCount();
+            if ((mMode & MODE_MASK_SHOW_NUMBER_OF_CONTACTS) != 0) {
+                superCount++;
+            }
             if (mSuggestionsCursorCount != 0) {
                 // When showing suggestions, we have 2 additional list items: the "Suggestions"
                 // and "All contacts" headers.
-                return mSuggestionsCursorCount + super.getCount() + 2;
+                return mSuggestionsCursorCount + superCount + 2;
             }
             else if (mFrequentSeparatorPos != ListView.INVALID_POSITION) {
                 // When showing strequent list, we have an additional list item - the separator.
-                return super.getCount() + 1;
+                return superCount + 1;
             } else {
-                return super.getCount();
+                return superCount;
             }
         }
 
+        /**
+         * Gets the actual count of contacts and excludes all the headers.
+         */
+        public int getRealCount() {
+            return super.getCount();
+        }
+
         private int getRealPosition(int pos) {
             if ((mMode & MODE_MASK_SHOW_NUMBER_OF_CONTACTS) != 0) {
                 pos--;
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index 8172423..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;
@@ -108,7 +110,6 @@
     private static final String SPLIT_MIMETYPE = "split_mimetype";
 
     protected Uri mLookupUri;
-    private Uri mUri;
     private ContentResolver mResolver;
     private ViewAdapter mAdapter;
     private int mNumPhoneNumbers = 0;
@@ -155,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;
 
@@ -174,7 +178,15 @@
 
     public void onClick(DialogInterface dialog, int which) {
         closeCursor();
-        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(mLookupUri, null, null);
+	}
         finish();
     }
 
@@ -298,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;
     }
@@ -492,6 +522,14 @@
         // Empty
     }
 
+    private long getRefreshedContactId() {
+        Uri freshContactUri = Contacts.lookupContact(getContentResolver(), mLookupUri);
+        if (freshContactUri != null) {
+            return ContentUris.parseId(freshContactUri);
+        }
+        return -1;
+    }
+
     private ArrayList<Entity> readEntities(EntityIterator iterator) {
         ArrayList<Entity> entities = new ArrayList<Entity>();
         try {
@@ -507,15 +545,15 @@
     private void startEntityQuery() {
         closeCursor();
 
-        mUri = null;
+        Uri uri = null;
         if (mLookupUri != null) {
             mLookupUri = Contacts.getLookupUri(getContentResolver(), mLookupUri);
             if (mLookupUri != null) {
-                mUri = Contacts.lookupContact(getContentResolver(), mLookupUri);
+                uri = Contacts.lookupContact(getContentResolver(), mLookupUri);
             }
         }
 
-        if (mUri == null) {
+        if (uri == null) {
 
             // TODO either figure out a way to prevent a flash of black background or
             // use some other UI than a toast
@@ -525,11 +563,11 @@
             return;
         }
 
-        mCursor = mResolver.query(Uri.withAppendedPath(mUri, Contacts.Data.CONTENT_DIRECTORY),
+        mCursor = mResolver.query(Uri.withAppendedPath(uri, Contacts.Data.CONTENT_DIRECTORY),
                 new String[] {Contacts.DISPLAY_NAME}, null, null, null);
         mCursor.registerContentObserver(mObserver);
 
-        long contactId = ContentUris.parseId(mUri);
+        long contactId = ContentUris.parseId(uri);
         mHandler.startQueryEntities(TOKEN_QUERY, null,
                 RawContacts.CONTENT_URI, RawContacts.CONTACT_ID + "=" + contactId, null, null);
 
@@ -590,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;
     }
 
@@ -660,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: {
@@ -725,54 +773,22 @@
     }
 
     /**
-     * Shows a dialog that contains a list of all constituent contacts in this aggregate.
-     * The user picks a contact to be split into its own aggregate or clicks Cancel.
-     */
-    private void showSplitAggregateDialog() {
-        // Wrap this dialog in a specific theme so that list items have correct text color.
-        final ContextThemeWrapper dialogContext =
-                new ContextThemeWrapper(this, android.R.style.Theme_Light);
-        AlertDialog.Builder builder =
-                new AlertDialog.Builder(dialogContext);
-        builder.setTitle(getString(R.string.splitAggregate_title));
-
-        final SplitAggregateView view = new SplitAggregateView(dialogContext, mUri);
-        builder.setView(view);
-
-        builder.setInverseBackgroundForced(true);
-        builder.setCancelable(true);
-        builder.setNegativeButton(android.R.string.cancel,
-                new OnClickListener() {
-                    public void onClick(DialogInterface dialog, int which) {
-                        dialog.dismiss();
-                    }
-                });
-        final AlertDialog dialog = builder.create();
-
-        view.setOnContactSelectedListener(new OnContactSelectedListener() {
-            public void onContactSelected(long rawContactId) {
-                dialog.dismiss();
-                splitContact(rawContactId);
-            }
-        });
-
-        dialog.show();
-    }
-
-    /**
      * Shows a list of aggregates that can be joined into the currently viewed aggregate.
      */
     public void showJoinAggregateActivity() {
-        String displayName = null;
-        if (mCursor.moveToFirst()) {
-            displayName = mCursor.getString(0);
+        long freshId = getRefreshedContactId();
+        if (freshId > 0) {
+            String displayName = null;
+            if (mCursor.moveToFirst()) {
+                displayName = mCursor.getString(0);
+            }
+            Intent intent = new Intent(ContactsListActivity.JOIN_AGGREGATE);
+            intent.putExtra(ContactsListActivity.EXTRA_AGGREGATE_ID, freshId);
+            if (displayName != null) {
+                intent.putExtra(ContactsListActivity.EXTRA_AGGREGATE_NAME, displayName);
+            }
+            startActivityForResult(intent, REQUEST_JOIN_CONTACT);
         }
-        Intent intent = new Intent(ContactsListActivity.JOIN_AGGREGATE);
-        intent.putExtra(ContactsListActivity.EXTRA_AGGREGATE_ID, ContentUris.parseId(mUri));
-        if (displayName != null) {
-            intent.putExtra(ContactsListActivity.EXTRA_AGGREGATE_NAME, displayName);
-        }
-        startActivityForResult(intent, REQUEST_JOIN_CONTACT);
     }
 
     @Override
@@ -831,7 +847,7 @@
 
     private void showOptionsActivity() {
         final Intent intent = new Intent(this, ContactOptionsActivity.class);
-        intent.setData(mUri);
+        intent.setData(mLookupUri);
         startActivity(intent);
     }
 
@@ -870,14 +886,25 @@
                     }
                 } else if (mNumPhoneNumbers != 0) {
                     // There isn't anything selected, call the default number
-                    Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, mUri);
-                    startActivity(intent);
+                    long freshContactId = getRefreshedContactId();
+                    if (freshContactId > 0) {
+                        Uri hardContacUri = ContentUris.withAppendedId(
+                                Contacts.CONTENT_URI, freshContactId);
+                        Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, hardContacUri);
+                        startActivity(intent);
+                    }
                 }
                 return true;
             }
 
             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;
             }
         }
@@ -935,11 +962,14 @@
         }
 
         mRawContactIds.clear();
+        mReadOnlySourcesCnt = 0;
+	mWritableSourcesCnt = 0;
+        mWritableRawContactIds.clear();
 
         Sources sources = Sources.getInstance(this);
 
         // Build up method entries
-        if (mUri != null) {
+        if (mLookupUri != null) {
             for (Entity entity: mEntities) {
                 final ContentValues entValues = entity.getEntityValues();
                 final String accountType = entValues.getAsString(RawContacts.ACCOUNT_TYPE);
@@ -956,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/model/FallbackSource.java b/src/com/android/contacts/model/FallbackSource.java
index fa545be..ebef42b 100644
--- a/src/com/android/contacts/model/FallbackSource.java
+++ b/src/com/android/contacts/model/FallbackSource.java
@@ -25,6 +25,7 @@
 import android.database.Cursor;
 import android.provider.ContactsContract.CommonDataKinds.BaseTypes;
 import android.provider.ContactsContract.CommonDataKinds.Email;
+import android.provider.ContactsContract.CommonDataKinds.Event;
 import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.provider.ContactsContract.CommonDataKinds.Nickname;
 import android.provider.ContactsContract.CommonDataKinds.Note;
@@ -74,6 +75,7 @@
         inflatePhoto(inflateLevel);
         inflateNote(inflateLevel);
         inflateWebsite(inflateLevel);
+        inflateEvent(inflateLevel);
 
         setInflatedLevel(inflateLevel);
 
@@ -376,6 +378,19 @@
         return kind;
     }
 
+    protected DataKind inflateEvent(int inflateLevel) {
+        DataKind kind = getKindForMimetype(Event.CONTENT_ITEM_TYPE);
+        if (kind == null) {
+            kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE,
+                    R.string.eventLabelsGroup, -1, 150, false));
+            kind.secondary = true;
+            kind.actionHeader = new EventActionInflater();
+            kind.actionBody = new SimpleInflater(Event.START_DATE);
+        }
+
+        return kind;
+    }
+
     /**
      * Simple inflater that assumes a string resource has a "%s" that will be
      * filled from the given column.
@@ -558,6 +573,13 @@
         }
     }
 
+    public static class EventActionInflater extends CommonInflater {
+        @Override
+        protected int getTypeLabelResource(Integer type) {
+            return Event.getTypeResource(type);
+        }
+    }
+
     public static class PostalActionInflater extends CommonInflater {
         @Override
         protected int getTypeLabelResource(Integer type) {
diff --git a/src/com/android/contacts/model/GoogleSource.java b/src/com/android/contacts/model/GoogleSource.java
index 6706ec0..010982c 100644
--- a/src/com/android/contacts/model/GoogleSource.java
+++ b/src/com/android/contacts/model/GoogleSource.java
@@ -61,6 +61,7 @@
         inflatePhoto(inflateLevel);
         inflateNote(inflateLevel);
         inflateWebsite(inflateLevel);
+        inflateEvent(inflateLevel);
 
         // TODO: GOOGLE: GROUPMEMBERSHIP
 
diff --git a/src/com/android/contacts/ui/DisplayGroupsActivity.java b/src/com/android/contacts/ui/DisplayGroupsActivity.java
index 7bd7b9d..ce68dcb 100644
--- a/src/com/android/contacts/ui/DisplayGroupsActivity.java
+++ b/src/com/android/contacts/ui/DisplayGroupsActivity.java
@@ -299,7 +299,7 @@
             } else if (isUpdate()) {
                 // When has changes and "before" exists, then "update"
                 final Builder builder = ContentProviderOperation
-                        .newUpdate(mUngrouped ? Settings.CONTENT_URI : Groups.CONTENT_URI);
+                        .newUpdate(mUngrouped ? Settings.CONTENT_URI : addCallerIsSyncAdapterParameter(Groups.CONTENT_URI));
                 if (mUngrouped) {
                     builder.withSelection(Settings.ACCOUNT_NAME + "=? AND " + Settings.ACCOUNT_TYPE
                             + "=?", new String[] {
@@ -323,6 +323,12 @@
         }
     }
 
+    private static Uri addCallerIsSyncAdapterParameter(Uri uri) {
+        return uri.buildUpon()
+	        .appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true")
+		.build();
+    }
+
     /**
      * {@link Comparator} to sort by {@link Groups#_ID}.
      */
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;
+    }
+
 
 
 
diff --git a/src/com/android/contacts/ui/FastTrackActivity.java b/src/com/android/contacts/ui/QuickContactActivity.java
similarity index 61%
rename from src/com/android/contacts/ui/FastTrackActivity.java
rename to src/com/android/contacts/ui/QuickContactActivity.java
index 6958298..5cd2d18 100644
--- a/src/com/android/contacts/ui/FastTrackActivity.java
+++ b/src/com/android/contacts/ui/QuickContactActivity.java
@@ -21,22 +21,23 @@
 import android.graphics.Rect;
 import android.net.Uri;
 import android.os.Bundle;
-import android.provider.ContactsContract.FastTrack;
+import android.provider.ContactsContract.QuickContact;
 
 /**
- * Stub translucent activity that just shows {@link FastTrackWindow} floating
+ * Stub translucent activity that just shows {@link QuickContactWindow} floating
  * above the caller. This temporary hack should eventually be replaced with
  * direct framework support.
  */
-public final class FastTrackActivity extends Activity implements FastTrackWindow.OnDismissListener {
-    private FastTrackWindow mFastTrack;
+public final class QuickContactActivity extends Activity implements
+        QuickContactWindow.OnDismissListener {
+    private QuickContactWindow mQuickContact;
 
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
-        if (FastTrackWindow.TRACE_LAUNCH) {
-            android.os.Debug.startMethodTracing(FastTrackWindow.TRACE_TAG);
+        if (QuickContactWindow.TRACE_LAUNCH) {
+            android.os.Debug.startMethodTracing(QuickContactWindow.TRACE_TAG);
         }
 
         // Use our local window token for now
@@ -45,22 +46,22 @@
         final Bundle extras = intent.getExtras();
 
         // Read requested parameters for displaying
-        final Rect target = (Rect)extras.getParcelable(FastTrack.EXTRA_TARGET_RECT);
-        final int mode = extras.getInt(FastTrack.EXTRA_MODE, FastTrack.MODE_MEDIUM);
-        final String[] excludeMimes = extras.getStringArray(FastTrack.EXTRA_EXCLUDE_MIMES);
+        final Rect target = (Rect)extras.getParcelable(QuickContact.EXTRA_TARGET_RECT);
+        final int mode = extras.getInt(QuickContact.EXTRA_MODE, QuickContact.MODE_MEDIUM);
+        final String[] excludeMimes = extras.getStringArray(QuickContact.EXTRA_EXCLUDE_MIMES);
 
-        mFastTrack = new FastTrackWindow(this, this);
-        mFastTrack.show(lookupUri, target, mode, excludeMimes);
+        mQuickContact = new QuickContactWindow(this, this);
+        mQuickContact.show(lookupUri, target, mode, excludeMimes);
     }
 
     @Override
     protected void onStop() {
         super.onStop();
-        mFastTrack.dismiss();
+        mQuickContact.dismiss();
     }
 
     /** {@inheritDoc} */
-    public void onDismiss(FastTrackWindow dialog) {
+    public void onDismiss(QuickContactWindow dialog) {
         // When dismissed, finish this activity
         finish();
     }
diff --git a/src/com/android/contacts/ui/FastTrackWindow.java b/src/com/android/contacts/ui/QuickContactWindow.java
similarity index 95%
rename from src/com/android/contacts/ui/FastTrackWindow.java
rename to src/com/android/contacts/ui/QuickContactWindow.java
index 25a0167..6059079 100644
--- a/src/com/android/contacts/ui/FastTrackWindow.java
+++ b/src/com/android/contacts/ui/QuickContactWindow.java
@@ -40,7 +40,7 @@
 import android.net.Uri;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Data;
-import android.provider.ContactsContract.FastTrack;
+import android.provider.ContactsContract.QuickContact;
 import android.provider.ContactsContract.Presence;
 import android.provider.ContactsContract.RawContacts;
 import android.provider.ContactsContract.CommonDataKinds.Email;
@@ -86,17 +86,17 @@
  * Window that shows fast-track contact details for a specific
  * {@link Contacts#_ID}.
  */
-public class FastTrackWindow implements Window.Callback,
+public class QuickContactWindow implements Window.Callback,
         NotifyingAsyncQueryHandler.AsyncQueryListener, View.OnClickListener,
         AbsListView.OnItemClickListener, CompoundButton.OnCheckedChangeListener {
-    private static final String TAG = "FastTrackWindow";
+    private static final String TAG = "QuickContactWindow";
 
     /**
-     * Interface used to allow the person showing a {@link FastTrackWindow} to
+     * Interface used to allow the person showing a {@link QuickContactWindow} to
      * know when the window has been dismissed.
      */
     public interface OnDismissListener {
-        public void onDismiss(FastTrackWindow dialog);
+        public void onDismiss(QuickContactWindow dialog);
     }
 
     private final Context mContext;
@@ -164,13 +164,13 @@
     private static final int TOKEN_DATA = 3;
 
     static final boolean TRACE_LAUNCH = false;
-    static final String TRACE_TAG = "fasttrack";
+    static final String TRACE_TAG = "quickcontact";
 
     /**
      * Prepare a fast-track window to show in the given {@link Context}.
      */
-    public FastTrackWindow(Context context) {
-        mContext = new ContextThemeWrapper(context, R.style.FastTrack);
+    public QuickContactWindow(Context context) {
+        mContext = new ContextThemeWrapper(context, R.style.QuickContact);
         mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         mWindowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
 
@@ -178,7 +178,7 @@
         mWindow.setCallback(this);
         mWindow.setWindowManager(mWindowManager, null, null);
 
-        mWindow.setContentView(R.layout.fasttrack);
+        mWindow.setContentView(R.layout.quickcontact);
 
         mArrowUp = (ImageView)mWindow.findViewById(R.id.arrow_up);
         mArrowDown = (ImageView)mWindow.findViewById(R.id.arrow_down);
@@ -186,9 +186,9 @@
         mResolveCache = new ResolveCache(mContext);
 
         final Resources res = mContext.getResources();
-        mShadowHeight = res.getDimensionPixelSize(R.dimen.fasttrack_shadow);
+        mShadowHeight = res.getDimensionPixelSize(R.dimen.quickcontact_shadow);
 
-        mTrack = (ViewGroup)mWindow.findViewById(R.id.fasttrack);
+        mTrack = (ViewGroup)mWindow.findViewById(R.id.quickcontact);
         mTrackScroll = (HorizontalScrollView)mWindow.findViewById(R.id.scroll);
 
         mFooter = mWindow.findViewById(R.id.footer);
@@ -199,7 +199,7 @@
         mSetPrimaryCheckBox.setOnCheckedChangeListener(this);
 
         // Prepare track entrance animation
-        mTrackAnim = AnimationUtils.loadAnimation(mContext, R.anim.fasttrack);
+        mTrackAnim = AnimationUtils.loadAnimation(mContext, R.anim.quickcontact);
         mTrackAnim.setInterpolator(new Interpolator() {
             public float getInterpolation(float t) {
                 // Pushes past the target area, then snaps back into place.
@@ -215,7 +215,7 @@
      * notify the given {@link OnDismissListener} each time this dialog is
      * dismissed.
      */
-    public FastTrackWindow(Context context, OnDismissListener dismissListener) {
+    public QuickContactWindow(Context context, OnDismissListener dismissListener) {
         this(context);
         mDismissListener = dismissListener;
     }
@@ -223,13 +223,13 @@
     private View getHeaderView(int mode) {
         View header = null;
         switch (mode) {
-            case FastTrack.MODE_SMALL:
+            case QuickContact.MODE_SMALL:
                 header = mWindow.findViewById(R.id.header_small);
                 break;
-            case FastTrack.MODE_MEDIUM:
+            case QuickContact.MODE_MEDIUM:
                 header = mWindow.findViewById(R.id.header_medium);
                 break;
-            case FastTrack.MODE_LARGE:
+            case QuickContact.MODE_LARGE:
                 header = mWindow.findViewById(R.id.header_large);
                 break;
         }
@@ -264,7 +264,7 @@
         mHeader = getHeaderView(mode);
         mExcludeMimes = excludeMimes;
 
-        setHeaderText(R.id.name, R.string.fasttrack_missing_name);
+        setHeaderText(R.id.name, R.string.quickcontact_missing_name);
         setHeaderText(R.id.status, null);
         setHeaderImage(R.id.presence, null);
 
@@ -325,14 +325,14 @@
             // edge with top of anchor area, and adjusting to inset arrow.
             showArrow(R.id.arrow_down, mAnchor.centerX());
             l.y = mAnchor.top - blockHeight + mShadowHeight;
-            l.windowAnimations = R.style.FastTrackAboveAnimation;
+            l.windowAnimations = R.style.QuickContactAboveAnimation;
 
         } else {
             // Otherwise show upwards callout, aligning block top with bottom of
             // anchor area, and adjusting to inset arrow.
             showArrow(R.id.arrow_up, mAnchor.centerX());
             l.y = mAnchor.bottom - mShadowHeight;
-            l.windowAnimations = R.style.FastTrackBelowAnimation;
+            l.windowAnimations = R.style.QuickContactBelowAnimation;
 
         }
 
@@ -418,10 +418,10 @@
      */
     private synchronized void considerShowing() {
         if (mHasSummary && mHasSocial && mHasActions && !mShowing) {
-            if (mMode == FastTrack.MODE_MEDIUM && !mHasValidSocial) {
+            if (mMode == QuickContact.MODE_MEDIUM && !mHasValidSocial) {
                 // Missing valid social, swap medium for small header
                 mHeader.setVisibility(View.GONE);
-                mHeader = getHeaderView(FastTrack.MODE_SMALL);
+                mHeader = getHeaderView(QuickContact.MODE_SMALL);
             }
 
             // All queries have returned, pull curtain
@@ -546,21 +546,21 @@
         int resId = -1;
         switch (status) {
             case Presence.AVAILABLE:
-                resId = R.drawable.fasttrack_slider_presence_active;
+                resId = R.drawable.quickcontact_slider_presence_active;
                 break;
             case Presence.IDLE:
             case Presence.AWAY:
-                resId = R.drawable.fasttrack_slider_presence_away;
+                resId = R.drawable.quickcontact_slider_presence_away;
                 break;
             case Presence.DO_NOT_DISTURB:
-                resId = R.drawable.fasttrack_slider_presence_busy;
+                resId = R.drawable.quickcontact_slider_presence_busy;
                 break;
             case Presence.INVISIBLE:
-                resId = R.drawable.fasttrack_slider_presence_inactive;
+                resId = R.drawable.quickcontact_slider_presence_inactive;
                 break;
             case Presence.OFFLINE:
             default:
-                resId = R.drawable.fasttrack_slider_presence_inactive;
+                resId = R.drawable.quickcontact_slider_presence_inactive;
         }
         return mContext.getResources().getDrawable(resId);
     }
@@ -675,6 +675,7 @@
                 // Otherwise fall back to default VIEW action
                 mIntent = new Intent(Intent.ACTION_VIEW, mDataUri);
             }
+	    mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         }
 
         /** {@inheritDoc} */
@@ -759,7 +760,9 @@
         /** {@inheritDoc} */
         public Intent getIntent() {
             final Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, mId);
-            return new Intent(Intent.ACTION_VIEW, contactUri);
+            final Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
+	    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+	    return intent;
         }
 
         /** {@inheritDoc} */
@@ -996,7 +999,8 @@
      * the icon provided by the {@link DataKind}.
      */
     private View inflateAction(String mimeType) {
-        CheckableImageView view = (CheckableImageView)mInflater.inflate(R.layout.fasttrack_item, mTrack, false);
+        CheckableImageView view = (CheckableImageView)mInflater.inflate(
+                R.layout.quickcontact_item, mTrack, false);
         boolean isActionSet = false;
 
         // Add direct intent if single child, otherwise flag for multiple
@@ -1092,7 +1096,8 @@
                 }
 
             } catch (ActivityNotFoundException e) {
-                Toast.makeText(mContext, R.string.fasttrack_missing_app, Toast.LENGTH_SHORT).show();
+                Toast.makeText(mContext, R.string.quickcontact_missing_app, Toast.LENGTH_SHORT)
+                        .show();
             }
         } else if (tag instanceof ActionList) {
             // Incoming tag is a MIME-type, so show resolution list
@@ -1117,7 +1122,8 @@
 
                 public View getView(int position, View convertView, ViewGroup parent) {
                     if (convertView == null) {
-                        convertView = mInflater.inflate(R.layout.fasttrack_resolve_item, parent, false);
+                        convertView = mInflater.inflate(
+                                R.layout.quickcontact_resolve_item, parent, false);
                     }
 
                     // Set action title based on summary value
diff --git a/src/com/android/contacts/ui/widget/CheckableImageView.java b/src/com/android/contacts/ui/widget/CheckableImageView.java
index ceddf57..ff5abc0 100644
--- a/src/com/android/contacts/ui/widget/CheckableImageView.java
+++ b/src/com/android/contacts/ui/widget/CheckableImageView.java
@@ -23,7 +23,7 @@
 
 /**
  * A special variation of ImageView that can be used as a checkable object.
- * This is used as the background view of fasttrack chiclet, which is in checked state
+ * This is used as the background view of quickcontact chiclet, which is in checked state
  * when disambig list is shown. Otherwise, it works identically to a ImageView.
  */
 public class CheckableImageView extends ImageView implements Checkable {
diff --git a/src/com/android/contacts/ui/widget/ContactEditorView.java b/src/com/android/contacts/ui/widget/ContactEditorView.java
index 245986b..c723f6f 100644
--- a/src/com/android/contacts/ui/widget/ContactEditorView.java
+++ b/src/com/android/contacts/ui/widget/ContactEditorView.java
@@ -35,7 +35,6 @@
 import android.provider.ContactsContract.RawContacts;
 import android.provider.ContactsContract.CommonDataKinds.Photo;
 import android.provider.ContactsContract.CommonDataKinds.StructuredName;
-import android.text.TextWatcher;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -205,6 +204,9 @@
                 parent.addView(section);
             }
         }
+        final int secondaryVisibility = mSecondary.getChildCount() > 0 ? View.VISIBLE : View.GONE;
+        mSecondary.setVisibility(secondaryVisibility);
+        mSecondaryHeader.setVisibility(secondaryVisibility);
     }
 
     /**