diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 962fc54..71a90eb 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -224,21 +224,25 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
 
+            <meta-data android:name="android.app.searchable"
+                android:resource="@xml/searchable"
+            />
+        </activity>
+
+        <activity android:name="ShowOrCreateActivity"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar">
             <intent-filter>
                 <action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" />
                 <data android:scheme="mailto" />
                 <data android:scheme="tel" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-
-            <meta-data android:name="android.app.searchable"
-                android:resource="@xml/searchable"
-            />
         </activity>
 
         <activity-alias android:name="ContactShortcut"
             android:targetActivity="ContactsListActivity"
-            android:label="@string/shortcutContact">
+            android:label="@string/shortcutContact"
+            android:icon="@drawable/ic_launcher_shortcut_contact">
 
             <intent-filter>
                 <action android:name="android.intent.action.CREATE_SHORTCUT" />
@@ -249,7 +253,7 @@
 
         <activity android:name="CallDetailActivity"
             android:label="@string/callDetailTitle"
-            android:theme="@android:style/Theme.NoTitleBar"
+            android:theme="@style/TallTitleBarTheme"
         >
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
@@ -261,7 +265,7 @@
         <!-- Views the details of a single contact -->
         <activity android:name="ViewContactActivity"
             android:label="@string/viewContactTitle"
-            android:theme="@android:style/Theme.NoTitleBar"
+            android:theme="@style/TallTitleBarTheme"
         >
             <intent-filter android:label="@string/viewContactDesription">
                 <action android:name="android.intent.action.VIEW" />
@@ -311,7 +315,7 @@
         <activity
             android:name=".ContactsLiveFolders$AllContacts"
             android:label="@string/liveFolderAll"
-            android:icon="@drawable/ic_launcher_contacts">
+            android:icon="@drawable/ic_launcher_folder_live_contacts">
             <intent-filter>
                 <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -321,7 +325,7 @@
         <activity
             android:name=".ContactsLiveFolders$StarredContacts"
             android:label="@string/liveFolderFavorites"
-            android:icon="@drawable/ic_launcher_contacts_starred">
+            android:icon="@drawable/ic_launcher_folder_live_contacts_starred">
             <intent-filter>
                 <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -331,7 +335,7 @@
         <activity
             android:name=".ContactsLiveFolders$PhoneContacts"
             android:label="@string/liveFolderPhone"
-            android:icon="@drawable/ic_launcher_contacts_phones">
+            android:icon="@drawable/ic_launcher_folder_live_contacts_phone">
             <intent-filter>
                 <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
                 <category android:name="android.intent.category.DEFAULT" />
diff --git a/res/drawable-finger/btn_circle_longpress.png b/res/drawable-finger/btn_circle_longpress.png
deleted file mode 100644
index f27d411..0000000
--- a/res/drawable-finger/btn_circle_longpress.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_highlight.9.png b/res/drawable-finger/contact_picture_border_highlight.9.png
index fc4e01d..c48b83f 100644
--- a/res/drawable-finger/contact_picture_border_highlight.9.png
+++ b/res/drawable-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-finger/contact_picture_border_in_list.9.png
new file mode 100644
index 0000000..e10b676
--- /dev/null
+++ b/res/drawable-finger/contact_picture_border_in_list.9.png
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_longpress.9.png b/res/drawable-finger/contact_picture_border_longpress.9.png
deleted file mode 100644
index c89a55a..0000000
--- a/res/drawable-finger/contact_picture_border_longpress.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/contact_picture_border_normal.9.png b/res/drawable-finger/contact_picture_border_normal.9.png
index 37451ae..84bfad5 100644
--- a/res/drawable-finger/contact_picture_border_normal.9.png
+++ b/res/drawable-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-finger/contact_picture_border_pressed.9.png
index 11eaae5..d5328f3 100644
--- a/res/drawable-finger/contact_picture_border_pressed.9.png
+++ b/res/drawable-finger/contact_picture_border_pressed.9.png
Binary files differ
diff --git a/res/drawable-finger/divider_vertical_dark.png b/res/drawable-finger/divider_vertical_dark.png
new file mode 100644
index 0000000..dcf850e
--- /dev/null
+++ b/res/drawable-finger/divider_vertical_dark.png
Binary files differ
diff --git a/res/drawable-finger/ic_call_log_header_incoming_call.png b/res/drawable-finger/ic_call_log_header_incoming_call.png
new file mode 100644
index 0000000..8b75287
--- /dev/null
+++ b/res/drawable-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-finger/ic_call_log_header_missed_call.png
new file mode 100644
index 0000000..94dd69f
--- /dev/null
+++ b/res/drawable-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-finger/ic_call_log_header_outgoing_call.png
new file mode 100644
index 0000000..bdedc67
--- /dev/null
+++ b/res/drawable-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-finger/ic_call_log_list_incoming_call.png
new file mode 100644
index 0000000..db74c8f
--- /dev/null
+++ b/res/drawable-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-finger/ic_call_log_list_missed_call.png
new file mode 100644
index 0000000..1907a62
--- /dev/null
+++ b/res/drawable-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-finger/ic_call_log_list_outgoing_call.png
new file mode 100644
index 0000000..b47e022
--- /dev/null
+++ b/res/drawable-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-finger/ic_contact_list_picture.png
new file mode 100644
index 0000000..f8aa4ba
--- /dev/null
+++ b/res/drawable-finger/ic_contact_list_picture.png
Binary files differ
diff --git a/res/drawable-finger/star_on.png b/res/drawable-finger/star_on.png
deleted file mode 100644
index 429dada..0000000
--- a/res/drawable-finger/star_on.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/sym_action_edit.png b/res/drawable-finger/sym_action_edit.png
deleted file mode 100644
index bacf850..0000000
--- a/res/drawable-finger/sym_action_edit.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/sym_action_remove.png b/res/drawable-finger/sym_action_remove.png
deleted file mode 100644
index f5ca2f9..0000000
--- a/res/drawable-finger/sym_action_remove.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-finger/sym_action_search.png b/res/drawable-finger/sym_action_search.png
deleted file mode 100644
index dab3ed6..0000000
--- a/res/drawable-finger/sym_action_search.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_launcher_contacts_phones.png b/res/drawable/ic_launcher_contacts_phones.png
deleted file mode 100644
index 822cc31..0000000
--- a/res/drawable/ic_launcher_contacts_phones.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_launcher_contacts_starred.png b/res/drawable/ic_launcher_contacts_starred.png
deleted file mode 100644
index 328761e..0000000
--- a/res/drawable/ic_launcher_contacts_starred.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_launcher_folder_live_contacts.png b/res/drawable/ic_launcher_folder_live_contacts.png
new file mode 100644
index 0000000..5e222ec
--- /dev/null
+++ b/res/drawable/ic_launcher_folder_live_contacts.png
Binary files differ
diff --git a/res/drawable/ic_launcher_folder_live_contacts_phone.png b/res/drawable/ic_launcher_folder_live_contacts_phone.png
new file mode 100644
index 0000000..02637da
--- /dev/null
+++ b/res/drawable/ic_launcher_folder_live_contacts_phone.png
Binary files differ
diff --git a/res/drawable/ic_launcher_folder_live_contacts_starred.png b/res/drawable/ic_launcher_folder_live_contacts_starred.png
new file mode 100644
index 0000000..927b343
--- /dev/null
+++ b/res/drawable/ic_launcher_folder_live_contacts_starred.png
Binary files differ
diff --git a/res/drawable/ic_launcher_shortcut_contact.png b/res/drawable/ic_launcher_shortcut_contact.png
new file mode 100644
index 0000000..ed7025c
--- /dev/null
+++ b/res/drawable/ic_launcher_shortcut_contact.png
Binary files differ
diff --git a/res/layout-finger/call_detail.xml b/res/layout-finger/call_detail.xml
index 69bfa9e..ad151c1 100644
--- a/res/layout-finger/call_detail.xml
+++ b/res/layout-finger/call_detail.xml
@@ -79,6 +79,25 @@
             android:scrollbarStyle="outsideOverlay"
         />
 
+        <ScrollView android:id="@android:id/empty"
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent"
+                android:fillViewport="true">
+
+            <TextView android:id="@+id/emptyText"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/unknown"
+                android:textSize="20sp"
+                android:textColor="?android:attr/textColorSecondary"
+                android:paddingLeft="10dip"
+                android:paddingRight="10dip"
+                android:paddingTop="10dip"
+                android:gravity="center"
+                android:lineSpacingMultiplier="0.92"/>
+
+        </ScrollView>
+
         <View
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
diff --git a/res/layout-finger/contacts_list_item_photo.xml b/res/layout-finger/contacts_list_item_photo.xml
index d2821e1..c208b93 100644
--- a/res/layout-finger/contacts_list_item_photo.xml
+++ b/res/layout-finger/contacts_list_item_photo.xml
@@ -20,7 +20,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="?android:attr/listPreferredItemHeight"
-    android:paddingLeft="0dip"
+    android:paddingLeft="5dip"
     android:paddingRight="5dip"
 >
 
@@ -36,13 +36,15 @@
     />
 
     <ImageView android:id="@+id/photo"
-        android:layout_width="64dip"
-        android:layout_height="64dip"
+        android:layout_width="54dip"
+        android:layout_height="54dip"
         android:layout_alignParentLeft="true"
-        android:layout_marginRight="9dip"
+        android:layout_centerVertical="true"
+        android:layout_marginRight="8dip"
 
         android:gravity="center"
         android:scaleType="fitCenter"
+        android:background="@drawable/contact_picture_border_in_list"
     />
 
     <TextView android:id="@+id/label"
@@ -51,7 +53,7 @@
         android:layout_toRightOf="@id/photo"
         android:layout_alignParentBottom="true"
         android:layout_marginBottom="8dip"
-        android:layout_marginTop="-8dip"
+        android:layout_marginTop="-10dip"
 
         android:singleLine="true"
         android:ellipsize="marquee"
@@ -64,8 +66,8 @@
         android:layout_height="wrap_content"
         android:layout_marginLeft="5dip"
         android:layout_toRightOf="@id/label"
-        android:layout_alignBaseline="@id/label"
         android:layout_toLeftOf="@id/presence"
+        android:layout_alignBaseline="@id/label"
         android:layout_alignWithParentIfMissing="true"
 
         android:singleLine="true"
@@ -76,12 +78,11 @@
     <TextView android:id="@+id/name"
         android:layout_width="0dip"
         android:layout_height="0dip"
-        android:layout_above="@id/label"
-        android:layout_alignWithParentIfMissing="true"
-        android:layout_alignParentTop="true"
         android:layout_toRightOf="@id/photo"
         android:layout_toLeftOf="@id/presence"
-        android:layout_marginBottom="1dip"
+        android:layout_alignParentTop="true"
+        android:layout_above="@id/label"
+        android:layout_alignWithParentIfMissing="true"
 
         android:singleLine="true"
         android:ellipsize="marquee"
diff --git a/res/layout-finger/list_separator.xml b/res/layout-finger/list_separator.xml
index 5d93d36..0c21541 100644
--- a/res/layout-finger/list_separator.xml
+++ b/res/layout-finger/list_separator.xml
@@ -16,12 +16,5 @@
 
 <!-- Layout used for list separators. -->
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:gravity="center_vertical"
-    android:background="@android:drawable/dark_header"
-    android:textColor="?android:attr/textColorSecondary"
-    android:textStyle="bold"
-    android:textSize="14sp"
-    android:paddingLeft="8dip"
+    style="?android:attr/listSeparatorTextViewStyle"
 />
diff --git a/res/layout-finger/recent_calls_list_item.xml b/res/layout-finger/recent_calls_list_item.xml
index 3df1f13..bab9ea1 100644
--- a/res/layout-finger/recent_calls_list_item.xml
+++ b/res/layout-finger/recent_calls_list_item.xml
@@ -16,55 +16,91 @@
 
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
-    android:layout_height="?android:attr/listPreferredItemHeight">
+    android:layout_height="?android:attr/listPreferredItemHeight"
+    android:paddingLeft="0dip"
+    android:paddingRight="12dip"
+>
+
+    <ImageView android:id="@+id/call_icon"
+        android:layout_width="wrap_content"
+        android:layout_height="fill_parent"
+
+        android:paddingLeft="14dip"
+        android:paddingRight="11dip"
+        
+        android:gravity="center_vertical"
+        android:src="@android:drawable/sym_action_call"
+        android:background="@android:drawable/list_selector_background"
+    />
+
+    <View android:id="@+id/divider"
+        android:layout_width="1dip"
+        android:layout_height="fill_parent"
+        android:layout_toRightOf="@id/call_icon"
+        android:layout_marginRight="11dip"
+
+        android:background="@drawable/divider_vertical_dark"
+    />
 
     <ImageView android:id="@+id/call_type_icon"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginLeft="4dip"
-        android:layout_centerVertical="true"
-    />
-
-    <TextView android:id="@+id/line1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_toRightOf="@id/call_type_icon"
-        android:layout_marginTop="6dip"
-        android:layout_marginLeft="5dip"
-        android:textAppearance="?android:attr/textAppearanceLarge"
-        android:singleLine="true"
-    />
-
-    <TextView android:id="@+id/line2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/line1"
-        android:layout_alignLeft="@id/line1"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:singleLine="true"
-    />
-    
-    <TextView android:id="@+id/duration"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
         android:layout_alignParentRight="true"
-        android:layout_alignBaseline="@id/line1"
-        android:layout_toRightOf="@id/line1"
-        android:layout_marginRight="8dip"
-        android:gravity="right"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:textStyle="bold"
-        android:textColor="?android:attr/textColorPrimary"
-        android:singleLine="true"
+        android:layout_alignParentTop="true"
     />
     
     <TextView android:id="@+id/date"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentRight="true"
-        android:layout_alignBaseline="@id/line2"
-        android:layout_marginRight="8dip"
+        android:layout_alignParentBottom="true"
+        android:layout_marginBottom="9dip"
+
         android:textAppearance="?android:attr/textAppearanceSmall"
         android:singleLine="true"
     />
+
+    <TextView android:id="@+id/label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toRightOf="@id/divider"
+        android:layout_alignParentBottom="true"
+        android:layout_marginBottom="8dip"
+        android:layout_marginTop="-10dip"
+
+        android:singleLine="true"
+        android:ellipsize="marquee"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textStyle="bold"
+    />
+
+    <TextView android:id="@+id/number"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="5dip"
+        android:layout_toRightOf="@id/label"
+        android:layout_toLeftOf="@id/date"
+        android:layout_alignBaseline="@id/label"
+        android:layout_alignWithParentIfMissing="true"
+
+        android:singleLine="true"
+        android:ellipsize="marquee"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+    />
+
+
+    <TextView android:id="@+id/line1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toRightOf="@id/divider"
+        android:layout_toLeftOf="@id/call_type_icon"
+        android:layout_alignParentTop="true"
+        android:layout_above="@id/label"
+        android:layout_alignWithParentIfMissing="true"
+
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        android:singleLine="true"
+        android:gravity="center_vertical"
+    />
+    
 </RelativeLayout>
diff --git a/res/layout-finger/view_contact_entry.xml b/res/layout-finger/view_contact_entry.xml
deleted file mode 100644
index 772c7d9..0000000
--- a/res/layout-finger/view_contact_entry.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-    android:orientation="horizontal"
->
-
-    <TextView android:id="@+id/label"
-        android:layout_width="72dip"
-        android:layout_height="fill_parent"
-        android:layout_marginLeft="8dip"
-        android:layout_marginRight="10dip"
-        android:gravity="center_vertical"
-        android:singleLine="true"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-    />
-
-    <TextView android:id="@+id/data"
-        android:layout_width="0px"
-        android:layout_height="fill_parent"
-        android:layout_weight="1"
-        android:gravity="center_vertical"
-        android:singleLine="true"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        android:paddingRight="6dip"
-    />
-</LinearLayout>
diff --git a/res/layout-finger/view_contact_entry_only_label.xml b/res/layout-finger/view_contact_entry_only_label.xml
deleted file mode 100644
index 0cfa3c7..0000000
--- a/res/layout-finger/view_contact_entry_only_label.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/label"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:paddingLeft="8dip"
-    android:paddingRight="10dip"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-    android:gravity="center_vertical"
-    android:singleLine="true"
-    android:textAppearance="?android:attr/textAppearanceSmall"
-/>
diff --git a/res/layout-finger/view_contact_entry_organization.xml b/res/layout-finger/view_contact_entry_organization.xml
deleted file mode 100644
index bd80786..0000000
--- a/res/layout-finger/view_contact_entry_organization.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-    android:orientation="horizontal"
->
-
-    <TextView android:id="@+id/label"
-        android:layout_width="72dip"
-        android:layout_height="fill_parent"
-        android:layout_marginLeft="8dip"
-        android:layout_marginRight="10dip"
-        android:gravity="center_vertical"
-        android:singleLine="true"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-    />
-
-    <ImageView android:id="@+id/preferredIcon"
-        android:layout_width="wrap_content"
-        android:layout_height="fill_parent"
-        android:layout_marginRight="8dip"
-        android:src="@drawable/ic_default_number"
-        android:visibility="gone"
-        android:gravity="center_vertical"
-    />
-
-    <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="fill_parent"
-        android:orientation="vertical"
-        android:gravity="center_vertical"
-    >
-        <TextView android:id="@+id/data"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-        />
-
-        <TextView android:id="@+id/data2"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-        />
-    </LinearLayout>
-</LinearLayout>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index e82b09b..30d410e 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -16,8 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"Kontakty"</string>
-    <!-- no translation found for launcherDialer (140610573639849799) -->
-    <skip />
+    <string name="launcherDialer">"Vytáčení"</string>
     <string name="shortcutContact">"Kontakt"</string>
     <string name="starredList">"Označené hvězdičkou"</string>
     <string name="frequentList">"Časté"</string>
@@ -27,6 +26,7 @@
     <string name="editContactDescription">"Upravit kontakt"</string>
     <string name="insertContactDescription">"Vytvořit kontakt"</string>
     <string name="searchHint">"Vyhledat kontakty"</string>
+    <string name="menu_search">"Hledat"</string>
     <string name="menu_newContact">"Nový kontakt"</string>
     <string name="menu_viewContact">"Zobrazit kontakt"</string>
     <string name="menu_callNumber">"Volat kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -43,8 +43,7 @@
     <string name="deleteConfirmation_title">"Smazat"</string>
     <string name="deleteConfirmation">"Tento kontakt bude smazán."</string>
     <string name="menu_done">"Hotovo"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"Vrátit"</string>
     <string name="editContact_title_edit">"Upravit kontakt"</string>
     <string name="editContact_title_insert">"Nový kontakt"</string>
     <string name="menu_addItem">"Další informace"</string>
@@ -126,15 +125,15 @@
     <string name="voicemail">"Hlasová schránka"</string>
     <string name="unknown">"Neznámé číslo"</string>
     <string name="private_num">"Soukromé číslo"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"Číslo vytočíte pomocí klávesnice"</string>
     <string name="dialerDialpadHintText">"Vytočením přidat hovor"</string>
     <string name="simContacts_emptyLoading">"Načítání z karty SIM..."</string>
     <string name="simContacts_title">"Kontakty na kartě SIM"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synchronizujte své kontakty Google!"</font>" "\n"Po synchronizaci telefonu budete mít kontaktní informace vždy u sebe."</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"Nemáte žádné kontakty."\n\n"Chcete-li kontakty přidat, stiskněte tlačítko "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a vyberte možnost:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", pokud chcete vytvořit nový kontakt"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importovat kontakty"</b></font>", pokud chcete přidat kontakty ze své karty SIM"\n</li>"."</string>
+    <string name="noContactsHelpTextWithSync">"Nemáte žádné kontakty."\n\n"Chcete-li přidat kontakty, stiskněte tlačítko "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" a vyberte možnost:"\n\n<li><font fgcolor="#ffffffff"><b>"Upravit synchronizované skupiny"</b></font>", pokud chcete přidat kontakty z nového nebo existujícího účtu Google"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nový kontakt"</b></font>", pokud chcete vytvořit nový kontakt"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importovat kontakty"</b></font>", pokud chcete přidat kontakty ze své karty SIM"\n</li>"."</string>
     <string name="seclectSyncGroups_title">"Vyberte skupiny, které chcete synchronizovat"</string>
     <string name="liveFolder_all_label">"Všechny kontakty"</string>
     <string name="liveFolder_favorites_label">"S hvězdičkou"</string>
@@ -163,10 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"Budou odeslány přímo do hlasové pošty."</string>
     <string name="detailsRingtone">"Nastavit vyzvánění <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"Zavolat zpět"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
-    <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
-    <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
-    <skip />
+    <string name="callAgain">"Zavolat znovu"</string>
+    <string name="returnCall">"Zpětné volání"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="favoritesFrquentSeparator">"Často volané"</string>
+    <string name="add_contact_dlg_title">"Přidat kontakt"</string>
+    <string name="add_contact_dlg_message_fmt">"Chcete přidat „<xliff:g id="EMAIL">%s</xliff:g>“ do kontaktů?"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 507d69d..cabc99d 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -16,8 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"Kontakte"</string>
-    <!-- no translation found for launcherDialer (140610573639849799) -->
-    <skip />
+    <string name="launcherDialer">"Telefon"</string>
     <string name="shortcutContact">"Kontakt"</string>
     <string name="starredList">"Markiert"</string>
     <string name="frequentList">"Häufig"</string>
@@ -27,6 +26,7 @@
     <string name="editContactDescription">"Kontakt bearbeiten"</string>
     <string name="insertContactDescription">"Kontakt erstellen"</string>
     <string name="searchHint">"Kontakte durchsuchen"</string>
+    <string name="menu_search">"Suchen"</string>
     <string name="menu_newContact">"Neuer Kontakt"</string>
     <string name="menu_viewContact">"Kontakt anzeigen"</string>
     <string name="menu_callNumber">"<xliff:g id="NAME">%s</xliff:g> anrufen"</string>
@@ -43,8 +43,7 @@
     <string name="deleteConfirmation_title">"Löschen"</string>
     <string name="deleteConfirmation">"Dieser Kontakt wird gelöscht."</string>
     <string name="menu_done">"Fertig"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"Rückgängig"</string>
     <string name="editContact_title_edit">"Kontakt bearbeiten"</string>
     <string name="editContact_title_insert">"Neuer Kontakt"</string>
     <string name="menu_addItem">"Weitere Informationen"</string>
@@ -126,15 +125,15 @@
     <string name="voicemail">"Mailbox"</string>
     <string name="unknown">"Unbekannt"</string>
     <string name="private_num">"Private Nummer"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"Mit Tastatur wählen"</string>
     <string name="dialerDialpadHintText">"Zum Hinzufügen eines Anrufs wählen"</string>
     <string name="simContacts_emptyLoading">"Ladevorgang von SIM-Karte läuft..."</string>
     <string name="simContacts_title">"Kontakte auf SIM-Karte"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synchronisieren Sie Ihre Google-Kontakte!"</font>" "\n"Nach der Synchronisierung stehen Ihnen Ihre Kontakte überall zur Verfügung."</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"Es sind keine Kontakte vorhanden."\n\n"Drücken Sie zum Hinzufügen von Kontakten auf "<font fgcolor="#ffffffff"><b>"Menü"</b></font>" und wählen Sie Folgendes aus:"\n\n"        "<li><font fgcolor="#ffffffff"><b></b>"Neuer Kontakt"</font>\n", um einen neuen Kontakt zu erstellen"</li>\n<li>"        "<font fgcolor="#ffffffff"><b></b></font>"Kontakte importieren"\n</li>", um Kontakte von Ihrer SIM-Karte hinzuzufügen"</string>
+    <string name="noContactsHelpTextWithSync">"Sie haben keine Kontakte."\n\n"Drücken Sie zum Hinzufügen die "<font fgcolor="#ffffffff"><b>"Menütaste"</b></font>" und wählen Sie"\n\n"        "<li><font fgcolor="#ffffffff"><b>"Synchronisierungsgruppen bearbeiten"</b></font>", um Kontakte mit einem neuen oder bestehenden Google-Konto zu synchronisieren,"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Neuer Kontakt"</b></font>", um einen Kontakt neu zu erstellen, "\n</li>\n"        "<li><font fgcolor="#ffffffff"><b>"Kontakte importieren"</b></font>", um Kontakte von Ihrer SIM-Karte hinzuzufügen."\n</li></string>
     <string name="seclectSyncGroups_title">"Zu synchronisierende Gruppen auswählen"</string>
     <string name="liveFolder_all_label">"Alle Kontakte"</string>
     <string name="liveFolder_favorites_label">"Markiert"</string>
@@ -163,10 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"Wird direkt an Voicemail weitergeleitet"</string>
     <string name="detailsRingtone">"Eingestellt auf <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"Rückruf"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
-    <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
-    <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
-    <skip />
+    <string name="callAgain">"Erneut anrufen"</string>
+    <string name="returnCall">"Zurückrufen"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> Minuten, <xliff:g id="SECONDS">%s</xliff:g> Sekunden"</string>
+    <string name="favoritesFrquentSeparator">"Häufig angerufen"</string>
+    <string name="add_contact_dlg_title">"Kontakt hinzufügen"</string>
+    <string name="add_contact_dlg_message_fmt">"\"<xliff:g id="EMAIL">%s</xliff:g>\" zu den Kontakten hinzufügen?"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f41406d..af47792 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -16,7 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"Contactos"</string>
-    <string name="launcherDialer">"Llamadas"</string>
+    <string name="launcherDialer">"Marcador"</string>
     <string name="shortcutContact">"Contacto"</string>
     <string name="starredList">"Destacados"</string>
     <string name="frequentList">"Frecuentes"</string>
@@ -26,6 +26,7 @@
     <string name="editContactDescription">"Editar contacto"</string>
     <string name="insertContactDescription">"Crear contacto"</string>
     <string name="searchHint">"Buscar contactos"</string>
+    <string name="menu_search">"Buscar"</string>
     <string name="menu_newContact">"Contacto nuevo"</string>
     <string name="menu_viewContact">"Ver contacto"</string>
     <string name="menu_callNumber">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -124,13 +125,15 @@
     <string name="voicemail">"Buzón de voz"</string>
     <string name="unknown">"Desconocidos"</string>
     <string name="private_num">"Número privado"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"Utilizar teclado para marcar"</string>
     <string name="dialerDialpadHintText">"Marcar para añadir una llamada"</string>
     <string name="simContacts_emptyLoading">"Cargando desde tarjeta SIM…"</string>
     <string name="simContacts_title">"Contactos de tarjeta SIM"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Sincroniza tus contactos de Google"</font>" "\n"Después de sincronizarlos con tu teléfono, podrás acceder a tus contactos desde cualquier lugar."</string>
-    <string name="noContactsHelpText">"No tienes contactos."\n\n"Para añadir contactos, pulsa la tecla  "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" y selecciona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para añadir un nuevo contacto"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para añadir contactos de la tarjeta SIM"\n</li></string>
-    <string name="noContactsHelpTextWithSync">"No tienes contactos."\n\n"Para añadir contactos, pulsa la tecla "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" y selecciona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Editar grupos de sincronización"</b></font>" para añadirlos desde una cuenta de Google nueva o existente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para crear un contacto"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para añadir contactos de la tarjeta SIM"\n</li></string>
+    <string name="noContactsHelpText">"No tienes ningún contacto."\n\n"Si quieres añadir alguno, pulsa la tecla de menú"<font fgcolor="#ffffffff"><b></b></font>" y selecciona:"\n\n<li><font fgcolor="#ffffffff"><b>"Contacto nuevo"</b></font>" para añadir un contacto manualmente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para añadirlos desde tu tarjeta SIM"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"No tienes ningún contacto."\n\n"Si quieres añadir alguno, pulsa la tecla de menú"<font fgcolor="#ffffffff"><b></b></font>" y selecciona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Editar grupos de sincronización"</b></font>" para añadirlos desde una cuenta de Google nueva o ya existente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuevo contacto"</b></font>" para añadir un contacto manualmente"\n</li>\n<li><font fgcolor="#ffffffff"><b>"Importar contactos"</b></font>" para añadirlos desde la tarjeta SIM"\n</li></string>
     <string name="seclectSyncGroups_title">"Seleccionar grupos para la sincronización"</string>
     <string name="liveFolder_all_label">"Todos los contactos"</string>
     <string name="liveFolder_favorites_label">"Destacados"</string>
@@ -159,7 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"Pasarán directamente al correo de voz"</string>
     <string name="detailsRingtone">"Establecido como <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"Volver a llamar"</string>
-    <string name="callAgain">"Llamar de nuevo"</string>
+    <string name="callAgain">"Volver a llamar"</string>
     <string name="returnCall">"Devolver llamada"</string>
-    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min. y <xliff:g id="SECONDS">%s</xliff:g> seg."</string>
+    <string name="favoritesFrquentSeparator">"Más llamados"</string>
+    <string name="add_contact_dlg_title">"Añadir contacto"</string>
+    <string name="add_contact_dlg_message_fmt">"¿Deseas añadir \"<xliff:g id="EMAIL">%s</xliff:g>\" a Contactos?"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index ce00813..b84b99a 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -26,6 +26,7 @@
     <string name="editContactDescription">"Modifier le contact"</string>
     <string name="insertContactDescription">"Créer un contact"</string>
     <string name="searchHint">"Rechercher des contacts"</string>
+    <string name="menu_search">"Rechercher"</string>
     <string name="menu_newContact">"Nouveau contact"</string>
     <string name="menu_viewContact">"Afficher le contact"</string>
     <string name="menu_callNumber">"Appeler <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -42,7 +43,7 @@
     <string name="deleteConfirmation_title">"Supprimer"</string>
     <string name="deleteConfirmation">"Ce contact sera supprimé."</string>
     <string name="menu_done">"OK"</string>
-    <string name="menu_doNotSave">"Annuler"</string>
+    <string name="menu_doNotSave">"Rétablir"</string>
     <string name="editContact_title_edit">"Modifier le contact"</string>
     <string name="editContact_title_insert">"Nouveau contact"</string>
     <string name="menu_addItem">"Plus d\'infos"</string>
@@ -124,13 +125,15 @@
     <string name="voicemail">"Boîte vocale"</string>
     <string name="unknown">"Inconnu"</string>
     <string name="private_num">"Numéro privée"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"Utilisez le clavier pour composer le numéro"</string>
     <string name="dialerDialpadHintText">"Composer le numéro pour ajouter un appel"</string>
     <string name="simContacts_emptyLoading">"Chargement depuis la carte SIM..."</string>
     <string name="simContacts_title">"Contacts de carte SIM"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synchronisez vos contacts Google !"</font>" "\n"Vos contacts seront disponibles, où que vous soyez, dès que vous aurez synchronisé votre téléphone."</string>
-    <string name="noContactsHelpText">"Aucun contact."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" et sélectionnez :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un tout nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer des contacts"</b></font>" pour ajouter des contacts à partir de votre carte SIM"\n</li></string>
-    <string name="noContactsHelpTextWithSync">"Aucun contact."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" et sélectionnez :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Param. sync. groupes"</b></font>" pour ajouter des contacts depuis un nouveau compte Google ou un compte existant."\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un tout nouveau contact"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer des contacts"</b></font>" pour ajouter des contacts à partir de votre carte SIM"\n</li></string>
+    <string name="noContactsHelpText">"Vous n\'avez aucun contact."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" et sélectionnez :"\n\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un contact de toutes pièces ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer des contacts"</b></font>" pour ajouter des contacts à partir de votre carte SIM."\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Vous n\'avez aucun contact."\n\n"Pour ajouter des contacts, appuyez sur "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" et sélectionnez :"\n" "\n<li><font fgcolor="#ffffffff"><b>"Param. sync. groupes"</b></font>" pour ajouter un contact à partir d\'un nouveau compte Google ou d\'un compte existant ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nouveau contact"</b></font>" pour créer un contact de toutes pièces ;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer des contacts"</b></font>" pour ajouter des contacts à partir de votre carte SIM."\n</li></string>
     <string name="seclectSyncGroups_title">"Sélectionner les groupes à synchroniser"</string>
     <string name="liveFolder_all_label">"Tous les contacts"</string>
     <string name="liveFolder_favorites_label">"Suivis"</string>
@@ -159,7 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"Seront envoyés directement en tant que message vocal"</string>
     <string name="detailsRingtone">"Associer à <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"Rappeler"</string>
-    <string name="callAgain">"Rappeler"</string>
+    <string name="callAgain">"Renouveler l\'appel"</string>
     <string name="returnCall">"Rappeler"</string>
-    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> mn <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> mn <xliff:g id="SECONDS">%s</xliff:g> s"</string>
+    <string name="favoritesFrquentSeparator">"Fréquemment appelés"</string>
+    <string name="add_contact_dlg_title">"Ajouter un contact"</string>
+    <string name="add_contact_dlg_message_fmt">"Ajouter \"<xliff:g id="EMAIL">%s</xliff:g>\" aux contacts ?"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 59064f0..8c7a4ef 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -26,6 +26,7 @@
     <string name="editContactDescription">"Modifica contatto"</string>
     <string name="insertContactDescription">"Crea contatto"</string>
     <string name="searchHint">"Cerca contatti"</string>
+    <string name="menu_search">"Cerca"</string>
     <string name="menu_newContact">"Nuovo contatto"</string>
     <string name="menu_viewContact">"Visualizza contatto"</string>
     <string name="menu_callNumber">"Chiama <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -78,7 +79,7 @@
     <string name="syncGroupPreference">"Modifica sincr. gruppi"</string>
     <string name="importFromSim">"Importa contatti"</string>
     <string name="send_to_voicemail_checkbox">"Inoltra chiamate direttamente alla segreteria"</string>
-    <string name="send_to_voicemail_view">"Le chiamate vengono inoltrate direttamente alla segreteria."</string>
+    <string name="send_to_voicemail_view">"Chiamate inoltrate direttamente alla segreteria."</string>
     <string name="default_ringtone">"Predefinita"</string>
     <string name="addPicture">"Aggiungi icona"</string>
     <string name="removePicture">"Rimuovi icona"</string>
@@ -109,7 +110,7 @@
     <string name="contactsIconLabel">"Contatti"</string>
     <string name="contactsFavoritesLabel">"Preferiti"</string>
     <string name="dialerIconLabel">"Telefono"</string>
-    <string name="recentCallsIconLabel">"Reg. chiamate"</string>
+    <string name="recentCallsIconLabel">"Chiamate"</string>
     <string name="liveFolderAll">"Tutti i contatti"</string>
     <string name="liveFolderFavorites">"Contatti speciali"</string>
     <string name="liveFolderPhone">"Contatti con numeri di telefono"</string>
@@ -124,13 +125,15 @@
     <string name="voicemail">"Segreteria"</string>
     <string name="unknown">"Sconosciuto"</string>
     <string name="private_num">"Numero privato"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"Usa la tastiera"</string>
     <string name="dialerDialpadHintText">"Componi per aggiungere una chiamata"</string>
     <string name="simContacts_emptyLoading">"Caricamento da SIM..."</string>
     <string name="simContacts_title">"Contatti SIM"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Sincronizza i tuoi contatti Google."</font>" "\n"Dopo la sincronizzazione con il telefono, i tuoi contatti saranno sempre a tua disposizione."</string>
-    <string name="noContactsHelpText">"Non hai nessun contatto."\n\n"Per aggiungere dei contatti, premi "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e seleziona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare un nuovo contatto"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa contatti"</b></font>" per aggiungere i contatti salvati sulla scheda SIM card"\n</li></string>
-    <string name="noContactsHelpTextWithSync">"Non hai nessun contatto."\n\n"Per aggiungere i contatti, premi "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e seleziona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Modifica sincr. gruppi"</b></font>" per aggiungere contatti da un account Google nuovo o già esistente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare un contatto nuovo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa contatti"</b></font>" per aggiungere i contatti salvati sulla scheda SIM"\n</li></string>
+    <string name="noContactsHelpText">"Non è presente alcun contatto."\n\n"Per aggiungere contatti, premi "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" e seleziona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare un contatto nuovo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa contatti"</b></font>" per aggiungere contatti dalla SIM"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Non è presente alcun contatto."\n\n"Per aggiungere contatti, premi "<font fgcolor="#ffffffff"><b>" Menu"</b></font>" e seleziona:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Modifica sincr. gruppi"</b></font>" per aggiungere contatti da un account Google nuovo o esistente"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Nuovo contatto"</b></font>" per creare un contatto nuovo"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importa contatti"</b></font>" per aggiungere contatti dalla SIM"\n</li></string>
     <string name="seclectSyncGroups_title">"Seleziona i gruppi da sincronizzare"</string>
     <string name="liveFolder_all_label">"Tutti i contatti"</string>
     <string name="liveFolder_favorites_label">"Speciali"</string>
@@ -161,5 +164,8 @@
     <string name="callBack">"Richiama"</string>
     <string name="callAgain">"Richiama"</string>
     <string name="returnCall">"Chiama numero"</string>
-    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+    <string name="favoritesFrquentSeparator">"Numeri più chiamati"</string>
+    <string name="add_contact_dlg_title">"Aggiungi contatto"</string>
+    <string name="add_contact_dlg_message_fmt">"Aggiungere \"<xliff:g id="EMAIL">%s</xliff:g>\" ai contatti?"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 117c015..ba6c499 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -16,20 +16,20 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"連絡先"</string>
-    <!-- no translation found for launcherDialer (140610573639849799) -->
-    <skip />
+    <string name="launcherDialer">"電話"</string>
     <string name="shortcutContact">"連絡先"</string>
     <string name="starredList">"スター付き"</string>
-    <string name="frequentList">"よく連絡する連絡先"</string>
+    <string name="frequentList">"よく使う連絡先"</string>
     <string name="strequentList">"お気に入り"</string>
     <string name="viewContactTitle">"連絡先情報"</string>
     <string name="viewContactDesription">"連絡先を表示"</string>
     <string name="editContactDescription">"連絡先を編集"</string>
     <string name="insertContactDescription">"連絡先を新規登録"</string>
     <string name="searchHint">"連絡先を検索"</string>
+    <string name="menu_search">"検索"</string>
     <string name="menu_newContact">"連絡先を新規登録"</string>
-    <string name="menu_viewContact">"連絡先を表示"</string>
-    <string name="menu_callNumber">"<xliff:g id="NAME">%s</xliff:g>さんに発信"</string>
+    <string name="menu_viewContact">"連絡先詳細"</string>
+    <string name="menu_callNumber">"発信 <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="menu_addStar">"お気に入りに追加"</string>
     <string name="menu_removeStar">"お気に入りから削除"</string>
     <string name="menu_showBarcode">"バーコードを表示"</string>
@@ -43,16 +43,15 @@
     <string name="deleteConfirmation_title">"削除"</string>
     <string name="deleteConfirmation">"この連絡先を削除します。"</string>
     <string name="menu_done">"完了"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"キャンセル"</string>
     <string name="editContact_title_edit">"連絡先を編集"</string>
     <string name="editContact_title_insert">"連絡先を新規登録"</string>
     <string name="menu_addItem">"情報を追加"</string>
-    <string name="label_phonetic_name">"音声"</string>
+    <string name="label_phonetic_name">"読み"</string>
     <string name="label_notes">"メモ"</string>
     <string name="label_ringtone">"着信音"</string>
     <string name="ghostData_name">"名前"</string>
-    <string name="ghostData_phonetic_name">"音声名"</string>
+    <string name="ghostData_phonetic_name">"読み仮名"</string>
     <string name="ghostData_company">"会社"</string>
     <string name="ghostData_title">"役職"</string>
     <string name="ghostData_im">"IM名"</string>
@@ -60,27 +59,27 @@
     <string name="ghostData_phone">"電話番号"</string>
     <string name="ghostData_email">"メールアドレス"</string>
     <string name="ghostData_postal">"住所"</string>
-    <string name="invalidContactMessage">"この連絡先は消去されています。"</string>
+    <string name="invalidContactMessage">"この連絡先は削除されました"</string>
     <string name="pickerNewContactHeader">"連絡先を新規登録"</string>
     <string name="selectLabel">"選択してください"</string>
     <string name="phoneLabelsGroup">"電話番号"</string>
     <string name="emailLabelsGroup">"メール"</string>
-    <string name="imLabelsGroup">"IM"</string>
+    <string name="imLabelsGroup">"チャット"</string>
     <string name="postalLabelsGroup">"住所"</string>
     <string name="otherLabelsGroup">"その他"</string>
   <string-array name="otherLabels">
-    <item>"勤務先情報"</item>
+    <item>"所属"</item>
     <item>"メモ"</item>
   </string-array>
-    <string name="errorDialogTitle">"写真なし"</string>
-    <string name="photoPickerNotFoundText">"写真がありません。"</string>
+    <string name="errorDialogTitle">"画像なし"</string>
+    <string name="photoPickerNotFoundText">"画像がありません。"</string>
     <string name="attachToContact">"連絡先のアイコン"</string>
     <string name="customLabelPickerTitle">"新しいラベル名"</string>
     <string name="menu_displayGroup">"グループを表示"</string>
-    <string name="syncGroupPreference">"同期グループを編集"</string>
+    <string name="syncGroupPreference">"同期する範囲"</string>
     <string name="importFromSim">"連絡先をインポート"</string>
-    <string name="send_to_voicemail_checkbox">"ボイスメールに直接電話します。"</string>
-    <string name="send_to_voicemail_view">"この番号にかけるとボイスメールに送信されます。"</string>
+    <string name="send_to_voicemail_checkbox">"ボイスメールに自動転送する"</string>
+    <string name="send_to_voicemail_view">"この番号にかけるとボイスメールに転送されます。"</string>
     <string name="default_ringtone">"端末既定"</string>
     <string name="addPicture">"アイコンを追加"</string>
     <string name="removePicture">"アイコンを削除"</string>
@@ -93,9 +92,11 @@
     <string name="syncAllGroups">"全連絡先を同期"</string>
     <string name="groupNameMyContacts">"Myコンタクト"</string>
     <string name="groupNameWithPhones">"電話番号のある連絡先"</string>
+    <!-- no translation found for starredInAndroid (6495527538140213440) -->
+    <skip />
     <string name="contactCreatedToast">"連絡先を作成しました。"</string>
     <string name="contactSavedToast">"連絡先を保存しました。"</string>
-    <string name="listSeparatorCallNumber">"電話をかける"</string>
+    <string name="listSeparatorCallNumber">"発信"</string>
     <string name="listSeparatorCallNumber_edit">"電話番号"</string>
     <string name="listSeparatorSendSmsMms">"SMS/MMSを送信"</string>
     <string name="listSeparatorSendEmail">"メールを送信"</string>
@@ -104,19 +105,19 @@
     <string name="listSeparatorSendIm_edit">"チャットアドレス"</string>
     <string name="listSeparatorMapAddress">"地図でみる"</string>
     <string name="listSeparatorMapAddress_edit">"住所"</string>
-    <string name="listSeparatorOrganizations">"勤務先情報"</string>
+    <string name="listSeparatorOrganizations">"所属"</string>
     <string name="listSeparatorOtherInformation">"その他の情報"</string>
     <string name="listSeparatorOtherInformation_edit">"その他のオプション"</string>
     <string name="listSeparatorMore_edit">"開く"</string>
     <string name="contactsIconLabel">"連絡先"</string>
-    <string name="contactsFavoritesLabel">"お気に入り"</string>
-    <string name="dialerIconLabel">"通話"</string>
+    <string name="contactsFavoritesLabel">"お気入り"</string>
+    <string name="dialerIconLabel">"電話"</string>
     <string name="recentCallsIconLabel">"通話履歴"</string>
     <string name="liveFolderAll">"すべての連絡先"</string>
     <string name="liveFolderFavorites">"スター付きの連絡先"</string>
     <string name="liveFolderPhone">"電話番号のある連絡先"</string>
     <string name="menu_sendTextMessage">"SMSメッセージを送信"</string>
-    <string name="recentCalls_callNumber">"<xliff:g id="NAME">%s</xliff:g>さんに発信"</string>
+    <string name="recentCalls_callNumber">"発信 <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall">"発信前に番号を編集"</string>
     <string name="recentCalls_addToContact">"連絡先に追加"</string>
     <string name="recentCalls_removeFromRecentList">"通話履歴から消去"</string>
@@ -124,17 +125,17 @@
     <string name="recentCalls_empty">"通話履歴なし"</string>
     <string name="imei">"IMEI（端末識別番号）"</string>
     <string name="voicemail">"ボイスメール"</string>
-    <string name="unknown">"不明"</string>
-    <string name="private_num">"非通知番号"</string>
+    <string name="unknown">"通知不可能"</string>
+    <string name="private_num">"非通知"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"キーボードで番号を入力してください"</string>
-    <string name="dialerDialpadHintText">"ダイヤルして追加"</string>
+    <string name="dialerDialpadHintText">"ダイヤルして通話追加"</string>
     <string name="simContacts_emptyLoading">"SIMカードから読み取り中..."</string>
     <string name="simContacts_title">"SIMカードの連絡先"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Googleアカウントの連絡先同期"</font>" "\n"Googleサービスで使っている連絡先をこの携帯電話でも使えるようになります。"</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"連絡先が登録されていません。"\n\n<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーを押して登録方法を選択してください:"\n" "\n<li><font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>": 連絡先を入力して新規作成します"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"連絡先をインポート"</b></font>": 連絡先をSIMカードから取り込みます"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"連絡先が登録されていません。"\n\n<font fgcolor="#ffffffff"><b>"MENU"</b></font>"キーを押して登録方法を選択してください:"\n\n<li><font fgcolor="#ffffffff"><b>"同期する範囲"</b></font>": Googleアカウントから連絡先を読み込んで追加します"\n</li>\n<li><font fgcolor="#ffffffff"><b>"連絡先を新規登録"</b></font>": 連絡先を入力して新規作成します"\n</li>\n<li><font fgcolor="#ffffffff"><b>"連絡先をインポート"</b></font>": 連絡先をSIMカードから取り込みます"\n</li></string>
     <string name="seclectSyncGroups_title">"同期するグループを選択"</string>
     <string name="liveFolder_all_label">"すべての連絡先"</string>
     <string name="liveFolder_favorites_label">"スター付き"</string>
@@ -156,17 +157,17 @@
     <string name="add_more_items">"その他の項目を追加"</string>
     <string name="actionCall">"<xliff:g id="TYPE">%s</xliff:g>に発信"</string>
     <string name="actionEmail">"<xliff:g id="TYPE">%s</xliff:g>にメールを送信"</string>
-    <string name="actionText">"<xliff:g id="TYPE">%s</xliff:g>にテキストを送信"</string>
-    <string name="actionChat">"<xliff:g id="TYPE">%s</xliff:g>を使用してチャット"</string>
-    <string name="actionMap">"<xliff:g id="TYPE">%s</xliff:g>の住所を表示"</string>
+    <string name="actionText">"<xliff:g id="TYPE">%s</xliff:g>にSMSを送信"</string>
+    <string name="actionChat">"<xliff:g id="TYPE">%s</xliff:g>でチャット"</string>
+    <string name="actionMap">"<xliff:g id="TYPE">%s</xliff:g>の住所を地図で見る"</string>
     <string name="actionIncomingCall">"着信"</string>
-    <string name="detailIncomingCallsGoToVoicemail">"直接ボイスメールに送信します"</string>
+    <string name="detailIncomingCallsGoToVoicemail">"ボイスメールに自動転送されます"</string>
     <string name="detailsRingtone">"<xliff:g id="RINGTONE_NAME">%s</xliff:g>に設定"</string>
     <string name="callBack">"コールバック"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
-    <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
-    <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
-    <skip />
+    <string name="callAgain">"再発信"</string>
+    <string name="returnCall">"発信"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g>分<xliff:g id="SECONDS">%s</xliff:g>秒"</string>
+    <string name="favoritesFrquentSeparator">"よく使う連絡先"</string>
+    <string name="add_contact_dlg_title">"連絡先を追加"</string>
+    <string name="add_contact_dlg_message_fmt">"<xliff:g id="EMAIL">%s</xliff:g> を連絡先に追加しますか？"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index aafe0d0..9275244 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -16,8 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"연락처"</string>
-    <!-- no translation found for launcherDialer (140610573639849799) -->
-    <skip />
+    <string name="launcherDialer">"Dialer"</string>
     <string name="shortcutContact">"연락처"</string>
     <string name="starredList">"별표 표시된 연락처"</string>
     <string name="frequentList">"자주 거는 전화"</string>
@@ -27,6 +26,7 @@
     <string name="editContactDescription">"연락처 편집"</string>
     <string name="insertContactDescription">"연락처 만들기"</string>
     <string name="searchHint">"연락처 검색"</string>
+    <string name="menu_search">"검색"</string>
     <string name="menu_newContact">"새 연락처"</string>
     <string name="menu_viewContact">"연락처 보기"</string>
     <string name="menu_callNumber">"<xliff:g id="NAME">%s</xliff:g>에게 전화걸기"</string>
@@ -43,8 +43,7 @@
     <string name="deleteConfirmation_title">"삭제"</string>
     <string name="deleteConfirmation">"연락처가 삭제됩니다."</string>
     <string name="menu_done">"완료"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"되돌리기"</string>
     <string name="editContact_title_edit">"연락처 편집"</string>
     <string name="editContact_title_insert">"새 연락처"</string>
     <string name="menu_addItem">"추가정보"</string>
@@ -126,15 +125,15 @@
     <string name="voicemail">"음성메일"</string>
     <string name="unknown">"알 수 없음"</string>
     <string name="private_num">"비공개 번호"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"키보드를 사용하여 전화걸기"</string>
     <string name="dialerDialpadHintText">"통화를 추가할 전화번호 입력"</string>
     <string name="simContacts_emptyLoading">"SIM 카드에서 로드 중…"</string>
     <string name="simContacts_title">"SIM 카드 연락처"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Google 연락처를 동기화하세요."</font>" "\n"연락처를 전화기로 동기화하면 어디에서나 연락처를 확인할 수 있습니다."</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"저장된 주소록이 없습니다."\n\n"주소록을 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 누르고 다음을 선택하세요."\n" "\n<li><font fgcolor="#ffffffff"><b>"새 주소록"</b></font>" - 주소록을 새로 생성하려는 경우"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"주소록 가져오기"</b></font>" - SIM 카드에서 주소록을 추가하려는 경우"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"저장된 주소록이 없습니다."\n\n"주소록을 추가하려면 "<font fgcolor="#ffffffff"><b>"메뉴"</b></font>"를 누르고 다음을 선택하세요."\n\n" "<li><font fgcolor="#ffffffff"><b>"동기화 그룹 수정"</b></font>" - 새 계정 또는 기존 Google 계정에서 추가하려는 경우"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"새 주소록"</b></font>" - 주소록을 새로 생성하려는 경우"\n</li>\n" "<li><font fgcolor="#ffffffff"><b>"주소록 가져오기"</b></font>" - SIM 카드에서 주소록을 추가하려는 경우"\n</li></string>
     <string name="seclectSyncGroups_title">"동기화할 그룹 선택"</string>
     <string name="liveFolder_all_label">"전체 주소록"</string>
     <string name="liveFolder_favorites_label">"중요편지함"</string>
@@ -163,10 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"음성메일로 바로 보냄"</string>
     <string name="detailsRingtone">"<xliff:g id="RINGTONE_NAME">%s</xliff:g>(으)로 설정"</string>
     <string name="callBack">"콜백"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
-    <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
-    <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
-    <skip />
+    <string name="callAgain">"다시 걸기"</string>
+    <string name="returnCall">"부재중 전화에 전화 걸기"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g>분 <xliff:g id="SECONDS">%s</xliff:g>초"</string>
+    <string name="favoritesFrquentSeparator">"자주 통화한 목록"</string>
+    <string name="add_contact_dlg_title">"주소 추가"</string>
+    <string name="add_contact_dlg_message_fmt">"주소록에 \'<xliff:g id="EMAIL">%s</xliff:g>\'을(를) 추가하시겠습니까?"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 3b47bac..c00eb4a 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -26,6 +26,8 @@
     <string name="editContactDescription">"Rediger kontakt"</string>
     <string name="insertContactDescription">"Opprett kontakt"</string>
     <string name="searchHint">"Søk i kontakter"</string>
+    <!-- no translation found for menu_search (9147752853603483719) -->
+    <skip />
     <string name="menu_newContact">"Ny kontakt"</string>
     <string name="menu_viewContact">"Se på kontakt"</string>
     <string name="menu_callNumber">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -42,8 +44,7 @@
     <string name="deleteConfirmation_title">"Slett"</string>
     <string name="deleteConfirmation">"Denne kontakten vil bli slettet."</string>
     <string name="menu_done">"Lagre"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"Tilbakestill"</string>
     <string name="editContact_title_edit">"Rediger kontakt"</string>
     <string name="editContact_title_insert">"Ny kontakt"</string>
     <string name="menu_addItem">"Mer informasjon"</string>
@@ -125,15 +126,15 @@
     <string name="voicemail">"Telefonsvarer"</string>
     <string name="unknown">"Ukjent"</string>
     <string name="private_num">"Skjult nummer"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"Bruk tastaturet for å ringe"</string>
     <string name="dialerDialpadHintText">"Ring for å legge til en samtale"</string>
     <string name="simContacts_emptyLoading">"Henter fra SIM-kort…"</string>
     <string name="simContacts_title">"Kontakter på SIM-kort"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synkroniser Google-kontaktene dine!"</font>" "\n"Etter å ha synkronisert telefonen vil kontaktene dine bli tilgjengelig overalt."</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"Du har ingen kontakter."\n\n"For å legge til kontakter, trykk "<font fgcolor="#ffffffff"><b>"menyknappen"</b></font>" og velg:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å lage en ny kontakt fra grunnen av"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer kontakter"</b></font>" for å legge til kontakter fra SIM-kortet"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Du har ingen kontakter."\n\n"For å legge til kontakter, trykk "<font fgcolor="#ffffffff"><b>"menyknappen"</b></font>" og velg:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Rediger synkroniserte grupper"</b></font>" for å legge til fra en ny eller eksisterende Google-konto"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Ny kontakt"</b></font>" for å lage en ny kontakt fra grunnen av"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importer kontakter"</b></font>" for å legge til kontakter fra SIM-kortet"\n</li></string>
     <string name="seclectSyncGroups_title">"Velg grupper som skal synkroniseres"</string>
     <string name="liveFolder_all_label">"Alle kontakter"</string>
     <string name="liveFolder_favorites_label">"Med stjerne"</string>
@@ -162,10 +163,13 @@
     <string name="detailIncomingCallsGoToVoicemail">"Vil bli sendt rett til telefonsvarer"</string>
     <string name="detailsRingtone">"Sett til <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"Ring tilbake"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
+    <string name="callAgain">"Ring på nytt"</string>
+    <string name="returnCall">"Ring tilbake"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek"</string>
+    <!-- no translation found for favoritesFrquentSeparator (5007070838253932139) -->
     <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
+    <!-- no translation found for add_contact_dlg_title (2789046541229846116) -->
     <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
+    <!-- no translation found for add_contact_dlg_message_fmt (7986472669444326576) -->
     <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 0d3a556..9aed711 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -16,8 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"Contacten"</string>
-    <!-- no translation found for launcherDialer (140610573639849799) -->
-    <skip />
+    <string name="launcherDialer">"Telefoon"</string>
     <string name="shortcutContact">"Contacten"</string>
     <string name="starredList">"Met ster"</string>
     <string name="frequentList">"Vaak"</string>
@@ -27,6 +26,7 @@
     <string name="editContactDescription">"Contactpersoon bewerken"</string>
     <string name="insertContactDescription">"Contactpersoon maken"</string>
     <string name="searchHint">"Contacten zoeken"</string>
+    <string name="menu_search">"Zoeken"</string>
     <string name="menu_newContact">"Nieuwe contactpersoon"</string>
     <string name="menu_viewContact">"Contactpersoon weergeven"</string>
     <string name="menu_callNumber">"<xliff:g id="NAME">%s</xliff:g> bellen"</string>
@@ -43,8 +43,7 @@
     <string name="deleteConfirmation_title">"Verwijderen"</string>
     <string name="deleteConfirmation">"Deze contactpersoon wordt verwijderd."</string>
     <string name="menu_done">"Gereed"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"Terugkeren"</string>
     <string name="editContact_title_edit">"Contactpersoon bewerken"</string>
     <string name="editContact_title_insert">"Nieuwe contactpersoon"</string>
     <string name="menu_addItem">"Meer informatie"</string>
@@ -126,15 +125,15 @@
     <string name="voicemail">"Voicemail"</string>
     <string name="unknown">"Onbekend"</string>
     <string name="private_num">"Privénummer"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"Toetsen gebruiken om te bellen"</string>
     <string name="dialerDialpadHintText">"Bellen om een oproep toe te voegen"</string>
     <string name="simContacts_emptyLoading">"Laden vanaf SIM-kaart..."</string>
     <string name="simContacts_title">"Contacten op SIM-kaart"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Synchroniseer uw Google-contacten!"</font>" "\n"Zodra uw telefoon is gesynchroniseerd, heeft u uw contacten altijd ter beschikking."</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"Je hebt geen contacten."\n\n"Als je contacten wilt toevoegen, druk je op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en selecteer je:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Nieuw contact"</b></font>" om een nieuw contact te maken"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Contacten importeren"</b></font>" om contacten vanaf je SIM-kaart toe te voegen"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Je hebt geen contacten."\n\n"Als je contacten wilt toevoegen, klik je op "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" en selecteer je:"\n\n<li><font fgcolor="#ffffffff"><b>"\'Synchronisatiegroepen bewerken\'"</b></font>" om contacten toe te voegen uit een nieuw of bestaand Google-account"\n</li>\n"        "<li><font fgcolor="#ffffffff"><b>"\'Nieuw contact\'"</b></font>" om een geheel nieuwe contact te maken"\n</li>\n"        "<li><font fgcolor="#ffffffff"><b>"\'Contacten importeren\'"</b></font>" om contact te importeren vanaf je SIM-kaart"\n</li></string>
     <string name="seclectSyncGroups_title">"Groepen selecteren om te synchroniseren"</string>
     <string name="liveFolder_all_label">"Alle contacten"</string>
     <string name="liveFolder_favorites_label">"Met ster"</string>
@@ -163,10 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"Wordt direct naar voicemail verzonden"</string>
     <string name="detailsRingtone">"Ingesteld op <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"Terugbellen"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
-    <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
-    <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
-    <skip />
+    <string name="callAgain">"Opnieuw bellen"</string>
+    <string name="returnCall">"Terugbellen"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
+    <string name="favoritesFrquentSeparator">"Vaak gebeld"</string>
+    <string name="add_contact_dlg_title">"Contact toevoegen"</string>
+    <string name="add_contact_dlg_message_fmt">"\"<xliff:g id="EMAIL">%s</xliff:g>\" toevoegen aan contacten?"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index feb5c8b..844c214 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -16,8 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"Kontakty"</string>
-    <!-- no translation found for launcherDialer (140610573639849799) -->
-    <skip />
+    <string name="launcherDialer">"Wybieranie numeru"</string>
     <string name="shortcutContact">"Kontakt"</string>
     <string name="starredList">"Oznaczony gwiazdką"</string>
     <string name="frequentList">"Częste"</string>
@@ -27,6 +26,7 @@
     <string name="editContactDescription">"Edytuj kontakt"</string>
     <string name="insertContactDescription">"Utwórz kontakt"</string>
     <string name="searchHint">"Przeszukuj kontakty"</string>
+    <string name="menu_search">"Szukaj"</string>
     <string name="menu_newContact">"Nowy kontakt"</string>
     <string name="menu_viewContact">"Wyświetl kontakt"</string>
     <string name="menu_callNumber">"Zadzwoń do kontaktu <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -43,8 +43,7 @@
     <string name="deleteConfirmation_title">"Usuń"</string>
     <string name="deleteConfirmation">"Ten kontakt zostanie usunięty."</string>
     <string name="menu_done">"Gotowe"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"Przywróć"</string>
     <string name="editContact_title_edit">"Edytuj kontakt"</string>
     <string name="editContact_title_insert">"Nowy kontakt"</string>
     <string name="menu_addItem">"Więcej informacji"</string>
@@ -126,15 +125,15 @@
     <string name="voicemail">"Poczta głosowa"</string>
     <string name="unknown">"Nieznane"</string>
     <string name="private_num">"Numer prywatny"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"Wybierz numer za pomocą klawiatury"</string>
     <string name="dialerDialpadHintText">"Wybierz numer, aby dodać połączenie"</string>
     <string name="simContacts_emptyLoading">"Wczytywanie z karty SIM…"</string>
     <string name="simContacts_title">"Kontakty z karty SIM"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Zsynchronizuj kontakty Google!"</font>" "\n"Po zsynchronizowaniu telefonu zawsze będziesz mieć kontakty pod ręką."</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"Nie masz żadnych kontaktów."\n\n"Aby dodać kontakty, wybierz "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" i wybierz polecenie:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>" w celu utworzenia nowego kontaktu od początku"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Importuj kontakty"</b></font>" w celu dodania kontaktów z karty SIM"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Nie masz żadnych kontaktów."\n\n"Aby dodać kontakty, naciśnij "<font fgcolor="#ffffffff"><b>"Menu"</b></font>" i wybierz polecenie:"\n\n"        "<li><font fgcolor="#ffffffff"><b>"Synchronizacja grup￼"</b></font>" w celu dodania kontaktów z nowego lub istniejącego konta Google"\n</li>\n"        "<li><font fgcolor="#ffffffff"><b>"Nowy kontakt"</b></font>" w celu utworzenia nowego kontaktu od początku"\n</li>\n"        "<li><font fgcolor="#ffffffff"><b>"Importuj kontakty"</b></font>" w celu dodania kontaktów z karty SIM"\n</li></string>
     <string name="seclectSyncGroups_title">"Wybierz grupy do zsynchronizowania"</string>
     <string name="liveFolder_all_label">"Wszystkie kontakty"</string>
     <string name="liveFolder_favorites_label">"Oznaczone gwiazdką"</string>
@@ -163,10 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"Zostaną wysłane bezpośrednio na pocztę głosową"</string>
     <string name="detailsRingtone">"Ustaw na <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"Oddzwoń"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
-    <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
-    <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
-    <skip />
+    <string name="callAgain">"Zadzwoń ponownie"</string>
+    <string name="returnCall">"Połączenie zwrotne"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="favoritesFrquentSeparator">"Częste połączenia"</string>
+    <string name="add_contact_dlg_title">"Dodaj kontakt"</string>
+    <string name="add_contact_dlg_message_fmt">"Czy dodać adres „<xliff:g id="EMAIL">%s</xliff:g>” do kontaktów?"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 398c898..d63b72c 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -16,8 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"Контакты"</string>
-    <!-- no translation found for launcherDialer (140610573639849799) -->
-    <skip />
+    <string name="launcherDialer">"Дозвон"</string>
     <string name="shortcutContact">"Контакт"</string>
     <string name="starredList">"Помеченные"</string>
     <string name="frequentList">"Частые"</string>
@@ -27,6 +26,7 @@
     <string name="editContactDescription">"Изменить контакт"</string>
     <string name="insertContactDescription">"Создать контакт"</string>
     <string name="searchHint">"Искать контакты"</string>
+    <string name="menu_search">"Поиск"</string>
     <string name="menu_newContact">"Создать контакт"</string>
     <string name="menu_viewContact">"Просмотреть контакт"</string>
     <string name="menu_callNumber">"Позвонить: <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -43,8 +43,7 @@
     <string name="deleteConfirmation_title">"Удаление"</string>
     <string name="deleteConfirmation">"Этот контакт будет удален."</string>
     <string name="menu_done">"Готово"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"Отменить"</string>
     <string name="editContact_title_edit">"Изменить контакт"</string>
     <string name="editContact_title_insert">"Создание контакта"</string>
     <string name="menu_addItem">"Подробнее"</string>
@@ -126,15 +125,15 @@
     <string name="voicemail">"Голосовая почта"</string>
     <string name="unknown">"Неизвестно"</string>
     <string name="private_num">"Частный номер"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"Для набора воспользуйтесь клавиатурой"</string>
     <string name="dialerDialpadHintText">"Наберите номер, чтобы добавить вызов"</string>
     <string name="simContacts_emptyLoading">"Идет загрузка с SIM-карты…"</string>
     <string name="simContacts_title">"Контакты на SIM-карте"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"Синхронизируйте свои контакты Google!"</font>" "\n"После синхронизации с телефоном вы сможете общаться со знакомыми, где бы вы ни были."</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"Контакты отсутствуют."\n\n" Нажмите кнопку "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите:"\n\n<li><font fgcolor="#ffffffff"><b>"Создать контакт"</b></font>" – добавление нового контакта из рабочей области;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импорт контактов"</b></font>" – добавление контактов с SIM-карты.￼"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"Контакты отсутствуют."\n\n"Чтобы добавить контакты, нажмите кнопку "<font fgcolor="#ffffffff"><b>"Меню"</b></font>" и выберите:"\n" "\n<li><font fgcolor="#ffffffff"><b>"Редактировать группы синхронизации"</b></font>" – добавление контакта из нового или существующего аккаунта Google;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Создать контакт"</b></font>" – создание абсолютно нового контакта;"\n</li>" "\n<li><font fgcolor="#ffffffff"><b>"Импортировать контакты"</b></font>" – добавление контактов, содержащихся на SIM-карте."\n</li></string>
     <string name="seclectSyncGroups_title">"Выбор групп для синхронизации"</string>
     <string name="liveFolder_all_label">"Все контакты"</string>
     <string name="liveFolder_favorites_label">"Помеченные"</string>
@@ -163,10 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"Переадресация в голосовую почту"</string>
     <string name="detailsRingtone">"Выбрано: <xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"Перезвонить"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
-    <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
-    <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
-    <skip />
+    <string name="callAgain">"Позвонить снова"</string>
+    <string name="returnCall">"Перезвонить"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> мин. <xliff:g id="SECONDS">%s</xliff:g> с."</string>
+    <string name="favoritesFrquentSeparator">"Часто набираемые"</string>
+    <string name="add_contact_dlg_title">"Добавление контакта"</string>
+    <string name="add_contact_dlg_message_fmt">"Добавить адрес <xliff:g id="EMAIL">%s</xliff:g> в·контакты?"</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 6ef964e..6a18e65 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -16,8 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"联系人"</string>
-    <!-- no translation found for launcherDialer (140610573639849799) -->
-    <skip />
+    <string name="launcherDialer">"拨号"</string>
     <string name="shortcutContact">"联系人"</string>
     <string name="starredList">"已加星标"</string>
     <string name="frequentList">"经常"</string>
@@ -27,6 +26,7 @@
     <string name="editContactDescription">"编辑联系人"</string>
     <string name="insertContactDescription">"创建联系人"</string>
     <string name="searchHint">"搜索联系人"</string>
+    <string name="menu_search">"搜索"</string>
     <string name="menu_newContact">"添加联系人"</string>
     <string name="menu_viewContact">"查看联系人"</string>
     <string name="menu_callNumber">"呼叫<xliff:g id="NAME">%s</xliff:g>"</string>
@@ -43,8 +43,7 @@
     <string name="deleteConfirmation_title">"删除"</string>
     <string name="deleteConfirmation">"会删除此联系人。"</string>
     <string name="menu_done">"完成"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"还原"</string>
     <string name="editContact_title_edit">"编辑联系人"</string>
     <string name="editContact_title_insert">"添加联系人"</string>
     <string name="menu_addItem">"详细信息"</string>
@@ -126,15 +125,15 @@
     <string name="voicemail">"语音邮件"</string>
     <string name="unknown">"未知"</string>
     <string name="private_num">"私人号码"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"使用键盘拔号"</string>
     <string name="dialerDialpadHintText">"通过拨号添加通话"</string>
     <string name="simContacts_emptyLoading">"正在从 SIM 卡中载入..."</string>
     <string name="simContacts_title">"SIM 卡联系人"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">"同步您的 Google 联系人！"</font>\n"将联系人同步到您的手机后，无论您走到哪里，都可以与他们联系。"</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"您还没有联系人。"\n\n"要添加联系人，请按"<font fgcolor="#ffffffff"><b>"菜单"</b></font>"，然后选择："\n\n<li><font fgcolor="#ffffffff"><b>"新建联系人"</b></font>" - 从头开始创建新联系人"\n</li>\n<li><font fgcolor="#ffffffff"><b>"导入联系人"</b></font>" - 从 SIM 卡添加联系人"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"您还没有联系人。"\n\n"要添加联系人，请按"<font fgcolor="#ffffffff"><b>"菜单"</b></font>"，然后选择："\n\n<li><font fgcolor="#ffffffff"><b>"修改同步组"</b></font>" - 从现有的或新的 Google 帐户添加联系人"\n</li>\n<li><font fgcolor="#ffffffff"><b>"新建联系人"</b></font>" - 从头开始创建新联系人"\n</li>\n<li><font fgcolor="#ffffffff"><b>"导入联系人"</b></font>" - 从 SIM 卡添加联系人"\n</li></string>
     <string name="seclectSyncGroups_title">"选择要同步的组"</string>
     <string name="liveFolder_all_label">"所有联系人"</string>
     <string name="liveFolder_favorites_label">"已加星标"</string>
@@ -163,10 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"将直接发送至语音邮件"</string>
     <string name="detailsRingtone">"设置为“<xliff:g id="RINGTONE_NAME">%s</xliff:g>”"</string>
     <string name="callBack">"回拨"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
-    <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
-    <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
-    <skip />
+    <string name="callAgain">"再次呼叫"</string>
+    <string name="returnCall">"回电话"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> 分钟 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="favoritesFrquentSeparator">"经常呼叫的联系人"</string>
+    <string name="add_contact_dlg_title">"添加联系人"</string>
+    <string name="add_contact_dlg_message_fmt">"是否将“<xliff:g id="EMAIL">%s</xliff:g>”添加到通讯录中？"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 91704fb..17689c7 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -16,8 +16,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="contactsList">"連絡人"</string>
-    <!-- no translation found for launcherDialer (140610573639849799) -->
-    <skip />
+    <string name="launcherDialer">"撥號"</string>
     <string name="shortcutContact">"連絡人"</string>
     <string name="starredList">"已標記星號"</string>
     <string name="frequentList">"經常聯絡"</string>
@@ -27,6 +26,7 @@
     <string name="editContactDescription">"編輯連絡人"</string>
     <string name="insertContactDescription">"建立連絡人"</string>
     <string name="searchHint">"搜尋連絡人"</string>
+    <string name="menu_search">"搜尋"</string>
     <string name="menu_newContact">"新增連絡人"</string>
     <string name="menu_viewContact">"檢視連絡人"</string>
     <string name="menu_callNumber">"撥打電話給 <xliff:g id="NAME">%s</xliff:g>"</string>
@@ -43,8 +43,7 @@
     <string name="deleteConfirmation_title">"刪除"</string>
     <string name="deleteConfirmation">"此連絡人會被刪除。"</string>
     <string name="menu_done">"完成"</string>
-    <!-- no translation found for menu_doNotSave (2174577548513895144) -->
-    <skip />
+    <string name="menu_doNotSave">"復原"</string>
     <string name="editContact_title_edit">"編輯連絡人"</string>
     <string name="editContact_title_insert">"新增連絡人"</string>
     <string name="menu_addItem">"更多資訊"</string>
@@ -126,15 +125,15 @@
     <string name="voicemail">"語音信箱"</string>
     <string name="unknown">"未知的"</string>
     <string name="private_num">"私人號碼"</string>
+    <!-- no translation found for payphone (4864313342828942922) -->
+    <skip />
     <string name="dialerKeyboardHintText">"使用鍵盤撥號"</string>
     <string name="dialerDialpadHintText">"撥號即可新增通話"</string>
     <string name="simContacts_emptyLoading">"從  SIM 卡讀取中…"</string>
     <string name="simContacts_title">"SIM 卡連絡人"</string>
     <string name="contactsSyncPlug"><font fgcolor="#ffffffff">" 同步處理您的 Google 連絡人！"</font>" "\n" 與手機同步處理後，無論您走到哪，都可存取連絡人資訊。"</string>
-    <!-- no translation found for noContactsHelpText (2249195687463896364) -->
-    <skip />
-    <!-- no translation found for noContactsHelpTextWithSync (4927701496550314555) -->
-    <skip />
+    <string name="noContactsHelpText">"您沒有聯絡人。"\n\n"如要新增聯絡人，請按 ["<font fgcolor="#ffffffff"><b></b>"選單"</font>"] 並選取下列選項："\n\n<li>"["<font fgcolor="#ffffffff"><b></b>"新聯絡人"</font>"]：建立新聯絡人"\n</li>" "\n<li>"["<font fgcolor="#ffffffff"><b></b>"匯入聯絡人"</font>"]：加入 SIM 卡中的聯絡人"\n</li></string>
+    <string name="noContactsHelpTextWithSync">"您沒有聯絡人。"\n\n"如要新增聯絡人，請按 ["<font fgcolor="#ffffffff"><b></b>"選單"</font>"] 鍵並選取下列選項："\n\n"        "<li>"["<font fgcolor="#ffffffff"><b></b>"編輯同步群組"</font>"]：加入新的或既有的 Google 帳戶聯絡人"\n</li>\n"        "<li>"["<font fgcolor="#ffffffff"><b></b>"新聯絡人"</font>"]：建立新聯絡人"\n</li>\n"        "<li>"["<font fgcolor="#ffffffff"><b></b>"匯入聯絡人"</font>"]：加入 SIM 卡中的聯絡人"\n</li></string>
     <string name="seclectSyncGroups_title">"選取要同步處理的群組"</string>
     <string name="liveFolder_all_label">"全部聯絡人"</string>
     <string name="liveFolder_favorites_label">"星號標記"</string>
@@ -163,10 +162,10 @@
     <string name="detailIncomingCallsGoToVoicemail">"來電將直接轉到語音信箱"</string>
     <string name="detailsRingtone">"設為<xliff:g id="RINGTONE_NAME">%s</xliff:g>"</string>
     <string name="callBack">"回播電話"</string>
-    <!-- no translation found for callAgain (3197312117049874778) -->
-    <skip />
-    <!-- no translation found for returnCall (8171961914203617813) -->
-    <skip />
-    <!-- no translation found for callDetailsDurationFormat (8157706382818184268) -->
-    <skip />
+    <string name="callAgain">"重撥"</string>
+    <string name="returnCall">"回電"</string>
+    <string name="callDetailsDurationFormat">"<xliff:g id="MINUTES">%s</xliff:g> 分 <xliff:g id="SECONDS">%s</xliff:g> 秒"</string>
+    <string name="favoritesFrquentSeparator">"常用聯絡人"</string>
+    <string name="add_contact_dlg_title">"新增聯絡人"</string>
+    <string name="add_contact_dlg_message_fmt">"要將「<xliff:g id="EMAIL">%s</xliff:g>」新增為聯絡人嗎？"</string>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8eb1976..747cd7d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -256,6 +256,9 @@
     <!-- The group type that displays only contacts with phone numbers -->
     <string name="groupNameWithPhones">Contacts with phone numbers</string>
     
+    <!-- The group type that displays "Starred in Android" contacts -->
+    <string name="starredInAndroid">Starred in Android</string>
+    
     <!-- Toast displayed when a contact is created -->
     <string name="contactCreatedToast">Contact created.</string>
     
@@ -348,6 +351,9 @@
 
     <!-- String used to display calls from private numbers in the call log -->
     <string name="private_num">Private number</string>
+    
+    <!-- String used to display calls from pay phone in the call log -->
+    <string name="payphone">Pay phone</string>
 
     <!-- Displayed in the text entry box in the dialer when in landscape mode to guide the user
          to dial using the physical keyboard -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index e43842c..c202eda 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -31,4 +31,8 @@
         <item name="android:src">@drawable/ic_btn_round_more</item>
     </style>
 
+    <style name="TallTitleBarTheme" parent="android:Theme.NoTitleBar">
+        <item name="android:windowContentOverlay">@null</item>
+    </style>
+
 </resources>
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
index 012a33e..d7d888c 100644
--- a/src/com/android/contacts/CallDetailActivity.java
+++ b/src/com/android/contacts/CallDetailActivity.java
@@ -16,6 +16,8 @@
 
 package com.android.contacts;
 
+import com.android.internal.telephony.CallerInfo;
+
 import android.app.ListActivity;
 import android.content.ContentResolver;
 import android.content.ContentUris;
@@ -166,79 +168,89 @@
                 String callText = null;
                 switch (callType) {
                     case Calls.INCOMING_TYPE:
-                        mCallTypeIcon.setImageResource(android.R.drawable.sym_call_incoming);
+                        mCallTypeIcon.setImageResource(R.drawable.ic_call_log_header_incoming_call);
                         mCallType.setText(R.string.type_incoming);
                         callText = getString(R.string.callBack);
                         break;
     
                     case Calls.OUTGOING_TYPE:
-                        mCallTypeIcon.setImageResource(android.R.drawable.sym_call_outgoing);
+                        mCallTypeIcon.setImageResource(R.drawable.ic_call_log_header_outgoing_call);
                         mCallType.setText(R.string.type_outgoing);
                         callText = getString(R.string.callAgain);
                         break;
     
                     case Calls.MISSED_TYPE:
-                        mCallTypeIcon.setImageResource(android.R.drawable.sym_call_missed);
+                        mCallTypeIcon.setImageResource(R.drawable.ic_call_log_header_missed_call);
                         mCallType.setText(R.string.type_missed);
                         callText = getString(R.string.returnCall);
                         break;
                 }
     
-                // Perform a reverse-phonebook lookup to find the PERSON_ID
-                String callLabel = null;
-                Uri personUri = null;
-                Uri phoneUri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(mNumber));
-                Cursor phonesCursor = resolver.query(phoneUri, PHONES_PROJECTION, null, null, null);
-                try {
-                    if (phonesCursor != null && phonesCursor.moveToFirst()) {
-                        long personId = phonesCursor.getLong(COLUMN_INDEX_ID);
-                        personUri = ContentUris.withAppendedId(
-                                Contacts.People.CONTENT_URI, personId);
-                        callText = getString(R.string.recentCalls_callNumber,
-                                phonesCursor.getString(COLUMN_INDEX_NAME));
-                        mNumber = phonesCursor.getString(COLUMN_INDEX_NUMBER);
-                        callLabel = Phones.getDisplayLabel(this,
-                                phonesCursor.getInt(COLUMN_INDEX_TYPE),
-                                phonesCursor.getString(COLUMN_INDEX_LABEL)).toString();
-                    } else {
-                        mNumber = PhoneNumberUtils.formatNumber(mNumber);
+                if (mNumber.equals(CallerInfo.UNKNOWN_NUMBER) ||
+                        mNumber.equals(CallerInfo.PRIVATE_NUMBER)) {
+                    // List is empty, let the empty view show instead.
+                    TextView emptyText = (TextView) findViewById(R.id.emptyText);
+                    if (emptyText != null) {
+                        emptyText.setText(mNumber.equals(CallerInfo.PRIVATE_NUMBER) 
+                                ? R.string.private_num : R.string.unknown);
                     }
-                } finally {
-                    if (phonesCursor != null) phonesCursor.close();
-                }
-
-                // Build list of various available actions
-                List<ViewEntry> actions = new ArrayList<ViewEntry>();
-                
-                Intent callIntent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
-                        Uri.fromParts("tel", mNumber, null));
-                ViewEntry entry = new ViewEntry(android.R.drawable.sym_action_call, callText,
-                        callIntent);
-                entry.number = mNumber;
-                entry.label = callLabel;
-                actions.add(entry);
-                
-                Intent smsIntent = new Intent(Intent.ACTION_SENDTO,
-                        Uri.fromParts("sms", mNumber, null));
-                actions.add(new ViewEntry(R.drawable.sym_action_sms,
-                        getString(R.string.menu_sendTextMessage), smsIntent));
-                
-                // Let user view contact details if they exist, otherwise add option
-                // to create new contact from this number.
-                if (personUri != null) {
-                    Intent viewIntent = new Intent(Intent.ACTION_VIEW, personUri);
-                    actions.add(new ViewEntry(R.drawable.sym_action_view_contact,
-                            getString(R.string.menu_viewContact), viewIntent));
                 } else {
-                    Intent createIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
-                    createIntent.setType(People.CONTENT_ITEM_TYPE);
-                    createIntent.putExtra(Insert.PHONE, mNumber);
-                    actions.add(new ViewEntry(R.drawable.sym_action_add,
-                            getString(R.string.recentCalls_addToContact), createIntent));
+                    // Perform a reverse-phonebook lookup to find the PERSON_ID
+                    String callLabel = null;
+                    Uri personUri = null;
+                    Uri phoneUri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(mNumber));
+                    Cursor phonesCursor = resolver.query(phoneUri, PHONES_PROJECTION, null, null, null);
+                    try {
+                        if (phonesCursor != null && phonesCursor.moveToFirst()) {
+                            long personId = phonesCursor.getLong(COLUMN_INDEX_ID);
+                            personUri = ContentUris.withAppendedId(
+                                    Contacts.People.CONTENT_URI, personId);
+                            callText = getString(R.string.recentCalls_callNumber,
+                                    phonesCursor.getString(COLUMN_INDEX_NAME));
+                            mNumber = phonesCursor.getString(COLUMN_INDEX_NUMBER);
+                            callLabel = Phones.getDisplayLabel(this,
+                                    phonesCursor.getInt(COLUMN_INDEX_TYPE),
+                                    phonesCursor.getString(COLUMN_INDEX_LABEL)).toString();
+                        } else {
+                            mNumber = PhoneNumberUtils.formatNumber(mNumber);
+                        }
+                    } finally {
+                        if (phonesCursor != null) phonesCursor.close();
+                    }
+    
+                    // Build list of various available actions
+                    List<ViewEntry> actions = new ArrayList<ViewEntry>();
+                    
+                    Intent callIntent = new Intent(Intent.ACTION_CALL_PRIVILEGED,
+                            Uri.fromParts("tel", mNumber, null));
+                    ViewEntry entry = new ViewEntry(android.R.drawable.sym_action_call, callText,
+                            callIntent);
+                    entry.number = mNumber;
+                    entry.label = callLabel;
+                    actions.add(entry);
+                    
+                    Intent smsIntent = new Intent(Intent.ACTION_SENDTO,
+                            Uri.fromParts("sms", mNumber, null));
+                    actions.add(new ViewEntry(R.drawable.sym_action_sms,
+                            getString(R.string.menu_sendTextMessage), smsIntent));
+                    
+                    // Let user view contact details if they exist, otherwise add option
+                    // to create new contact from this number.
+                    if (personUri != null) {
+                        Intent viewIntent = new Intent(Intent.ACTION_VIEW, personUri);
+                        actions.add(new ViewEntry(R.drawable.sym_action_view_contact,
+                                getString(R.string.menu_viewContact), viewIntent));
+                    } else {
+                        Intent createIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
+                        createIntent.setType(People.CONTENT_ITEM_TYPE);
+                        createIntent.putExtra(Insert.PHONE, mNumber);
+                        actions.add(new ViewEntry(R.drawable.sym_action_add,
+                                getString(R.string.recentCalls_addToContact), createIntent));
+                    }
+                    
+                    ViewAdapter adapter = new ViewAdapter(this, actions);
+                    setListAdapter(adapter);
                 }
-                
-                ViewAdapter adapter = new ViewAdapter(this, actions);
-                setListAdapter(adapter);
             } else {
                 // Something went wrong reading in our primary data, so we're going to
                 // bail out and show error to users.
diff --git a/src/com/android/contacts/ContactsGroupSyncSelector.java b/src/com/android/contacts/ContactsGroupSyncSelector.java
index 80b5166..e1fbdf1 100644
--- a/src/com/android/contacts/ContactsGroupSyncSelector.java
+++ b/src/com/android/contacts/ContactsGroupSyncSelector.java
@@ -36,6 +36,8 @@
 import android.widget.ArrayAdapter;
 import android.widget.ListView;
 
+import java.util.ArrayList;
+
 public final class ContactsGroupSyncSelector extends ListActivity implements View.OnClickListener {
 
     private static final String[] PROJECTION = new String[] {
@@ -51,12 +53,12 @@
 
     private static final int SUBACTIVITY_GET_ACCOUNT = 1;
 
-    boolean[] mChecked;
+    ArrayList<Boolean> mChecked;
+    ArrayList<Long> mGroupIds;
     boolean mSyncAllGroups;
-    long[] mGroupIds;
     
     private final class GroupsAdapter extends ArrayAdapter<CharSequence> {
-        public GroupsAdapter(CharSequence[] items) {
+        public GroupsAdapter(ArrayList<CharSequence> items) {
             super(ContactsGroupSyncSelector.this,
                     android.R.layout.simple_list_item_checked,
                     android.R.id.text1, items);
@@ -94,7 +96,7 @@
     @Override
     protected void onListItemClick(ListView list, View view, int position, long id) {
         boolean isChecked = list.isItemChecked(position);
-        mChecked[position] = isChecked;
+        mChecked.set(position, isChecked);
         if (position == 0) {
             mSyncAllGroups = isChecked;
             adjustChecks();
@@ -127,11 +129,12 @@
                     Settings.setSetting(resolver, null, Settings.SYNC_EVERYTHING, "1");
                 } else {
                     ContentValues values = new ContentValues();
-                    int count = mChecked.length;
+                    int count = mChecked.size();
                     for (int i = 1; i < count; i++) {
                         values.clear();
-                        values.put(Groups.SHOULD_SYNC, mChecked[i]);
-                        resolver.update(ContentUris.withAppendedId(Groups.CONTENT_URI, mGroupIds[i]),
+                        values.put(Groups.SHOULD_SYNC, mChecked.get(i));
+                        resolver.update(
+                                ContentUris.withAppendedId(Groups.CONTENT_URI, mGroupIds.get(i)),
                                 values, null, null);
                     }
                     // For now we only support a single account and the UI doesn't know what
@@ -189,33 +192,39 @@
         Cursor cursor = resolver.query(Groups.CONTENT_URI, PROJECTION, null, null, Groups.NAME);
         if (cursor != null) {
             try {
-                int count = cursor.getCount() + 1;
-                CharSequence[] items = new String[count];
-                boolean[] checked = new boolean[count];
-                long[] groupIds = new long[count];
-    
-                int i = 0;
-                items[i++] = getString(R.string.syncAllGroups);
-                items[i++] = getString(R.string.groupNameMyContacts);
-    
+                int count = cursor.getCount() + 1; // add 1 for "sync all"
+                ArrayList<CharSequence> items = new ArrayList<CharSequence>(count);
+                ArrayList<Boolean> checked = new ArrayList<Boolean>(count);
+                ArrayList<Long> groupIds = new ArrayList<Long>(count);
+
+                // The first item in the list is always "sync all"
+                items.add(getString(R.string.syncAllGroups));
+                checked.add(mSyncAllGroups);
+                groupIds.add(Long.valueOf(0)); // dummy entry
+
                 while (cursor.moveToNext()) {
                     String name = cursor.getString(COLUMN_INDEX_NAME);
                     String systemId = cursor.isNull(COLUMN_INDEX_SYSTEM_ID) ?
                             null : cursor.getString(COLUMN_INDEX_SYSTEM_ID);
                     if (systemId == null || !Groups.GROUP_MY_CONTACTS.equals(systemId)) {
-                        items[i] = name;
-                        checked[i] = cursor.getInt(COLUMN_INDEX_SHOULD_SYNC) != 0;
-                        groupIds[i] = cursor.getLong(COLUMN_INDEX_ID);
-                        i++;
+                        // Localize the "Starred in Android" string which we get from the server
+                        // side.
+                        if (Groups.GROUP_ANDROID_STARRED.equals(name)) {
+                            name = getString(R.string.starredInAndroid);
+                        }
+                        items.add(name);
+                        checked.add(cursor.getInt(COLUMN_INDEX_SHOULD_SYNC) != 0);
+                        groupIds.add(cursor.getLong(COLUMN_INDEX_ID));
                     } else {
-                        checked[1] = cursor.getInt(COLUMN_INDEX_SHOULD_SYNC) != 0;
-                        groupIds[1] = cursor.getLong(COLUMN_INDEX_ID);
+                        // If My Contacts is around it wants to be the second list entry
+                        items.add(1, getString(R.string.groupNameMyContacts));
+                        checked.add(1, cursor.getInt(COLUMN_INDEX_SHOULD_SYNC) != 0);
+                        groupIds.add(1, cursor.getLong(COLUMN_INDEX_ID));
                     }
                 }
                 mChecked = checked;
-                mSyncAllGroups = getShouldSyncEverything(resolver);
-                checked[0] = mSyncAllGroups;
                 mGroupIds = groupIds;
+                mSyncAllGroups = getShouldSyncEverything(resolver);
     
                 // Setup the adapter
                 setListAdapter(new GroupsAdapter(items));
@@ -233,10 +242,10 @@
                 list.setItemChecked(i, true);
             }
         } else {
-            boolean[] checked = mChecked;
+            ArrayList<Boolean> checked = mChecked;
             int count = list.getCount();
             for (int i = 0; i < count; i++) {
-                list.setItemChecked(i, checked[i]);
+                list.setItemChecked(i, checked.get(i));
             }
         }
     }
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index b9dc4f2..7dbc76c 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -16,6 +16,8 @@
 
 package com.android.contacts;
 
+import static com.android.contacts.ShowOrCreateActivity.QUERY_KIND_EMAIL_OR_IM;
+
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.ListActivity;
@@ -32,6 +34,7 @@
 import android.content.SharedPreferences;
 import android.database.CharArrayBuffer;
 import android.database.Cursor;
+import android.database.CursorWrapper;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.net.Uri;
@@ -41,12 +44,12 @@
 import android.preference.PreferenceManager;
 import android.provider.Contacts;
 import android.provider.Contacts.ContactMethods;
-import android.provider.Contacts.ContactMethodsColumns;
 import android.provider.Contacts.Groups;
 import android.provider.Contacts.Intents;
 import android.provider.Contacts.People;
 import android.provider.Contacts.Phones;
 import android.provider.Contacts.Presence;
+import android.provider.Contacts.Intents.Insert;
 import android.provider.Contacts.Intents.UI;
 import android.text.TextUtils;
 import android.util.Log;
@@ -139,8 +142,8 @@
             55 | MODE_MASK_PICKER | MODE_MASK_NO_PRESENCE | MODE_MASK_NO_FILTER;
     /** Run a search query */
     static final int MODE_QUERY = 60 | MODE_MASK_NO_FILTER;
-    /** Show all contacts matching query, or handle special cases where 0 or 1 contacts found. */
-    static final int MODE_SHOW_OR_CREATE_CONTACT = 65 | MODE_MASK_PICKER | MODE_MASK_NO_FILTER;
+    /** Run a search query in PICK mode, but that still launches to VIEW */
+    static final int MODE_QUERY_PICK_TO_VIEW = 65 | MODE_MASK_NO_FILTER | MODE_MASK_PICKER;
 
     static final int DEFAULT_MODE = MODE_ALL_CONTACTS;
 
@@ -184,6 +187,11 @@
         People.PRESENCE_STATUS, // 8
         SORT_STRING, // 9
     };
+    
+    static final String[] SIMPLE_CONTACTS_PROJECTION = new String[] {
+        People._ID, // 0
+        NAME_COLUMN, // 1
+    };
 
     static final String[] STREQUENT_PROJECTION = new String[] {
         People._ID, // 0
@@ -233,7 +241,7 @@
     static final int SORT_STRING_INDEX = 9;
 
     static final int PHONES_PERSON_ID_INDEX = 6;
-    static final int CONTACT_METHODS_PERSON_ID_INDEX = 6;
+    static final int SIMPLE_CONTACTS_PERSON_ID_INDEX = 0;
     
     static final int DISPLAY_GROUP_INDEX_ALL_CONTACTS = 0;
     static final int DISPLAY_GROUP_INDEX_ALL_CONTACTS_WITH_PHONES = 1;
@@ -270,27 +278,13 @@
     private Uri mGroupUri;
     private boolean mJustCreated;
     private boolean mSyncEnabled;
-    
-    /**
-     * {@link Bundle} of extras to include when launching
-     * {@link Intents.Insert#ACTION}, usually when responding to
-     * {@link Intents#SHOW_OR_CREATE_CONTACT}.
-     */
-    private Bundle mCreateExtras;
-    
-    /**
-     * Title to display to user when asking if a contact should be created,
-     * usually the requested E-mail address or phone number when responding to a
-     * {@link Intents#SHOW_OR_CREATE_CONTACT}.
-     */
-    private String mCreateData;
 
     /**
      * Cursor row index that holds reference back to {@link People#_ID}, such as
      * {@link ContactMethods#PERSON_ID}. Used when responding to a
-     * {@link Intents#SHOW_OR_CREATE_CONTACT}.
+     * {@link Intent#ACTION_SEARCH} in mode {@link #MODE_QUERY_PICK_TO_VIEW}.
      */
-    private int mCreatePersonIndex;
+    private int mQueryPersonIdIndex;
 
     /**
      * Used to keep track of the scroll state of the list.
@@ -300,7 +294,22 @@
 
     private boolean mCreateShortcut;
     private boolean mDefaultMode = false;
+    
+    /**
+     * Internal query type when in mode {@link #MODE_QUERY_PICK_TO_VIEW}.
+     */
+    private int mQueryMode = QUERY_MODE_NONE;
 
+    private static final int QUERY_MODE_NONE = -1;
+    private static final int QUERY_MODE_MAILTO = 1;
+    private static final int QUERY_MODE_TEL = 2;
+    
+    /**
+     * Data to use when in mode {@link #MODE_QUERY_PICK_TO_VIEW}. Usually
+     * provided by scheme-specific part of incoming {@link Intent#getData()}.
+     */
+    private String mQueryData;
+    
     private class DeleteClickListener implements DialogInterface.OnClickListener {
         private Uri mUri;
 
@@ -313,23 +322,6 @@
         }
     }
     
-    private class IntentClickListener implements DialogInterface.OnClickListener {
-        private Activity mParent;
-        private Intent mIntent;
-
-        public IntentClickListener(Activity parent, Intent intent) {
-            mParent = parent;
-            mIntent = intent;
-        }
-
-        public void onClick(DialogInterface dialog, int which) {
-            if (mIntent != null) {
-                mParent.startActivity(mIntent);
-            }
-            mParent.finish();
-        }
-    }
-
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
@@ -407,8 +399,20 @@
                 finish();
                 return;
             }
-            // Otherwise handle the more normal search case
-            mMode = MODE_QUERY;
+            
+            // See if search request has extras to specify query
+            if (intent.hasExtra(Insert.EMAIL)) {
+                mMode = MODE_QUERY_PICK_TO_VIEW;
+                mQueryMode = QUERY_MODE_MAILTO;
+                mQueryData = intent.getStringExtra(Insert.EMAIL);
+            } else if (intent.hasExtra(Insert.PHONE)) {
+                mMode = MODE_QUERY_PICK_TO_VIEW;
+                mQueryMode = QUERY_MODE_TEL;
+                mQueryData = intent.getStringExtra(Insert.PHONE);
+            } else {
+                // Otherwise handle the more normal search case
+                mMode = MODE_QUERY;
+            }
 
         // Since this is the filter activity it receives all intents
         // dispatched from the SearchManager for security reasons
@@ -436,8 +440,6 @@
             startActivity(newIntent);
             finish();
             return;
-        } else if (Intents.SHOW_OR_CREATE_CONTACT.equals(action)) {
-            mMode = MODE_SHOW_OR_CREATE_CONTACT;
         }
 
         if (mMode == MODE_UNKNOWN) {
@@ -492,60 +494,6 @@
         }
     }
 
-    /**
-     * Handles special cases of the {@link Intents#SHOW_OR_CREATE_CONTACT}
-     * intent. When zero results found, prompt user to create new contact. When
-     * one contact found, shortcut to viewing that contact.
-     * 
-     * @param c Valid cursor after performing query
-     */
-    private void handleShowOrCreate(final Cursor c) {
-        int count = 0;
-        long personId = 0;
-        if (c != null) {
-            count = c.getCount();
-            if (count == 1 && c.moveToFirst()) {
-                // Try reading ID for the only contact returned
-                personId = c.getLong(mCreatePersonIndex);
-            }
-        }
-        
-        if (count == 1) {
-            // If we only found one item, jump right to viewing it
-            Intent showIntent = new Intent(Intent.ACTION_VIEW,
-                    ContentUris.withAppendedId(People.CONTENT_URI, personId));
-            startActivity(showIntent);
-            finish();
-            
-        } else if (count == 0) {
-            // Insert create values coming from our request
-            Intent createIntent = new Intent(Intent.ACTION_INSERT, People.CONTENT_URI);
-            createIntent.putExtras(mCreateExtras);
-            
-            // Prompt user if they really want to start creating a new
-            // contact. Skip this step if the caller requested {@link
-            // Contacts#EXTRA_FORCE_CREATE}.
-            boolean forceCreate = getIntent().getBooleanExtra(Intents.EXTRA_FORCE_CREATE, false);
-            
-            if (forceCreate) {
-                startActivity(createIntent);
-                finish();
-            } else {
-                CharSequence message = getResources().getString(
-                        R.string.add_contact_dlg_message_fmt, mCreateData);
-                
-                new AlertDialog.Builder(this)
-                        .setTitle(R.string.add_contact_dlg_title)
-                        .setMessage(message)
-                        .setPositiveButton(android.R.string.ok,
-                                new IntentClickListener(this, createIntent))
-                        .setNegativeButton(android.R.string.cancel,
-                                new IntentClickListener(this, null))
-                        .show();
-            }
-        }
-    }
-
     private void setEmptyText() {
         TextView empty = (TextView) findViewById(R.id.emptyText);
         // Center the text by default
@@ -713,7 +661,14 @@
         super.onRestart();
 
         // The cursor was killed off in onStop(), so we need to get a new one here
-        startQuery();
+        // We do not perform the query if a filter is set on the list because the
+        // filter will cause the query to happen anyway
+        if (TextUtils.isEmpty(getListView().getTextFilter())) {
+            startQuery();
+        } else {
+            // Run the filtered query on the adapter
+            ((ContactItemListAdapter) getListAdapter()).onContentChanged();
+        }
     }
     
     private void updateGroup() {
@@ -1046,10 +1001,10 @@
                 Intent intent = new Intent(Intent.ACTION_VIEW,
                         ContentUris.withAppendedId(People.CONTENT_URI, id));
                 startActivity(intent);
-            } else if (mMode == MODE_SHOW_OR_CREATE_CONTACT) {
-                // Figure out person ID because we might be using indirect cursor
+            } else if (mMode == MODE_QUERY_PICK_TO_VIEW) {
+                // Started with query that should launch to view contact
                 Cursor c = (Cursor) mAdapter.getItem(position);
-                long personId = c.getLong(mCreatePersonIndex);
+                long personId = c.getLong(mQueryPersonIdIndex);
                 Intent intent = new Intent(Intent.ACTION_VIEW,
                         ContentUris.withAppendedId(People.CONTENT_URI, personId));
                 startActivity(intent);
@@ -1097,7 +1052,7 @@
             } else {
                 intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
                         Intent.ShortcutIconResource.fromContext(this,
-                                R.drawable.ic_launcher_contacts));
+                                R.drawable.ic_launcher_shortcut_contact));
             }
             setResult(RESULT_OK, intent);
         } else {
@@ -1184,52 +1139,27 @@
                 break;
             }
             
-            case MODE_SHOW_OR_CREATE_CONTACT: {
-                // Caller requested a specific E-mail address or phone number,
-                // so show only matching entries. Once the query finishes we
-                // handle edge cases of 0 or 1 items.
-                Uri data = getIntent().getData();
-                String scheme = null;
-                String ssp = null;
-                if (data != null) {
-                    scheme = data.getScheme();
-                    ssp = data.getSchemeSpecificPart();
-                    mCreateData = ssp;
-                }
-                
-                mCreateExtras = new Bundle();
-                Bundle originalExtras = getIntent().getExtras();
-                if (originalExtras != null) {
-                    mCreateExtras.putAll(originalExtras);
-                }
-
-                if ("mailto".equals(scheme)) {
-                    mCreateExtras.putString(Intents.Insert.EMAIL, ssp);
-                    mCreatePersonIndex = CONTACT_METHODS_PERSON_ID_INDEX;
-                    
+            case MODE_QUERY_PICK_TO_VIEW: {
+                if (mQueryMode == QUERY_MODE_MAILTO) {
+                    // Find all contacts with the given search string as either
+                    // an E-mail or IM address.
+                    mQueryPersonIdIndex = SIMPLE_CONTACTS_PERSON_ID_INDEX;
+                    Uri uri = Uri.withAppendedPath(People.WITH_EMAIL_OR_IM_FILTER_URI,
+                            Uri.encode(mQueryData));
                     mQueryHandler.startQuery(QUERY_TOKEN, null,
-                            ContactMethods.CONTENT_URI, CONTACT_METHODS_PROJECTION,
-                            ContactMethodsColumns.KIND + "=" + Contacts.KIND_EMAIL + " AND " +
-                            ContactMethods.DATA + "=?", new String[] { ssp },
-                            getSortOrder(CONTACT_METHODS_PROJECTION));
+                            uri, SIMPLE_CONTACTS_PROJECTION, null, null,
+                            getSortOrder(CONTACTS_PROJECTION));
                     
-                } else if ("tel".equals(scheme)) {
-                    mCreateExtras.putString(Intents.Insert.PHONE, ssp);
-                    mCreatePersonIndex = PHONES_PERSON_ID_INDEX;
-                    
+                } else if (mQueryMode == QUERY_MODE_TEL) {
+                    mQueryPersonIdIndex = PHONES_PERSON_ID_INDEX;
                     mQueryHandler.startQuery(QUERY_TOKEN, null,
-                            Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, ssp),
+                            Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, mQueryData),
                             PHONES_PROJECTION, null, null,
                             getSortOrder(PHONES_PROJECTION));
-                    
-                } else {
-                    Log.w(TAG, "Invalid intent:" + getIntent());
-                    finish();
                 }
-                
                 break;
             }
-
+            
             case MODE_STARRED:
                 mQueryHandler.startQuery(QUERY_TOKEN, null, People.CONTENT_URI,
                         CONTACTS_PROJECTION,
@@ -1413,7 +1343,6 @@
                     getString(R.string.groupNameWithPhones));
             prefStrings.add(GROUP_WITH_PHONES);
             
-            int i = 3;
             int currentIndex = DISPLAY_GROUP_INDEX_ALL_CONTACTS;
             while (cursor.moveToNext()) {
                 String systemId = cursor.getString(GROUPS_COLUMN_INDEX_SYSTEM_ID);
@@ -1421,11 +1350,15 @@
                 if (cursor.isNull(GROUPS_COLUMN_INDEX_SYSTEM_ID)
                         && !Groups.GROUP_MY_CONTACTS.equals(systemId)) {
                     // All groups that aren't My Contacts, since that one is localized on the phone
+
+                    // Localize the "Starred in Android" string which we get from the server side.
+                    if (Groups.GROUP_ANDROID_STARRED.equals(name)) {
+                        name = getString(R.string.starredInAndroid);
+                    }
                     groups.add(name);
                     if (name.equals(mDisplayInfo)) {
-                        currentIndex = i;
+                        currentIndex = groups.size() - 1;
                     }
-                    i++;
                 } else {
                     // The My Contacts group
                     groups.add(DISPLAY_GROUP_INDEX_MY_CONTACTS,
@@ -1443,8 +1376,7 @@
                 currentIndex = DISPLAY_GROUP_INDEX_ALL_CONTACTS_WITH_PHONES;
             }
             mDisplayGroups = groups.toArray(new CharSequence[groups.size()]);
-            builder.setSingleChoiceItems(mDisplayGroups,
-                    currentIndex, this);
+            builder.setSingleChoiceItems(mDisplayGroups, currentIndex, this);
             mDisplayGroupOriginalSelection = currentIndex;
         } finally {
             cursor.close();
@@ -1467,11 +1399,6 @@
                 activity.getListView().clearTextFilter();                
                 activity.mAdapter.changeCursor(cursor);
                 
-                // Handle SHOW_OR_CREATE now that we have valid cursor
-                if (activity.mMode == MODE_SHOW_OR_CREATE_CONTACT) {
-                    activity.handleShowOrCreate(cursor);
-                }
-    
                 // Now that the cursor is populated again, it's possible to restore the list state
                 if (activity.mListState != null) {
                     activity.mList.onRestoreInstanceState(activity.mListState);
@@ -1507,6 +1434,7 @@
         private CharSequence[] mLocalizedLabels;
         private boolean mDisplayPhotos = false;
         private SparseArray<SoftReference<Bitmap>> mBitmapCache = null;
+        private int mFrequentSeparatorPos = ListView.INVALID_POSITION;
 
         public ContactItemListAdapter(Context context) {
             super(context, R.layout.contacts_list_item, null, false);
@@ -1579,6 +1507,45 @@
         }
 
         @Override
+        public int getItemViewType(int position) {
+            if (position == mFrequentSeparatorPos) {
+                // We don't want the separator view to be recycled.
+                return IGNORE_ITEM_VIEW_TYPE;
+            }
+            return super.getItemViewType(position);
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            if (!mDataValid) {
+                throw new IllegalStateException(
+                        "this should only be called when the cursor is valid");
+            }
+
+            // Handle the separator specially
+            if (position == mFrequentSeparatorPos) {
+                LayoutInflater inflater =
+                        (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
+                TextView view = (TextView) inflater.inflate(R.layout.list_separator, parent, false);
+                view.setText(R.string.favoritesFrquentSeparator);
+                return view;
+            }
+
+            if (!mCursor.moveToPosition(getRealPosition(position))) {
+                throw new IllegalStateException("couldn't move cursor to position " + position);
+            }
+            
+            View v;
+            if (convertView == null) {
+                v = newView(mContext, mCursor, parent);
+            } else {
+                v = convertView;
+            }
+            bindView(v, mContext, mCursor);
+            return v;
+        }
+
+        @Override
         public View newView(Context context, Cursor cursor, ViewGroup parent) {
             final View view = super.newView(context, cursor, parent);
 
@@ -1606,6 +1573,17 @@
                 cache.nameView.setText(mUnknownNameText);
             }
             
+            // Bail out early if using a specific SEARCH query mode, usually for
+            // matching a specific E-mail or phone number. Any contact details
+            // shown would be identical, and columns might not even be present
+            // in the returned cursor.
+            if (mQueryMode != QUERY_MODE_NONE) {
+                cache.numberView.setVisibility(View.GONE);
+                cache.labelView.setVisibility(View.GONE);
+                cache.presenceView.setVisibility(View.GONE);
+                return;
+            }
+            
             // Set the phone number
             TextView numberView = cache.numberView;
             TextView labelView = cache.labelView;
@@ -1642,27 +1620,18 @@
 
             // Set the proper icon (star or presence or nothing)
             ImageView presenceView = cache.presenceView;
-            if (mMode != MODE_STREQUENT) {
-                if ((mMode & MODE_MASK_NO_PRESENCE) == 0) {
-                    int serverStatus;
-                    if (!cursor.isNull(SERVER_STATUS_COLUMN_INDEX)) {
-                        serverStatus = cursor.getInt(SERVER_STATUS_COLUMN_INDEX);
-                        presenceView.setImageResource(
-                                Presence.getPresenceIconResourceId(serverStatus));
-                        presenceView.setVisibility(View.VISIBLE);
-                    } else {
-                        presenceView.setVisibility(View.GONE);
-                    }
-                } else {
-                    presenceView.setVisibility(View.GONE);
-                }
-            } else {
-                if (cursor.getInt(STARRED_COLUMN_INDEX) != 0) {
-                    presenceView.setImageResource(R.drawable.star_on);
+            if ((mMode & MODE_MASK_NO_PRESENCE) == 0) {
+                int serverStatus;
+                if (!cursor.isNull(SERVER_STATUS_COLUMN_INDEX)) {
+                    serverStatus = cursor.getInt(SERVER_STATUS_COLUMN_INDEX);
+                    presenceView.setImageResource(
+                            Presence.getPresenceIconResourceId(serverStatus));
                     presenceView.setVisibility(View.VISIBLE);
                 } else {
                     presenceView.setVisibility(View.GONE);
                 }
+            } else {
+                presenceView.setVisibility(View.GONE);
             }
 
             // Set the photo, if requested
@@ -1695,13 +1664,29 @@
                 if (photo != null) {
                     cache.photoView.setImageBitmap(photo);
                 } else {
-                    cache.photoView.setImageResource(R.drawable.ic_contact_picture);
+                    cache.photoView.setImageResource(R.drawable.ic_contact_list_picture);
                 }
             }
         }
 
         @Override
         public void changeCursor(Cursor cursor) {
+            // Get the split between starred and frequent items, if the mode is strequent
+            mFrequentSeparatorPos = ListView.INVALID_POSITION;
+            if (cursor != null && cursor.getCount() > 0 && mMode == MODE_STREQUENT) {
+                cursor.move(-1);
+                for (int i = 0; cursor.moveToNext(); i++) {
+                    int starred = cursor.getInt(STARRED_COLUMN_INDEX);
+                    if (starred == 0) {
+                        if (i > 0) {
+                            // Only add the separator when there are starred items present
+                            mFrequentSeparatorPos = i;
+                        }
+                        break;
+                    }
+                }
+            }
+
             super.changeCursor(cursor);
 
             // Update the indexer for the fast scroll widget
@@ -1749,7 +1734,7 @@
                 return mIndexer.getSections();
            }
         }
-        
+
         public int getPositionForSection(int sectionIndex) {
             if (mMode == MODE_STREQUENT) {
                 return 0;
@@ -1766,14 +1751,55 @@
 
             return mIndexer.getPositionForSection(sectionIndex);
         }
-        
+
         public int getSectionForPosition(int position) {
             // Note: JapaneseContactListIndexer depends on the fact
             // this method always returns 0. If you change this,
             // please care it too.
             return 0;
-        }        
+        }
+
+        @Override
+        public boolean areAllItemsEnabled() {
+            return mMode != MODE_STREQUENT;
+        }
+
+        @Override
+        public boolean isEnabled(int position) {
+            return position != mFrequentSeparatorPos;
+        }
+
+        @Override
+        public int getCount() {
+            if (mFrequentSeparatorPos != ListView.INVALID_POSITION) {
+                return super.getCount() + 1;
+            } else {
+                return super.getCount();
+            }
+        }
+        
+        private int getRealPosition(int pos) {
+            if (mFrequentSeparatorPos == ListView.INVALID_POSITION) {
+                // No separator, identity map
+                return pos;
+            } else if (pos <= mFrequentSeparatorPos) {
+                // Before or at the separator, identity map
+                return pos;
+            } else {
+                // After the separator, remove 1 from the pos to get the real underlying pos
+                return pos - 1;
+            }
+            
+        }
+        
+        @Override
+        public Object getItem(int pos) {
+            return super.getItem(getRealPosition(pos));
+        }
+        
+        @Override
+        public long getItemId(int pos) {
+            return super.getItemId(getRealPosition(pos)); 
+        }
     }
 }
-
-
diff --git a/src/com/android/contacts/ContactsLiveFolders.java b/src/com/android/contacts/ContactsLiveFolders.java
index 8ca199a..d437e80 100644
--- a/src/com/android/contacts/ContactsLiveFolders.java
+++ b/src/com/android/contacts/ContactsLiveFolders.java
@@ -39,7 +39,7 @@
             if (LiveFolders.ACTION_CREATE_LIVE_FOLDER.equals(action)) {
                 setResult(RESULT_OK, createLiveFolder(this, CONTENT_URI,
                         getString(R.string.liveFolder_favorites_label),
-                        R.drawable.ic_launcher_contacts_starred));
+                        R.drawable.ic_launcher_folder_live_contacts_starred));
             } else {
                 setResult(RESULT_CANCELED);
             }
@@ -62,7 +62,7 @@
             if (LiveFolders.ACTION_CREATE_LIVE_FOLDER.equals(action)) {
                 setResult(RESULT_OK, createLiveFolder(this, CONTENT_URI,
                         getString(R.string.liveFolder_phones_label),
-                        R.drawable.ic_launcher_contacts_phones));
+                        R.drawable.ic_launcher_folder_live_contacts_phone));
             } else {
                 setResult(RESULT_CANCELED);
             }
@@ -85,7 +85,7 @@
             if (LiveFolders.ACTION_CREATE_LIVE_FOLDER.equals(action)) {
                 setResult(RESULT_OK, createLiveFolder(this, CONTENT_URI,
                         getString(R.string.liveFolder_all_label),
-                        R.drawable.ic_launcher_contacts));
+                        R.drawable.ic_launcher_folder_live_contacts));
             } else {
                 setResult(RESULT_CANCELED);
             }
diff --git a/src/com/android/contacts/RecentCallsListActivity.java b/src/com/android/contacts/RecentCallsListActivity.java
index dbf2879..8949f6e 100644
--- a/src/com/android/contacts/RecentCallsListActivity.java
+++ b/src/com/android/contacts/RecentCallsListActivity.java
@@ -114,17 +114,11 @@
     private static final int QUERY_TOKEN = 53;
     private static final int UPDATE_TOKEN = 54;
 
-    private RecentCallsAdapter mAdapter;
+    RecentCallsAdapter mAdapter;
     private QueryHandler mQueryHandler;
-    private String mVoiceMailNumber;
+    String mVoiceMailNumber;
 
-    private CharSequence[] mLabelArray;
-
-    private Drawable mDrawableIncoming;
-    private Drawable mDrawableOutgoing;
-    private Drawable mDrawableMissed;
-
-    private static final class ContactInfo {
+    static final class ContactInfo {
         public long personId;
         public String name;
         public int type;
@@ -136,13 +130,14 @@
 
     public static final class RecentCallsListItemViews {
         TextView line1View;
-        TextView line2View;
-        TextView durationView;
+        TextView labelView;
+        TextView numberView;
         TextView dateView;
         ImageView iconView;
+        View callView;
     }
 
-    private static final class CallerInfoQuery {
+    static final class CallerInfoQuery {
         String number;
         int position;
         String name;
@@ -151,8 +146,8 @@
     }
 
     /** Adapter class to fill in data for the Call Log */
-    private final class RecentCallsAdapter extends ResourceCursorAdapter
-            implements Runnable, ViewTreeObserver.OnPreDrawListener {
+    final class RecentCallsAdapter extends ResourceCursorAdapter
+            implements Runnable, ViewTreeObserver.OnPreDrawListener, View.OnClickListener {
         HashMap<String,ContactInfo> mContactInfo;
         private final LinkedList<CallerInfoQuery> mRequests;
         private volatile boolean mDone;
@@ -163,6 +158,20 @@
         private boolean mFirst;
         private Thread mCallerIdThread;
 
+        private CharSequence[] mLabelArray;
+
+        private Drawable mDrawableIncoming;
+        private Drawable mDrawableOutgoing;
+        private Drawable mDrawableMissed;
+
+        public void onClick(View view) {
+            String number = (String) view.getTag();
+            if (!TextUtils.isEmpty(number)) {
+                Uri telUri = Uri.fromParts("tel", number, null);
+                startActivity(new Intent(Intent.ACTION_CALL_PRIVILEGED, telUri));
+            }
+        }
+
         public boolean onPreDraw() {
             if (mFirst) {
                 mHandler.sendEmptyMessageDelayed(START_THREAD, 1000);
@@ -191,6 +200,14 @@
             mContactInfo = new HashMap<String,ContactInfo>();
             mRequests = new LinkedList<CallerInfoQuery>();
             mPreDrawListener = null;
+
+            mDrawableIncoming = getResources().getDrawable(
+                    R.drawable.ic_call_log_list_incoming_call);
+            mDrawableOutgoing = getResources().getDrawable(
+                    R.drawable.ic_call_log_list_outgoing_call);
+            mDrawableMissed = getResources().getDrawable(
+                    R.drawable.ic_call_log_list_missed_call);
+            mLabelArray = getResources().getTextArray(com.android.internal.R.array.phoneTypes);
         }
 
         void setLoading(boolean loading) {
@@ -331,11 +348,13 @@
             // Get the views to bind to
             RecentCallsListItemViews views = new RecentCallsListItemViews();
             views.line1View = (TextView) view.findViewById(R.id.line1);
-            views.line2View = (TextView) view.findViewById(R.id.line2);
-            views.durationView = (TextView) view.findViewById(R.id.duration);
+            views.labelView = (TextView) view.findViewById(R.id.label);
+            views.numberView = (TextView) view.findViewById(R.id.number);
             views.dateView = (TextView) view.findViewById(R.id.date);
             views.iconView = (ImageView) view.findViewById(R.id.call_type_icon);
-
+            views.callView = view.findViewById(R.id.call_icon);
+            views.callView.setOnClickListener(this);
+            
             view.setTag(views);
 
             return view;
@@ -350,6 +369,9 @@
             String callerName = c.getString(CALLER_NAME_COLUMN_INDEX);
             int callerNumberType = c.getInt(CALLER_NUMBERTYPE_COLUMN_INDEX);
             String callerNumberLabel = c.getString(CALLER_NUMBERLABEL_COLUMN_INDEX);
+            
+            // Store away the number so we can call it directly if you click on the call icon
+            views.callView.setTag(number);
 
             // Lookup contacts with this number
             ContactInfo info = mContactInfo.get(number);
@@ -387,32 +409,24 @@
             // Set the text lines
             if (!TextUtils.isEmpty(name)) {
                 views.line1View.setText(name);
+                views.labelView.setVisibility(View.VISIBLE);
                 CharSequence numberLabel = Phones.getDisplayLabel(context, ntype, label,
                         mLabelArray);
+                views.numberView.setVisibility(View.VISIBLE);
+                views.numberView.setText(number);
                 if (!TextUtils.isEmpty(numberLabel)) {
-                    views.line2View.setText(numberLabel);
+                    views.labelView.setText(numberLabel);
+                    views.labelView.setVisibility(View.VISIBLE);
                 } else {
-                    views.line2View.setText(number);
+                    views.labelView.setVisibility(View.GONE);
                 }
-
-                // Set the presence icon
-/*
-                int serverStatus;
-                if (!c.isNull(SERVER_STATUS_COLUMN_INDEX)) {
-                    serverStatus = c.getInt(SERVER_STATUS_COLUMN_INDEX);
-                    views.line2View.setCompoundDrawablesWithIntrinsicBounds(
-                            getResources().getDrawable(
-                                    Presence.getPresenceIconResourceId(serverStatus)),
-                            null, null, null);
-                } else {
-                    views.line2View.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
-                }
-*/
             } else {
                 if (number.equals(CallerInfo.UNKNOWN_NUMBER)) {
                     number = getString(R.string.unknown);
                 } else if (number.equals(CallerInfo.PRIVATE_NUMBER)) {
                     number = getString(R.string.private_num);
+                } else if (number.equals(CallerInfo.PAYPHONE_NUMBER)) {
+                    number = getString(R.string.payphone);
                 } else if (number.equals(mVoiceMailNumber)) {
                     number = getString(R.string.voicemail);
                 } else {
@@ -421,29 +435,18 @@
                 }
 
                 views.line1View.setText(number);
-                views.line2View.setText(null);
-
-                // Clear the presence icon
-//                views.line2View.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
+                views.numberView.setVisibility(View.GONE);
+                views.labelView.setVisibility(View.GONE);
             }
 
             int type = c.getInt(CALL_TYPE_COLUMN_INDEX);
             long date = c.getLong(DATE_COLUMN_INDEX);
 
-            // Set the duration
-            if (type == Calls.MISSED_TYPE) {
-                views.durationView.setVisibility(View.GONE);
-            } else {
-                views.durationView.setVisibility(View.VISIBLE);
-                views.durationView.setText(DateUtils.formatElapsedTime(c.getLong(DURATION_COLUMN_INDEX)));
-            }
-
             // Set the date/time field by mixing relative and absolute times.
-            int flags = DateUtils.FORMAT_ABBREV_RELATIVE | DateUtils.FORMAT_SHOW_DATE
-                    | DateUtils.FORMAT_ABBREV_MONTH;
+            int flags = DateUtils.FORMAT_ABBREV_RELATIVE;
             
-            views.dateView.setText(DateUtils.getRelativeDateTimeString(context, date,
-                    DateUtils.MINUTE_IN_MILLIS, DateUtils.DAY_IN_MILLIS * 2, flags));
+            views.dateView.setText(DateUtils.getRelativeTimeSpanString(date,
+                    System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS, flags));
 
             // Set the icon
             switch (type) {
@@ -459,6 +462,7 @@
                     views.iconView.setImageDrawable(mDrawableMissed);
                     break;
             }
+
             // Listen for the first draw
             if (mPreDrawListener == null) {
                 mFirst = true;
@@ -496,11 +500,6 @@
 
         setContentView(R.layout.recent_calls);
 
-        mDrawableIncoming = getResources().getDrawable(android.R.drawable.sym_call_incoming);
-        mDrawableOutgoing = getResources().getDrawable(android.R.drawable.sym_call_outgoing);
-        mDrawableMissed = getResources().getDrawable(android.R.drawable.sym_call_missed);
-        mLabelArray = getResources().getTextArray(com.android.internal.R.array.phoneTypes);
-
         // Typing here goes to the dialer
         setDefaultKeyMode(DEFAULT_KEYS_DIALER);
 
@@ -616,6 +615,8 @@
             number = getString(R.string.unknown);
         } else if (number.equals(CallerInfo.PRIVATE_NUMBER)) {
             number = getString(R.string.private_num);
+        } else if (number.equals(CallerInfo.PAYPHONE_NUMBER)) {
+            number = getString(R.string.payphone);
         } else if (number.equals(mVoiceMailNumber)) {
             number = getString(R.string.voicemail);
             numberUri = Uri.parse("voicemail:x");
@@ -799,7 +800,8 @@
             String number = cursor.getString(NUMBER_COLUMN_INDEX);
             if (TextUtils.isEmpty(number)
                     || number.equals(CallerInfo.UNKNOWN_NUMBER)
-                    || number.equals(CallerInfo.PRIVATE_NUMBER)) {
+                    || number.equals(CallerInfo.PRIVATE_NUMBER)
+                    || number.equals(CallerInfo.PAYPHONE_NUMBER)) {
                 // This number can't be called, do nothing
                 return;
             }
diff --git a/src/com/android/contacts/ShowOrCreateActivity.java b/src/com/android/contacts/ShowOrCreateActivity.java
new file mode 100755
index 0000000..0732ffe
--- /dev/null
+++ b/src/com/android/contacts/ShowOrCreateActivity.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.AsyncQueryHandler;
+import android.content.ComponentName;
+import android.content.ContentUris;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.Contacts;
+import android.provider.Contacts.ContactMethods;
+import android.provider.Contacts.ContactMethodsColumns;
+import android.provider.Contacts.Intents;
+import android.provider.Contacts.People;
+import android.provider.Contacts.Phones;
+import android.util.Log;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * Handle several edge cases around showing or possibly creating contacts in
+ * connected with a specific E-mail address or phone number. Will search based
+ * on incoming {@link Intent#getData()} as described by
+ * {@link Intents#SHOW_OR_CREATE_CONTACT}.
+ * <ul>
+ * <li>If no matching contacts found, will prompt user with dialog to add to a
+ * contact, then will use {@link Intent#ACTION_INSERT_OR_EDIT} to let create new
+ * contact or edit new data into an existing one.
+ * <li>If one matching contact found, directly show {@link Intent#ACTION_VIEW}
+ * that specific contact.
+ * <li>If more than one matching found, show list of matching contacts using
+ * {@link Intent#ACTION_SEARCH}.
+ * </ul>
+ */
+public final class ShowOrCreateActivity extends Activity {
+    static final String TAG = "ShowOrCreateActivity";
+    static final boolean LOGD = false;
+
+    static final String[] PHONES_PROJECTION = new String[] {
+        Phones.PERSON_ID,
+    };
+
+    static final String[] PEOPLE_PROJECTION = new String[] {
+        People._ID,
+    };
+    
+    static final String SCHEME_MAILTO = "mailto";
+    static final String SCHEME_TEL = "tel";
+    
+    static final int PERSON_ID_INDEX = 0;
+
+    /**
+     * Query clause to filter {@link ContactMethods#CONTENT_URI} to only search
+     * {@link Contacts#KIND_EMAIL} or {@link Contacts#KIND_IM}.
+     */
+    static final String QUERY_KIND_EMAIL_OR_IM = ContactMethodsColumns.KIND +
+            " IN (" + Contacts.KIND_EMAIL + "," + Contacts.KIND_IM + ")";
+    
+    static final int QUERY_TOKEN = 42;
+    
+    private QueryHandler mQueryHandler;
+    
+    @Override
+    protected void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        
+        // Create handler if doesn't exist, otherwise cancel any running
+        if (mQueryHandler == null) {
+            mQueryHandler = new QueryHandler(this);
+        } else {
+            mQueryHandler.cancelOperation(QUERY_TOKEN);
+        }
+
+        final Intent intent = getIntent();
+        final Uri data = intent.getData();
+        
+        // Unpack scheme and target data from intent
+        String scheme = null;
+        String ssp = null;
+        if (data != null) {
+            scheme = data.getScheme();
+            ssp = data.getSchemeSpecificPart();
+        }
+        
+        // Build set of extras for possible use when creating contact
+        Bundle createExtras = new Bundle();
+        Bundle originalExtras = intent.getExtras();
+        if (originalExtras != null) {
+            createExtras.putAll(originalExtras);
+        }
+        mQueryHandler.setCreateExtras(createExtras);
+        
+        // Read possible extra with specific title
+        String createDescrip = intent.getStringExtra(Intents.EXTRA_CREATE_DESCRIPTION);
+        if (createDescrip == null) {
+            createDescrip = ssp;
+        }
+        mQueryHandler.setCreateDescription(createDescrip);
+        
+        // Allow caller to bypass dialog prompt
+        boolean createForce = intent.getBooleanExtra(Intents.EXTRA_FORCE_CREATE, false);
+        mQueryHandler.setCreateForce(createForce);
+        
+        // Handle specific query request
+        if (SCHEME_MAILTO.equals(scheme)) {
+            createExtras.putString(Intents.Insert.EMAIL, ssp);
+            Uri uri = Uri.withAppendedPath(People.WITH_EMAIL_OR_IM_FILTER_URI, Uri.encode(ssp));
+            mQueryHandler.startQuery(QUERY_TOKEN, null, uri,
+                    PEOPLE_PROJECTION, null, null, null);
+        } else if (SCHEME_TEL.equals(scheme)) {
+            createExtras.putString(Intents.Insert.PHONE, ssp);
+            mQueryHandler.startQuery(QUERY_TOKEN, null,
+                    Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, ssp),
+                    PHONES_PROJECTION, null, null, null);
+            
+        } else {
+            Log.w(TAG, "Invalid intent:" + getIntent());
+            finish();
+        }
+    }
+    
+    @Override
+    protected void onStop() {
+        super.onStop();
+        if (mQueryHandler != null) {
+            mQueryHandler.cancelOperation(QUERY_TOKEN);
+        }
+    }
+    
+    /**
+     * Listener for {@link DialogInterface} that launches a given {@link Intent}
+     * when clicked. When clicked, this also closes the parent using
+     * {@link Activity#finish()}.
+     */
+    private static class IntentClickListener implements DialogInterface.OnClickListener {
+        private Activity mParent;
+        private Intent mIntent;
+
+        /**
+         * @param parent {@link Activity} to use for launching target.
+         * @param intent Target {@link Intent} to launch when clicked.
+         */
+        public IntentClickListener(Activity parent, Intent intent) {
+            mParent = parent;
+            mIntent = intent;
+        }
+
+        public void onClick(DialogInterface dialog, int which) {
+            if (mIntent != null) {
+                mParent.startActivity(mIntent);
+            }
+            mParent.finish();
+        }
+    }
+
+    /**
+     * Handle asynchronous query to find matching contacts. When query finishes,
+     * will handle based on number of matching contacts found.
+     */
+    private static final class QueryHandler extends AsyncQueryHandler {
+        private final WeakReference<Activity> mActivity;
+        private Bundle mCreateExtras;
+        private String mCreateDescrip;
+        private boolean mCreateForce;
+
+        public QueryHandler(Activity activity) {
+            super(activity.getContentResolver());
+            mActivity = new WeakReference<Activity>(activity);
+        }
+        
+        public void setCreateExtras(Bundle createExtras) {
+            mCreateExtras = createExtras;
+        }
+        
+        public void setCreateDescription(String createDescrip) {
+            mCreateDescrip = createDescrip;
+        }
+        
+        public void setCreateForce(boolean createForce) {
+            mCreateForce = createForce;
+        }
+
+        @Override
+        protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
+            Activity activity = mActivity.get();
+            if (activity == null) {
+                return;
+            }
+            
+            // Count contacts found by query
+            int count = 0;
+            long personId = -1;
+            if (cursor != null) {
+                try {
+                    count = cursor.getCount();
+                    if (count == 1 && cursor.moveToFirst()) {
+                        // Try reading ID if only one contact returned
+                        personId = cursor.getLong(PERSON_ID_INDEX);
+                    }
+                } finally {
+                    cursor.close();
+                }
+            }
+            
+            if (LOGD) Log.d(TAG, "onQueryComplete count=" + count);
+            
+            if (count == 1) {
+                // If we only found one item, jump right to viewing it
+                Intent viewIntent = new Intent(Intent.ACTION_VIEW,
+                        ContentUris.withAppendedId(People.CONTENT_URI, personId));
+                activity.startActivity(viewIntent);
+                activity.finish();
+                
+            } else if (count > 1) {
+                // If more than one, show pick list
+                Intent listIntent = new Intent(Intent.ACTION_SEARCH);
+                listIntent.setComponent(new ComponentName(activity, ContactsListActivity.class));
+                listIntent.putExtras(mCreateExtras);
+                activity.startActivity(listIntent);
+                activity.finish();
+                
+            } else {
+                // No matching contacts found
+                if (mCreateForce) {
+                    // Forced to create new contact
+                    Intent createIntent = new Intent(Intent.ACTION_INSERT, People.CONTENT_URI);
+                    createIntent.putExtras(mCreateExtras);
+                    createIntent.setType(People.CONTENT_TYPE);
+                    
+                    activity.startActivity(createIntent);
+                    activity.finish();
+                    
+                } else {
+                    // Prompt user to insert or edit contact 
+                    Intent createIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
+                    createIntent.putExtras(mCreateExtras);
+                    createIntent.setType(People.CONTENT_ITEM_TYPE);
+                    
+                    CharSequence message = activity.getResources().getString(
+                            R.string.add_contact_dlg_message_fmt, mCreateDescrip);
+                    
+                    new AlertDialog.Builder(activity)
+                            .setTitle(R.string.add_contact_dlg_title)
+                            .setMessage(message)
+                            .setPositiveButton(android.R.string.ok,
+                                    new IntentClickListener(activity, createIntent))
+                            .setNegativeButton(android.R.string.cancel,
+                                    new IntentClickListener(activity, null))
+                            .show();
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/android/contacts/TwelveKeyDialer.java b/src/com/android/contacts/TwelveKeyDialer.java
index c80e67b..ea157fc 100644
--- a/src/com/android/contacts/TwelveKeyDialer.java
+++ b/src/com/android/contacts/TwelveKeyDialer.java
@@ -55,6 +55,7 @@
 import android.view.View;
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
 import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.EditText;
@@ -321,8 +322,9 @@
         if (!TextUtils.isEmpty(dialString)) {
             Editable digits = mDigits.getText();
             digits.replace(0, digits.length(), dialString);
-            mDigits.setCompoundDrawablesWithIntrinsicBounds(
-                    getResources().getDrawable(R.drawable.ic_dial_number), null, null, null);
+            // for some reason this isn't getting called in the digits.replace call above..
+            // but in any case, this will make sure the background drawable looks right
+            afterTextChanged(digits);
         }
     }
 
@@ -426,6 +428,19 @@
     }
 
     @Override
+    public void onWindowFocusChanged(boolean hasFocus) {
+        if (hasFocus) {
+            // Hide soft keyboard, if visible (it's fugly over button dialer).
+            // The only known case where this will be true is when launching the dialer with
+            // ACTION_DIAL via a soft keyboard.  we dismiss it here because we don't
+            // have a window token yet in onCreate / onNewIntent
+            InputMethodManager inputMethodManager = (InputMethodManager)
+                    getSystemService(Context.INPUT_METHOD_SERVICE);
+            inputMethodManager.hideSoftInputFromWindow(mDigits.getWindowToken(), 0);            
+        }
+    }
+
+    @Override
     protected void onPause() {
         super.onPause();
 
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index 99e72b0..28a82b4 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -413,20 +413,23 @@
                     Bundle bundle = new Bundle();
                     String name = mCursor.getString(CONTACT_NAME_COLUMN);
                     if (!TextUtils.isEmpty(name)) {
+                        // Correctly handle when section headers are hidden
+                        int sepAdjust = SHOW_SEPARATORS ? 1 : 0;
+                        
                         bundle.putString(Contacts.Intents.Insert.NAME, name);
                         // The 0th ViewEntry in each ArrayList below is a separator item
-                        int entriesToAdd = Math.min(mPhoneEntries.size() - 1, PHONE_KEYS.length);
+                        int entriesToAdd = Math.min(mPhoneEntries.size() - sepAdjust, PHONE_KEYS.length);
                         for (int x = 0; x < entriesToAdd; x++) {
-                            ViewEntry entry = mPhoneEntries.get(x + 1);
+                            ViewEntry entry = mPhoneEntries.get(x + sepAdjust);
                             bundle.putString(PHONE_KEYS[x], entry.data);
                         }
-                        entriesToAdd = Math.min(mEmailEntries.size() - 1, EMAIL_KEYS.length);
+                        entriesToAdd = Math.min(mEmailEntries.size() - sepAdjust, EMAIL_KEYS.length);
                         for (int x = 0; x < entriesToAdd; x++) {
-                            ViewEntry entry = mEmailEntries.get(x + 1);
+                            ViewEntry entry = mEmailEntries.get(x + sepAdjust);
                             bundle.putString(EMAIL_KEYS[x], entry.data);
                         }
-                        if (mPostalEntries.size() >= 2) {
-                            ViewEntry entry = mPostalEntries.get(1);
+                        if (mPostalEntries.size() >= 1 + sepAdjust) {
+                            ViewEntry entry = mPostalEntries.get(sepAdjust);
                             bundle.putString(Contacts.Intents.Insert.POSTAL, entry.data);
                         }
                         intent.putExtra("ENCODE_DATA", bundle);
@@ -893,6 +896,11 @@
     }
 
     String buildActionString(int actionResId, CharSequence type, boolean lowerCase) {
+        // If there is no type just display an empty string
+        if (type == null) {
+            type = "";
+        }
+
         if (lowerCase) {
             return getString(actionResId, type.toString().toLowerCase());
         } else {
