am f2c37bf7: Merge "When dial *#06# javacrash happens."

* commit 'f2c37bf718df8360e9a91c58d8f639991680266b':
  When dial *#06# javacrash happens.
diff --git a/Android.mk b/Android.mk
index 696caf1..0a93c32 100644
--- a/Android.mk
+++ b/Android.mk
@@ -18,23 +18,28 @@
     $(phone_common_dir)/res
 
 LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
-LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
+LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs)) \
+    frameworks/support/v7/cardview/res frameworks/support/v7/recyclerview/res
 
 LOCAL_AAPT_FLAGS := \
     --auto-add-overlay \
+    --extra-packages android.support.v7.cardview \
+    --extra-packages android.support.v7.recyclerview \
     --extra-packages com.android.incallui \
     --extra-packages com.android.contacts.common \
     --extra-packages com.android.phone.common
 
 LOCAL_JAVA_LIBRARIES := telephony-common
 LOCAL_STATIC_JAVA_LIBRARIES := \
-    com.android.services.telephony.common \
-    com.android.vcard \
     android-common \
-    guava \
+    android-ex-variablespeed \
     android-support-v13 \
     android-support-v4 \
-    android-ex-variablespeed \
+    android-support-v7-cardview \
+    android-support-v7-recyclerview \
+    com.android.services.telephony.common \
+    com.android.vcard \
+    guava \
     libphonenumber
 
 LOCAL_REQUIRED_MODULES := libvariablespeed
@@ -47,7 +52,7 @@
 
 # Uncomment the following line to build against the current SDK
 # This is required for building an unbundled app.
-# LOCAL_SDK_VERSION := current
+LOCAL_SDK_VERSION := current
 
 include $(BUILD_PACKAGE)
 
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 039cc31..fc5fed6 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -19,7 +19,6 @@
     coreApp="true">
 
     <uses-permission android:name="android.permission.CALL_PHONE" />
-    <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
     <uses-permission android:name="android.permission.READ_CALL_LOG" />
@@ -49,6 +48,7 @@
     <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <uses-permission android:name="android.permission.BROADCAST_STICKY" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <!-- This tells the activity manager to not delay any of our activity
      start requests, even if they happen immediately after the user
      presses home. -->
@@ -60,7 +60,8 @@
         android:icon="@mipmap/ic_launcher_phone"
         android:hardwareAccelerated="true"
         android:supportsRtl="true"
-        android:backupAgent='com.android.dialer.DialerBackupAgent'>
+        android:backupAgent='com.android.dialer.DialerBackupAgent'
+        android:usesCleartextTraffic="false">
 
         <meta-data android:name="com.google.android.backup.api_key"
             android:value="AEdPqrEAAAAIBXgtCEKQ6W0PXVnW-ZVia2KmlV2AxsTw3GjAeQ" />
@@ -196,6 +197,12 @@
             android:label="@string/custom_list_filter"
             android:theme="@style/ContactListFilterTheme"/>
 
+        <activity
+            android:name="com.android.contacts.common.activity.RequestImportVCardPermissionsActivity"
+            android:label="@string/launcherActivityLabel"
+            android:theme="@style/BackgroundOnlyTheme"
+            android:exported="false"/>
+
         <!-- vCard related -->
         <activity android:name="com.android.contacts.common.vcard.ImportVCardActivity"
                   android:configChanges="orientation|screenSize|keyboardHidden"
@@ -273,15 +280,6 @@
                   android:screenOrientation="nosensor" >
         </activity>
 
-        <activity android:name="com.android.incallui.CircularRevealActivity"
-                  android:theme="@style/Theme.CircularRevealAnimation"
-                  android:exported="false"
-                  android:configChanges="keyboardHidden|orientation"
-                  android:launchMode="singleInstance"
-                  android:noHistory="true"
-                  android:excludeFromRecents="true"
-                  android:screenOrientation="nosensor" />
-
         <!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
         <receiver android:name="com.android.incallui.InCallApp$NotificationBroadcastReceiver"
                   android:exported="false">
diff --git a/res/color/settings_text_color_primary.xml b/res/color/settings_text_color_primary.xml
new file mode 100644
index 0000000..862d8a2
--- /dev/null
+++ b/res/color/settings_text_color_primary.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 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.
+ */
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="false" android:color="@color/setting_disabled_color" />
+    <item android:color="@color/setting_primary_color" />
+</selector>
diff --git a/res/color/settings_text_color_secondary.xml b/res/color/settings_text_color_secondary.xml
new file mode 100644
index 0000000..0b00e46
--- /dev/null
+++ b/res/color/settings_text_color_secondary.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2015 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.
+ */
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="false" android:color="@color/setting_disabled_color" />
+    <item android:color="@color/setting_secondary_color" />
+</selector>
diff --git a/res/drawable-hdpi/ic_arrow_am.png b/res/drawable-hdpi/ic_arrow_am.png
deleted file mode 100644
index 6fecb93..0000000
--- a/res/drawable-hdpi/ic_arrow_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_grade_24dp.png b/res/drawable-hdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..86eecdd
--- /dev/null
+++ b/res/drawable-hdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_more_horiz_24dp.png b/res/drawable-hdpi/ic_more_horiz_24dp.png
new file mode 100644
index 0000000..ebfcb6f
--- /dev/null
+++ b/res/drawable-hdpi/ic_more_horiz_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_more_vert_24dp.png b/res/drawable-hdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..67f07e4
--- /dev/null
+++ b/res/drawable-hdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_people_24dp.png b/res/drawable-hdpi/ic_people_24dp.png
new file mode 100644
index 0000000..ff698af
--- /dev/null
+++ b/res/drawable-hdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_report_problem_24dp.png b/res/drawable-hdpi/ic_report_problem_24dp.png
new file mode 100644
index 0000000..cebb1c2
--- /dev/null
+++ b/res/drawable-hdpi/ic_report_problem_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_schedule_24dp.png b/res/drawable-hdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..f3581d1
--- /dev/null
+++ b/res/drawable-hdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_videocam_wht_24dp.png b/res/drawable-hdpi/ic_videocam_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_videocam_wht_24dp.png
rename to res/drawable-hdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_voicemail_24dp.png b/res/drawable-hdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..03a62e1
--- /dev/null
+++ b/res/drawable-hdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable-hdpi/overflow_thumbnail.png b/res/drawable-hdpi/overflow_thumbnail.png
deleted file mode 100644
index 57db353..0000000
--- a/res/drawable-hdpi/overflow_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_ab_dialer_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_ab_dialer_holo_dark.png
deleted file mode 100644
index bc3ebc7..0000000
--- a/res/drawable-ldrtl-hdpi/ic_ab_dialer_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 90712b5..0000000
--- a/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_holo_dark.png
deleted file mode 100644
index d50d5b8..0000000
--- a/res/drawable-ldrtl-hdpi/ic_sound_off_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index b450641..0000000
--- a/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_holo_dark.png b/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_holo_dark.png
deleted file mode 100644
index ab62399..0000000
--- a/res/drawable-ldrtl-hdpi/ic_sound_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_dark.png
deleted file mode 100644
index 210690f..0000000
--- a/res/drawable-ldrtl-mdpi/ic_ab_dialer_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 9daf083..0000000
--- a/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_holo_dark.png
deleted file mode 100644
index e8357c1..0000000
--- a/res/drawable-ldrtl-mdpi/ic_sound_off_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 8ba42f8..0000000
--- a/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_holo_dark.png b/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_holo_dark.png
deleted file mode 100644
index 0b7296d..0000000
--- a/res/drawable-ldrtl-mdpi/ic_sound_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_dark.png
deleted file mode 100644
index 5c8e162..0000000
--- a/res/drawable-ldrtl-xhdpi/ic_ab_dialer_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index 396c479..0000000
--- a/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_holo_dark.png
deleted file mode 100644
index ca080b2..0000000
--- a/res/drawable-ldrtl-xhdpi/ic_sound_off_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_disabled_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_disabled_holo_dark.png
deleted file mode 100644
index c809e8d..0000000
--- a/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_disabled_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_holo_dark.png b/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_holo_dark.png
deleted file mode 100644
index f82a816..0000000
--- a/res/drawable-ldrtl-xhdpi/ic_sound_speakerphone_holo_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_arrow_am.png b/res/drawable-mdpi/ic_arrow_am.png
deleted file mode 100644
index 11bf05b..0000000
--- a/res/drawable-mdpi/ic_arrow_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_grade_24dp.png b/res/drawable-mdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..d2cbe4c
--- /dev/null
+++ b/res/drawable-mdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_more_horiz_24dp.png b/res/drawable-mdpi/ic_more_horiz_24dp.png
new file mode 100644
index 0000000..8c0be8a
--- /dev/null
+++ b/res/drawable-mdpi/ic_more_horiz_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_more_vert_24dp.png b/res/drawable-mdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..017e45e
--- /dev/null
+++ b/res/drawable-mdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_people_24dp.png b/res/drawable-mdpi/ic_people_24dp.png
new file mode 100644
index 0000000..270e4de
--- /dev/null
+++ b/res/drawable-mdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_report_problem_24dp.png b/res/drawable-mdpi/ic_report_problem_24dp.png
new file mode 100644
index 0000000..04365b9
--- /dev/null
+++ b/res/drawable-mdpi/ic_report_problem_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_schedule_24dp.png b/res/drawable-mdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..501ee84
--- /dev/null
+++ b/res/drawable-mdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_videocam_wht_24dp.png b/res/drawable-mdpi/ic_videocam_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_videocam_wht_24dp.png
rename to res/drawable-mdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_voicemail_24dp.png b/res/drawable-mdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..e5aa7db
--- /dev/null
+++ b/res/drawable-mdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable-mdpi/overflow_thumbnail.png b/res/drawable-mdpi/overflow_thumbnail.png
deleted file mode 100644
index c699374..0000000
--- a/res/drawable-mdpi/overflow_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_arrow_am.png b/res/drawable-xhdpi/ic_arrow_am.png
deleted file mode 100644
index ffbd399..0000000
--- a/res/drawable-xhdpi/ic_arrow_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_grade_24dp.png b/res/drawable-xhdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..d65f39d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_more_horiz_24dp.png b/res/drawable-xhdpi/ic_more_horiz_24dp.png
new file mode 100644
index 0000000..dbb87ca
--- /dev/null
+++ b/res/drawable-xhdpi/ic_more_horiz_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_more_vert_24dp.png b/res/drawable-xhdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..efab8a7
--- /dev/null
+++ b/res/drawable-xhdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_people_24dp.png b/res/drawable-xhdpi/ic_people_24dp.png
new file mode 100644
index 0000000..323981c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_report_problem_24dp.png b/res/drawable-xhdpi/ic_report_problem_24dp.png
new file mode 100644
index 0000000..a43fa3c
--- /dev/null
+++ b/res/drawable-xhdpi/ic_report_problem_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_schedule_24dp.png b/res/drawable-xhdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..2e27936
--- /dev/null
+++ b/res/drawable-xhdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_videocam_wht_24dp.png b/res/drawable-xhdpi/ic_videocam_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_videocam_wht_24dp.png
rename to res/drawable-xhdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_voicemail_24dp.png b/res/drawable-xhdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..59126d7
--- /dev/null
+++ b/res/drawable-xhdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable-xhdpi/overflow_thumbnail.png b/res/drawable-xhdpi/overflow_thumbnail.png
deleted file mode 100644
index e538b98..0000000
--- a/res/drawable-xhdpi/overflow_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_arrow_am.png b/res/drawable-xxhdpi/ic_arrow_am.png
deleted file mode 100644
index 4938de2..0000000
--- a/res/drawable-xxhdpi/ic_arrow_am.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_grade_24dp.png b/res/drawable-xxhdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..aa58792
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_more_horiz_24dp.png b/res/drawable-xxhdpi/ic_more_horiz_24dp.png
new file mode 100644
index 0000000..2036a9c
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_more_horiz_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_more_vert_24dp.png b/res/drawable-xxhdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..d322813
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_people_24dp.png b/res/drawable-xxhdpi/ic_people_24dp.png
new file mode 100644
index 0000000..6c68435
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_report_problem_24dp.png b/res/drawable-xxhdpi/ic_report_problem_24dp.png
new file mode 100644
index 0000000..807b9fa
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_report_problem_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_schedule_24dp.png b/res/drawable-xxhdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..bfc7273
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_videocam_wht_24dp.png b/res/drawable-xxhdpi/ic_videocam_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_videocam_wht_24dp.png
rename to res/drawable-xxhdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_voicemail_24dp.png b/res/drawable-xxhdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..28b8e93
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable-xxhdpi/overflow_thumbnail.png b/res/drawable-xxhdpi/overflow_thumbnail.png
deleted file mode 100644
index 7f3f733..0000000
--- a/res/drawable-xxhdpi/overflow_thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_grade_24dp.png b/res/drawable-xxxhdpi/ic_grade_24dp.png
new file mode 100644
index 0000000..7f38d09
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_grade_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_more_horiz_24dp.png b/res/drawable-xxxhdpi/ic_more_horiz_24dp.png
new file mode 100644
index 0000000..535f087
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_more_horiz_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_more_vert_24dp.png b/res/drawable-xxxhdpi/ic_more_vert_24dp.png
new file mode 100644
index 0000000..2f2cb3d
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_more_vert_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_people_24dp.png b/res/drawable-xxxhdpi/ic_people_24dp.png
new file mode 100644
index 0000000..5676f70
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_people_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_report_problem_24dp.png b/res/drawable-xxxhdpi/ic_report_problem_24dp.png
new file mode 100644
index 0000000..8683a2e
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_report_problem_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_schedule_24dp.png b/res/drawable-xxxhdpi/ic_schedule_24dp.png
new file mode 100644
index 0000000..b94f4df
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_schedule_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_videocam_24dp.png b/res/drawable-xxxhdpi/ic_videocam_24dp.png
new file mode 100644
index 0000000..ed20c07
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_videocam_24dp.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_voicemail_24dp.png b/res/drawable-xxxhdpi/ic_voicemail_24dp.png
new file mode 100644
index 0000000..820ff50
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_voicemail_24dp.png
Binary files differ
diff --git a/res/drawable/recent_lists_footer_background.xml b/res/drawable/call_log_action_border.xml
similarity index 63%
copy from res/drawable/recent_lists_footer_background.xml
copy to res/drawable/call_log_action_border.xml
index b5029af..fbb3559 100644
--- a/res/drawable/recent_lists_footer_background.xml
+++ b/res/drawable/call_log_action_border.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-
 <!--
-  ~ Copyright (C) 2014 The Android Open Source Project
+  ~ Copyright (C) 2015 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.
@@ -15,10 +14,11 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?android:attr/colorControlHighlight">
-    <!-- Mask to constrain the ripple to the bounds of the view. -->
-    <item android:id="@android:id/mask">
-        <color android:color="@android:color/white" />
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:left="-1dp" android:right="-1dp" android:bottom="-1dp">
+        <shape android:shape="rectangle">
+            <stroke android:width="1dp" android:color="@color/call_log_action_divider" />
+        </shape>
     </item>
-</ripple>
+</layer-list>
diff --git a/res/drawable/call_log_background.xml b/res/drawable/call_log_background.xml
deleted file mode 100644
index 1b3dbc9..0000000
--- a/res/drawable/call_log_background.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2014 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.
--->
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?android:attr/colorControlHighlight" />
\ No newline at end of file
diff --git a/res/drawable/ic_arrow.xml b/res/drawable/ic_arrow.xml
deleted file mode 100644
index f97623b..0000000
--- a/res/drawable/ic_arrow.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2013 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
-  -->
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-        android:src="@drawable/ic_arrow_am"
-        android:autoMirrored="true">
-</bitmap>
\ No newline at end of file
diff --git a/res/drawable/recent_lists_footer_background.xml b/res/drawable/tab_contacts.xml
similarity index 83%
rename from res/drawable/recent_lists_footer_background.xml
rename to res/drawable/tab_contacts.xml
index b5029af..ed3f86b 100644
--- a/res/drawable/recent_lists_footer_background.xml
+++ b/res/drawable/tab_contacts.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-
 <!--
   ~ Copyright (C) 2014 The Android Open Source Project
   ~
@@ -15,10 +14,17 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
+
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?android:attr/colorControlHighlight">
-    <!-- Mask to constrain the ripple to the bounds of the view. -->
+    android:color="@color/tab_ripple_color">
+
+    <item>
+        <bitmap android:src="@drawable/ic_people_24dp"
+            android:gravity="center" />
+    </item>
+
     <item android:id="@android:id/mask">
         <color android:color="@android:color/white" />
     </item>
+
 </ripple>
diff --git a/res/drawable/recent_lists_footer_background.xml b/res/drawable/tab_recents.xml
similarity index 83%
copy from res/drawable/recent_lists_footer_background.xml
copy to res/drawable/tab_recents.xml
index b5029af..b1a5318 100644
--- a/res/drawable/recent_lists_footer_background.xml
+++ b/res/drawable/tab_recents.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-
 <!--
   ~ Copyright (C) 2014 The Android Open Source Project
   ~
@@ -15,10 +14,17 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
+
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?android:attr/colorControlHighlight">
-    <!-- Mask to constrain the ripple to the bounds of the view. -->
+    android:color="@color/tab_ripple_color">
+
+    <item>
+        <bitmap android:src="@drawable/ic_schedule_24dp"
+            android:gravity="center" />
+    </item>
+
     <item android:id="@android:id/mask">
         <color android:color="@android:color/white" />
     </item>
+
 </ripple>
diff --git a/res/drawable/recent_lists_footer_background.xml b/res/drawable/tab_speed_dial.xml
similarity index 83%
copy from res/drawable/recent_lists_footer_background.xml
copy to res/drawable/tab_speed_dial.xml
index b5029af..c9c4820 100644
--- a/res/drawable/recent_lists_footer_background.xml
+++ b/res/drawable/tab_speed_dial.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-
 <!--
   ~ Copyright (C) 2014 The Android Open Source Project
   ~
@@ -15,10 +14,17 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
+
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?android:attr/colorControlHighlight">
-    <!-- Mask to constrain the ripple to the bounds of the view. -->
+    android:color="@color/tab_ripple_color">
+
+    <item>
+        <bitmap android:src="@drawable/ic_grade_24dp"
+            android:gravity="center" />
+    </item>
+
     <item android:id="@android:id/mask">
         <color android:color="@android:color/white" />
     </item>
+
 </ripple>
diff --git a/res/layout/call_detail.xml b/res/layout/call_detail.xml
index 35c41c0..c077851 100644
--- a/res/layout/call_detail.xml
+++ b/res/layout/call_detail.xml
@@ -24,7 +24,7 @@
         android:orientation="vertical"
         android:layout_alignParentStart="true"
         android:layout_alignParentTop="true"
-        android:background="@color/background_dialer_details_list_items" >
+        android:background="@color/background_dialer_call_log" >
         <!-- Caller information "card" -->
         <LinearLayout
             android:id="@+id/caller_information"
@@ -100,18 +100,4 @@
 
 
     </LinearLayout>
-    <!--
-         Used to hide the UI when playing a voicemail and the proximity sensor
-         is detecting something near the screen.
-      -->
-    <View
-        android:id="@+id/blank"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@android:color/black"
-        android:visibility="gone"
-        android:clickable="true"
-        android:layout_alignParentStart="true"
-        android:layout_alignParentTop="true"
-        />
 </RelativeLayout>
diff --git a/res/layout/call_log_fragment.xml b/res/layout/call_log_fragment.xml
index 74c6309..a5a3072 100644
--- a/res/layout/call_log_fragment.xml
+++ b/res/layout/call_log_fragment.xml
@@ -21,65 +21,35 @@
     android:orientation="vertical"
     android:divider="?android:attr/dividerHorizontal"
     android:showDividers="end"
-    android:background="@color/background_dialer_list_items">
+    android:background="@color/background_dialer_call_log">
 
     <FrameLayout
         android:id="@+id/voicemail_status"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:visibility="gone">
-        <include layout="@layout/call_log_voicemail_status"
-    />
+
+        <include layout="@layout/call_log_voicemail_status" />
+
     </FrameLayout>
 
     <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-        <TextView
-            android:id="@+id/filter_status"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            style="@style/ContactListSeparatorTextViewStyle"
-            android:layout_marginStart="@dimen/call_log_outer_margin"
-            android:layout_marginEnd="@dimen/call_log_outer_margin"
-            android:paddingTop="@dimen/call_log_inner_margin"
-            android:paddingBottom="@dimen/call_log_inner_margin"
-            android:layout_alignParentStart="true"
-            android:layout_alignParentBottom="true"
-            android:visibility="gone"
-            />
-        <View
-            android:id="@+id/call_log_divider"
-            android:layout_width="match_parent"
-            android:layout_height="1px"
-            android:layout_marginStart="@dimen/call_log_outer_margin"
-            android:layout_marginEnd="@dimen/call_log_outer_margin"
-            android:layout_gravity="bottom"
-            android:background="#55ffffff"
-            />
-    </FrameLayout>
-    <FrameLayout
-        android:layout_width="match_parent"
         android:layout_height="match_parent">
-        <!-- clipChildren=false is required to ensure shadows drawn
-            within list items aren't clipped by the list item bounds. -->
-        <ListView android:id="@android:id/list"
+
+        <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:fadingEdge="none"
-            android:scrollbarStyle="outsideOverlay"
-            android:background="@color/background_dialer_list_items"
-            android:divider="@null"
-            android:nestedScrollingEnabled="true"
-            android:clipChildren="false"
-        />
+            android:background="@color/background_dialer_call_log"
+            android:paddingStart="@dimen/call_log_horizontal_margin"
+            android:paddingEnd="@dimen/call_log_horizontal_margin" />
 
         <include
             android:id="@+id/empty_list_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             layout="@layout/empty_list_view"
-            android:visibility="gone"/>
+            android:visibility="gone" />
 
     </FrameLayout>
 
diff --git a/res/layout/call_log_list_item.xml b/res/layout/call_log_list_item.xml
index db59b74..af8cb8b 100644
--- a/res/layout/call_log_list_item.xml
+++ b/res/layout/call_log_list_item.xml
@@ -35,129 +35,132 @@
         android:paddingTop="@dimen/call_log_day_group_padding_top"
         android:paddingBottom="@dimen/call_log_day_group_padding_bottom" />
 
-    <!-- Linear layout to separate the primary area containing the contact badge and caller
-         information and the secondary action (call details / play voicemail). -->
-    <LinearLayout
+    <android.support.v7.widget.CardView
         android:id="@+id/call_log_row"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:baselineAligned="false"
-        android:orientation="vertical"
-        android:gravity="center_vertical" >
+        style="@style/CallLogCardStyle">
 
-        <!-- Primary area containing the contact badge and caller information -->
         <LinearLayout
-            android:id="@+id/primary_action_view"
-            android:background="@drawable/call_log_background"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:paddingStart="@dimen/call_log_start_margin"
-            android:paddingEnd="@dimen/call_log_outer_margin"
-            android:paddingTop="@dimen/call_log_outer_margin"
-            android:paddingBottom="@dimen/call_log_outer_margin"
-            android:orientation="horizontal"
-            android:gravity="center_vertical"
-            android:focusable="true"
-            android:nextFocusRight="@+id/call_back_action"
-            android:nextFocusLeft="@+id/quick_contact_photo" >
-            <QuickContactBadge
-                android:id="@+id/quick_contact_photo"
-                android:layout_width="@dimen/contact_photo_size"
-                android:layout_height="@dimen/contact_photo_size"
-                android:paddingTop="2dp"
-                android:nextFocusRight="@id/primary_action_view"
-                android:layout_gravity="top"
-                android:focusable="true"
-                />
+            android:orientation="vertical">
+
+            <!-- Primary area containing the contact badge and caller information -->
             <LinearLayout
-                android:layout_width="0dp"
+                android:id="@+id/primary_action_view"
+                android:background="?android:attr/selectableItemBackground"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_weight="1"
-                android:orientation="vertical"
+                android:paddingStart="@dimen/call_log_start_margin"
+                android:paddingEnd="@dimen/call_log_outer_margin"
+                android:paddingTop="@dimen/call_log_vertical_padding"
+                android:paddingBottom="@dimen/call_log_vertical_padding"
+                android:orientation="horizontal"
                 android:gravity="center_vertical"
-                android:layout_marginStart="@dimen/call_log_start_margin"
-                >
-                <TextView
-                    android:id="@+id/name"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginBottom="@dimen/call_log_name_margin_bottom"
-                    android:layout_marginEnd="@dimen/call_log_icon_margin"
-                    android:textColor="?attr/call_log_primary_text_color"
-                    android:textSize="@dimen/call_log_primary_text_size"
-                    android:singleLine="true"
-                    />
-                <TextView
-                    android:id="@+id/voicemail_transcription"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginEnd="@dimen/call_log_icon_margin"
-                    android:textColor="?attr/call_log_secondary_text_color"
-                    android:textSize="@dimen/call_log_secondary_text_size"
-                    android:singleLine="true"
-                    android:ellipsize="marquee"
-                    android:visibility="gone"
-                    />
+                android:focusable="true"
+                android:nextFocusRight="@+id/call_back_action"
+                android:nextFocusLeft="@+id/quick_contact_photo" >
+
+                <QuickContactBadge
+                    android:id="@+id/quick_contact_photo"
+                    android:layout_width="@dimen/contact_photo_size"
+                    android:layout_height="@dimen/contact_photo_size"
+                    android:paddingTop="2dp"
+                    android:nextFocusRight="@id/primary_action_view"
+                    android:layout_gravity="top"
+                    android:focusable="true" />
+
                 <LinearLayout
-                    android:id="@+id/call_type"
-                    android:layout_width="wrap_content"
+                    android:layout_width="0dp"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal"
-                    >
-                    <view
-                        class="com.android.dialer.calllog.CallTypeIconsView"
-                        android:id="@+id/call_type_icons"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginEnd="@dimen/call_log_icon_margin"
-                        android:layout_gravity="center_vertical"
-                        />
+                    android:layout_weight="1"
+                    android:orientation="vertical"
+                    android:gravity="center_vertical"
+                    android:layout_marginStart="@dimen/call_log_list_item_info_margin_start">
+
                     <TextView
-                        android:id="@+id/call_location_and_date"
+                        android:id="@+id/name"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/call_log_name_margin_bottom"
+                        android:layout_marginEnd="@dimen/call_log_icon_margin"
+                        android:textColor="?attr/call_log_primary_text_color"
+                        android:textSize="@dimen/call_log_primary_text_size"
+                        android:singleLine="true" />
+
+                    <TextView
+                        android:id="@+id/voicemail_transcription"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginEnd="@dimen/call_log_icon_margin"
-                        android:layout_gravity="center_vertical"
                         android:textColor="?attr/call_log_secondary_text_color"
                         android:textSize="@dimen/call_log_secondary_text_size"
                         android:singleLine="true"
-                        />
+                        android:ellipsize="marquee"
+                        android:visibility="gone" />
+
+                    <LinearLayout
+                        android:id="@+id/call_type"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <view
+                            class="com.android.dialer.calllog.CallTypeIconsView"
+                            android:id="@+id/call_type_icons"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginEnd="@dimen/call_log_icon_margin"
+                            android:layout_gravity="center_vertical" />
+
+                        <TextView
+                            android:id="@+id/call_location_and_date"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginEnd="@dimen/call_log_icon_margin"
+                            android:layout_gravity="center_vertical"
+                            android:textColor="?attr/call_log_secondary_text_color"
+                            android:textSize="@dimen/call_log_secondary_text_size"
+                            android:singleLine="true" />
+
+                    </LinearLayout>
+
+                    <TextView
+                        android:id="@+id/call_account_label"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginEnd="@dimen/call_log_icon_margin"
+                        android:textColor="?attr/call_log_secondary_text_color"
+                        android:textSize="@dimen/call_log_secondary_text_size"
+                        android:visibility="gone"
+                        android:singleLine="true" />
+
                 </LinearLayout>
-                <TextView
-                    android:id="@+id/call_account_label"
+
+                <ImageView
+                    android:id="@+id/call_icon"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:layout_gravity="center_vertical"
                     android:layout_marginEnd="@dimen/call_log_icon_margin"
-                    android:textColor="?attr/call_log_secondary_text_color"
-                    android:textSize="@dimen/call_log_secondary_text_size"
-                    android:visibility="gone"
-                    android:singleLine="true"
-                    />
+                    android:background="?android:attr/selectableItemBackgroundBorderless"
+                    android:src="@drawable/ic_card_phone"
+                    android:tint="@color/recent_call_log_item_phone_icon_tint"
+                    android:alpha="0.3"
+                    android:contentDescription="@string/description_call_log_call_action"
+                    android:visibility="gone" />
+
             </LinearLayout>
-            <ImageView
-                android:id="@+id/call_indicator_icon"
-                android:layout_width="wrap_content"
+
+            <!-- Viewstub with additional expandable actions for a call log entry -->
+            <ViewStub android:id="@+id/call_log_entry_actions_stub"
+                android:inflatedId="@+id/call_log_entry_actions"
+                android:layout="@layout/call_log_list_item_actions"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_gravity="center_vertical"
-                android:layout_marginEnd="@dimen/call_log_icon_margin"
-                android:src="@drawable/ic_card_phone"
-                android:tint="@color/recent_call_log_item_phone_icon_tint"
-                android:alpha="0.3"
-                android:importantForAccessibility="no"
-                android:visibility="gone"
-                />
+                android:layout_gravity="bottom" />
+
         </LinearLayout>
 
-        <!-- Viewstub with additional expandable actions for a call log entry -->
-        <ViewStub android:id="@+id/call_log_entry_actions_stub"
-                  android:inflatedId="@+id/call_log_entry_actions"
-                  android:layout="@layout/call_log_list_item_actions"
-                  android:layout_width="match_parent"
-                  android:layout_height="wrap_content"/>
-    </LinearLayout>
-    <!-- Displays the extra link section -->
-    <ViewStub android:id="@+id/link_stub"
-              android:layout="@layout/call_log_list_item_extra"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content"/>
+    </android.support.v7.widget.CardView>
+
 </LinearLayout>
diff --git a/res/layout/call_log_list_item_actions.xml b/res/layout/call_log_list_item_actions.xml
index 1280089..a10b47f 100644
--- a/res/layout/call_log_list_item_actions.xml
+++ b/res/layout/call_log_list_item_actions.xml
@@ -14,100 +14,97 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-             android:layout_width="match_parent"
-             android:layout_height="wrap_content"
-             android:id="@+id/call_log_action_container">
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/call_log_action_container"
+    android:gravity="center_vertical"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:visibility="visible"
+    android:importantForAccessibility="1">
+
     <LinearLayout
-        android:id="@+id/call_log_entry_actions_ll"
-        android:gravity="center_vertical"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/call_log_action_height"
-        android:orientation="horizontal"
-        android:paddingStart="@dimen/call_log_actions_left_padding"
-        android:visibility="visible"
-        android:importantForAccessibility="1"
-        >
+        android:id="@+id/video_call_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_videocam_24dp" />
+
         <TextView
-            android:id="@+id/call_back_action"
-            android:background="?android:attr/selectableItemBackground"
-            android:gravity="center"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:paddingStart="@dimen/call_log_action_horizontal_padding"
-            android:paddingEnd="@dimen/call_log_action_horizontal_padding"
-            android:text="@string/call_log_action_call_back"
-            android:textColor="@color/call_log_action_text"
-            android:textSize="@dimen/call_log_list_item_actions_text_size"
-            android:textStyle="bold"
-            android:nextFocusLeft="@+id/primary_action_view"
-            android:nextFocusRight="@+id/video_call_action"
-            android:focusable="true"
-            android:singleLine="true"/>
-        <TextView
-            android:id="@+id/video_call_action"
-            android:background="?android:attr/selectableItemBackground"
-            android:gravity="center"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:paddingStart="@dimen/call_log_action_horizontal_padding"
-            android:paddingEnd="@dimen/call_log_action_horizontal_padding"
-            android:text="@string/call_log_action_video_call"
-            android:textColor="?attr/call_log_secondary_text_color"
-            android:textSize="@dimen/call_log_list_item_actions_text_size"
-            android:textStyle="bold"
-            android:nextFocusLeft="@+id/call_back_action"
-            android:nextFocusRight="@+id/voicemail_action"
-            android:focusable="true"
-            android:singleLine="true"/>
-        <TextView
-            android:id="@+id/voicemail_action"
-            android:background="?android:attr/selectableItemBackground"
-            android:gravity="center"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:paddingStart="@dimen/call_log_action_horizontal_padding"
-            android:paddingEnd="@dimen/call_log_action_horizontal_padding"
-            android:text="@string/call_log_action_voicemail"
-            android:textColor="@color/call_log_action_text"
-            android:textSize="@dimen/call_log_list_item_actions_text_size"
-            android:textStyle="bold"
-            android:nextFocusLeft="@+id/video_call_action"
-            android:nextFocusRight="@+id/details_action"
-            android:focusable="true"
-            android:singleLine="true"/>
-        <TextView
-            android:id="@+id/details_action"
-            android:background="?android:attr/selectableItemBackground"
-            android:gravity="center"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:paddingStart="@dimen/call_log_action_horizontal_padding"
-            android:paddingEnd="@dimen/call_log_action_horizontal_padding"
-            android:text="@string/call_log_action_details"
-            android:textColor="?attr/call_log_secondary_text_color"
-            android:textSize="@dimen/call_log_list_item_actions_text_size"
-            android:textStyle="bold"
-            android:nextFocusLeft="@+id/voicemail_action"
-            android:nextFocusRight="@+id/report_action"
-            android:focusable="true"
-            android:singleLine="true"/>
-        <TextView
-            android:id="@+id/report_action"
-            android:background="?android:attr/selectableItemBackground"
-            android:gravity="center"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:paddingStart="@dimen/call_log_action_horizontal_padding"
-            android:paddingEnd="@dimen/call_log_action_horizontal_padding"
-            android:text="@string/call_log_action_report"
-            android:textColor="?attr/call_log_secondary_text_color"
-            android:textSize="@dimen/call_log_list_item_actions_text_size"
-            android:textStyle="bold"
-            android:nextFocusLeft="@+id/details_action"
-            android:nextFocusRight="@+id/primary_action_view"
-            android:focusable="true"
-            android:singleLine="true"
-            android:visibility="gone"/>
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/call_log_action_video_call" />
+
     </LinearLayout>
-</FrameLayout>
+
+    <LinearLayout
+        android:id="@+id/voicemail_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_voicemail_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/call_log_action_voicemail" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/create_new_contact_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_person_add_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/search_shortcut_create_new_contact" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/add_to_existing_contact_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_person_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/search_shortcut_add_to_existing_contact" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/details_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_more_horiz_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/call_log_action_details" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/report_action"
+        style="@style/CallLogActionStyle">
+
+        <ImageView
+            style="@style/CallLogActionIconStyle"
+            android:src="@drawable/ic_report_problem_24dp" />
+
+        <TextView
+            style="@style/CallLogActionTextStyle"
+            android:text="@string/call_log_action_report" />
+
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/call_log_list_item_extra.xml b/res/layout/call_log_list_item_extra.xml
deleted file mode 100644
index 87b932b..0000000
--- a/res/layout/call_log_list_item_extra.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 2013 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
-  -->
-
-<!-- Can't use merge here because this is referenced via a ViewStub -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/badge_container"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <View android:layout_width="match_parent"
-        android:layout_height="1px"
-        android:background="@color/favorite_contacts_separator_color" />
-
-    <LinearLayout android:id="@+id/badge_link_container"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingStart="@dimen/call_log_outer_margin"
-        android:paddingEnd="@dimen/call_log_outer_margin"
-        android:paddingTop="@dimen/call_log_item_extra_padding_vertical"
-        android:paddingBottom="@dimen/call_log_item_extra_padding_vertical"
-        android:background="?android:attr/selectableItemBackground"
-        android:clickable="true">
-
-        <ImageView android:id="@+id/badge_image"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:tint="@color/call_log_extras_text_color"
-            android:padding="@dimen/call_log_outer_margin" />
-
-        <TextView android:id="@+id/badge_text"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:paddingStart="@dimen/call_log_start_margin"
-            android:textColor="@color/call_log_extras_text_color"
-            android:layout_gravity="center_vertical"
-            android:layout_weight="1" />
-
-        <ImageView android:id="@+id/dismiss_button"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:padding="@dimen/icon_padding"
-            android:layout_gravity="center_vertical"
-            android:layout_marginEnd="@dimen/call_log_icon_margin"
-            android:src="@drawable/ic_close_dk"
-            android:tint="@color/recent_call_log_item_phone_icon_tint"
-            android:alpha="0.3"
-            android:background="?android:attr/selectableItemBackground"
-            android:visibility="gone"
-            android:contentDescription="@string/description_dismiss" />
-
-    </LinearLayout>
-
-</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/dialer_preferences.xml b/res/layout/dialer_preferences.xml
deleted file mode 100644
index 023b122..0000000
--- a/res/layout/dialer_preferences.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
--->
-
-<!-- Layout of a header item in PreferenceActivity. This is modified from the platform
-     preference_header_item-->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="48dp"
-    android:background="?android:attr/activatedBackgroundIndicator"
-    android:gravity="center_vertical"
-    android:paddingEnd="?android:attr/scrollbarSize">
-
-    <RelativeLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="@dimen/preference_side_margin"
-        android:layout_marginEnd="@dimen/preference_side_margin"
-        android:layout_weight="1"
-        android:paddingTop="@dimen/preference_padding_top"
-        android:paddingBottom="@dimen/preference_padding_bottom">
-
-        <TextView android:id="@+id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearance"
-            android:textSize="16sp"
-            android:textColor="@color/setting_primary_color"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal" />
-
-        <TextView android:id="@+id/summary"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_below="@id/title"
-            android:layout_alignStart="@id/title"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:textColor="@color/setting_secondary_color"
-            android:lineSpacingExtra="@dimen/preference_summary_line_spacing_extra"
-            android:ellipsize="end"
-            android:maxLines="2" />
-
-    </RelativeLayout>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/lists_fragment.xml b/res/layout/lists_fragment.xml
index face20e..1942a96 100644
--- a/res/layout/lists_fragment.xml
+++ b/res/layout/lists_fragment.xml
@@ -14,87 +14,81 @@
      limitations under the License.
 -->
 
-<com.android.dialer.widget.OverlappingPaneLayout
+<FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/lists_frame"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:animateLayoutChanges="true" >
 
-    <ListView
-        android:id="@+id/shortcut_card_list"
+    <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingTop="@dimen/action_bar_height_large"
-        android:background="@color/actionbar_background_color"
-        android:clipToPadding="false"
-        android:fadingEdge="none"
-        android:divider="@null" />
+        android:layout_height="match_parent"
+        android:orientation="vertical">
 
-    <FrameLayout
+        <!-- TODO: Apply background color to ActionBar instead of a FrameLayout. For now, this is
+             the easiest way to preserve correct pane scrolling and searchbar collapse/expand
+             behaviors. -->
+        <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/action_bar_height_large"
+            android:background="@color/actionbar_background_color"
+            android:elevation="@dimen/tab_elevation" />
+
+        <com.android.contacts.common.list.ViewPagerTabs
+            android:id="@+id/lists_pager_header"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/tab_height"
+            android:textAllCaps="true"
+            android:orientation="horizontal"
+            android:layout_gravity="top"
+            android:elevation="@dimen/tab_elevation"
+            style="@style/DialtactsActionBarTabTextStyle" />
+
+        <android.support.v4.view.ViewPager
+            android:id="@+id/lists_pager"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1" />
+
+    </LinearLayout>
+
+    <com.android.dialer.list.RemoveView
+        android:id="@+id/remove_view"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="@dimen/tab_height"
+        android:layout_marginTop="@dimen/action_bar_height_large"
+        android:layout_alignParentTop="true" >
 
         <LinearLayout
-            android:layout_width="match_parent"
+            android:id="@+id/remove_view_content"
             android:layout_height="match_parent"
-            android:orientation="vertical">
+            android:layout_width="match_parent"
+            android:background="@color/actionbar_background_color"
+            android:gravity="center"
+            android:orientation="horizontal"
+            android:visibility="gone" >
 
-            <com.android.contacts.common.list.ViewPagerTabs
-                android:id="@+id/lists_pager_header"
-                android:layout_width="match_parent"
-                android:layout_height="@dimen/tab_height"
-                android:textAllCaps="true"
-                android:orientation="horizontal"
-                android:layout_gravity="top"
-                android:elevation="@dimen/tab_elevation"
-                style="@style/DialtactsActionBarTabTextStyle" />
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="8dp"
+                android:layout_marginBottom="8dp"
+                android:id="@+id/remove_view_icon"
+                android:src="@drawable/ic_remove"
+                android:contentDescription="@string/remove_contact"
+                android:tint="@color/remove_text_color" />
 
-            <android.support.v4.view.ViewPager
-                android:id="@+id/lists_pager"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_weight="1" />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:id="@+id/remove_view_text"
+                android:textSize="@dimen/remove_text_size"
+                android:textColor="@color/remove_text_color"
+                android:text="@string/remove_contact" />
 
         </LinearLayout>
 
-        <com.android.dialer.list.RemoveView
-            android:id="@+id/remove_view"
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/tab_height"
-            android:layout_alignParentTop="true" >
+    </com.android.dialer.list.RemoveView >
 
-            <LinearLayout
-                android:id="@+id/remove_view_content"
-                android:layout_height="match_parent"
-                android:layout_width="match_parent"
-                android:background="@color/actionbar_background_color"
-                android:gravity="center"
-                android:orientation="horizontal"
-                android:visibility="gone" >
-
-                <ImageView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="8dp"
-                    android:layout_marginBottom="8dp"
-                    android:id="@+id/remove_view_icon"
-                    android:src="@drawable/ic_remove"
-                    android:contentDescription="@string/remove_contact"
-                    android:tint="@color/remove_text_color" />
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/remove_view_text"
-                    android:textSize="@dimen/remove_text_size"
-                    android:textColor="@color/remove_text_color"
-                    android:text="@string/remove_contact" />
-
-            </LinearLayout>
-
-        </com.android.dialer.list.RemoveView >
-
-    </FrameLayout>
-
-</com.android.dialer.widget.OverlappingPaneLayout>
+</FrameLayout>
diff --git a/res/layout/phone_favorite_tile_view.xml b/res/layout/phone_favorite_tile_view.xml
index f274a9d..8b00fba 100644
--- a/res/layout/phone_favorite_tile_view.xml
+++ b/res/layout/phone_favorite_tile_view.xml
@@ -108,7 +108,7 @@
 
         <ImageButton
             android:id="@id/contact_tile_secondary_button"
-            android:src="@drawable/overflow_thumbnail"
+            android:src="@drawable/ic_more_vert_24dp"
             android:background="@drawable/item_background_material_dark"
             android:layout_height="@dimen/contact_tile_info_button_height_and_width"
             android:layout_width="@dimen/contact_tile_info_button_height_and_width"
diff --git a/res/layout/playback_layout.xml b/res/layout/playback_layout.xml
index 54d0c59..00f1c3f 100644
--- a/res/layout/playback_layout.xml
+++ b/res/layout/playback_layout.xml
@@ -19,7 +19,7 @@
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical"
-    android:background="@color/background_dialer_list_items"
+    android:background="@color/background_dialer_call_log_list_item"
 >
     <!-- Mute, playback, trash buttons. -->
     <LinearLayout
diff --git a/res/layout/recents_list_footer.xml b/res/layout/recents_list_footer.xml
deleted file mode 100644
index 3a56cbe..0000000
--- a/res/layout/recents_list_footer.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
--->
-
-<!-- Text field and possibly soft menu button above the keypad where
-     the digits are displayed. -->
-
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/recents_list_footer"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="20dp"
-    android:paddingBottom="20dp"
-    android:gravity="center"
-    android:fontFamily="@string/view_full_call_history_font_family"
-    android:textStyle="bold"
-    android:textColor="@color/dialtacts_secondary_text_color"
-    android:textSize="14sp"
-    android:text="@string/recents_footer_text"
-    android:background="@drawable/recent_lists_footer_background" />
diff --git a/res/layout/search_edittext.xml b/res/layout/search_edittext.xml
index 93a3c75..61406a1 100644
--- a/res/layout/search_edittext.xml
+++ b/res/layout/search_edittext.xml
@@ -19,7 +19,7 @@
         android:paddingStart="@dimen/search_box_left_padding"
         android:paddingEnd="@dimen/search_box_right_padding"
         android:gravity="center_vertical"
-        android:orientation="horizontal" >
+        android:orientation="horizontal">
 
         <ImageView
             android:id="@+id/search_magnifying_glass"
@@ -28,29 +28,20 @@
             android:layout_margin="@dimen/search_box_icon_margin"
             android:padding="@dimen/search_box_search_icon_padding"
             android:src="@drawable/ic_ab_search"
-            android:background="?android:attr/selectableItemBackgroundBorderless"
             android:importantForAccessibility="no"
             android:tint="@color/searchbox_icon_tint" />
 
-        <!-- Portion of the search box that starts a search when clicked -->
-        <LinearLayout
+        <TextView
             android:id="@+id/search_box_start_search"
             android:layout_height="wrap_content"
             android:layout_width="0dp"
             android:layout_weight="1"
-            android:gravity="center_vertical" >
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="@dimen/search_box_collapsed_text_margin_left"
-                android:textSize="@dimen/search_collapsed_text_size"
-                android:fontFamily="@string/search_font_family"
-                android:textColorHint="@color/searchbox_hint_text_color"
-                android:gravity="center_vertical"
-                android:hint="@string/dialer_hint_find_contact" />
-
-        </LinearLayout>
+            android:layout_marginLeft="@dimen/search_box_collapsed_text_margin_left"
+            android:textSize="@dimen/search_collapsed_text_size"
+            android:fontFamily="@string/search_font_family"
+            android:textColorHint="@color/searchbox_hint_text_color"
+            android:gravity="center_vertical"
+            android:hint="@string/dialer_hint_find_contact" />
 
         <ImageView
             android:id="@+id/voice_search_button"
@@ -60,16 +51,15 @@
             android:src="@drawable/ic_voice_search"
             android:clickable="true"
             android:contentDescription="@string/description_start_voice_search"
-            android:background="?android:attr/selectableItemBackground"
+            android:background="?android:attr/selectableItemBackgroundBorderless"
             android:tint="@color/searchbox_icon_tint" />
 
-
         <ImageButton
             android:id="@+id/dialtacts_options_menu_button"
             android:layout_width="@dimen/search_box_icon_size"
             android:layout_height="@dimen/search_box_icon_size"
             android:layout_margin="@dimen/search_box_icon_margin"
-            android:background="?android:attr/selectableItemBackground"
+            android:background="?android:attr/selectableItemBackgroundBorderless"
             android:src="@drawable/ic_overflow_menu"
             android:contentDescription="@string/action_menu_overflow_description"
             android:tint="@color/searchbox_icon_tint" />
diff --git a/res/layout/show_call_history_list_item.xml b/res/layout/show_call_history_list_item.xml
new file mode 100644
index 0000000..1264894
--- /dev/null
+++ b/res/layout/show_call_history_list_item.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+
+<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+    style="@style/CallLogCardStyle"
+    android:layout_height="40dp"
+    android:clickable="true"
+    android:foreground="?android:attr/selectableItemBackground">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:text="@string/show_call_history" />
+
+</android.support.v7.widget.CardView>
+
diff --git a/res/layout/speed_dial_fragment.xml b/res/layout/speed_dial_fragment.xml
index 58a7b24..1882049 100644
--- a/res/layout/speed_dial_fragment.xml
+++ b/res/layout/speed_dial_fragment.xml
@@ -14,13 +14,10 @@
      limitations under the License.
 -->
 
-<!-- Use LinearLayout + FrameLayout, just to rely on android:divider and android:showDividers -->
-<RelativeLayout
+<FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:divider="?android:attr/dividerHorizontal"
-    android:showDividers="end"
     android:clipChildren="false">
 
     <FrameLayout
@@ -51,4 +48,4 @@
         layout="@layout/empty_list_view"
         android:visibility="gone"/>
 
-</RelativeLayout>
+</FrameLayout>
diff --git a/res/menu/dialpad_options.xml b/res/menu/dialpad_options.xml
index 49ee37d..f0399a8 100644
--- a/res/menu/dialpad_options.xml
+++ b/res/menu/dialpad_options.xml
@@ -14,10 +14,7 @@
      limitations under the License.
 -->
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/menu_add_contact"
-        android:title="@string/add_contact"
-        android:showAsAction="withText" />
+
     <item
         android:id="@+id/menu_2s_pause"
         android:title="@string/add_2sec_pause"
@@ -26,8 +23,5 @@
         android:id="@+id/menu_add_wait"
         android:title="@string/add_wait"
         android:showAsAction="withText" />
-    <item
-        android:id="@+id/menu_send_message"
-        android:title="@string/menu_sendTextMessage"
-        android:showAsAction="withText" />
+
 </menu>
diff --git a/res/menu/dialtacts_options.xml b/res/menu/dialtacts_options.xml
index cc5e386..8a9e25f 100644
--- a/res/menu/dialtacts_options.xml
+++ b/res/menu/dialtacts_options.xml
@@ -30,6 +30,6 @@
         android:title="@string/menu_newContact"/>
     <item
         android:id="@+id/menu_call_settings"
-        android:title="@string/dialer_settings_label"
-        android:orderInCategory="2" />
+        android:title="@string/dialer_settings_label" />
+
 </menu>
diff --git a/res/mipmap-xxxhdpi/ic_launcher_phone.png b/res/mipmap-xxxhdpi/ic_launcher_phone.png
index 8c92ac1..26f51f1 100644
--- a/res/mipmap-xxxhdpi/ic_launcher_phone.png
+++ b/res/mipmap-xxxhdpi/ic_launcher_phone.png
Binary files differ
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 2c08a27..6750979 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Foon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Foon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Oproepgeskiedenis"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Stuur SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Bel <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redigeer nommer voor oproep"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Voeg by kontakte"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vee oproepgeskiedenis uit?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Dit sal alle oproepe uit jou geskiedenis vee"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Vee tans oproepgeskiedenis uit …"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Stemboodskap"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> stemboodskappe"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Stemboodskappe </item>
+      <item quantity="one">Stemboodskap</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Speel"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuwe stemboodskap van <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Wys slegs misgeloop"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Wys net stemboodskappe"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Wys alle oproepe"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Voeg by kontakte"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Voeg 2-sek.-pouse by"</string>
     <string name="add_wait" msgid="3360818652790319634">"Voeg wagtyd by"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Instellings"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Verwyder uit gunstelinge"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Ontdoen"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Voeg by kontakte"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Skep nuwe kontak"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Voeg by bestaande kontak"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Stuur SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Maak video-oproep"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Bekyk volledige oproepgeskiedenis"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nuwe gemiste oproepe"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Met spoedbel raak jy een keer om gunstelinge en nommers wat jy gereeld gebruik, te bel"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Geen kontakte nie"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Raak prent om al die nommers te sien of raak en hou om te herorganiseer"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Maak toe"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Verwyder"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLE KONTAKTE"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"BEL TERUG"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"BEL"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"HERBEL"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEO-OPROEP"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video-oproep"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"LUISTER"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"BESONDERHEDE"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Bekyk besonderhede"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Oproep gemis vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Oproep geantwoord vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Oproep na <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"op <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Bel <xliff:g id="NAMEORNUMBER">^1</xliff:g> terug"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Bel"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Bel <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Video-oproep na <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Luister na stemboodskap vanaf <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Oproepbesonderhede vir <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Uit oproepgeskiedenis gevee"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nommer is by Google aangegee"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"GEE AAN"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Gee aan"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Vandag"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Gister"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Ouer"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Speel stadiger."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Begin of laat wag speel."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Algemeen"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opsies vir wys van kontakte"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Klanke en vibreer"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Vertoonopsies"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Klanke en vibrasie"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Toeganklikheid"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Foon-luitoon"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibreer ook vir oproepe"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Belbladklanke"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Ander"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Toonlengte vir belblad"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normaal"</item>
+    <item msgid="6177579030803486015">"Lank"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Vinnige antwoorde"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Oproepe"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Oproeprekeninge"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index f2e6548..44eb725 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ስልክ"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ስልክ"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"የጥሪ ታሪክ"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"ኤስኤምኤስ ላክ"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"ጥሪ <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ከመደወል በፊት ቁጥር አርትዕ"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"ወደ ዕውቂያዎች አክል"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"የጥሪ ታሪክ ይጽዳ?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ይሄ ሁሉንም ጥሪዎች ከታሪክዎ ይሰርዛቸዋል"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"የጥሪ ታሪክን በማጽዳት ላይ…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"የድምፅ መልዕክት"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> የድምፅ መልዕክቶች </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"አጫውት"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>፤<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ከ<xliff:g id="CALLER">%1$s</xliff:g> አዲስ የድምፅመልዕክት"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"ያመለጡትን ብቻ አሳይ"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"የድምፅ መልዕክቶች ብቻ አሳይ"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"ሁሉንም ጥሪዎች አሳይ"</string>
-    <string name="add_contact" msgid="4579643070374941999">"ወደ እውቂያዎች አክል"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 ሴኮንድ ፋታ አክል"</string>
     <string name="add_wait" msgid="3360818652790319634">"መጠበቅ አክል"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"ቅንብሮች"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"ከተወዳጆች ውስጥ ተወግዷል።"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"ቀልብስ"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"ለ<xliff:g id="NUMBER">%s</xliff:g> ደውል"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"ወደ ዕውቂያዎች አክል"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"አዲስ እውቂያ ይፍጠሩ"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"ወደ ነባር እውቂያ አክል"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ኤስኤምኤስ ላክ"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"የቪዲዮ ጥሪ አድርግ"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"ሙሉ የጥሪ ታሪኮችን ይመልከቱ"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> አዲስ ያልተመለሱ ጥሪዎች"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"ፈጣን ደውል ለተወዳጆች እና አብዛኛው ጊዜ ለሚደውሏቸውን ቁጥሮች የሆነ የአንዴ ነካ መደወል ነው"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"ምንም እውቂያዎች የሉም"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"ሁሉንም ቁጥሮች ለማየት ምስል ይንኩ ወይም ዳግም ለመደርደር ነክተው ይያዙት"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"አሰናብት"</string>
     <string name="remove_contact" msgid="1080555335283662961">"አስወግድ"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ሁሉም እውቂያዎች"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"መልሰህ ደውል"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ደውል"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"እንደገና ደውል"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"የቪዲዮ ጥሪ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"የቪዲዮ ጥሪ"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"አዳምጥ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ዝርዝሮች"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"ዝርዝሮችን አሳይ"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"ከ<xliff:g id="NAMEORNUMBER">^1</xliff:g>፣ <xliff:g id="TYPEORLOCATION">^2</xliff:g>፣ <xliff:g id="TIMEOFCALL">^3</xliff:g>፣ <xliff:g id="PHONEACCOUNT">^4</xliff:g> ያመለጠ ጥሪ።"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"ከ<xliff:g id="NAMEORNUMBER">^1</xliff:g>፣ <xliff:g id="TYPEORLOCATION">^2</xliff:g>፣ <xliff:g id="TIMEOFCALL">^3</xliff:g>፣ <xliff:g id="PHONEACCOUNT">^4</xliff:g> መልስ የተሰጠው ጥሪ።"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"ወደ <xliff:g id="NAMEORNUMBER">^1</xliff:g>፣ <xliff:g id="TYPEORLOCATION">^2</xliff:g>፣ <xliff:g id="TIMEOFCALL">^3</xliff:g>፣ <xliff:g id="PHONEACCOUNT">^4</xliff:g> ደውል።"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"በ<xliff:g id="PHONEACCOUNT">^1</xliff:g> ላይ"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"ለ<xliff:g id="NAMEORNUMBER">^1</xliff:g> መልሰው ይደውሉ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ደውል"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"ወደ <xliff:g id="NAMEORNUMBER">^1</xliff:g> ይደውሉ"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"የቪዲዮ ጥሪ ወደ <xliff:g id="NAMEORNUMBER">^1</xliff:g>።"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"የ<xliff:g id="NAMEORNUMBER">^1</xliff:g>ን የድምጽ መልዕክት ያዳምጡ"</string>
     <string name="description_details_action" msgid="2433827152749491785">"የ<xliff:g id="NAMEORNUMBER">^1</xliff:g> የጥሪ ዝርዝሮች"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"ከጥሪ ታሪክ ተሰርዟል"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"ቁጥር ለGoogle ሪፖርት ተደርጓል"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ሪፖርት አድርግ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"ሪፖርት"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"ዛሬ"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"ትላንት"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"የቆየ"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"በዝግታ አጫውት።"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"መልሰህ አጫውትን አስጀምር ወይም ለአፍታ አቁም።"</string>
     <string name="list_delimeter" msgid="4571593167738725100">"፣ "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"አጠቃላይ"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"የእውቂያ ማሳያ አማራጮች"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ድምጾች እና ንዝረት"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"የማሳያ አማራጮች"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ድምጾች እና ንዝረት"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ተደራሽነት"</string>
     <string name="ringtone_title" msgid="760362035635084653">"የስልክ ጥሪ ቅላጼ"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"እንዲሁም ለጥሪዎችም ንዘር"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"የመደወያ ሰሌዳ ቅላጼዎች"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"ሌላ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"የስልክ ሰሌዳ ድምጽ ርዝመት"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"መደበኛ"</item>
+    <item msgid="6177579030803486015">"ረጅም"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ፈጣን ምላሾች"</string>
     <string name="call_settings_label" msgid="313434211353070209">"ጥሪዎች"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"የመደወያ መለያዎች"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index b38921a..8146b9f 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"الهاتف"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"الهاتف"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"سجل المكالمات"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"‏إرسال رسائل قصيرة SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"الاتصال بـ <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"تعديل الرقم قبل الاتصال"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"إضافة إلى جهات الاتصال"</string>
@@ -33,10 +32,14 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"هل تريد محو سجل المكالمات؟"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"سيؤدي ذلك إلى حذف جميع المكالمات من السجل"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"جارٍ محو سجل المكالمات…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"البريد الصوتي"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> من رسائل البريد الصوتي"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="zero">لا تتوفر رسائل بريد صوتي (<xliff:g id="COUNT">%1$d</xliff:g>) </item>
+      <item quantity="two">رسالتا بريد صوتي (<xliff:g id="COUNT">%1$d</xliff:g>) </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> رسائل بريد صوتي </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> رسالة بريد صوتي </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> من رسائل البريد الصوتي </item>
+      <item quantity="one">رسالة بريد صوتي</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"تشغيل"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>، <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"بريد صوتي جديد من <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +83,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"عرض الفائت فقط"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"إظهار رسائل البريد الصوتي فقط"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"عرض جميع المكالمات"</string>
-    <string name="add_contact" msgid="4579643070374941999">"إضافة إلى جهات الاتصال"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"إضافة ثانيتين إيقاف مؤقت"</string>
     <string name="add_wait" msgid="3360818652790319634">"إضافة انتظار"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"الإعدادات"</string>
@@ -141,33 +143,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"تمت إزالة جهة الاتصال من المفضلة"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"تراجع"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"الاتصال بالرقم <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"إضافة إلى جهات الاتصال"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"إنشاء جهة اتصال جديدة"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"إضافة إلى جهة الاتصال الحالية"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"‏إرسال رسالة قصيرة SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"إجراء مكالمة فيديو"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"عرض سجل المكالمات بالكامل"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> من المكالمات الجديدة الفائتة"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"إن الاتصال السريع هو اتصال بلمسة واحدة للأرقام المفضلة لديك والتي تتصل بها بكثرة"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"لا توجد جهات اتصال"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"المس الصورة للاطلاع على جميع الأرقام أو المس مع الاستمرار لإعادة الترتيب"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"تجاهل"</string>
     <string name="remove_contact" msgid="1080555335283662961">"إزالة"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"جميع جهات الاتصال"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"معاودة الاتصال"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"الاتصال"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"إعادة الاتصال"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"مكالمة فيديو"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"مكالمة فيديو"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"استماع"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"التفاصيل"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"عرض التفاصيل"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"مكالمة لم يرد عليها من <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"تم الرد على مكالمة من <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"اتصال بـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"من <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"معاودة الاتصال بـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"اتصال"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"الاتصال بـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"مكالمة فيديو مع <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"استماع إلى بريد صوتي من <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"تفاصيل الاتصال لـ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"تم الحذف من سجل المكالمات"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"‏تم إبلاغ Google بالرقم"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"إبلاغ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"الإبلاغ"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"اليوم"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"أمس"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"أقدم"</string>
@@ -178,13 +178,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"تشغيل أقل سرعة."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"بدء التشغيل أو إيقافه مؤقتًا."</string>
     <string name="list_delimeter" msgid="4571593167738725100">"، "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"عام"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"خيارات عرض جهات الاتصال"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"الأصوات والاهتزاز"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"خيارات العرض"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"الأصوات والاهتزاز"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"إمكانية الوصول"</string>
     <string name="ringtone_title" msgid="760362035635084653">"نغمة رنين الهاتف"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"الاهتزاز أيضًا مع المكالمات"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"نغمات لوحة الاتصال"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"غير ذلك"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"طول نغمة لوحة الاتصال"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"عادية"</item>
+    <item msgid="6177579030803486015">"طويلة"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"الردود السريعة"</string>
     <string name="call_settings_label" msgid="313434211353070209">"المكالمات"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"حسابات الاتصال"</string>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 11b5bef..4b5ef9b 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- 
+<!--
   ~ Copyright (C) 2012 The Android Open Source Project
   ~
   ~ Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,10 +18,8 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="applicationLabel" msgid="8490255569343340580">"Nömrə yığan"</string>
-    <string name="launcherDialer" msgid="8636288196618486553">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="1419116422359067949">"Zəng jurnalı"</string>
-    <string name="menu_sendTextMessage" msgid="6937343460284499306">"Mətnli mesaj göndərin"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Zəng <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Zəng etmədən öncə nömrəyə düzəliş edin"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Kontaktlara əlavə edin"</string>
@@ -63,18 +61,6 @@
     <string name="sms_disambig_title" msgid="5846266399240630846">"Nömrə seçin"</string>
     <string name="call_disambig_title" msgid="4392886850104795739">"Nömrə seçin"</string>
     <string name="make_primary" msgid="5829291915305113983">"Bu seçimi yadda saxla"</string>
-    <string name="description_image_button_one" msgid="1740638037139856139">"bir"</string>
-    <string name="description_image_button_two" msgid="5882638439003731308">"iki"</string>
-    <string name="description_image_button_three" msgid="8709731759376015180">"üç"</string>
-    <string name="description_image_button_four" msgid="3530239685642246130">"dörd"</string>
-    <string name="description_image_button_five" msgid="1182465427501188413">"beş"</string>
-    <string name="description_image_button_six" msgid="2093656269261415475">"altı"</string>
-    <string name="description_image_button_seven" msgid="2450357020447676481">"yeddi"</string>
-    <string name="description_image_button_eight" msgid="6969435115163287801">"səkkiz"</string>
-    <string name="description_image_button_nine" msgid="7857248695662558323">"doqquz"</string>
-    <string name="description_image_button_star" msgid="3365919907520767866">"ulduz"</string>
-    <string name="description_image_button_zero" msgid="4133108949401820710">"sıfır"</string>
-    <string name="description_image_button_pound" msgid="3039765597595889230">"funt"</string>
     <string name="description_voicemail_button" msgid="3402506823655455591">"Səsli məktub"</string>
     <string name="description_search_button" msgid="3660807558587384889">"axtarış"</string>
     <string name="description_dial_button" msgid="1274091017188142646">"nömrə yığın"</string>
@@ -91,7 +77,6 @@
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Bütün zəngləri göstərin"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 saniyəlik pauza əlavə edin"</string>
     <string name="add_wait" msgid="3360818652790319634">"Gözləmə əlavə edin"</string>
-    <string name="call_settings" msgid="7666474782093693667">"Ayarlar"</string>
     <string name="menu_newContact" msgid="1209922412763274638">"Yeni kontakt"</string>
     <string name="menu_allContacts" msgid="6948308384034051670">"Bütün kontaktlar"</string>
     <string name="callDetailTitle" msgid="5340227785196217938">"Zəng detalları"</string>
@@ -105,24 +90,17 @@
     <string name="type_voicemail" msgid="5153139450668549908">"Səsli poçt"</string>
     <string name="actionIncomingCall" msgid="6028930669817038600">"Gələn zənglər"</string>
     <string name="description_call_log_play_button" msgid="651182125650429846">"Səsli məktubu oxudun"</string>
-    <string name="description_call_log_incoming_call" msgid="4485427487637250143">"Gələn zəng"</string>
-    <string name="description_call_log_outgoing_call" msgid="604831756853471658">"Gedən zəng"</string>
-    <string name="description_call_log_missed_call" msgid="2242805209983708825">"Buraxılmış zəng"</string>
-    <string name="description_call_log_voicemail" msgid="4600798771975158948">"Səsli məktub"</string>
-    <string name="description_add_contact" msgid="3103414772502485851">"Kontakt əlavə edin"</string>
     <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> adlı kontakta baxın"</string>
     <string name="description_call" msgid="3443678121983852666">"Zəng edin: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="description_send_text_message" msgid="7803126439934046891">"<xliff:g id="NAME">%1$s</xliff:g> mesaj göndər"</string>
     <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Eşidilməmiş səsli mesaj"</string>
     <string name="description_start_voice_search" msgid="520539488194946012">"Səs axtarışına başlayın"</string>
-    <string name="call_log_empty_gecode" msgid="5588904744812100846">"-"</string>
     <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> zəng edin"</string>
     <string name="unknown" msgid="740067747858270469">"Naməlum"</string>
     <string name="voicemail" msgid="3851469869202611441">"Səsli poçt"</string>
     <string name="private_num" msgid="6374339738119166953">"Şəxsi nömrə"</string>
     <string name="payphone" msgid="4864313342828942922">"Telefon ödənişi"</string>
     <string name="dialerKeyboardHintText" msgid="5401660096579787344">"Nömrə yığmaq üçün klaviaturadan istifadə ediin"</string>
-    <string name="dialerDialpadHintText" msgid="5824490365898349041">"Zəng əlavə etmək üçün nömrə yığın"</string>
     <string name="callDetailsDurationFormat" msgid="8157706382818184268">"<xliff:g id="MINUTES">%s</xliff:g> dəqiqə <xliff:g id="SECONDS">%s</xliff:g> saniyə"</string>
     <string name="dialog_phone_call_prohibited_message" msgid="6554711866586660441">"Zəng edilmədi"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Səsli poçtu ayarlamaq üçün Menyu, sonra isə &gt; Ayarlara daxil olun."</string>
@@ -139,24 +117,10 @@
     <string name="call_log_missed_title" msgid="4541142293870638971">"Buraxılmış"</string>
     <string name="recentMissed_empty" msgid="5427113551557296665">"Buraxılmış zəng yoxdur"</string>
     <string name="recentVoicemails_empty" msgid="5163114119598014048">"Səsli məktub yoxdur."</string>
-    <string name="show_all_contacts" msgid="1732256558071778056">"Bütün kontaktları göstər"</string>
     <string name="show_favorites_only" msgid="5520072531022614595">"Yalnız seçilmişləri göstər"</string>
     <string name="call_log_activity_title" msgid="4612824396355272023">"Tarixçə"</string>
-    <string name="dialpad_0_number" msgid="8859392433961251108">"0"</string>
-    <string name="dialpad_1_number" msgid="6536740525419909212">"1"</string>
-    <string name="dialpad_2_number" msgid="4941546415280852148">"2"</string>
-    <string name="dialpad_3_number" msgid="6539414865185536881">"3"</string>
-    <string name="dialpad_4_number" msgid="979988372051042362">"4"</string>
-    <string name="dialpad_5_number" msgid="5492272478939926734">"5"</string>
-    <string name="dialpad_6_number" msgid="8044579516869379093">"6"</string>
-    <string name="dialpad_7_number" msgid="4175113016564167123">"7"</string>
-    <string name="dialpad_8_number" msgid="7949849563865941621">"8"</string>
-    <string name="dialpad_9_number" msgid="4377059952097526576">"9"</string>
-    <string name="show_all_contacts_title" msgid="8395378484578221791">"Bütün kontaktlar"</string>
-    <string name="show_all_contacts_button_text" msgid="8057452310403090131">"Bütün kontaktlar"</string>
     <!-- no translation found for favorite_hidden (5011234945140912047) -->
     <skip />
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Geri qaytar"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> nömrəsinə zəng edin"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Kontaktlara əlavə edin"</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index bf53a9d..217ee86 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"История на обажданията"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Изпращане на SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Обаждане на <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Редактиране на номер преди обаждане"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Добавяне към контакти"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Да се изчисти ли историята на обажд.?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Така ще се изтрият всички обаждания от историята ви"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Историята на обажд. се изчиства…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Гласова поща"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> гл. съобщения"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> гласови съобщения </item>
+      <item quantity="one">Гласово съобщение</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Пускане"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова гласова поща от <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Показване само на пропуснатите"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Показване само на гл. поща"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Показване на всички обаждания"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Добавяне към контактите"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Добавяне на 2-сек пауза"</string>
     <string name="add_wait" msgid="3360818652790319634">"Добавяне на изчакване"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Настройки"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Премахнато от любимите"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Отмяна"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Обаждане на <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Добавяне в контактите"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Създаване на нов контакт"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Добавяне към съществуващ контакт"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Изпращане на SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Провеждане на видеообаждане"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Преглед на цялата история на обажданията"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> нови пропуснати обаждания"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Чрез бързото набиране се свързвате с едно докосване с любими контакти и с номера, на които се обаждате често"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Няма контакти"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Докоснете изображението, за да видите всички номера, или го натиснете и задръжте за пренареждане"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Отхвърляне"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Премахване"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ВСИЧКИ КОНТАКТИ"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ОБРАТНО ОБАЖДАНЕ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ОБАЖДАНЕ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ПОВТОРНО НАБИРАНЕ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ВИДЕООБАЖДАНЕ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видеообаждане"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ПРОСЛУШВАНЕ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ПОДРОБНОСТИ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Преглед на подробностите"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропуснато обаждане от <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Прието обаждане от <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Обаждане до <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"на <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Обратно обаждане до <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Обаждане"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Обаждане на <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Видеообаждане до <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Прослушване на гласовата поща от <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Подробности за обаждането за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Изтрито от историята на обажданията"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Номерът е изпратен до Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ПОДАВАНЕ НА СИГНАЛ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Подаване на сигнал"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Днес"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Вчера"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"По-стари"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"По-бавно възпроизвеждане."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Стартиране или поставяне на пауза на възпроизвеждането."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Общи"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Опции за показване на контактите"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звуци и вибриране"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Опции за показване"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуци и вибриране"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Достъпност"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Мелодия на телефона"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибриране и при обаждания"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Клавиат. за набиране: Мелодии"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Други"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Продължителност на звука при набиране"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Нормално"</item>
+    <item msgid="6177579030803486015">"Продължително"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Бързи отговори"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Обаждания"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Профили за обаждане"</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 26d99ae..6460764 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ফোন"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ফোন"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"কল ইতিহাস"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS পাঠান"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> কে কল করুন"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"কল করার আগে নম্বর সম্পাদনা করুন"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"পরিচিতিগুলিতে যোগ করুন"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"কল ইতিহাস সাফ করবেন?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"এটি আপনার ইতিহাস থেকে সমস্ত কল মুছে দেবে"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"কল ইতিহাস সাফ করা হচ্ছে…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"ভয়েসমেল"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g>টি ভয়েসমেল </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"শুনুন"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> এর থেকে নতুন ভয়েসমেল"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"কেবলমাত্র মিসড দেখান"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"কেবলমাত্র ভয়েসমেলগুলি দেখান"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"সমস্ত কল দেখান"</string>
-    <string name="add_contact" msgid="4579643070374941999">"পরিচিতিগুলিতে জুড়ুন"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"২- সেকেন্ড বিরতি যোগ করুন"</string>
     <string name="add_wait" msgid="3360818652790319634">"অপেক্ষা যোগ করুন"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"সেটিংস"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"পছন্দসই থেকে সরানো হয়েছে"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"পূর্বাবস্থায় ফিরুন"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> কে কল করুন"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"পরিচিতিগুলিতে যোগ করুন"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"নতুন পরিচিতি তৈরি করুন"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"বিদ্যমান পরিচিতিতে যোগ করুন"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS পাঠান"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ভিডিও কল করুন"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"সম্পূর্ণ কল ইতিহাস দেখুন"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>টি নতুন মিসড কল"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"আপনি প্রায়শই কল করেন এমন পছন্দসই ব্যক্তি এবং নম্বরগুলির জন্য দ্রুত ডায়াল হল একবার-স্পর্শের মাধ্যমে ডায়াল করার ব্যবস্থা"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"কোনো পরিচিতি নেই"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"সমস্ত নম্বর দেখতে চিত্রে স্পর্শ করুন বা রেকর্ড করতে ধরে রাখুন"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"খারিজ"</string>
     <string name="remove_contact" msgid="1080555335283662961">"সরান"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"সকল পরিচিতি"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"কল করুন"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"কল করুন"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"রিডায়েল"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ভিডিও কল"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ভিডিও কল"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"শুনুন"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"বিশদ বিবরণ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"বিশদ বিবরণ দেখুন"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> থেকে মিস হওয়া কল৷"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> এর থেকে উত্তর দেওয়া কল৷"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> এ কল করুন৷"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> এ"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>কে কল করুন"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"কল করুন"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর কল"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর জন্য ভিডিও কল৷"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর থেকে আসা ভয়েসমেল শোনা হয়েছে"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> এর কলের বিবরণ"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"কলের ইতিহাস থেকে মোছা হয়েছে"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"নম্বর Google এ প্রতিবেদন করা হয়েছে"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"প্রতিবেদন করুন"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"প্রতিবেদন করুন"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"আজ"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"গতকাল"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"পুরোনো"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"ধীরে প্লে করুন৷"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"প্লেব্যাক শুরু করুন বা বিরতি দিন৷"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"সাধারণ"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"পরিচিতি প্রদর্শনের বিকল্পগুলি"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"শব্দ ও কম্পন"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"প্রদর্শনের বিকল্পগুলি"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"শব্দ এবং কম্পন"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"অ্যাক্সেসযোগ্যতা"</string>
     <string name="ringtone_title" msgid="760362035635084653">"ফোন রিংটোন"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"এছাড়াও কল এলে কম্পিত করুন"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ডায়ালপ্যাড টোনগুলি"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"অন্যান্য"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ডায়ালপ্যাড স্বরের দৈর্ঘ্য"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"স্বাভাবিক"</item>
+    <item msgid="6177579030803486015">"দীর্ঘ"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"দ্রুত প্রতিক্রিয়াগুলি"</string>
     <string name="call_settings_label" msgid="313434211353070209">"কল"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"কলিং অ্যাকাউন্টগুলি"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index fec76b7..57d64b5 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telèfon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telèfon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Historial de trucades"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Envia SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Truca a <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edita el número abans de trucar"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Afegeix als contactes"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Esborrar l\'historial de trucades?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Amb aquesta acció se suprimiran totes les trucades de l\'historial."</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Esborrant historial de trucades..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Missatge de veu"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> missatges de veu"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> bústies de veu </item>
+      <item quantity="one">Bústia de veu</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reprodueix"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nou missatge de veu de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Mostra només trucades perdudes"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostra només missatges de veu"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostra totes les trucades"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Afegeix als contactes"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Afegeix una pausa de 2 segons"</string>
     <string name="add_wait" msgid="3360818652790319634">"Afegeix espera"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Configuració"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Eliminat dels preferits"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfés"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Truca al <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Afegeix als contactes"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crea un contacte nou"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Afegeix a un contacte existent"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Envia SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fes una videotrucada"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Consulta tot l\'historial de trucades"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> trucades perdudes noves"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"El marcatge ràpid et permet trucar als teus contactes preferits i als números als quals truques més sovint amb un toc."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"No hi ha cap contacte."</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Toca la imatge per veure tots els números i toca-la i mantén-la premuda per reordenar-los."</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ignora"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Suprimeix"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TOTS ELS CONTACTES"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"TORNA LA TRUCADA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"TRUCA"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"TORNA A MARCAR"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOTRUCADA"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videotrucada"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ESCOLTA"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALLS"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Mostra els detalls"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Trucada perduda de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Trucada resposta de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Trucada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"a <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Torna a trucar a: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Truca"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Truca a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videotrucada a: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Escolta el missatge a la bústia de veu de: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Detalls de la trucada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"S\'ha suprimit de l\'historial de trucades."</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"S\'ha informat del número a Google."</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"INFORMA"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Informa"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Avui"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ahir"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Més antiga"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Reprodueix més lentament."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Inicia la reproducció o la posa en pausa."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"General"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opcions de visualització de contactes"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons i vibració"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opcions de visualització"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons i vibració"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilitat"</string>
     <string name="ringtone_title" msgid="760362035635084653">"So de trucada"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibra també per a les trucades"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons del teclat"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Altres"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durada del to del teclat"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Llarg"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostes ràpides"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Trucades"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Comptes per a trucades"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index b15fe65..ec47251 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Historie volání"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Odeslat SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Volat kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Před voláním upravit číslo"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Přidat do kontaktů"</string>
@@ -33,10 +32,12 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vymazat historii volání?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tímto z historie smažete všechna volání."</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Mazání historie volání…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Hlasová schránka"</item>
-    <item quantity="other" msgid="5513481419205061254">"Hlasové zprávy: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> hlasové zprávy </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> hlasové zprávy </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> hlasových zpráv </item>
+      <item quantity="one">Hlasová zpráva</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Přehrát"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nová hlasová zpráva – <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Zobrazit pouze zmeškané"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Zobrazit pouze hlas. schránku"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Zobrazit všechny hovory"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Přidat do kontaktů"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Přidat pauzu 2 s"</string>
     <string name="add_wait" msgid="3360818652790319634">"Přidat čekání"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Nastavení"</string>
@@ -141,33 +141,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Odebráno z oblíbených"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Vrátit zpět"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Zavolat na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Přidat do kontaktů"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Vytvořit nový kontakt"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Přidat k existujícímu kontaktu"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Odeslat SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uskutečnit videohovor"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Zobrazení celé historie volání"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Nové zmeškané hovory: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Rychlá volba je vytáčení oblíbených kontaktů a často volaných čísel jedním klepnutím."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Žádné kontakty"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Klepnutím na obrázek zobrazíte všechna čísla. Klepnutím a podržením upravíte uspořádání."</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Zavřít"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Odstranit"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"VŠECHNY KONTAKTY"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"VOLAT ZPĚT"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"VOLAT"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ZNOVU VYTOČIT"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOHOVOR"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videohovor"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"POSLOUCHAT"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"PODROBNOSTI"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Zobrazit podrobnosti"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Nepřijatý hovor: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Přijatý hovor: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Odchozí hovor: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"v účtu <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Zpětné volání <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Volat"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Volat kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Odchozí videohovor s: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Poslech hlasové schránky od <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Podrobnosti volání <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Smazáno z historie volání"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Číslo bylo nahlášeno do Googlu."</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"NAHLÁSIT"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Nahlásit"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Dnes"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Včera"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Starší"</string>
@@ -178,13 +176,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Přehrávat pomaleji."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Spustit nebo pozastavit přehrávání."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Obecné"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Možnosti zobrazení kontaktů"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Zvuky a vibrace"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Možnosti zobrazení"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvuky a vibrace"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Usnadnění"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Vyzváněcí tón telefonu"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrovat také u volání"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tóny číselníku"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Další"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Délka tónu číselníku"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normální"</item>
+    <item msgid="6177579030803486015">"Dlouhé"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Rychlé odpovědi"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Volání"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Účty pro volání"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index c277310..2ea4e76 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Opkaldshistorik"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Send sms-besked"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ring til <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Rediger nummer inden opkald"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Føj til kontakter"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vil du rydde opkaldshistorikken?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Dette vil slette alle opkald fra din historik"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Opkaldshistorik ryddes..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Telefonsvarer"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> telefonsvarerbeskeder"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> talebeskeder </item>
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> talebeskeder </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spil"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nye besked fra <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Vis kun ubesvarede"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Vis kun telefonsvarerbeskeder"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Vis alle opkald"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Føj til kontaktpersoner"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Tilføj pause på 2 sek."</string>
     <string name="add_wait" msgid="3360818652790319634">"Tilføj ventetid"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Indstillinger"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Fjernet fra foretrukne"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Fortryd"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring til <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Føj til kontaktpersoner"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Opret ny kontaktperson"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Føj til eksisterende kontaktperson"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send sms"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Foretag videoopkald"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Se komplet opkaldshistorik"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nye ubesvarede opkald"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Med Hurtigopkald kan du ringe til dine foretrukne kontaktpersoner og numre, du ofte ringer til, med et enkelt tryk"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Ingen kontaktpersoner"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Tryk på billedet for at se alle numre, eller tryk på billedet, og hold det nede for at omarrangere"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Luk"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Fjern"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLE KONTAKTPERSONER"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"RING TILBAGE"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"RING OP"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"RING IGEN"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOOPKALD"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videoopkald"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"LYT"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALJER"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Se info"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Mistet opkald fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Besvaret opkald fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Ring til <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"på <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Ring tilbage til <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Ring op"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Ring til <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videoopkald til <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Lyt til indtalt besked fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Opkaldsoplysninger for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Slettet fra opkaldshistorik"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummeret er rapporteret til Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"RAPPORTÉR"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Rapportér"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"I dag"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"I går"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Ældre"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Afspil langsommere."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start afspilningen, eller sæt den på pause."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Generelt"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Indstillinger for visning af kontaktpersoner"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Lyde og vibration"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Valgmuligheder for visning"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Lyde og vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Hjælpefunktioner"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Ringetone for opkald"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer også ved opkald"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Toner for numerisk tastatur"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Andre"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tonelængde for numerisk tastatur"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Lang"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hurtigt svar"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Opkald"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Opkaldskonti"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index f11e0cc..69891da 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Anrufliste"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS senden"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> anrufen"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Nr. vor Anruf bearbeiten"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Zu Kontakten hinzufügen"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Anrufliste löschen?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Alle Anrufe werden aus Ihrem Verlauf gelöscht."</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Anrufliste wird gelöscht…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Mailbox-Nachricht"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Mailbox-Nachrichten"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Mailbox-Nachrichten </item>
+      <item quantity="one">Mailbox-Nachricht</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Anhören"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Neue Mailbox-Nachricht von <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Nur entgangene Anrufe anzeigen"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Nur Mailbox-Nachr. anzeigen"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Alle Anrufe anzeigen"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Zu Kontakten hinzufügen"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 Sekunden Pause hinzufügen"</string>
     <string name="add_wait" msgid="3360818652790319634">"Warten hinzufügen"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Einstellungen"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Aus Favoriten entfernt"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Rückgängig machen"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> wählen"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Zu Kontakten hinzufügen"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Neuen Kontakt erstellen"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Zu vorhandenem Kontakt hinzufügen"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS senden"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videoanruf starten"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Gesamte Anrufliste ansehen"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> neue verpasste Anrufe"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Schnellauswahl bedeutet Rufaufbau mit einer Berührung für Favoriten und häufig angerufene Nummern."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Keine Kontakte"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Bild berühren, um alle Nummern zu sehen, oder Bild berühren und halten, um sie neu anzuordnen"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ablehnen"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Entfernen"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"Alle Kontakte"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"Zurückrufen"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"Anrufen"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"Wahlwiederholung"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"Videoanruf"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videoanruf"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"Anhören"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"Details"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Details ansehen"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Anruf von <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> verpasst"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Anruf von <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> angenommen"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Ausgehender Anruf an <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"mit <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> zurückrufen"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Anrufen"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> anrufen"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videoanruf an <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Mailboxnachricht von <xliff:g id="NAMEORNUMBER">^1</xliff:g> anhören"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Anrufdetails für <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Aus Anrufliste gelöscht"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummer wurde Google gemeldet."</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"Melden"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Melden"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Heute"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Gestern"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Ältere"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Langsamer wiedergeben"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Wiedergabe starten oder pausieren"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Allgemein"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Anzeigeoptionen für Kontakte"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Töne und Vibration"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Anzeigeoptionen"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Töne und Vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Bedienungshilfen"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Klingelton"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Bei Anrufen auch vibrieren"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Wähltastentöne"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Sonstige"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Länge der Wähltastentöne"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Lang"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Kurzantworten"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Anrufe"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Anrufkonten"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 8e161bc..221b985 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Τηλέφωνο"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Τηλέφωνο"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Ιστορικό κλήσεων"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Αποστολή SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Κλήση <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Επεξεργασία αριθμού πριν την κλήση"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Προσθήκη στις επαφές"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Διαγραφή ιστορικού κλήσεων;"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Αυτό θα διαγράψει όλες τις κλήσεις από το ιστορικό σας"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Διαγραφή ιστορικού κλήσεων…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Αυτόματος τηλεφωνητής"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> μηνύμ. αυτόμ. τηλεφωνητή"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Μηνύματα αυτόμ. τηλεφωνητή </item>
+      <item quantity="one">Μήνυμα αυτόματου τηλεφωνητή</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Αναπαραγωγή"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Νέα μην. αυτ. τηλεφ. από <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Εμφάνιση μόνο αναπάντητων"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Εμφ. μόνο μην. αυτόμ. τηλεφων."</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Εμφάνιση όλων"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Προσθήκη στις επαφές"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Προσθήκη παύσης 2 δευτερολέπτων"</string>
     <string name="add_wait" msgid="3360818652790319634">"Προσθήκη αναμονής"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Ρυθμίσεις"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Καταργήθηκε από τα αγαπημένα"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Αναίρεση"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Κλήση του αριθμού <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Προσθήκη στις επαφές"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Δημιουργία νέας επαφής"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Προσθήκη σε υπάρχουσα επαφή"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Αποστολή SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Πραγματοποίηση βιντεοκλήσης"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Προβολή πλήρους ιστορικού κλήσεων"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> νέες αναπάντητες κλήσεις"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Η ταχεία κλήση είναι κλήση που μπορείτε να πραγματοποιήσετε με ένα πλήκτρο για τους αγαπημένους σας αριθμούς που καλείτε συχνά"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Δεν υπάρχουν επαφές"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Πατήστε την εικόνα για να δείτε όλους τους αριθμούς ή αγγίξτε παρατεταμένα για αναδιάταξη"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Παράβλεψη"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Κατάργηση"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ΟΛΕΣ ΟΙ ΕΠΑΦΕΣ"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ΕΠΑΝΑΚΛΗΣΗ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ΚΛΗΣΗ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ΕΠΑΝΑΚΛΗΣΗ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ΒΙΝΤΕΟΚΛΗΣΗ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Βιντεοκλήση"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ΑΚΡΟΑΣΗ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ΛΕΠΤΟΜΕΡΕΙΕΣ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Προβολή λεπτομερειών"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Αναπάντητη κλήση από <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Ληφθείσα κλήση από <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Κλήση προς <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"σε <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Επανάκληση <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Κλήση"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Κλήση <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Βιντεοκλήση προς <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Ακρόαση μηνύματος αυτόματου τηλεφωνητή από το χρήστη <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Λεπτομέρειες κλήσης για <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Διαγράφηκε από το ιστορικό κλήσεων"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Ο αριθμός αναφέρθηκε στην Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ΑΝΑΦΟΡΑ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Αναφορά"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Σήμερα"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Χθες"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Παλαιότερες"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Αναπαραγωγή πιο αργά."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Έναρξη ή παύση αναπαραγωγής."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Γενικά"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Επιλογές εμφάνισης επαφών"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Ήχοι και δόνηση"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Επιλογές εμφάνισης"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ήχοι και δόνηση"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Προσβασιμότητα"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Ήχος κλήσης τηλεφώνου"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Επίσης δόνηση για κλήσεις"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Τόνοι πληκτρολογίου κλήσης"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Άλλο"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Διάρκεια ήχου πληκτρολογίου κλήσης"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Κανονική"</item>
+    <item msgid="6177579030803486015">"Παρατεταμένη"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Γρήγορες απαντήσεις"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Κλήσεις"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Λογαριασμοί κλήσης"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..671c82b
--- /dev/null
+++ b/res/values-en-rAU/strings.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="8490255569343340580">"Dialler"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Phone"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
+    <string name="recentCallsIconLabel" msgid="2639489159797075507">"Call history"</string>
+    <string name="recentCalls_callNumber" msgid="1756372533999226126">"Call <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit number before call"</string>
+    <string name="recentCalls_addToContact" msgid="1429899535546487008">"Add to contacts"</string>
+    <string name="recentCalls_removeFromRecentList" msgid="5551148439199439404">"Delete from call history"</string>
+    <string name="recentCalls_deleteAll" msgid="5157887960461979812">"Clear call history"</string>
+    <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Delete voicemail"</string>
+    <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Share voicemail"</string>
+    <string name="recentCalls_empty" msgid="8555115547405030734">"No calls"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Clear call history?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"This will delete all calls from your history"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Clearing call history…"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
+      <item quantity="one">Voicemail</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Couldn\'t play voicemail"</string>
+    <string name="voicemail_buffering" msgid="738287747618697097">"Buffering…"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Loading voicemail…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Couldn\'t load voicemail"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Calls with voicemail only"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Incoming calls only"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Outgoing calls only"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Missed calls only"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Voicemail updates not available"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"New voicemail waiting. Can\'t load right now."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Set up your voicemail"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audio not available"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Set up"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Call voicemail"</string>
+    <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Slowest speed"</string>
+    <string name="voicemail_speed_slower" msgid="1508601287347216244">"Slow speed"</string>
+    <string name="voicemail_speed_normal" msgid="9033988544627228892">"Normal speed"</string>
+    <string name="voicemail_speed_faster" msgid="2019965121475935488">"Fast speed"</string>
+    <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Fastest speed"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Choose number"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Choose number"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Remember this choice"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"search"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"dial"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"number to dial"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Play or stop playback"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Switch on or off speakerphone"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Seek playback position"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Decrease playback rate"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Increase playback rate"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Call History"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"More options"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"dial pad"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"Copy"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Show outgoing only"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Show incoming only"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Settings"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"New contact"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"All contacts"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Call details"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Details not available"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Use touch tone keypad"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Return to call in progress"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Add call"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Incoming call"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Outgoing call"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Missed call"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Incoming video call"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Outgoing video call"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Missed video call"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Voicemail"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Incoming calls"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Play voicemail"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"View contact <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Call <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Contact details for <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_new_voicemail" msgid="2133792360865517746">"New voicemail."</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> calls."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Video call."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Send SMS to <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Unheard voicemail"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Start voice search"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Unknown"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Voicemail"</string>
+    <string name="private_num" msgid="6374339738119166953">"Private number"</string>
+    <string name="payphone" msgid="7726415831153618726">"Payphone"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min <xliff:g id="SECONDS">%s</xliff:g> sec"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Can\'t call this number"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"To set up voicemail, go to Menu &gt; Settings."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"To call voicemail, first turn off Aeroplane mode."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Loading…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Loading from SIM card…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM card contacts"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"No contacts app available"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Voice search not available"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Cannot make a phone call because the Phone application has been disabled."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"No app for that on this device"</string>
+    <string name="dialer_hint_find_contact" msgid="1012544667033887519">"Enter a name or phone number"</string>
+    <string name="recentMissed_empty" msgid="4901789420356796156">"No calls"</string>
+    <string name="recentVoicemails_empty" msgid="8582424947259156664">"No recent voicemails"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Show favourites only"</string>
+    <string name="call_log_activity_title" msgid="4612824396355272023">"History"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"All"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Missed"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Voicemail"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Speed dial"</string>
+    <string name="tab_recents" msgid="929949073851377206">"Recents"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Contacts"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Create new contact"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Add to existing contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Make video call"</string>
+    <string name="recents_footer_text" msgid="7315554578957453359">"View full call history"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
+    <string name="speed_dial_empty" msgid="1931474498966072849">"Speed dial is one‑touch dialing for favourites and numbers that you call often"</string>
+    <string name="all_contacts_empty" msgid="2299508125100209367">"No contacts"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Touch image to see all numbers or touch &amp; hold to reorder"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Remove"</string>
+    <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALL CONTACTS"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video call"</string>
+    <string name="call_log_action_voicemail" msgid="4978620572562925654">"LISTEN"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"view details"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Missed call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Answered call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"on <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Call"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Call <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="4303952636480252389">"Video call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Listen to voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Call details for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"Deleted from call history"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Report"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Today"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Yesterday"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Older"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Calls list"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Turn speaker on."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Turn speaker off."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Play faster."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Play slower."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start or pause playback."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Display options"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sounds and vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Phone ringtone"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Also vibrate for calls"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dialpad tones"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad tone length"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Long"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Quick responses"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Calls"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Calling accounts"</string>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index b185321..671c82b 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Phone"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Call history"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Send SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Call <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit number before call"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Add to contacts"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Clear call history?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"This will delete all calls from your history"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Clearing call history…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Voicemail"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Voicemails"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
+      <item quantity="one">Voicemail</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Add to contacts"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
     <string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Settings"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Add to contacts"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Create new contact"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Add to existing contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Make video call"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"View full call history"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Speed dial is one‑touch dialing for favourites and numbers that you call often"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"No contacts"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Touch image to see all numbers or touch &amp; hold to reorder"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Dismiss"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Remove"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALL CONTACTS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"CALL BACK"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"CALL"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"REDIAL"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEO CALL"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video call"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"LISTEN"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETAILS"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"view details"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Missed call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Answered call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"on <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Call back <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Call"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Call <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Video call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Listen to voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Call details for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Deleted from call history"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Number reported to Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"REPORT"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Report"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Today"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Yesterday"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Older"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Play slower."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start or pause playback."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"General"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Contact display options"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sounds and vibrate"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Display options"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sounds and vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Phone ringtone"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Also vibrate for calls"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dialpad tones"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Other"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad tone length"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Long"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Quick responses"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Calls"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Calling accounts"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index b185321..671c82b 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Phone"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Phone"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Call history"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Send SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Call <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit number before call"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Add to contacts"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Clear call history?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"This will delete all calls from your history"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Clearing call history…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Voicemail"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Voicemails"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemails </item>
+      <item quantity="one">Voicemail</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Play"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"New voicemail from <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Show missed only"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Show voicemails only"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Show all calls"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Add to contacts"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Add 2-sec pause"</string>
     <string name="add_wait" msgid="3360818652790319634">"Add wait"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Settings"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Removed from favourites"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Undo"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Call <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Add to contacts"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Create new contact"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Add to existing contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Make video call"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"View full call history"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> new missed calls"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Speed dial is one‑touch dialing for favourites and numbers that you call often"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"No contacts"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Touch image to see all numbers or touch &amp; hold to reorder"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Dismiss"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Remove"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALL CONTACTS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"CALL BACK"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"CALL"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"REDIAL"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEO CALL"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video call"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"LISTEN"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETAILS"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"view details"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Missed call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Answered call from <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"on <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Call back <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Call"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Call <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Video call to <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Listen to voicemail from <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Call details for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Deleted from call history"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Number reported to Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"REPORT"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Report"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Today"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Yesterday"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Older"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Play slower."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start or pause playback."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"General"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Contact display options"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sounds and vibrate"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Display options"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sounds and vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Phone ringtone"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Also vibrate for calls"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dialpad tones"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Other"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad tone length"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Long"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Quick responses"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Calls"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Calling accounts"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index db506b2..4c16170 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Teléfono"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Historial de llamadas"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes de llamar"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Agregar a contactos"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"¿Eliminar el historial de llamadas?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Esta acción eliminará todas las llamadas del historial"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Eliminando historial de llamadas…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Mensaje de voz"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz </item>
+      <item quantity="one">mensaje de voz</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuevo mensaje de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar solo perdidas"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar solo mensajes de voz"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas las llamadas"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Agregar a contactos"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Agregar pausa de 2 segundos"</string>
     <string name="add_wait" msgid="3360818652790319634">"Agregar espera"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Configuración"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Eliminado de favoritos"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Deshacer"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Llamar al <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Agregar a contactos"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crear contacto nuevo"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Agregar a contacto existente"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Realizar videollamada"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Ver historial de llamadas completo"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"El marcado rápido te permite llamar a tus contactos favoritos y a los números que llamas con más frecuencia con solo tocar la pantalla una vez."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"No hay contactos."</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Toca la imagen para ver todos los números o mantenla presionada para cambiar el orden."</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Descartar"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Eliminar"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS LOS CONTACTOS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"DEVOLVER LLAMADA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"LLAMAR"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"VOLVER A MARCAR"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOLLAMADA"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videollamada"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ESCUCHAR"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALLES"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Ver detalles"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Llamada perdida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Llamada contestada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"en <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Devolver llamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Llamar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videollamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Escuchar buzón de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Detalles de llamada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Se eliminó del historial de llamadas."</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Se informó el número a Google."</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"DENUNCIAR"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Informar"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Hoy"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ayer"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Antiguos"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Disminuir velocidad de reproducción"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar o pausar la reproducción"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"General"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opciones de visualización de contactos"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sonidos y vibración"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opciones de visualización"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sonidos y vibración"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilidad"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Tono del teléfono"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar también en llamadas"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonos del teclado"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Otro"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Longitud del tono del teclado"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Largo"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respuestas rápidas"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Llamadas"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Cuentas telefónicas"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index b396d02..0218417 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Teléfono"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Historial de llamadas"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Llamar a <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes de llamar"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Añadir a contactos"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"¿Borrar historial de llamadas?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Se eliminarán todas las llamadas del historial"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Borrando historial de llamadas…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Mensaje de voz"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensajes de voz </item>
+      <item quantity="one"> mensaje de voz</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuevo mensaje de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar solo llamadas perdidas"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Solo mensajes de voz"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas las llamadas"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Añadir a contactos"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Añadir pausa de 2 segundos"</string>
     <string name="add_wait" msgid="3360818652790319634">"Añadir espera"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Ajustes"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Eliminado de favoritos"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Deshacer"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Llamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Añadir a contactos"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crear nuevo contacto"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Añadir al contacto actual"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Hacer videollamada"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Ver historial de llamadas completo"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> llamadas perdidas nuevas"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"La marcación rápida te permite llamar a tus contactos favoritos y a los números que llamas con más frecuencia con solo tocar la pantalla una vez"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"No hay contactos"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Toca la imagen para ver todos los números o mantenla pulsada para cambiar el orden"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ignorar"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Eliminar"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS LOS CONTACTOS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"DEVOLVER LLAMADA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"LLAMAR"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"VOLVER A MARCAR"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOLLAMADA"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videollamada"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ESCUCHAR"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALLES"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Ver detalles"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Llamada perdida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Has respondido una llamada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"en <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Devolver llamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Llamar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Llamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videollamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Escuchar el buzón de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Detalles de llamada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Eliminada del historial de llamadas"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Número notificado a Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"INFORMAR"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Denunciar"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Hoy"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ayer"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Más antiguo"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Reproducir más lento."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar o pausar reproducción."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Generales"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opciones para mostrar contactos"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sonido y vibración"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opciones de visualización"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sonido y vibración"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilidad"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Tono del teléfono"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar también en llamadas"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonos del teclado"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Otros"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duración del tono del teclado"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Tono normal"</item>
+    <item msgid="6177579030803486015">"Tono largo"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respuestas rápidas"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Llamadas"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Cuentas de llamadas"</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index a926184..347ef78 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Kõneajalugu"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS-i saatmine"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Helista kasutajale <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Muuda enne helistamist numbrit"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Lisa kontaktidesse"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Kas kustutada kõneajalugu?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"See kustutab ajaloost kõik kõned"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Kõneajaloo kustutamine ..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Kõnepost"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> kõnepostisõnumit"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> kõneposti teadet </item>
+      <item quantity="one">Kõneposti teade</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Esitamine"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Uus kõnepostisõnum kasutajalt <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Kuva ainult vastamata"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Kuva ainult kõnepostisõnumeid"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Kuva kõik kõned"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Lisa kontaktide hulka"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Lisa 2-sekundiline paus"</string>
     <string name="add_wait" msgid="3360818652790319634">"Lisa ootama"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Seaded"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Eemaldatud lemmikute hulgast"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Võta tagasi"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Helista <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Lisa kontaktidesse"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Loo uus kontakt"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Lisa olemasolevale kontaktile"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS-i saatmine"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videokõne tegemine"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Kogu kõneajaloo vaatamine"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> uus/uut vastamata kõne(t)"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Kiirvalimiset kasutades saate ühe puudutusega helistada lemmiknumbritele ja sagedasti kasutatavatele numbritele"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Kontakte pole"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Puudutage kujutist, et näha kõiki numbreid, või puudutage pikalt järjestuse muutmiseks"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Loobu"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Eemalda"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"KÕIK KONTAKTID"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"HELISTA TAGASI"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"HELISTA"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"VALI UUESTI"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOKÕNE"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videokõne"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"KUULA"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ÜKSIKASJAD"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Vaadake üksikasju"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Vastamata kõne: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Vastati kõnele: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Kõne: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"kontol <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Tagasi helistamine: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Helistamine"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Helistamine: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videokõne kontaktile <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Kontakti <xliff:g id="NAMEORNUMBER">^1</xliff:g> kõneposti kuulamine"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Kontakti <xliff:g id="NAMEORNUMBER">^1</xliff:g> kõne üksikasjad"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Kustutatud kõneajaloost"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Number edastati Google\'ile"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"TEAVITA"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Teavita"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Täna"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Eile"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Vanem"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Aeglasem esitus."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Esituse alustamine või peatamine."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Üldine"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktide kuvavalikud"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Helid ja vibreerimine"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Kuvamisvalikud"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Helid ja vibratsioon"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Juurdepääsetavus"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Telefoni helin"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibreeri ka kõnede puhul"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Valimisklahvistiku toonid"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Muu"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Valimisklahvistiku tooni pikkus"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Tavaline"</item>
+    <item msgid="6177579030803486015">"Pikk"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Kiirvastused"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Kõned"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Helistamiskontod"</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 8decea8..b9709cc 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Deitu"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefonoa"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Deien historia"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Bidali SMS mezua"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Deitu <xliff:g id="NAME">%s</xliff:g> erabiltzaileari"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editatu zenbakia deitu aurretik"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Gehitu kontaktuetan"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Deien historia garbitu nahi duzu?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Historiako dei guztiak ezabatuko dira"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Deien historia garbitzen…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Erantzungailua"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ahots-mezu erantzungailuan"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> Erantzungailuko <xliff:g id="COUNT">%1$d</xliff:g> mezu </item>
+      <item quantity="one">Erantzungailuko mezua</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Erreproduzitu"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> deitzailearen ahots-mezu berria"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Erakutsi galduak soilik"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Erakutsi erantzungailukoak soilik"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Erakutsi dei guztiak"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Gehitu kontaktuetan"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Gehitu 2 segundoko pausa"</string>
     <string name="add_wait" msgid="3360818652790319634">"Gehitu itxaronaldia"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Ezarpenak"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Gogokoetatik kendu da"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desegin"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Deitu <xliff:g id="NUMBER">%s</xliff:g> zenbakira"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Gehitu kontaktuetan"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Sortu kontaktua"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Gehitu lehendik dagoen kontaktu batean"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Bidali SMS mezua"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Egin bideo-deia"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Ikusi deien historia osoa"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> dei galdu berri"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Markatze bizkorrak gehien erabiltzen dituzun zenbaki eta gogokoetara ukitze bakarrarekin deitzeko balio du"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Ez dago kontakturik"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Ukitu irudia zenbaki guztiak ikusteko, edo eduki ezazu ukituta berrantolatzeko"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Baztertu"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Kendu"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"KONTAKTU GUZTIAK"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ITZULI DEIA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"DEITU"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"MARKATU BERRIRO"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"EGIN BIDEO-DEIA"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Bideo-deia"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ENTZUN"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"XEHETASUNAK"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Ikusi xehetasunak"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Galdutako deiaren xehetasunak: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Erantzundako deiaren xehetasunak: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Egindako deiaren xehetasunak: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> kontuan"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Itzuli deia <xliff:g id="NAMEORNUMBER">^1</xliff:g> deitzaileari"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Deitu"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Deitu <xliff:g id="NAMEORNUMBER">^1</xliff:g> deitzaileari"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Bideo-deia egin da (<xliff:g id="NAMEORNUMBER">^1</xliff:g>)."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Deitzaile honek erantzungailuan utzitako ahots-mezuak entzutea: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> kontaktuaren xehetasunak"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Ezabatu deien historiatik"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Zenbakiaren berri eman zaio Google-ri"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"SALATU"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Eman honen berri"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Gaur"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Atzo"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Zaharrak"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Erreproduzitu mantsoago."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Hasi edo gelditu erreprodukzioa."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Orokorra"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktuak bistaratzeko aukerak"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Soinuak eta dardara"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Bistaratze-aukerak"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Soinuak eta dardara"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Erabilerraztasuna"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Telefonoaren tonua"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Dardara deiak jasotzean ere"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Markagailuaren tonuak"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Beste batzuk"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Markagailuaren tonuaren iraupena"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normala"</item>
+    <item msgid="6177579030803486015">"Luzea"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Erantzun bizkorrak"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Deiak"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Deiak egiteko kontuak"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 45f0ac0..2ee84da 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"تلفن"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"تلفن"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"سابقه تماس"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"ارسال پیامک"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"تماس با <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ویرایش شماره قبل از تماس"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"افزودن به مخاطبین"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"سابقه تماس پاک شود؟"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"این کار همه تماس‌ها را از سابقه شما حذف می‌کند"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"در حال پاک کردن سابقه تماس..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"پست صوتی"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> پست صوتی"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> پست صوتی </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> پست صوتی </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"پخش"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>، <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"پست صوتی جدید از <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"فقط نمایش بی‌پاسخ"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"فقط نمایش پست‌های صوتی"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"نمایش همه مکالمات"</string>
-    <string name="add_contact" msgid="4579643070374941999">"افزودن به مخاطبین"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"افزودن یک مکث ۲ ثانیه‌ای"</string>
     <string name="add_wait" msgid="3360818652790319634">"افزودن انتظار"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"تنظیمات"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"از موارد دلخواه حذف شد"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"لغو"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"تماس با <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"افزودن به مخاطبین"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ایجاد مخاطب جدید"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"افزودن به مخاطب موجود"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ارسال پیامک"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"برقراری تماس ویدیویی"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"مشاهده سابقه تماس به صورت کامل"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> تماس‌ بی‌پاسخ جدید"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"شماره‌گیری سریع، شماره‌گیری تک لمسی برای مخاطبین برگزیده و شماره‌هایی است که اغلب با آنها تماس می‌گیرید"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"هیچ مخاطبی موجود نیست"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"برای مشاهده همه شماره‌ها، تصویر را لمس کنید یا برای ترتیب مجدد لمس کنید و نگه دارید"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"رد کردن"</string>
     <string name="remove_contact" msgid="1080555335283662961">"حذف"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"همه مخاطبین"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"تماس"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"تماس"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"شماره‌گیری مجدد"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"تماس ویدیویی"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"تماس ویدیویی"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"گوش دادن"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"جزئیات"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"مشاهده جزئیات"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"تماس از دست رفته از <xliff:g id="NAMEORNUMBER">^1</xliff:g>، ‏<xliff:g id="TYPEORLOCATION">^2</xliff:g>، ‏<xliff:g id="TIMEOFCALL">^3</xliff:g>، ‏<xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"تماس پاسخ داده شده از <xliff:g id="NAMEORNUMBER">^1</xliff:g>، ‏<xliff:g id="TYPEORLOCATION">^2</xliff:g>، ‏<xliff:g id="TIMEOFCALL">^3</xliff:g>، ‏<xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"تماس با <xliff:g id="NAMEORNUMBER">^1</xliff:g>، ‏<xliff:g id="TYPEORLOCATION">^2</xliff:g>، ‏<xliff:g id="TIMEOFCALL">^3</xliff:g>، ‏<xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"در <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"تماس با <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"تماس"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"تماس با <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"تماس ویدیویی با <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"گوش دادن به پست صوتی از <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"جزئیات تماس برای <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"از سابقه تماس حذف شد"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"‏شماره به Google گزارش شد"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"گزارش"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"گزارش"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"امروز"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"دیروز"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"قدیمی‌تر"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"پخش آهسته‌تر."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"شروع یا توقف موقت بازپخش."</string>
     <string name="list_delimeter" msgid="4571593167738725100">"، "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"عمومی"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"گزینه‌های نمایش تماس"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"صدا و لرزش"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"گزینه‌های نمایش"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"صدا و لرزش"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"دسترس‌پذیری"</string>
     <string name="ringtone_title" msgid="760362035635084653">"آهنگ زنگ تلفن"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"تماس‌‌ها لرزش هم داشته باشند"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"صداهای صفحه شماره‌گیری"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"موارد دیگر"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"طول آهنگ صفحه شماره‌گیری"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"عادی"</item>
+    <item msgid="6177579030803486015">"طولانی"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"پاسخ‌های سریع"</string>
     <string name="call_settings_label" msgid="313434211353070209">"تماس‌ها"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"حساب‌های تماس اینترنتی"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index b7a6b0c..7ed42cf 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Puhelin"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Puhelin"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Soittohistoria"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Lähetä tekstiviesti"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Soita: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Muokkaa numeroa ennen puhelua"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Lisää yhteystietoihin"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Tyhjennetäänkö soittohistoria?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Kaikki soittohistorian tiedot poistetaan"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Tyhjennetään soittohistoriaa…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Vastaaja"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> vastaajaviestiä"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> vastaajaviestiä </item>
+      <item quantity="one">Vastaajaviesti</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Toista"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Uusi vastaajaviesti: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Näytä vain vastaamattomat"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Näytä vain vastaajaviestit"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Näytä kaikki puhelut"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Lisää yhteystietoihin"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Lisää 2 sekunnin tauko"</string>
     <string name="add_wait" msgid="3360818652790319634">"Lisää tauko"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Asetukset"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Poistettu suosikeista"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Kumoa"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Soita <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Lisää yhteystietoihin"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Luo uudet yhteystiedot"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Lisää olemassa oleviin yhteystietoihin"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Lähetä tekstiviesti"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Soita videopuhelu"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Näytä koko soittohistoria"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> uutta vastaamatonta puhelua"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Pikavalinnan avulla voit soittaa yhdellä kosketuksella suosikeillesi ja muihin usein käyttämiisi numeroihin"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Ei yhteystietoja"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Katso kaikki numerot koskettamalla kuvaa tai järjestele tietoja koskettamalla kuvaa pitkään"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ohita"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Poista"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"KAIKKI YHTEYSTIEDOT"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"SOITA TAKAISIN"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"SOITA"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"SOITA UUDELLEEN"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOPUHELU"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videopuhelu"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"KUUNTELE"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"TIEDOT"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Näytä tiedot"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Vastaamaton puhelu soittajalta <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Vastattu puhelu soittajalta <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Soita vastaanottajalle <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Soita takaisin: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Soita"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Soita: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videopuhelu: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Kuuntele vastaajaviesti: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Yhteystiedon <xliff:g id="NAMEORNUMBER">^1</xliff:g> puhelutiedot"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Poistettu soittohistoriasta"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numero ilmoitettu Googlelle"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"TEE ILMOITUS"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Palaute"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Tänään"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Eilen"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Vanhempi"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Toista hitaammin."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Aloita tai keskeytä toisto."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Yleiset"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Yhteystietojen näyttöasetukset"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Äänet ja värinä"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Näyttöasetukset"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Äänet ja värinä"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Esteettömyys"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Puhelimen soittoääni"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Värinä myös puheluille"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Näppäimistön äänet"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Muut"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Näppäimistön äänen pituus"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normaali"</item>
+    <item msgid="6177579030803486015">"Pitkä"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Pikavastaukset"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Puhelut"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Puhelutilit"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index b59d9dc..11376f8 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Téléphone"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Téléphone"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Historique des appels"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Envoyer un texto"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Appeler <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modifier le numéro avant de passer l\'appel"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Ajouter aux contacts"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Effacer l\'historique des appels?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tous les appels seront supprimés de votre historique."</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Suppression historique des appels…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Messagerie vocale"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> messages vocaux"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> message vocal </item>
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> messages vocaux </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lire"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nouveau message vocal de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Afficher appels manqués uniq."</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Messages vocaux uniquement"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Afficher tous les appels"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Ajouter aux contacts"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Ajouter une pause de 2 s"</string>
     <string name="add_wait" msgid="3360818652790319634">"Ajouter Attendre"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Paramètres"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ajouter aux contacts"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Créer un contact"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Ajouter à un contact existant"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Envoyer un texto"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Faire un appel vidéo"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Afficher tout l\'historique des appels"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nouveaux appels manqués"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"La numérotation abrégée vous permet d\'appeler vos contacts favoris et les numéros que vous appelez fréquemment d\'un simple toucher du doigt."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Aucun contact"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Touchez l\'image pour afficher tous les numéros, ou maintenez votre doigt sur l\'écran pour les réorganiser"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Fermer"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Supprimer"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TOUS LES CONTACTS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"RAPPELER"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"APPELER"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"RAPPELER"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"APPEL VIDÉO"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Appel vidéo"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ÉCOUTER"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DÉTAILS"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Afficher les détails"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Appel manqué : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Appel répondu : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Appel effectué : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"sur <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Rappeler <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Appeler"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Appeler <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Appel vidéo à <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Écouter le message vocal de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Détails de l\'appel pour <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"L\'appel a bien été supprimé de l\'historique"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Le numéro a bien été signalé à Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"SIGNALER"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Rapport"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Aujourd\'hui"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Hier"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Plus anciens"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Lire moins vite."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Lancer ou interrompre la lecture."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Général"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Options d\'affichage des contacts"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons et vibrations"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Options d\'affichage"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons et vibrations"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilité"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Sonnerie du téléphone"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer aussi pour les appels"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonalités du clavier"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Autre"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durée des tonalités du pavé numérique"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normale"</item>
+    <item msgid="6177579030803486015">"Longue"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Réponses rapides"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Appels"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Comptes d\'appel"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 7e56068..204f1ce 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Téléphone"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Tél."</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Historique des appels"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Envoyer un SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Appeler <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modifier le numéro avant d\'effectuer l\'appel"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Ajouter aux contacts"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Supprimer l\'historique des appels ?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tous les appels seront supprimés de votre historique."</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Suppression historique des appels…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Messages vocaux"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> messages vocaux"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> message vocal </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> messages vocaux </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lire"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nouveau message vocal de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Afficher appels manqués uniq."</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Messages vocaux uniquement"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Afficher tous les appels"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Ajouter aux contacts"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Ajouter une pause de 2 s"</string>
     <string name="add_wait" msgid="3360818652790319634">"Ajouter une attente"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Paramètres"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Supprimé des favoris."</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Annuler"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Appeler le <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ajouter aux contacts"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Créer un contact"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Ajouter à un contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Envoyer un SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Passer un appel vidéo"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Afficher tout l\'historique des appels"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Nouveaux appels manqués : <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"La numérotation abrégée vous permet d\'appeler vos contacts favoris et les numéros que vous appelez fréquemment d\'une simple pression du doigt."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Aucun contact"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Appuyer sur l\'image pour afficher tous les numéros, ou appuyer dessus de manière prolongée pour réorganiser ces derniers"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ignorer"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Supprimer"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TOUS LES CONTACTS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"RAPPELER"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"APPELER"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"RAPPELER"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"APPEL VIDÉO"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Appel vidéo"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ÉCOUTER"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DÉTAILS"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Afficher les détails"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Appel manqué <xliff:g id="TIMEOFCALL">^3</xliff:g> (appelant : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Appel reçu <xliff:g id="TIMEOFCALL">^3</xliff:g> (appelant : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Appel émis <xliff:g id="TIMEOFCALL">^3</xliff:g> (destinataire : <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"sur <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Rappeler le numéro ou le contact \"<xliff:g id="NAMEORNUMBER">^1</xliff:g>\""</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Appeler"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Appeler <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Appel vidéo émis (destinataire : <xliff:g id="NAMEORNUMBER">^1</xliff:g>)"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Écouter le message vocal laissé par le numéro ou le contact \"<xliff:g id="NAMEORNUMBER">^1</xliff:g>\""</string>
     <string name="description_details_action" msgid="2433827152749491785">"Informations sur l\'appel pour <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"L\'appel a bien été supprimé de l\'historique."</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Le numéro a bien été signalé à Google."</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"SIGNALER"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Signaler"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Aujourd\'hui"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Hier"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Plus anciens"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Lire moins vite"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Lancer ou suspendre la lecture"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Général"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Options d\'affichage des contacts"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons et vibreur"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Options d\'affichage"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons et vibreur"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilité"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Sonnerie du téléphone"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibreur aussi pour les appels"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Son du clavier"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Autre"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durée de la tonalité du clavier"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normale"</item>
+    <item msgid="6177579030803486015">"Longue"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Réponses rapides"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Appels"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Comptes téléphoniques"</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 7104da6..1199584 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Teléfono"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Teléfono"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Historial de chamadas"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Chamar a <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes chamar"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Engadir a contactos"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Borrar o historial de chamadas?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Esta acción eliminará todas as chamadas do teu historial"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Borrando historial de chamadas…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Correo de voz"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> correos de voz"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> correos de voz </item>
+      <item quantity="one">Correo de voz</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproducir"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Novo correo de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar só as perdidas"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar só os correos de voz"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Engadir a contactos"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Engadir pausa de 2 segundos"</string>
     <string name="add_wait" msgid="3360818652790319634">"Engadir espera"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Configuración"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Eliminado dos favoritos"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfacer"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Chamar a <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Engadir a contactos"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crear novo contacto"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Engadir a un contacto existente"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Realizar unha videochamada"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Ver historial de chamadas completo"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> chamadas perdidas novas"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"A marcación rápida é unha marcación dun só toque para favoritos e números aos que chamas a miúdo"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Sen contactos"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Toca a imaxe para ver todos os números ou mantena premida para reordenala"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Rexeitar"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Eliminar"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS OS CONTACTOS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"DEVOLVER CHAMADA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"CHAMAR"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"MARCAR DE NOVO"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOCHAMADA"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videochamada"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ESCOITAR"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALLES"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Ver detalles"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Chamada perdida desde <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Chamada respondida desde <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Chamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"en <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Devolver chamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Chamar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Chamar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videochamada a <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Escoitar o correo de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Detalles da chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Eliminouse do historial de chamadas"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Informouse do número a Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"INFORMAR"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Informar"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Hoxe"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Onte"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Anteriores"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Reproducir máis lento."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar ou pausar a reprodución."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Xeral"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opcións de visualización de contactos"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons e vibración"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opcións de visualización"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibración"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilidade"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Ton de chamada do teléfono"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar tamén nas chamadas"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons do teclado de marcación"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Outra"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duración do ton do teclado de marcación"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Longa"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
new file mode 100644
index 0000000..7343f59
--- /dev/null
+++ b/res/values-gu-rIN/strings.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="8490255569343340580">"Dialer"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ફોન"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ફોન"</string>
+    <string name="recentCallsIconLabel" msgid="2639489159797075507">"કૉલ ઇતિહાસ"</string>
+    <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> ને કૉલ કરો"</string>
+    <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"કૉલ કરતાં પહેલાં નંબર સંપાદિત કરો"</string>
+    <string name="recentCalls_addToContact" msgid="1429899535546487008">"સંપર્કોમાં ઉમેરો"</string>
+    <string name="recentCalls_removeFromRecentList" msgid="5551148439199439404">"કૉલ ઇતિહાસમાંથી કાઢી નાખો"</string>
+    <string name="recentCalls_deleteAll" msgid="5157887960461979812">"કૉલ ઇતિહાસ સાફ કરો"</string>
+    <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"વૉઇસમેઇલ કાઢી નાખો"</string>
+    <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"વૉઇસમેઇલ શેર કરો"</string>
+    <string name="recentCalls_empty" msgid="8555115547405030734">"કોઈ કૉલ્સ નથી"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"કૉલ ઇતિહાસ સાફ કરીએ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"આ તમારા ઇતિહાસમાંથી તમામ કૉલ્સ કાઢી નાખશે"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"કૉલ ઇતિહાસ સાફ કરી રહ્યાં છે…"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> વૉઇસમેઇલ્સ </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> વૉઇસમેઇલ્સ </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ચલાવો"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> તરફથી નવો વૉઇસમેઇલ."</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"વૉઇસમેઇલ ચલાવી શકાઈ નથી"</string>
+    <string name="voicemail_buffering" msgid="738287747618697097">"બફર કરી રહ્યું છે…"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"વૉઇસમેઇલ લોડ કરી રહ્યું છે…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"વૉઇસમેઇલ લોડ કરી શકાઈ નથી"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"ફક્ત વૉઇસમેઇલ સાથેના કૉલ્સ"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"ફક્ત ઇનકમિંગ કૉલ્સ"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"ફક્ત આઉટગોઇંગ કૉલ્સ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"ફક્ત છૂટી ગયેલ કૉલ્સ"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"વૉઇસમેઇલ અપડેટ્સ ઉપલબ્ધ નથી"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"નવી વૉઇસમેઇલ રાહ જુએ છે. અત્યારે લોડ કરી શકતાં નથી."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"તમારા વૉઇસમેઇલને સેટ કરો"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ઑડિઓ ઉપલબ્ધ નથી"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"સેટ અપ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"વૉઇસમેઇલ પર કૉલ કરો"</string>
+    <string name="voicemail_speed_slowest" msgid="1733460666177707312">"સૌથી ધીમી ગતિ"</string>
+    <string name="voicemail_speed_slower" msgid="1508601287347216244">"ધીમી ગતિ"</string>
+    <string name="voicemail_speed_normal" msgid="9033988544627228892">"સામાન્ય ગતિ"</string>
+    <string name="voicemail_speed_faster" msgid="2019965121475935488">"ઝડપી ગતિ"</string>
+    <string name="voicemail_speed_fastest" msgid="5758712343491183292">"સૌથી ઝડપી ગતિ"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"નંબર પસંદ કરો"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"નંબર પસંદ કરો"</string>
+    <string name="make_primary" msgid="5829291915305113983">"આ પસંદ યાદ રાખો"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"શોધો"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ડાયલ કરો"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ડાયલ કરવા માટેનો નંબર"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"પ્લેબેક ચલાવો અથવા રોકો"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"સ્પીકરફોન ચાલુ કે બંધ કરો"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"પ્લેબેક સ્થિતિ શોધો"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"પ્લેબેક રેટ ઘટાડો"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"પ્લેબેક રેટ વધારો"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"કૉલ ઇતિહાસ"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"વધુ વિકલ્પો"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ડાયલ પેડ"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"કૉપિ કરો"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"ફક્ત આઉટગોઇંગ દર્શાવો"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"ફક્ત આવનારા દર્શાવો"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"ફક્ત છૂટેલ દર્શાવો"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ફક્ત વૉઇસમેઇલ્સ દર્શાવો"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"તમામ કૉલ્સ દર્શાવો"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-સંકડનો વિરામ ઉમેરો"</string>
+    <string name="add_wait" msgid="3360818652790319634">"પ્રતીક્ષા ઉમેરો"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"સેટિંગ્સ"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"નવો સંપર્ક"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"તમામ સંપર્કો"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"કૉલની વિગતો"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"વિગતો ઉપલબ્ધ નથી"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ટચ ટોન કીપેડનો ઉપયોગ કરો"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"કૉલ પર પાછા આવવું પ્રગતિ પર છે"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"કૉલ ઉમેરો"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"આવનાર કૉલ"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"આઉટગોઇંગ કૉલ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"છૂટેલો કૉલ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"આવનાર વિડિઓ કૉલ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"આઉટગોઇંગ વિડિઓ કૉલ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"વિડિઓ કૉલ ચૂકી ગયાં"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"વૉઇસમેઇલ"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ઇનકમિંગ કૉલ્સ"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"વૉઇસમેઇલ ચલાવો"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> સંપર્ક જુઓ"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> ને કૉલ કરો"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> માટે સંપર્ક વિગતો"</string>
+    <string name="description_new_voicemail" msgid="2133792360865517746">"નવો વૉઇસમેઇલ."</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> કૉલ્સ."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"વિડિઓ કૉલ."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> ને SMS મોકલો"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"વણસાંભળેલ વૉઇસમેઇલ"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"વૉઇસ શોધ શરૂ કરો"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> ને કૉલ કરો"</string>
+    <string name="unknown" msgid="740067747858270469">"અજાણ્યાં"</string>
+    <string name="voicemail" msgid="3851469869202611441">"વૉઇસમેઇલ"</string>
+    <string name="private_num" msgid="6374339738119166953">"ખાનગી નંબર"</string>
+    <string name="payphone" msgid="7726415831153618726">"પેફોન"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> મિ <xliff:g id="SECONDS">%s</xliff:g> સે"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"આ નંબર પર કૉલ કરી શકતાં નથી"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"વૉઇસમેઇલ સેટ કરવા માટે, મેનૂ &gt; સેટિંગ્સ પર જાઓ."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"વૉઇસમેઇલ પર કૉલ કરવા માટે, પહેલાં એરપ્લેન મોડને બંધ કરો."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"લોડ કરી રહ્યું છે..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM કાર્ડમાંથી લોડ કરી રહ્યું છે…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM કાર્ડ સંપર્કો"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"કોઈ સંપર્કો એપ્લિકેશન ઉપલબ્ધ નથી"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"વૉઇસ શોધ ઉપલબ્ધ નથી"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ફોન કૉલ કરી શકાતો નથી કારણ કે ફોન એપ્લિકેશન અક્ષમ કરવામાં આવી છે."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"આ ઉપકરણ પર તે માટે કોઈ એપ્લિકેશન નથી"</string>
+    <string name="dialer_hint_find_contact" msgid="1012544667033887519">"નામ અથવા ફોન નંબર દાખલ કરો"</string>
+    <string name="recentMissed_empty" msgid="4901789420356796156">"કોઈ કૉલ્સ નથી"</string>
+    <string name="recentVoicemails_empty" msgid="8582424947259156664">"કોઈ તાજેતરના વૉઇસમેઇલ્સ નથી"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"ફક્ત મનપસંદ દર્શાવો"</string>
+    <string name="call_log_activity_title" msgid="4612824396355272023">"ઇતિહાસ"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"તમામ"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"છૂટેલ"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"વૉઇસમેઇલ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"સ્પીડ ડાયલ"</string>
+    <string name="tab_recents" msgid="929949073851377206">"તાજેતરના"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"સંપર્કો"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"મનપસંદમાંથી દૂર કર્યું"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"પૂર્વવત્ કરો"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ને કૉલ કરો"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"નવો સંપર્ક બનાવો"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"અસ્તિત્વમાંના સંપર્કમાં ઉમેરો"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS મોકલો"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"વિડિઓ કૉલ કરો"</string>
+    <string name="recents_footer_text" msgid="7315554578957453359">"પૂર્ણ કૉલ ઇતિહાસ જુઓ"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> નવા છૂટેલા કૉલ્સ"</string>
+    <string name="speed_dial_empty" msgid="1931474498966072849">"સ્પીડ ડાયલ એ મનપસંદ અને તમે વારંવાર કૉલ કરો છો તે 1નંબર્સ માટે વન-ટચ ડાયલિંગ છે."</string>
+    <string name="all_contacts_empty" msgid="2299508125100209367">"સંપર્કો નથી"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"બધા નંબર્સ જોવા માટે છબી ટેપ કરો અથવા પુનઃક્રમાંકિત કરવા માટે પકડી રાખો"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"દૂર કરો"</string>
+    <string name="favorites_menu_all_contacts" msgid="992506284449891186">"તમામ સંપર્કો"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"વિડિઓ કૉલ"</string>
+    <string name="call_log_action_voicemail" msgid="4978620572562925654">"સાંભળો"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"વિગતો જુઓ"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> નો છૂટેલ કૉલ"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> નો જવાબી કૉલ"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> પર કૉલ."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> પર"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"કૉલ કરો"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ને કૉલ કરો"</string>
+    <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> પર વિડિઓ કૉલ કરો."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ના વૉઇસમેઇલને સાંભળો"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> માટે કૉલ વિગતો"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"કૉલ ઇતિહાસમાંથી કાઢી નાખી"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"જાણ કરો"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"આજે"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ગઈ કાલે"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"જૂનું"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"કૉલ્સની સૂચિ"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"સ્પીકર ચાલુ કરો."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"સ્પીકર બંધ કરો."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"વધુ ઝડપથી ચલાવો."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"વધુ ધીરેથી ચલાવો."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"પ્લેબેક ચલાવો અથવા થોભાવો"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"પ્રદર્શન વિકલ્પો"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ધ્વનિ અને વાઇબ્રેશન"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ઍક્સેસિબિલિટી"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ફોન રિંગટોન"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"કૉલ્સ માટે વાઇબ્રેટ પણ કરો"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ડાયલપેડ ટોન્સ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dialpad ટોનની લંબાઈ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"સામાન્ય"</item>
+    <item msgid="6177579030803486015">"લાંબુ"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ઝડપી પ્રતિસાદ"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"કૉલ્સ"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"કૉલિંગ એકાઉન્ટ્સ"</string>
+</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 4f353e8..bb06e03 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -21,22 +21,21 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"फ़ोन"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"फ़ोन"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"कॉल इतिहास"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS भेजें"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> को कॉल करें"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"कॉल करने से पहले नंबर संपादित करें"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"संपर्कों में जोड़ें"</string>
     <string name="recentCalls_removeFromRecentList" msgid="5551148439199439404">"कॉल इतिहास से साफ़ करें"</string>
     <string name="recentCalls_deleteAll" msgid="5157887960461979812">"कॉल इतिहास साफ़ करें"</string>
-    <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"ध्वनि मेल हटाएं"</string>
+    <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"वॉयस मेल हटाएं"</string>
     <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"ध्‍वनिमेल साझा करें"</string>
     <string name="recentCalls_empty" msgid="8555115547405030734">"कोई कॉल नहीं"</string>
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"कॉल इतिहास साफ़ करें?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"इससे आपके इतिहास से सभी कॉल हटा दिए जाएंगे"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"कॉल इतिहास साफ़ किया जा रहा है…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"वॉयस मेल"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ध्‍वनिमेल"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> वॉइसमेल </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> वॉइसमेल </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"चलाएं"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> की ओर से नया ध्‍वनिमेल"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"केवल छूटे हुए ही दिखाएं"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"केवल ध्‍वनि‍मेल दि‍खाएं"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"सभी कॉल दि‍खाएं"</string>
-    <string name="add_contact" msgid="4579643070374941999">"संपर्कों में जोड़ें"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2-सेकंड का विराम जोड़ें"</string>
     <string name="add_wait" msgid="3360818652790319634">"प्रतीक्षा का समय बढ़ाएं"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"सेटिंग"</string>
@@ -103,7 +101,7 @@
     <string name="description_view_contact" msgid="5205669345700598415">"<xliff:g id="NAME">%1$s</xliff:g> संपर्क देखें"</string>
     <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> को कॉल करें"</string>
     <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> का संपर्क विवरण"</string>
-    <string name="description_new_voicemail" msgid="2133792360865517746">"नया ध्वनि मेल."</string>
+    <string name="description_new_voicemail" msgid="2133792360865517746">"नया वॉयस मेल."</string>
     <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> कॉल."</string>
     <string name="description_video_call" msgid="2933838090743214204">"वीडियो कॉल."</string>
     <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> को SMS भेजें"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"पसंदीदा से निकाल दिया गया"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"वापस लाएं"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> पर कॉल करें"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"संपर्कों में जोड़ें"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"नया संपर्क बनाएं"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"मौजूदा संपर्क में जोड़ें"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS भेजें"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"वीडियो कॉल करें"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"पूर्ण काल ​​इतिहास देखें"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>  छूटे हुए नए कॉल"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"स्‍पीड डायल उन पसंदीदा लोगों और नंबरों के लिए एक-स्‍पर्श डायलिंग है जिन्‍हें आप अक्‍सर कॉल करते हैं"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"कोई संपर्क नहीं"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"सभी नंबर देखने के लिए चित्र को स्‍पर्श करें या पुन: क्रमित करने के लिए स्‍पर्श करके रखें"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"ख़ारिज करें"</string>
     <string name="remove_contact" msgid="1080555335283662961">"निकालें"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"सभी संपर्क"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"वापस कॉल करें"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"कॉल करें"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"पुन: डायल करें"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"वीडियो कॉल"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"वीडियो कॉल"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"सुनें"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"विवरण"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"विवरण देखें"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> से छूटा हुआ कॉल."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> से आए कॉल का उत्तर दिया गया."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> पर किया गया कॉल."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> पर"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"वापस कॉल करें: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"कॉल करें"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> को कॉल करें"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> को वीडियो कॉल."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> की वॉयस मेल सुनें"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> के कॉल विवरण"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"कॉल इतिहास से हटाएं"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google को नंबर की रिपोर्ट की गई"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"रिपोर्ट करें"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"रिपोर्ट करें"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"आज"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"कल"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"पुराना"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"धीरे चलाएं."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"प्लेबैक प्रारंभ करें या रोकें."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"सामान्य"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"संपर्क प्रदर्शन के विकल्प"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ध्वनि और कंपन"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"प्रदर्शन विकल्प"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ध्‍वनि और कंपन"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"सरल उपयोग"</string>
     <string name="ringtone_title" msgid="760362035635084653">"फ़ोन रिंगटोन"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"कॉल के लिए भी कंपन"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"डायलपैड टोन"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"अन्य"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"डायलपैड टोन की अवधि"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"सामान्य"</item>
+    <item msgid="6177579030803486015">"लंबी"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"झटपट उत्तर"</string>
     <string name="call_settings_label" msgid="313434211353070209">"कॉल"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"कॉलिंग खाते"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 23d7477..9be2d87 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Povijest poziva"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Pošalji SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Nazovi <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Uredi broj prije pozivanja"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Dodaj u kontakte"</string>
@@ -33,10 +32,11 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Želite li izbrisati povijest poziva?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Izbrisat će se svi pozivi iz vaše povijesti"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Brisanje povijesti poziva…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Govorna pošta"</item>
-    <item quantity="other" msgid="5513481419205061254">"Br. govornih pošta: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> poruka govorne pošte </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> poruke govorne pošte </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> poruka govorne pošte </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduciraj"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova govorna pošta od kontakta <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +80,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Prikaži samo propuštene"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Prikaži samo govorne pošte"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Prikaz svih poziva"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Dodaj u kontakte"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj pauzu od 2 sek."</string>
     <string name="add_wait" msgid="3360818652790319634">"Dodaj čekanje"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Postavke"</string>
@@ -141,33 +140,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Uklonjeno iz favorita"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Poništi"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Nazovi <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Dodaj u kontakte"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Izrada novog kontakta"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Dodavanje postojećem kontaktu"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Pošalji SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uputite videopoziv"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Prikaz cijele povijesti poziva"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Broj novih propuštenih poziva: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Brzo biranje omogućuje vam da jednim dodirom birate favorite i brojeve koje često zovete"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Nema kontakata"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Dodirnite sliku da biste vidjeli sve brojeve ili dodirnite i zadržite da biste promijenili raspored"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Odbaci"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Ukloni"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"SVI KONTAKTI"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"POVRATNI POZIV"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"POZOVI"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"PONOVO POZOVI"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOPOZIV"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videopoziv"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"POSLUŠAJTE"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"POJEDINOSTI"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Prikaz pojedinosti"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Propušten poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Prihvaćen poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Poziv: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"na <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Uzvraćanje poziva kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Poziv"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Pozovi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videopoziv upućen kontaktu <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Slušanje govorne pošte kontakta <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Pojedinosti o pozivu za kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Izbrisano iz povijesti poziva"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Broj je prijavljen Googleu"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"PRIJAVI"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Prijavi"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Danas"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Jučer"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Stariji"</string>
@@ -178,13 +175,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Sporija reprodukcija."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Pokretanje ili pauziranje reprodukcije."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Općenito"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opcije prikaza kontakata"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Zvukovi i vibracija"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opcije prikaza"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvukovi i vibracije"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Pristupačnost"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Melodija zvona telefona"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibracija i za pozive"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonovi biranja brojeva"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Ostalo"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duljina zvuka tipkovnice"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Uobičajena"</item>
+    <item msgid="6177579030803486015">"Duga"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Brzi odgovori"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Pozivi"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Pozivanje računa"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index e666d56..8f1f243 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Híváslista"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS küldése"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> hívása"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Szám szerkesztése hívás előtt"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Hozzáadás a névjegyekhez"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Törli a híváslistát?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ezzel törli az összes hívást az előzmények közül"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Híváslista törlése…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Hangposta"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> hangüzenet"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> hangpostaüzenet </item>
+      <item quantity="one">Hangpostaüzenet</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Lejátszás"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Új hangüzenet tőle: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Csak a nem fogadottak"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Csak a hangüzenetek"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Összes hívás megjelenítése"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Hozzáadás a névjegyekhez"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 mp-es szünet hozzáadása"</string>
     <string name="add_wait" msgid="3360818652790319634">"Várakozás hozzáadása"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Beállítások"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Eltávolítva a kedvencek közül"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Visszavonás"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Hívás: <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Hozzáadás a névjegyekhez"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Új névjegy létrehozása"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Hozzáadás a meglévő névjegyhez"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS küldése"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videohívás kezdeményezése"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Teljes híváslista megtekintése"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> új nem fogadott hívás"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"A gyorshívás egyérintéses tárcsázást jelent a kedvenc és gyakran hívott számokhoz"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Nincsenek névjegyek"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Érintse meg a képet az összes szám megjelenítéséhez, vagy tartsa nyomva az átrendezéshez"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Elvetés"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Eltávolítás"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ÖSSZES NÉVJEGY"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"VISSZAHÍVÁS"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"HÍVÁS"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ÚJRATÁRCSÁZÁS"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOHÍVÁS"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videohívás"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"MEGHALLGATÁS"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"RÉSZLETEK"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Részletek megjelenítése"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Elmulasztott hívás: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Fogadott hívás: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Kimenő hívás: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> visszahívása"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telefonhívás"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> hívása"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Kimenő videohívás: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> hangpostaüzenetének meghallgatása"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> – hívásrészletek"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Törölve a híváslistáról"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Szám jelentve a Google-nak"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"BEJELENTÉS"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Jelentés"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Ma"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Tegnap"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Korábbi"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Lassabb lejátszás."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Lejátszás indítása vagy szüneteltetése."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Általános"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Névjegy megjelenítési lehetőségei"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Hangok és rezgés"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Megjelenítési beállítások"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Hangok és rezgés"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Kisegítő lehetőségek"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Telefon csengőhangja"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Rezgés a hívásoknál is"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tárcsázó hangjai"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Egyéb"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tárcsázási hang hossza"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normál"</item>
+    <item msgid="6177579030803486015">"Hosszú"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Gyors válaszok"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Hívások"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Telefonos fiókok"</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index b45b74d..8325f36 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Հեռախոս"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Հեռախոս"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Զանգերի պատմություն"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Ուղարկել SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Զանգել <xliff:g id="NAME">%s</xliff:g>-ին"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Խմբագրել համարը զանգելուց առաջ"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Ավելացնել կոնտակտներում"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Մաքրե՞լ զանգերի պատմությունը:"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Այս գործողությունը ամբողջովին կջնջի զանգերի պատմությունը"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Զանգերի պատմության մաքրում…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Ձայնային փոստ"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ձայնային փոստ </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Նվագարկել"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Նոր ձայնային փոստ <xliff:g id="CALLER">%1$s</xliff:g>-ից"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Ցույց տալ միայն բաց թողնվածները"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Ցուցադրել միայն ձայնային փոստերը"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Ցուցադրել բոլոր զանգերը"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Ավելացնել կոնտակտներում"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Ավելացնել 2 վայրկյան դադար"</string>
     <string name="add_wait" msgid="3360818652790319634">"Ավելացնել սպասում"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Կարգավորումներ"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Հեռացված է ընտրյալներից"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Հետարկել"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Զանգել <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ավելացնել կոնտակտներում"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Ստեղծել նոր կոնտակտ"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Ավելացնել առկա կոնտակտին"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Ուղարկել SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Կատարել տեսազանգ"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Դիտել բոլոր զանգերի պատմությունը"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> նոր բաց թողնված զանգ"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Արագ համարարկումը մեկ հպումով համարի հավաքման եղանակ է՝ ձեր նախընտրած և հաճախակի հավաքվող համարների համար"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Կոտնակտներ չկան"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Բոլոր համարները տեսնելու համար հպեք պատկերին: Վերադասավորելու համար հպեք և պահեք:"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Անտեսել"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Հեռացնել"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ԲՈԼՈՐ ԿՈՆՏԱԿՏՆԵՐԸ"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ՀԵՏ ԶԱՆԳԵԼ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ԶԱՆԳԵԼ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ՆՈՐԻՑ ՀԱՎԱՔԵԼ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ՏԵՍԱԶԱՆԳ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Տեսազանգ"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ԼՍԵԼ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ՄԱՆՐԱՄԱՍՆԵՐ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Տեսնել մանրամասները"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Բաց է թողնվել զանգ <xliff:g id="NAMEORNUMBER">^1</xliff:g> կոնտակտից, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>:"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Ընդունվել է զանգ <xliff:g id="NAMEORNUMBER">^1</xliff:g> կոնտակտից, <xliff:g id="TYPEORLOCATION">^2</xliff:g> , <xliff:g id="TIMEOFCALL">^3</xliff:g> , <xliff:g id="PHONEACCOUNT">^4</xliff:g>:"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Զանգ <xliff:g id="NAMEORNUMBER">^1</xliff:g> կոնտակտին, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>:"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Հետ զանգել <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ին"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Զանգել"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Զանգել <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ին"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Կատարված տեսազանգ՝ <xliff:g id="NAMEORNUMBER">^1</xliff:g>:"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Լսել ձայնային փոստը <xliff:g id="NAMEORNUMBER">^1</xliff:g>-ից"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> զանգի մասին տվյալներ"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Ջնջվել է զանգերի պատմությունից"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Համարը հաղորդվել է Google-ին"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ԶԵԿՈՒՑԵԼ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Հաղորդել"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Այսօր"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Երեկ"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Ավելի հին"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Նվագարկել ավելի դանդաղ:"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Սկսել կամ դադարեցնել նվագարկումը:"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Ընդհանուր"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Կոնտակտի ցուցադրման ընտրանքները"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Զանգերանգ և թրթռազանգ"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Ցուցադրման ընտրանքներ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ձայներ և թրթռում"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Մատչելիություն"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Հեռախոսի զանգերանգ"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Նաև թրթռալ զանգերի ժամանակ"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Թվաշարի ձայներանգներ"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Այլ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Թվաշարի ձայնային ազդանշանի երկարություն"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Սովորական"</item>
+    <item msgid="6177579030803486015">"Երկար"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Արագ պատասխաններ"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Զանգեր"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Հաշիվներ զանգերի համար"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index dead553..2d49c6e 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telepon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telepon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Riwayat panggilan"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Kirim SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Telepon <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit nomor sebelum memanggil"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Tambahkan ke kontak"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Hapus riwayat panggilan?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tindakan ini akan menghapus semua panggilan telepon dari riwayat"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Menghapus riwayat panggilan..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Pesan suara"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Pesan suara"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Pesan suara </item>
+      <item quantity="one">Pesan suara</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Putar"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Pesan suara baru dari <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Tampilkan panggilan terlewat"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Tampilkan pesan suara saja"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Tampilkan semua panggilan"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Tambahkan ke kontak"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Tambahkan jeda 2 dtk"</string>
     <string name="add_wait" msgid="3360818652790319634">"Tambahkan tunggu"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Setelan"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Dihapus dari favorit"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Batalkan"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telepon <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Tambahkan ke kontak"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Buat kontak baru"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Tambahkan ke kontak yang ada"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Kirim SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Lakukan video call"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Lihat riwayat panggilan telepon lengkap"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> panggilan tidak terjawab baru"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Panggilan cepat adalah panggilan satu sentuhan untuk favorit dan nomor yang sering ditelepon"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Tidak ada kontak"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Sentuh foto untuk melihat semua nomor atau sentuh &amp; tahan untuk menyusun ulang"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Tutup"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Hapus"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"SEMUA KONTAK"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"HUBUNGI KEMBALI"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"TELEPON"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"PANGGIL ULANG"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEO CALL"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Panggilan video"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"DENGAR"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETAIL"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Lihat detail"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Panggilan tak terjawab dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Panggilan terjawab dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Panggilan ke <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"di <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Telepon kembali <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telepon"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Telepon <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Video call ke <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Dengarkan kotak pesan dari <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Detail panggilan telepon untuk <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Dihapus dari riwayat panggilan"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nomor dilaporkan ke Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"LAPORKAN"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Laporkan"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Hari ini"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Kemarin"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Lebih lama"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Putar lebih lambat."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Mulai atau jeda pemutaran."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Umum"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opsi tampilan kontak"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Suara dan getaran"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opsi tampilan"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Suara dan getaran"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Aksesibilitas"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Nada dering ponsel"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Juga getar saat ada panggilan"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Nada tombol nomor"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Lainnya"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Panjang nada tombol nomor"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Panjang"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respons cepat"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Panggilan telepon"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Akun panggilan"</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index c987007..5cc1e64 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Sími"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Sími"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Símtalaferill"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Senda SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Hringja í <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Breyta númeri áður en hringt er"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Bæta við tengiliði"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Hreinsa símtalaferil?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Þetta eyðir öllum símtölum af ferlinum"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Hreinsar símtalaferil…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Talhólfsskilaboð"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> talhólfsskilaboð </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spila"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Ný talhólfsskilaboð frá <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Sýna ósvöruð símtöl eingöngu"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Sýna talhólfsskilaboð eingöngu"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Sýna öll símtöl"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Bæta við tengiliði"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Bæta við 2 sekúndna töf"</string>
     <string name="add_wait" msgid="3360818652790319634">"Bæta töf við"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Stillingar"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Fjarlægður úr uppáhaldi"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Afturkalla"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Hringja í <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Bæta við tengiliði"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Búa til nýjan tengilið"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Bæta við fyrirliggjandi tengilið"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Senda SMS-skilaboð"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Hringja myndsímtal"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Skoða símtalaferil í heild"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ný ósvöruð símtöl"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Með hraðvali geturðu hringt með einni snertingu í uppáhaldstengiliðina og númer sem þú hringir oft í"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Engir tengiliðir"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Snertu myndina til að sjá öll númer eða haltu henni inni til að endurraða"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Hunsa"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Fjarlægja"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLIR TENGILIÐIR"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"HRINGJA TIL BAKA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"HRINGJA"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"HRINGJA AFTUR"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"MYNDSÍMTAL"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Myndsímtal"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"HLUSTA"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"UPPLÝSINGAR"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Skoða upplýsingar"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Ósvarað símtal frá <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Svarað símtal frá <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Símtal til <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"í gegnum <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Hringja til baka í <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Hringja"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Hringja í <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Myndsímtal til <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Hlusta á talhólfsskilaboð frá <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Símtalsupplýsingar fyrir <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Eytt af símtalaferli"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Númer tilkynnt til Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"TILKYNNA"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Tilkynna"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Í dag"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Í gær"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Eldra"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Spila hægar."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Hefja eða gera hlé á spilun."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Almennt"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Birtingarkostir fyrir tengiliði"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Hljóð og titringur"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Birtingarvalkostir"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Hljóð og titringur"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Aðgengi"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Hringitónn síma"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Titra líka fyrir símtöl"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tónar takkaborðs"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Annað"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Lengd takkatóns"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Venjulegur"</item>
+    <item msgid="6177579030803486015">"Langur"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Snarsvör"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Símtöl"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Símtalareikningar"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 38289fc..cff42ca 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefono"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefono"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Cronologia chiamate"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Invia SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Chiama <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modifica prima di chiamare"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Aggiungi a contatti"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Cancellare la cronologia chiamate?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Verranno eliminate tutte le chiamate dalla cronologia"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Cancellazione cronologia chiamate…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Segreteria"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> messaggi vocali"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> messaggi in segreteria </item>
+      <item quantity="one">Messaggio in segreteria</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Riproduci"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nuovo messaggio vocale da <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Mostra solo senza risposta"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostra solo messaggi vocali"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostra tutte le chiamate"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Aggiungi a contatti"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Aggiungi pausa 2 sec"</string>
     <string name="add_wait" msgid="3360818652790319634">"Aggiungi attesa"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Impostazioni"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Rimosso dai preferiti"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Annulla"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Chiama <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Aggiungi ai contatti"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Crea nuovo contatto"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Aggiungi a contatto esistente"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Invia SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fai una videochiamata"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Visualizza cronologia completa delle chiamate"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nuove chiamate senza risposta"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"La composizione rapida consente di comporre con un tocco i numeri preferiti e chiamati spesso"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Nessun contatto"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Tocca l\'immagine per visualizzare tutti i numeri, oppure tocca e tieni premuto per cambiare l\'ordine"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ignora"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Rimuovi"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TUTTI I CONTATTI"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"RICHIAMA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"CHIAMA"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"RICHIAMA"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOCHIAMATA"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videochiamata"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ASCOLTA"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETTAGLI"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Visualizza dettagli"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Chiamata senza risposta di <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Risposta alla chiamata di <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Chiamata a <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"da o verso <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Richiama <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Chiama"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Chiama <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videochiamata a <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Ascolta il messaggio vocale di: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Dettagli chiamata per <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Eliminato dalla cronologia chiamate"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numero comunicato a Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"SEGNALA"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Segnala"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Oggi"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ieri"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Meno recenti"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Riproduci più lentamente."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Avvia o metti in pausa la riproduzione."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Generali"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opzioni di visualizzazione dei contatti"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Suoni e vibrazione"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opzioni di visualizzazione"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Suoni e vibrazione"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibilità"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Suoneria telefono"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrazione anche per chiamate"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Toni tastierino"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Altro"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Durata tono tastierino"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normale"</item>
+    <item msgid="6177579030803486015">"Lunga"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Risposte rapide"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Chiamate"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Account chiamate"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 7daddc0..1e01660 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"טלפון"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"טלפון"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"היסטוריית שיחות"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"‏שלח SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"התקשר אל <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ערוך מספר לפני השיחה"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"הוסף לאנשי הקשר"</string>
@@ -33,10 +32,12 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"האם לנקות את היסטוריית השיחות?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"פעולה זו תמחק את כל השיחות מההיסטוריה שלך"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"מנקה היסטוריית שיחות…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"דואר קולי"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> הודעות קוליות"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="two"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> הודעות דואר קולי </item>
+      <item quantity="one">הודעת דואר קולי</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"הפעל"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"דואר קולי חדש מאת <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"הצג רק שיחות שלא נענו"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"הצג הודעות דואר קולי בלבד"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"הצג את כל השיחות"</string>
-    <string name="add_contact" msgid="4579643070374941999">"הוסף לאנשי הקשר"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"הוסף השהיה של 2 שניות"</string>
     <string name="add_wait" msgid="3360818652790319634">"הוסף המתנה"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"הגדרות"</string>
@@ -141,33 +141,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"הוסר מהמועדפים"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"בטל"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"התקשר אל <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"הוסף לאנשי הקשר"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"צור איש קשר חדש"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"הוסף לאיש קשר קיים"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"‏שלח SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"בצע שיחת וידאו"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"הצג את היסטוריית השיחות המלאה"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> שיחות חדשות שלא נענו"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"חיוג מהיר מאפשר לך להתקשר בנגיעה אחת אל מועדפים ומספרים שאליהם אתה מתקשר בתדירות גבוהה"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"אין אנשי קשר"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"גע בתמונה כדי לראות את כל המספרים או גע נגיעה ממושכת כדי לשנות את הסדר"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"סגור"</string>
     <string name="remove_contact" msgid="1080555335283662961">"הסר"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"כל אנשי הקשר"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"התקשר חזרה"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"התקשר"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"חייג שוב"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"שיחת וידאו"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"שיחת וידאו"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"האזן"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"פרטים"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"הצג פרטים"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"שיחה לא נענתה מ-<xliff:g id="NAMEORNUMBER">^1</xliff:g>‏, <xliff:g id="TYPEORLOCATION">^2</xliff:g>‏, <xliff:g id="TIMEOFCALL">^3</xliff:g>‏, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"נענתה שיחה מ-<xliff:g id="NAMEORNUMBER">^1</xliff:g>‏, <xliff:g id="TYPEORLOCATION">^2</xliff:g>‏, <xliff:g id="TIMEOFCALL">^3</xliff:g>‏, <xliff:g id="PHONEACCOUNT">^4</xliff:g>‏."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"שיחה אל <xliff:g id="NAMEORNUMBER">^1</xliff:g>‏, <xliff:g id="TYPEORLOCATION">^2</xliff:g>‏, <xliff:g id="TIMEOFCALL">^3</xliff:g>‏, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"ב-<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"התקשר חזרה אל <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"התקשר"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"התקשר אל <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"שיחת וידאו אל <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"האזן לדואר קולי מאת <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"פרטי שיחה עבור <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"נמחקה מהיסטוריית השיחות"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"‏המספר דווח ל-Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"דווח"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"דווח"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"היום"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"אתמול"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"ישנות יותר"</string>
@@ -178,13 +176,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"הפעל לאט יותר."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"התחל או השהה הפעלה."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"כללי"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"אפשרויות להצגת אנשי קשר"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"צלילים ורטט"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"אפשרויות תצוגה"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"צלילים ורטט"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"נגישות"</string>
     <string name="ringtone_title" msgid="760362035635084653">"רינגטון של טלפון"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"הפעל רטט גם עבור שיחות"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"צלילי לוח החיוג"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"אחר"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"אורך צליל של לוח חיוג"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"רגיל"</item>
+    <item msgid="6177579030803486015">"ארוך"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"תגובות מהירות"</string>
     <string name="call_settings_label" msgid="313434211353070209">"שיחות"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"חשבונות לביצוע שיחות"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 2bc0466..834d6e9 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"電話"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"通話履歴"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMSを送信"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g>に発信"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"発信前に番号を編集"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"連絡先に追加"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"通話履歴を消去しますか?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"消去すると、すべての通話が履歴から削除されます"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"通話履歴の消去中…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"ボイスメール"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g>件のボイスメール"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g>件のボイスメール</item>
+      <item quantity="one">1件のボイスメール</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"再生"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>、<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>から新着ボイスメール"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"不在着信のみを表示"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ボイスメールのみ表示"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"すべての通話を表示"</string>
-    <string name="add_contact" msgid="4579643070374941999">"連絡先に追加"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2秒間の停止を追加"</string>
     <string name="add_wait" msgid="3360818652790319634">"待機を追加"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"設定"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"お気に入りから削除されました"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"元に戻す"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>に発信"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"連絡先に追加"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"新しい連絡先を作成"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"既存の連絡先に追加"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMSを送信"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ビデオハングアウト"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"通話履歴をすべて表示"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>件の不在着信"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"クイックアクセスは、よく通話するお気に入りや番号にワンタップでダイヤルする機能です"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"連絡先がありません"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"画像をタップするとすべての番号を表示でき、押し続けると並べ替えることができます"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"閉じる"</string>
     <string name="remove_contact" msgid="1080555335283662961">"削除"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"すべての連絡先"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"コールバック"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"発信"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"リダイヤル"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ビデオハングアウト"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ビデオハングアウト"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"再生"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"詳細"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"詳細を表示"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="TIMEOFCALL">^3</xliff:g>の<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="PHONEACCOUNT">^4</xliff:g>)からの不在着信。"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="TIMEOFCALL">^3</xliff:g>の<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="PHONEACCOUNT">^4</xliff:g>)からの着信。"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="TIMEOFCALL">^3</xliff:g>の<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="PHONEACCOUNT">^4</xliff:g>)への発信。"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>にコールバック"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"発信"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>に発信します"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>へのビデオハングアウト発信。"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>からのボイスメールを再生"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>の通話の詳細"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"通話履歴から削除しました"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"番号をGoogleに報告しました"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"レポート"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"報告"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"今日"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"昨日"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"以前の着信"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"遅く再生します。"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"再生を開始または一時停止します。"</string>
     <string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"全般"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"連絡先表示オプション"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"音とバイブレーション"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"表示オプション"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"音とバイブレーション"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ユーザー補助機能"</string>
     <string name="ringtone_title" msgid="760362035635084653">"着信音"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"着信時もバイブレーションON"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ダイヤルパッドの音"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"その他"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ダイヤルパッドの音の長さ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"標準"</item>
+    <item msgid="6177579030803486015">"長め"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"クイック返信"</string>
     <string name="call_settings_label" msgid="313434211353070209">"通話"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"通話アカウント"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 1acc159..f0a1686 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ტელეფონი"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ტელეფონი"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"საუბრის ისტორია"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS-ის გაგზავნა"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g>-თან დარეკვა"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ნომრის რედაქტირება დარეკვამდე"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"კონტაქტებში დამატება"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"გასუფთავდეს ზარის ისტორია?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ეს წაშლის ყველა ზარს თქვენი ისტორიიდან"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"მიმდ. ზარ. ისტ. გასუფთავება…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"ხმოვანი ფოსტა"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ხმოვანი ფოსტა"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ხმოვანი ფოსტა </item>
+      <item quantity="one">ხმოვანი ფოსტა</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"დაკვრა"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ახალი ხმოვანი ფოსტა <xliff:g id="CALLER">%1$s</xliff:g>-ისგან"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"მხოლოდ გამოტოვებულის ჩვენება"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"მხოლოდ ხმოვანი ფოსტის ჩვენება"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"ყველა ზარის ჩვენება"</string>
-    <string name="add_contact" msgid="4579643070374941999">"კონტაქტებში დამატება"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"ორწამიანი პაუზის დამატება"</string>
     <string name="add_wait" msgid="3360818652790319634">"ლოდინის დამატება"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"პარამეტრები"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"წაიშალა რჩეულებიდან"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"დაბრუნება"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"დარეკვა <xliff:g id="NUMBER">%s</xliff:g>-ზე"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"კონტაქტებში დამატება"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ახალი კონტაქტის შექმნა"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"არსებულ კონტაქტში დამატება"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS-ის გაგზავნა"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ვიდეოზარის განხორციელება"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"ზარების სრული ისტორიის ნახვა"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ახალი გაცდენილი ზარი"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"სწრაფი დარეკვა არის ერთი შეხებით აკრეფა, რჩეული და ხშირად დარეკილი ნომრებისათვის"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"კონტაქტები არ არის"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"ყველა ნომრის სანახავად შეეხეთ სურათს ან და გეჭიროთ მასზე ხელახალი შეკვეთისათვის"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"დახურვა"</string>
     <string name="remove_contact" msgid="1080555335283662961">"ამოშლა"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ყველა კონტაქტი"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"გადარეკვა"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ზარი"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"განმეორება"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ვიდეოზარი"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ვიდეო ზარი"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"მოსმენა"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"დეტალები"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"დეტალების ნახვა"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"გამოტოვებული ზარი აბონენტისგან: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"უპასუხო ზარი აბონენტისგან <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"ზარი აბონენტთან <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>-ზე"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-ზე გადარეკვა"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"დარეკვა"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"დარეკვა <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"ვიდეოზარი <xliff:g id="NAMEORNUMBER">^1</xliff:g>-თან."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-ის ხმოვანი ფოსტის მოსმენა"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ზარის დეტალები"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"ზარის ისტორიიდან წაშლილი"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google-სათვის შეტყობინებული ნომრები"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"შეტყობინება"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"შეტყობინება"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"დღეს"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"გუშინ"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"უფრო ძველი"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"დაკვრის შენელება."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"დაკვრის დაწყება ან პაუზა."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"ზოგადი"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"კონტაქტის ჩვენების ვარიანტები"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ხმები და ვიბრაცია"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ეკრანის პარამეტრები"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"კინო და ვიბრაცია"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"მარტივი წვდომა"</string>
     <string name="ringtone_title" msgid="760362035635084653">"ტელეფონის ზარი"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ზარებზე ასევე ვიბრირება"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ციფერბლატის ტონები"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"სხვა"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ციფერბლატის ტონის ხანგრძლივობა"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ჩვეულებრივი"</item>
+    <item msgid="6177579030803486015">"გრძელი"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"სწრაფი პასუხი"</string>
     <string name="call_settings_label" msgid="313434211353070209">"ზარები"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"ანგარიშების გამოძახება"</string>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 4c86c5b..4701845 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Қоңыраулар тарихы"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS жіберу"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> нөміріне қоңырау шалу"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Қоңырау алдында нөмірді жөндеңіз"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Контактілерге қосу"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Қоңыраулар тарихын тазалау керек пе?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Бұл тарихтан барлық қоңырауларды жояды"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Қоңыраулар тарихы тазалануда…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Дауыс-хабар"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> дауыс-хабарлар"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> дауыстық хабар </item>
+      <item quantity="one">Дауыстық хабар</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Ойнау"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> жіберген жаңа дауыс-хабар"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Қабылданбағандарды ғана көрсету"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Дауыс-хабарларын ғана көрсету"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Барлық қоңырауларды көрсету"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Контактілерге қосу"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 сек үзіліс қосу"</string>
     <string name="add_wait" msgid="3360818652790319634">"Күтуді қосу"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Параметрлер"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Сүйіктілерден алынған"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Кері орындау"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> нөміріне қоңырау шалу"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Контактілерге қосу"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Жаңа контакт жасау"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Бар контактіге қосу"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS жіберу"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Бейне қоңырау шалу"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Толық қоңыраулар тарихын көру"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> жаңа қабылданбаған қоңыраулар"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Жылдам теру – таңдаулыларды және жиі қоңырау шалатын нөмірлерді бір түртумен теру"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Ешқандай контактілер жоқ"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Барлық нөмірлерді көру үшін түртіңіз немесе ретін өзгерту үшін түртіп, ұстап тұрыңыз"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Бас тарту"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Алып тастау"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"БАРЛЫҚ КОНТАКТІЛЕР"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"КЕРІ ҚОҢЫРАУ ШАЛУ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ҚОҢЫРАУ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"REDIAL"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"БЕЙНЕ ҚОҢЫРАУ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Бейне қоңырау"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ТЫҢДАУ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"МӘЛІМЕТТЕР"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Мәліметтерді көру"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> қоңырауы өткізіп алынды, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> қоңырауына жауап берілді, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> нөміріне қоңырау шалу, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> ішінде"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> кері қоңырау шалу"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Қоңырау шалу"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> нөміріне қоңырау шалу"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Келесіге бейне қоңырау: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дауыстық хабарын тыңдау"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> үшін қоңырау мәліметтері"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Қоңыраулар тарихынан жойылды"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Нөмір туралы Google компаниясына есеп берілді"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ЕСЕП БЕРУ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Есеп"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Бүгін"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Кеше"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Ескілеу"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Баяуырақ ойнату."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Ойнатуды бастау немесе кідірту."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Жалпы"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Контактілерді көрсету опциялары"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Дыбыстар және дірілдеу"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Дисплей опциялары"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Дыбыстар мен діріл"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Арнайы мүмкіндіктер"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Телефон қоңырау әуені"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Сондай-ақ, қоңыраулар үшін дірілдету"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Теру тақтасының үндері"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Басқа"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Теру тақтасы дыбысының ұзындығы"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Қалыпты"</item>
+    <item msgid="6177579030803486015">"Ұзақ"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Жылдам жауаптар"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Қоңыраулар"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Есептік жазбаларға қоңыр. шалу"</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index f0610a3..be5e253 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ទូរសព្ទ"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ទូរស័ព្ទ"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"ប្រវត្តិ​ហៅ"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"ផ្ញើ​សារ SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"ហៅ <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"កែ​លេខ​មុន​ពេល​ហៅ"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"បន្ថែម​ទៅ​ទំនាក់ទំនង"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ជម្រះប្រវត្តិហៅ?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"វានឹងលុបការហៅទាំងអស់ចេញពីប្រវត្តិរបស់អ្នក"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"កំពុងជម្រះប្រវត្តិហៅ…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"សារ​ជា​សំឡេង"</item>
-    <item quantity="other" msgid="5513481419205061254">"សារ​ជា​សំឡេង <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other">សារជាសម្លេង <xliff:g id="COUNT">%1$d</xliff:g> </item>
+      <item quantity="one">សារជាសម្លេង</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ចាក់"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"សារ​ជា​សំឡេង​ថ្មី​ពី <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"បង្ហាញ​តែ​ការ​ខកខាន​ទទួល"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"បង្ហាញ​តែ​សារ​ជា​សំឡេង"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"បង្ហាញ​ការ​ហៅ​ទាំងអស់"</string>
-    <string name="add_contact" msgid="4579643070374941999">"បន្ថែម​ទៅ​ទំនាក់ទំនង"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"បន្ថែម​ការ​ផ្អាក ២វិ."</string>
     <string name="add_wait" msgid="3360818652790319634">"បញ្ចូល​ការ​រង់ចាំ"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"ការកំណត់"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"បាន​លុប​ចេញពី​ទំនាក់ទំនង​ដែល​និយម​ប្រើ"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"មិនធ្វើវិញ"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"ហៅ <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"បន្ថែម​ទៅ​ទំនាក់ទំនង"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"បង្កើតទំនាក់ទំនងថ្មី"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"បន្ថែមទៅទំនាក់ទំនងដែលមានស្រាប់"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ផ្ញើសារ SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ការ​ហៅ​ជា​វីដេអូ"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"មើលប្រវត្តិហៅពេញលេញ"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"ខកខាន​ទទួល​ថ្មី <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"ការហៅទូរស័ព្ទល្បឿនលឿនគឺជាការហៅទូរស័ព្ទដោយគ្រាន់តែចុចមួយពឹក សម្រាប់ទំនាក់ទំនងដែលអ្នកចូលចិត្ត និងលេខដែលអ្នកហៅទៅជាប្រចាំ។"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"មិន​មាន​ទំនាក់ទំនង។"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"ប៉ះរូបភាពដើម្បីមើលលេខទាំងអស់ ឬប៉ះ &amp; សង្កត់ឲ្យជាប់ដើម្បីតម្រៀបឡើងវិញ"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"បដិសេធ"</string>
     <string name="remove_contact" msgid="1080555335283662961">"លុបចេញ"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ទំនាក់ទំនង​ទាំងអស់"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ហៅ​ទៅវិញ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ហៅ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ហៅឡើងវិញ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ការ​ហៅ​ជា​វីដេអូ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ហៅជាវីដេអូ"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ស្ដាប់"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ព័ត៌មាន​លម្អិត"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"មើលព័ត៌មានលម្អិត"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"ខកខានទទួលកាហៅពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>។"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"បានឆ្លើយតបការហៅពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>។"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"ហៅទៅ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>។"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"នៅ <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"ហៅ​ទៅ <xliff:g id="NAMEORNUMBER">^1</xliff:g> វិញ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ហៅ"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"ហៅ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"ការ​ហៅ​ជា​វីដេអូ​ទៅ <xliff:g id="NAMEORNUMBER">^1</xliff:g> ។"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"ស្ដាប់​សារ​ជា​សំឡេង​ពី <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"ព័ត៌មាន​លម្អិត​ហៅ​សម្រាប់ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"បានលុបចេញពីប្រវត្តិហៅ"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"លេខដែលត្រូវបានរាយការណ៍ទៅ Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"របាយការណ៍"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"រាយការណ៍"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"ថ្ងៃនេះ"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"ម្សិលមិញ"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"ចាស់ៗ"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"ចាក់​កាន់តែ​យឺត។"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ចាប់ផ្ដើម ឬ​ផ្អាក​ការ​ចាក់​ឡើងវិញ។"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"ទូទៅ"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"ជម្រើស​បង្ហាញ​ទំនាក់ទំនង"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"សំឡេង​ និង​ញ័រ"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ជម្រើសបង្ហាញ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"សម្លេង និងភាពរំញ័រ"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"លទ្ធភាពប្រើប្រាស់"</string>
     <string name="ringtone_title" msgid="760362035635084653">"សំឡេង​រោទ៍​ទូរស័ព្ទ"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ញ័រ​សម្រាប់​ការ​ហៅ​ផងដែរ"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"សំឡេង​បន្ទះ​លេខ"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"ផ្សេងៗ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"រយៈពេលនៃសម្លេងបន្ទះលេខ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ធម្មតា"</item>
+    <item msgid="6177579030803486015">"វែង"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ឆ្លើយតប​រហ័ស"</string>
     <string name="call_settings_label" msgid="313434211353070209">"ការហៅ"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"គណនីហៅទូរស័ព្ទ"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 09e9e1e..71b1bdf 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ಫೋನ್"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ಫೋನ್"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"ಕರೆ ಇತಿಹಾಸ"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS ಕಳುಹಿಸು"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> ಕರೆ ಮಾಡಿ"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ಕರೆ ಮಾಡುವ ಮೊದಲು ಸಂಖ್ಯೆಯನ್ನು ಸಂಪಾದಿಸಿ"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸು"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ಕರೆ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸುವುದೇ?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ಇದು ನಿಮ್ಮ ಇತಿಹಾಸದಿಂದ ಎಲ್ಲಾ ಕರೆಗಳನ್ನು ಅಳಿಸುತ್ತದೆ"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ಕರೆ ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತಿದೆ…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"ಧ್ವನಿಮೇಲ್"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ಧ್ವನಿಮೇಲ್‌ಗಳು </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ಪ್ಲೇ ಮಾಡು"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> ಇವರಿಂದ ಹೊಸ ಧ್ವನಿಮೇಲ್‌"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"ತಪ್ಪಿಹೋದದ್ದನ್ನು ಮಾತ್ರ ತೋರಿಸು"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ಧ್ವನಿಮೇಲ್‌ಗಳನ್ನು ಮಾತ್ರ ತೋರಿಸು"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"ಎಲ್ಲಾ ಕರೆಗಳನ್ನು ತೋರಿಸು"</string>
-    <string name="add_contact" msgid="4579643070374941999">"ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸು"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2-ಸೆ ವಿರಾಮವನ್ನು ಸೇರಿಸಿ"</string>
     <string name="add_wait" msgid="3360818652790319634">"ನಿರೀಕ್ಷೆಯನ್ನು ಸೇರಿಸಿ"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -142,33 +140,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"ಮೆಚ್ಚಿನವುಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"ರದ್ದುಮಾಡು"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ಕರೆ ಮಾಡಿ"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"ಸಂಪರ್ಕಗಳಿಗೆ ಸೇರಿಸು"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ಹೊಸ ಸಂಪರ್ಕವನ್ನು ರಚಿಸಿ"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಂಪರ್ಕಕ್ಕೆ ಸೇರಿಸಿ"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS ಕಳುಹಿಸು"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ವೀಡಿಯೊ ಕರೆ ಮಾಡಿ"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"ಕರೆಯ ಪೂರ್ಣ ಇತಿಹಾಸವನ್ನು ವೀಕ್ಷಿಸಿ"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ಹೊಸ ತಪ್ಪಿದ ಕರೆಗಳು"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"ಸ್ಪೀಡ್ ಡಯಲ್, ನೀವು ಹೆಚ್ಚಾಗಿ ಕರೆಮಾಡುವ ಮೆಚ್ಚಿನವುಗಳು ಮತ್ತು ಸಂಖ್ಯೆಗಳಿಗೆ ಒಂದು-ಸ್ಪರ್ಶದ ಡಯಲಿಂಗ್‌ ಆಗಿದೆ"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"ಯಾವುದೇ ಸಂಪರ್ಕಗಳಿಲ್ಲ"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"ಎಲ್ಲ ಸಂಖ್ಯೆಗಳನ್ನು ನೋಡಲು ಚಿತ್ರವನ್ನು ಸ್ಫರ್ಶಿಸಿ ಅಥವಾ ಮರುಕ್ರಮಗೊಳಿಸಲು ಸ್ಪರ್ಶಿಸಿ &amp; ಹೋಲ್ಡ್‌ ಮಾಡಿ"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"ವಜಾಗೊಳಿಸಿ"</string>
     <string name="remove_contact" msgid="1080555335283662961">"ತೆಗೆದುಹಾಕು"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ಎಲ್ಲ ಸಂಪರ್ಕಗಳು"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ಮರಳಿ ಕರೆ ಮಾಡಿ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ಕರೆ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ರೀಡಯಲ್"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ವೀಡಿಯೊ ಕರೆ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ವೀಡಿಯೊ ಕರೆ"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ಆಲಿಸಿ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ವಿವರಗಳು"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ರಿಂದ ತಪ್ಪಿದ ಕರೆ."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ರಿಂದ ಕರೆಗೆ ಉತ್ತರಿಸಲಾಗಿದೆ."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ಗೆ ಕರೆ."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> ನಲ್ಲಿ"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಗೆ ಮರಳಿ ಕರೆ ಮಾಡಿ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ಕರೆಮಾಡಿ"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಕರೆ ಮಾಡಿ"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಗೆ ವೀಡಿಯೊ ಕರೆ."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ರಿಂದ ಧ್ವನಿಮೇಲ್ ಆಲಿಸಿ"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ಗೆ ಸಂಪರ್ಕದ ವಿವರಗಳು"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"ಕರೆ ಇತಿಹಾಸದಿಂದ ಅಳಿಸಲಾಗಿದೆ"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google ಗೆ ಸಂಖ್ಯೆಯನ್ನು ವರದಿ ಮಾಡಲಾಗಿದೆ"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ವರದಿ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"ವರದಿ ಮಾಡು"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"ಇಂದು"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"ನಿನ್ನೆ"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"ಹಳೆಯದು"</string>
@@ -179,13 +175,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"ನಿಧಾನವಾಗಿ ಪ್ಲೇ ಮಾಡಿ."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ಪ್ಲೇಬ್ಯಾಕ್‌ ಪ್ರಾರಂಭಿಸಿ ಅಥವಾ ವಿರಾಮಗೊಳಿಸಿ."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"ಸಾಮಾನ್ಯ"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"ಸಂಪರ್ಕ ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳು"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ಧ್ವನಿಗಳು ಹಾಗೂ ವೈಬ್ರೇಟ್‌"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ಪ್ರದರ್ಶನ ಆಯ್ಕೆಗಳು"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ಧ್ವನಿ ಮತ್ತು ವೈಬ್ರೇಷನ್‌"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ಪ್ರವೇಶಿಸುವಿಕೆ"</string>
     <string name="ringtone_title" msgid="760362035635084653">"ಫೋನ್ ರಿಂಗ್‌ಟೋನ್"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ಕರೆಗಳಿಗೂ ಸಹ ವೈಬ್ರೇಟ್‌"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ಡಯಲ್‌ಪ್ಯಾಡ್‌ ಧ್ವನಿಗಳು"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"ಇತರೆ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ಡಯಲ್‌ಪ್ಯಾಡ್‌ ಟೋನ್ ಅಳತೆ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ಸಾಮಾನ್ಯ"</item>
+    <item msgid="6177579030803486015">"ದೀರ್ಘವಾದ"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ತ್ವರಿತ ಪ್ರತಿಕ್ರಿಯೆಗಳು"</string>
     <string name="call_settings_label" msgid="313434211353070209">"ಕರೆಗಳು"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"ಕರೆ ಮಾಡುವ ಖಾತೆಗಳು"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 0c7bd3f..47c10f4 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"전화"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"휴대전화"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"통화 기록"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS 보내기"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"전화걸기: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"통화하기 전에 번호 수정"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"주소록에 추가"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"통화 기록을 삭제하시겠습니까?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"모든 통화가 기록에서 삭제됩니다."</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"통화 기록을 삭제하는 중…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"음성사서함"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g>개의 음성사서함"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other">음성메일 <xliff:g id="COUNT">%1$d</xliff:g>개</item>
+      <item quantity="one">음성메일</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"재생"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>님이 보낸 새 음성사서함"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"부재중 전화만 표시"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"음성사서함만 표시"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"모든 통화 표시"</string>
-    <string name="add_contact" msgid="4579643070374941999">"주소록에 추가"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2초 간 일시 정지 추가"</string>
     <string name="add_wait" msgid="3360818652790319634">"대기 시간 추가"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"설정"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"즐겨찾기에서 삭제됨"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"실행취소"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>에 전화"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"주소록에 추가"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"새 연락처 만들기"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"기존 연락처에 추가"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS 보내기"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"화상 통화하기"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"전체 통화 기록 조회"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"새로운 부재중 전화 <xliff:g id="NUMBER">%s</xliff:g>건"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"단축번호를 지정하면 즐겨찾거나 자주 전화하는 번호를 한 번만 터치하여 전화를 걸 수 있습니다."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"주소록 없음"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"이미지를 터치하여 모든 번호를 확인하거나 길게 터치하여 재정렬합니다."</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"닫기"</string>
     <string name="remove_contact" msgid="1080555335283662961">"삭제"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"모든 연락처"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"전화 걸기"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"통화"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"재발신"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"화상 통화"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"화상 통화"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"듣기"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"세부정보"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"세부정보 보기"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>의 부재중 전화(<xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에게 걸려온 수신 전화(<xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에게 건 전화(<xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>)"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> 계정"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에 전화 걸기"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"통화"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>에 전화 걸기"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"발신 화상 통화: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> 음성사서함 듣기"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>의 통화 세부정보"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"통화 기록에서 삭제했습니다."</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google에 번호를 제출했습니다."</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"신고"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"신고"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"오늘"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"어제"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"이전"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"더 느리게 재생합니다."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"재생을 시작하거나 일시중지합니다."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"일반"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"연락처 표시 옵션"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"소리와 진동"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"표시 옵션"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"소리 및 진동"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"접근성"</string>
     <string name="ringtone_title" msgid="760362035635084653">"전화 벨소리"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"전화 올 때 벨소리와 함께 진동"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"다이얼패드 신호음"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"기타"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"다이얼패드 신호음 길이"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"보통"</item>
+    <item msgid="6177579030803486015">"길게"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"빠른 응답"</string>
     <string name="call_settings_label" msgid="313434211353070209">"통화"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"통화 계정"</string>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 42ca068..aa0bb4d 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -22,7 +22,6 @@
     <!-- no translation found for dialerIconLabel (6500826552823403796) -->
     <skip />
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Чалуулар таржымалы"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS жөнөтүү"</string>
     <!-- no translation found for recentCalls_callNumber (1756372533999226126) -->
     <skip />
     <!-- no translation found for recentCalls_editNumberBeforeCall (7756171675833267857) -->
@@ -37,10 +36,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Чалуулар таржымалы тазалансынбы?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ушуну менен бул таржымалдагы бардык чалуулар жок болот"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Чалуулар таржымалы тазаланууда…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Үнкат"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Үнкат"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Үн каты </item>
+      <item quantity="one">Үн каты</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Угуу"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> жаңы үнкат калтырды"</string>
@@ -88,7 +87,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Өткөз. чалуу-ды гана көрсөтүү"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Үнкаттарды гана көрсөтүү"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Бардык чалууларды көрсөтүү"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Байланыштарга кошуу"</string>
     <!-- no translation found for add_2sec_pause (9214012315201040129) -->
     <skip />
     <!-- no translation found for add_wait (3360818652790319634) -->
@@ -168,33 +166,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Тандамалдардан өчүрүлдү"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Кайтаруу"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Чалуу <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Байланыштарга кошуу"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Жаңы байланыш түзүү"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Учурдагы байланышка кошуу"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS жөнөтүү"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Видео түрүндө чалуу"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Чалуулардын толук таржымалын көрүү"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> жаңы өткөзүлгөн чалуу"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Тез терүү мүмкүнчүлүгү менен, сүйүктүү байланыштарды жана тез-тез чалынган номурларды бир тийип тере аласыз"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Байланыштар жок"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Бардык номурларды көрүү үчүн сүрөткө тийип коюңуз же иреттештирүү үчүн жана коё бербей басып туруңуз"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Жокко чыгаруу"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Алып салуу"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"БАРДЫК БАЙЛАНЫШТАР"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"КАЙРА ЧАЛУУ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ЧАЛУУ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"КАЙРА ТЕРҮҮ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ВИДЕО ЧАЛУУ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видео чалуу"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"УГУУ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ЧОО-ЖАЙ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Чоо-жайын карап көрүү"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> дегенден жооп берилбей калган чалуу."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> дегенден жооп берилген чалуу."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> дегенге чалуу."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> боюнча"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> кайра чалуу"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Чалуу"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> чалуу"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Төмөнкүгө видео чалуу <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> үн катын угуу"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> чалуу чоо-жайы"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Чалуулар таржымалынан жок кылынды"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Номур Google\'га кабарланды"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"КАБАРЛОО"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Кабарлоо"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Бүгүн"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Кечээ"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Мурункураак"</string>
@@ -205,13 +201,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Жайыраак ойнотуу."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Ойнотуп баштоо же бир азга токтотуу"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Жалпы"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Байланышты көрсөтүү параметрлери"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Добуштар жана дирилдөө"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Параметрлерди көрсөтүү"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Үндөр жана титирөө"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Жеткиликтүүлүк"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Телефондун шыңгыры"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Чалуулар үчүн дагы дирилдесин"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Тергичтин үндөрү"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Башка"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Тергич обонунун узундугу"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Орточо"</item>
+    <item msgid="6177579030803486015">"Узун"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Тез жооптор"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Чалуулар"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Чалуу каттоо эсептери"</string>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 662e773..d5794d4 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ໂທລະສັບ"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ໂທລະສັບ"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"ປະຫວັດການໂທ"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"ສົ່ງ SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"ໂທຫາ <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ແກ້ໄຂເບີກ່ອນໂທ"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"ເພີ່ມໃສ່ລາຍຊື່ຜູ່ຕິດຕໍ່"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ລຶບ​ປະ​ຫວັດ​ການ​ໂທ​ບໍ?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ອັນ​ນີ້​ຈະ​ລຶບ​ທຸກ​ສາຍ​ໂທ​ຈາກ​ປະ​ຫວັດ​ຂອງ​ທ່ານ"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ກຳ​ລັງ​ລຶບ​ປະ​ຫວັດ​ການ​ໂທ…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"ຂໍ້ຄວາມສຽງ"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ຂໍ້ຄວາມສຽງ"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ຂໍ້ຄວາມສຽງ </item>
+      <item quantity="one">ຂໍ້ຄວາມສຽງ</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ຫຼິ້ນ"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ບໍ່ມີຂໍ້ຄວາມສຽງຈາກ <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"ສະແດງສະເພາະສາຍບໍ່ໄດ້ຮັບ"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ສະແດງສະເພາະຂໍ້ຄວາມສຽງ"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"ສະແດງການໂທທັງໝົດ"</string>
-    <string name="add_contact" msgid="4579643070374941999">"​ເພີ່ມ​ໃນ​ລາຍ​ຊື່​ຜູ່​ຕິດ​ຕໍ່"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"ເພີ່ມການຂັ້ນເວລາ 2 ວິນາທີ"</string>
     <string name="add_wait" msgid="3360818652790319634">"ເພີ່ມການລໍຖ້າ"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"ການ​ຕັ້ງ​ຄ່າ"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"ລຶບອອກຈາກລາຍການທີ່ມັກແລ້ວ"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"ຍົກເລີກ"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"ໂທ​ຫາ <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"ເພີ່ມໃສ່ລາຍຊື່ຕິດຕໍ່"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ສ້າງລາຍຊື່ໃໝ່"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"ເພີ່ມ​ລາຍ​ຊື່​ທີ່​ມີ​ຢູ່"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ສົ່ງ SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"​ໂທ​ອອກ​ດ້ວຍ​ວິ​ດີ​ໂອ"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"ເບິ່ງ​ປະ​ຫວັດ​ການ​ໂທ​ແບບເຕັມ"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ສາຍທີ່ບໍ່ໄດ້ຮັບໃໝ່"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"ການ​ໂທ​ດ່ວນ​ແມ່ນ​ການ​ກົດ​ໂທ​ດ້ວຍ​ການ​ສຳ​ຜັດ​ເທື່ອ​ດຽວ ສຳ​ລັບ​ລາຍ​ການ​ທີ່​ມັກ ແລະ​ເບີ​ທີ່​ທ່ານ​ໂທ​ຢູ່​ເລື້ອຍ​ໆ"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"ບໍ່ມີລາຍຊື່ຕິດຕໍ່"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"ແຕະ​ຮູບ ເພື່ອ​ເບິ່ງ​ທຸກ​ເລກ​ໝາຍ ຫຼື​ແຕະ &amp; ຄ້າງ​ໄວ້ ເພື່ອ​ບັນ​ທຶກ"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"ເຂົ້າໃຈແລ້ວ"</string>
     <string name="remove_contact" msgid="1080555335283662961">"​ລຶບ​ອອກ"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"​ລາຍ​ຊື່​ຜູ່​ຕິດ​ຕໍ່​ທັງ​ໝົດ"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ໂທ​ກັບ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ໂທ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ໂທ​ຄືນ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ການ​ໂທ​ດ້ວຍ​ວິດີໂອ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"​ໂທ​ດ້ວຍ​ວິ​ດີ​ໂອ"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ຟັງ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ລາຍ​ລະ​ອຽດ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"​ເບິ່ງ​ລາຍ​ລະ​ອຽດ"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"ສາຍ​ບໍ່​ໄດ້​ຮັບ​ຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"ຮັບ​ສາຍ​ໂທ​ຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"ໂທ​ຫາ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"ຢູ່​ເທິງ <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"ໂທ​ກັບ​ຫາ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ໂທ"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"ໂທ​ຫາ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"ການ​ໂທ​ດ້ວຍ​ວິດີໂອ​ຫາ <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"​ຟັງ​ຂໍ້​ຄວາມ​ສຽງ​ຈາກ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"ລາຍລະອຽດ​ການ​ໂທ​ສຳລັບ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"ລຶບ​ຈາກ​ປະ​ຫວັດ​ການ​ໂທ​ແລ້ວ"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"ລາຍ​ງານ​ເລກ​ໝາຍ​ໃຫ້ Google ແລ້ວ"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ລາຍ​ງານ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"ລາຍງານ"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"ມື້ນີ້"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"ມື້​ວານ​ນີ້"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"ເກົ່າກວ່າ"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"ຫຼິ້ນຊ້າລົງ."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ເລີ່ມຫຼືຢຸດ​ການ​ຫຼິ້ນຊົ່ວຄາວ."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"ທົ່ວໄປ"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"​ໂຕ​ເລືອກ​ການ​ສະ​ແດງ​ລາຍ​ຊື່​ຜູ່​ຕິດ​ຕໍ່"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"​ສຽງ ແລະ​ການ​ສັ່ນ​ເຕືອນ"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ຕົວເລືອກການສະແດງຜົນ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ສຽງ ແລະ​ສັ່ນ"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"​ການ​ຊ່ວຍ​ເຂົ້າ​ເຖິງ"</string>
     <string name="ringtone_title" msgid="760362035635084653">"ຣິງໂທນໂທລະສັບ"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ສັ່ນ​ເຕືອນ​ເມື່ອ​ມີ​ການ​ໂທ​ເຂົ້າ"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ສຽງ​ກົດ​ປຸ່ມ​ໂທ"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"ອື່ນໆ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ຄວາມ​ຍາວ​ສຽງ​ແຜ່ນ​ກົດ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ປົກ​ກ​ະ​ຕິ"</item>
+    <item msgid="6177579030803486015">"ຍາວ"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ການຕອບແບບວ່ອງໄວ"</string>
     <string name="call_settings_label" msgid="313434211353070209">"​ການ​ໂທ"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"ບັນ​ຊີ​ໂທ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 8252d85..5edbe9e 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefonas"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefonas"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Skambučių istorija"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Siųsti SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Skambinti <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redaguoti numerį prieš skambutį"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Pridėti prie adresatų"</string>
@@ -33,10 +32,12 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Išvalyti skambučių istoriją?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Bus ištrinti visi skambučiai iš istorijos"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Išvaloma skambučių istorija..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Balso paštas"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešim."</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimas </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimai </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimo </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> balso pašto pranešimų </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Paleisti"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nauji b. pašto pran. iš <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Rodyti tik praleistus"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Rodyti tik balso pšt. praneš."</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Rodyti visus skambučius"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Pridėti prie kontaktų"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Pridėti 2 sek. pauzę"</string>
     <string name="add_wait" msgid="3360818652790319634">"Pridėti laukimą"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Nustatymai"</string>
@@ -141,33 +141,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Pašalintas iš adresyno"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Anuliuoti"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Skambinti numeriu <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Pridėti prie kontaktų"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Kurti naują kontaktą"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Pridėti prie esamo kontakto"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Siųsti SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Atlikti vaizdo skambutį"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Visos skambučių istorijos peržiūra"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Naujų praleistų skambučių: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Spartusis rinkimas – tai į mėgstamiausius įtrauktų ir tų, kuriais dažnai skambinate, numerių rinkimas vienu palietimu"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Kontaktų nėra"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Palieskite vaizdą, kad peržiūrėtumėte visus numerius, arba palieskite ir laikykite, kad pertvarkytumėte"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Atsisakyti"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Pašalinti"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"VISI KONTAKTAI"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ATSKAMBINTI"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"SKAMBINTI"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"PERRINKTI"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VAIZDO SKAMBUTIS"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Vaizdo skambutis"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"KLAUSYTI"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"IŠSAMI INFORMACIJA"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Peržiūrėti išsamią informaciją"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Praleistas skambutis: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Atsakytas skambutis: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Skambutis: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Atskambinti <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Skambinti"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Skambinti <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Atliktas vaizdo skambutis: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Klausyti balso pašto nuo <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Išsami skambučio informacija (<xliff:g id="NAMEORNUMBER">^1</xliff:g>)"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Ištrinta iš skambučių istorijos"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numeris praneštas „Google“"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"PRANEŠTI"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Pranešti"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Šiandien"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Vakar"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Senesni"</string>
@@ -178,13 +176,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Leisti lėčiau."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Pradėti arba pristabdyti atkūrimą."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Bendrieji"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktų rodymo parinktys"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Garsai ir vibravimas"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Pateikties parinktys"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Garsai ir vibravimas"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Pritaikymas neįgaliesiems"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Telefono skambėjimo tonas"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Taip pat vibruoti, kai skamb."</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Skambinimo skydelio garsai"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Kita"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Skambinimo skydelio tono trukmė"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Įprastas"</item>
+    <item msgid="6177579030803486015">"Ilgas"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Greiti atsakai"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Skambučiai"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Skambinimo paskyros"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 19c030e..e020c18 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Tālrunis"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Zvanīt"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Zvanu vēsture"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Sūtīt īsziņu"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Zvanīt: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Rediģēt numuru pirms zvanīšanas"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Pievienot kontaktpersonām"</string>
@@ -33,10 +32,11 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vai dzēst zvanu vēsturi?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Tiks dzēsti visi vēsturē saglabātie zvani."</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Notiek zvanu vēstures dzēšana…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Balss pasts"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojums(-i)"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="zero"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojumi </item>
+      <item quantity="one"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojums </item>
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> balss pasta ziņojumi </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Atskaņot"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Jauns b. pasta ziņ. no: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +80,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Rādīt tikai neatbildētos zvanus"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Rādīt tikai balss pasta ziņ."</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Rādīt visus zvanus"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Pievienot kontaktpersonām"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Pievienot 2 sekundes ilgu pauzi"</string>
     <string name="add_wait" msgid="3360818652790319634">"Pievienot gaidīšanu"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Iestatījumi"</string>
@@ -141,33 +140,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Noņemts no izlases"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Atsaukt"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Zvaniet: <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Pievienot kontaktpersonām"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Izveidot jaunu kontaktpersonu"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Pievienot esošai kontaktpersonai"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Sūtīt īsziņu"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Veikt videozvanu"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Visas zvanu vēstures skatīšana"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Jauni neatbildēti zvani: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Izmantojot ātros zvanus, varat ar vienu pieskārienu zvanīt kontaktpersonām, kuras ir pievienotas jūsu izlasei vai kurām bieži zvanāt."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Nav kontaktpersonu"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Pieskarieties attēlam, lai skatītu visus numurus, vai pieskarieties attēlam un turiet to, lai veiktu pārkārtošanu."</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Noraidīt"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Noņemt"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"VISAS KONTAKTPERSONAS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ATZVANĪT"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ZVANĪT"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ATKĀRTOTI ZVANĪT"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOZVANS"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videozvans"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"KLAUSĪTIES"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALIZĒTA INFORMĀCIJA"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Skatīt detalizētu informāciju"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Neatbildēts zvans no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Atbildēts zvans no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Izejošs zvans: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"kontā <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Atzvanīt: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Zvanīt"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Zvanīt: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Izejošs videozvans: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Klausīties balss pasta ziņojumu no: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Zvanu informācija par šādu numuru: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Dzēsts no zvanu vēstures."</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numurs tika nosūtīts Google serveriem."</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ZIŅOT"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Ziņot"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Šodien"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Vakar"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Vecāki zvani"</string>
@@ -178,13 +175,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Atskaņot lēnāk."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Sākt vai apturēt atskaņošanu."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Vispārīgi"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktpersonu rādīšanas opcijas"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Skaņas un vibrācija"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Attēlojuma opcijas"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Skaņas un vibrācija"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Pieejamība"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Tālruņa zvana signāls"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Izmantot vibrozvanu zvaniem"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Numura sast. tastatūras toņi"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Citi"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Numuru tastatūras signāla ilgums"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Parasts"</item>
+    <item msgid="6177579030803486015">"Ilgs"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Ātrās atbildes"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Zvani"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Zvanu konti"</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index f999c0b..f1fbfdc 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Историја на повици"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Испрати СМС"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Повикај <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Уреди број пред повик"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Додај во контакти"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Избришете историја на повици?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ова ќе ги избрише сите повици од историјата"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Се чисти историјата на повици…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Говорна пошта"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> говорни пораки"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> говорна порака </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> говорни пораки </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Пушти"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова говорна пошта од <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Прикажи само пропуштени"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Прикажи само говорни пораки"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Прикажи ги сите повици"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Додај во контакти"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Додај пауза од 2 сек"</string>
     <string name="add_wait" msgid="3360818652790319634">"Додај почекај"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Поставки"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Отстранет од омилени"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Врати"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Повикај <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Додај во контакти"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Создај нов контакт"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Додај во постоечки контакт"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Испрати СМС"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Остварете видеоповик"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Погледнете цела историја на повик"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> нови пропуштени повици"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Брзото бирање е бирање со еден допир на омилените и броевите кои често ги повикувате"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Нема контакти"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Допрете ја сликата за да ги видите сите броеви или допрете и држете за промена на редоследот"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Отфрли"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Отстрани"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"СИТЕ КОНТАКТИ"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ПОВИКАЈ НАЗАД"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ПОВИКАЈ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"БИРАЈ ПОВТОРНО"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ВИДЕОПОВИК"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видеоповик"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"СЛУШАЈТЕ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ДЕТАЛИ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Прикажи детали"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропуштен повик од <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Одговорен повик од <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Повик до <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"на <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Возвратете го повикот на <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Повикај"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Повикај <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Видеоповик до <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Слушајте говорна пошта од <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Информации на повикот за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Избришано од историјата на повици"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Бројот е пријавен во Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ПРИЈАВИ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Извештај"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Денес"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Вчера"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Постари"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Репродуцирајте побавно."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Запрете ја или паузирајте ја репродукцијата."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Општо"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Опции за прикажување контакт"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звуци и вибрации"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Опции за екран"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуци и вибрации"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Пристапност"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Мелодија на телефон"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибрации и за повици"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Тонови на подлогата за бирање"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Друго"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Должина на тонот на подлогата за бирање"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Нормално"</item>
+    <item msgid="6177579030803486015">"Долго"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Брзи одговори"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Повици"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Сметки за повикување"</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index b348585..93fc36e 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ഫോണ്‍"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ഫോണ്‍"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"കോള്‍‌ ചരിത്രം"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS അയയ്ക്കുക"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> എന്നതിൽ വിളിക്കുക"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"കോൾ ചെയ്യുന്നതിന് മുമ്പായി നമ്പർ എഡിറ്റുചെയ്യുക"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"കോൺടാക്റ്റുകളിൽ ചേർക്കുക"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"കോൾ ചരിത്രം മായ്‌ക്കണോ?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ഇത് നിങ്ങളുടെ ചരിത്രത്തിൽ നിന്ന് എല്ലാ കോളുകളും ഇല്ലാതാക്കും"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"കോൾ ചരിത്രം മായ്‌ക്കുന്നു..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"വോയ്‌സ്‌മെയിൽ"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> വോയ്‌സ്മെയിലുകൾ"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> വോയ്‌സ്‌മെയിലുകൾ </item>
+      <item quantity="one">വോയ്‌സ്‌മെയിൽ</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"പ്ലേ ചെയ്യുക"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> എന്നയാളിൽ നിന്നുള്ള പുതിയ വോയ്‌സ്‌മെയിൽ"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"മിസ്‌ഡ് മാത്രം കാണിക്കുക"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"വോയ്‌സ്‌മെയിലുകൾ മാത്രം കാണിക്കുക"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"എല്ലാ കോളുകളും കാണിക്കുക"</string>
-    <string name="add_contact" msgid="4579643070374941999">"കോൺടാക്‌റ്റുകളിൽ ചേർക്കുക"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 സെക്കൻഡ് താൽക്കാലികമായി നിർത്തൽ ചേർക്കുക"</string>
     <string name="add_wait" msgid="3360818652790319634">"കാത്തിരിക്കൽ ചേർക്കുക"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"ക്രമീകരണങ്ങൾ"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"പ്രിയപ്പെട്ടവയിൽ നിന്നും നീക്കംചെയ്‌തു"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"പഴയപടിയാക്കുക"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> എന്നതിൽ വിളിക്കുക"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"കോൺടാക്റ്റുകളിൽ ചേർക്കുക"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"പുതിയ കോൺടാക്റ്റ് സൃഷ്‌ടിക്കുക"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"നിലവിലുള്ള കോൺടാക്റ്റിലേക്ക് ചേർക്കുക"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS അയയ്ക്കുക"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"വീഡിയോ കോൾ ചെയ്യുക"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"മുഴുവൻ കോൾ ചരിത്രവും കാണുക"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> പുതിയ മിസ്‌ഡ് കോളുകൾ"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"നിങ്ങൾ ഇടയ്ക്കിടെ വിളിക്കുന്ന പ്രിയപ്പെട്ടവർക്കും നമ്പറുകൾക്കുമായി ഒരൊറ്റ സ്പർശനത്തിൽ ഡയൽ ചെയ്യുന്ന സവിശേഷതയാണ് സ്‌പീഡ് ഡയൽ"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"കോൺടാക്റ്റുകളൊന്നുമില്ല"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"എല്ലാ നമ്പറുകളും കാണാൻ ചിത്രം സ്‌പർശിക്കുക അല്ലെങ്കിൽ വീണ്ടും ക്രമീകരിക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"നിരസിക്കുക"</string>
     <string name="remove_contact" msgid="1080555335283662961">"നീക്കംചെയ്യുക"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"എല്ലാ കോൺ‌ടാക്റ്റുകളും"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"തിരിച്ചുവിളിക്കുക"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"കോൾ ചെയ്യുക"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"വീണ്ടും ഡയൽ ചെയ്യുക"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"വീഡിയോ കോൾ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"വീഡിയോ കോള്‍"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"കേൾക്കുക"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"വിശദാംശങ്ങൾ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"വിശദാംശങ്ങൾ കാണുക"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> എന്നതിൽ നിന്നുള്ള മിസ്ഡ് കോൾ."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> എന്നതിൽ നിന്നുള്ള മറുപടി നൽകിയ കോൾ."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> എന്നതിലേക്കുള്ള കോൾ."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> എന്നതിൽ"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നയാളെ തിരിച്ചുവിളിക്കുക"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"വിളിക്കുക"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> വിളിക്കുക"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നയാൾക്കുള്ള വീഡിയോ കോൾ."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നയാളിൽ നിന്നുള്ള വോയ്‌സ്മെയിൽ കേൾക്കുക"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> എന്നയാളുടെ കോൾ വിശദാംശങ്ങൾ"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"കോൾ ചരിത്രത്തിൽ നിന്ന് ഇല്ലാതാക്കി"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google-ലേക്ക് നമ്പർ റിപ്പോർട്ടുചെയ്‌തു"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"റിപ്പോർട്ടുചെയ്യുക"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"റിപ്പോർട്ടുചെയ്യുക"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"ഇന്ന്"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"ഇന്നലെ"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"പഴയത്"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"കുറഞ്ഞവേഗതയിൽ പ്ലേചെയ്യുക."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"പ്ലേബാക്ക് ആരംഭിക്കുകയോ താൽക്കാലികമായി നിർത്തുകയോ ചെയ്യുക."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"പൊതുവായത്"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"കോൺടാക്‌റ്റ് ഡിസ്പ്ലേ ഓപ്ഷനുകൾ"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ശബ്‌ദങ്ങളും വൈബ്രേറ്റുചെയ്യലും"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ഡിസ്‌പ്ലേ ഓപ്‌ഷനുകൾ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ശബ്‌ദവും വൈബ്രേഷനും"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"പ്രവേശനക്ഷമത"</string>
     <string name="ringtone_title" msgid="760362035635084653">"ഫോൺ റിംഗ്ടോൺ"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"കോളുകൾക്കായും വൈബ്രേറ്റ് ചെയ്യും"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ഡയൽപാഡ് ടോണുകൾ"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"മറ്റുള്ളവ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ഡയൽപാഡ് ടോണിന്റെ ദൈർഘ്യം"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"സാധാരണം"</item>
+    <item msgid="6177579030803486015">"ദൈർഘ്യമുള്ളത്"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ദ്രുത പ്രതികരണങ്ങൾ"</string>
     <string name="call_settings_label" msgid="313434211353070209">"കോളുകൾ"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"കോളുചെയ്യാനുള്ള അക്കൗണ്ട്"</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 855e45f..f2643d0 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Утас"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Утас"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Дуудлагын түүх"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Мессеж илгээх"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> руу залгах"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Дуудлага хийхийн өмнө дугаарыг засах"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Харилцагчдад нэмэх"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Дуудлагын түүхийг устгах уу?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Энэ нь таны хийсэн бүх дуудлагыг түүхээс устгана."</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Дуудлагын түүхийг устгаж байна..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Дуут шуудан"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Дуут шуудан"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Дуут шуудан </item>
+      <item quantity="one">Дуут шуудан</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Тоглуулах"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>-с ирсэн шинэ дуут шуудан"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Зөвхөн аваагүй дуудлагуудыг харуулах"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Зөвхөн дуут шуудангуудыг харуулах"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Бүх дуудлагыг харуулах"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Харилцагчдад нэмэх"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2-сек зогсолт нэмэх"</string>
     <string name="add_wait" msgid="3360818652790319634">"Хүлээлт нэмэх"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Тохиргоо"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Дуртай жагсаалтаас хасав"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Буцаах"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> руу залгах"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Харилцагчдад нэмэх"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Шинэ хаяг үүсгэх"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Байгаа хаяганд нэмэх"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Мессеж илгээх"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Видео дуудлага хийх"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Дуудлагын түүхийг бүхэлд нь харах"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> шинэ аваагүй дуудлага"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Түргэн залгалт нь шууд автоматаар таныг дотнын хүмүүс болон байнга холбогддог дугааруудтай чинь холбож өгнө."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Харилцагчид байхгүй"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Бүх дугаарыг харахын тулд зурган дээр дарна уу эсвэл жагсаалтыг өөрчлөхийн тулд удаан дарна уу."</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Хаах"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Хасах"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"БҮХ ХАРИЛЦАГЧИД"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"БУЦААЖ ЗАЛГАХ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ЗАЛГАХ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ДАХИН ЗАЛГАХ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ВИДЕО ДУУДЛАГА"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видео дуудлага"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"СОНСОХ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ДЭЛГЭРЭНГҮЙ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Дэлгэрэнгүй үзэх"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Дараах дуудлагыг хүлээн аваагүй <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Дараах дуудлагыг хүлээн авсан <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Дараах дугаар луу залгасан <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>-р залгасан"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> руу буцаж залгах"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Дуудлага"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> руу дуудлага хийх"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> руу видео дуудлага."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>-н дуут шууданг сонсох"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> дуудлагын дэлгэрэнгүй мэдээлэл"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Дуудлагын түүхээс устгагдсан"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Тус дугаарын талаар Google-д мэдээллээ"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ТАЙЛАН"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Мэдэгдэх"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Өнөөдөр"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Өчигдөр"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Хуучин"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Удаан тоглуулах."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Тоглуулахыг эхлүүлэх буюу түр зогсоох."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Ерөнхий"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Харилцагчийн харагдах сонголт"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Хонхны ая болон чичиргээ"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Сонголтуудыг харуулах"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Дуу болон чичиргээ"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Хандалт"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Утасны хонхны ая"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Дуудлагад бас чичрэх"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Диалпадын ая"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Бусад"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Дугаар цуглуулах хэсгийн дохионы урт"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Энгийн"</item>
+    <item msgid="6177579030803486015">"Урт"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Шуурхай хариунууд"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Дуудлага"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Дуудах акаунт"</string>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index efdb5c9..1b87c87 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"फोन"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"फोन"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"कॉल इतिहास"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS पाठवा"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> ला कॉल  करा"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"कॉल करण्यापूर्वी नंबर संपादित करा"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"संपर्कांमध्ये जोडा"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"कॉल इतिहास साफ करायचा?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"हे आपल्या कॉल इतिहासातून सर्व कॉल हटवेल"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"कॉल इतिहास साफ करत आहे…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"व्हॉइसमेल"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> व्‍हॉइसमेल"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> व्हॉइसमेल </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> व्हॉइसमेल </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"प्ले करा"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> कडील नवीन व्हॉइसमेल"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"केवळ सुटलेले दर्शवा"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"केवळ व्हॉइसमेल दर्शवा"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"सर्व कॉल दर्शवा"</string>
-    <string name="add_contact" msgid="4579643070374941999">"संपर्कांमध्ये जोडा"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2-सेकंद विराम जोडा"</string>
     <string name="add_wait" msgid="3360818652790319634">"प्रतीक्षा करा जोडा"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"सेटिंग्ज"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"आवडी मधून काढले"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"पूर्ववत करा"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ला कॉल  करा"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"संपर्कांमध्ये जोडा"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"नवीन संपर्क तयार करा"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"विद्यमान संपर्कामध्‍ये जोडा"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS पाठवा"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"व्‍हिडिओ कॉल करा"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"संपूर्ण कॉल इतिहास पहा"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> नवीन सुटलेले कॉल"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"स्पीड डायल हे आवडींसाठी आणि आपण नेहमी कॉल करता त्या नंबरसाठी एकदाच-स्पर्श करण्याचे डायलिंग आहे"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"कोणतेही संपर्क नाहीत"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"सर्व नंबर पाहण्यासाठी प्रतिमेस स्पर्श करा किंवा पुन्हा क्रम लावण्यासाठी स्पर्श करा आणि धरून ठेवा"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"डिसमिस करा"</string>
     <string name="remove_contact" msgid="1080555335283662961">"काढा"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"सर्व संपर्क"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"परत कॉल करा"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"कॉल करा"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"रीडायल करा"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"व्हिडिओ कॉल"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"व्हिडिओ कॉल"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ऐका"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"तपशील"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"तपशील पहा"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> वरून कॉल सुटला."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> वरून कॉलला उत्तर दिले."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> वर कॉल करा."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> वर"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ला परत कॉल करा"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"कॉल करा"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> वर कॉल करा"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> व्हिडिओ कॉल करा."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> कडील व्हॉइसमेल ऐका"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> साठी कॉल तपशील"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"कॉल इतिहासातून हटविले"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google कडे नंबरचा अहवाल दिला"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"अहवाल द्या"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"अहवाल द्या"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"आज"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"काल"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"अधिक जुने"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"अधिक धीमे प्ले करा."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"प्लेबॅक प्रारंभ करा किंवा त्यास विराम द्या."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"सामान्य"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"संपर्क प्रदर्शन पर्याय"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ध्वनी आणि कंपन"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"पर्याय प्रदर्शित करा"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ध्वनी आणि कंपने"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"प्रवेशयोग्यता"</string>
     <string name="ringtone_title" msgid="760362035635084653">"फोन रिंगटोन"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"कॉल साठी कंपन देखील करा"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"डायलपॅड टोन"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"अन्य"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"डायलपॅड टोन लांबी"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"सामान्य"</item>
+    <item msgid="6177579030803486015">"लांब"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"द्रुत प्रतिसाद"</string>
     <string name="call_settings_label" msgid="313434211353070209">"कॉल"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"कॉल करण्याची खाती"</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 874e30c..6035bb2 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Sejarah panggilan"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Hantar SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Panggil <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edit nombor sebelum panggilan"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Tambah ke kenalan"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Kosongkan sejarah panggilan?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Langkah ini akan memadamkan semua panggilan dari sejarah anda"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Mengosongkan sejarah panggilan..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Mel suara"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Mel suara"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Mel suara </item>
+      <item quantity="one">Mel suara</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Main"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Mel suara baru daripada <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Tunjuk panggilan terlepas shj"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Tunjukkan mel suara sahaja"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Tunjukkan semua panggilan"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Tambahkan pada kenalan"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Tambah jeda 2 saat"</string>
     <string name="add_wait" msgid="3360818652790319634">"Tambah penungguan"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Tetapan"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Dialih keluar daripada kegemaran"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Buat asal"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Panggil <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Tambahkan pada kenalan"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Buat kenalan baharu"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Tambah kepada kenalan sedia ada"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Hantar SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Buat panggilan video"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Lihat sejarah panggilan penuh"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> panggilan terlepas baharu"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Dail laju ialah pendailan satu sentuhan untuk kegemaran dan nombor yang kerap anda hubungi"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Tiada kenalan"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Sentuh imej untuk melihat semua nombor atau sentuh &amp; tahan untuk menyusun semula"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ketepikan"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Alih keluar"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"SEMUA KENALAN"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"PANGGIL BALIK"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"PANGGIL"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"DAIL SEMULA"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"PANGGILAN VIDEO"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Panggilan video"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"DENGAR"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"BUTIRAN"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Lihat butiran"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Panggilan tidak dijawab daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Panggilan telah dijawab daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Buat panggilan kepada <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"pada <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Panggil balik <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Panggil"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Panggil <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Panggilan video kepada <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Dengar mel suara daripada <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Butiran panggilan untuk <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Dipadamkan dari sejarah panggilan"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nombor dilaporkan kepada Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"LAPORKAN"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Laporkan"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Hari ini"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Semalam"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Lebih lama"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Main lebih perlahan."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Mulakan atau jeda main balik."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Umum"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Pilihan paparan kenalan"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Bunyi dan getaran"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Pilihan paparan"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Bunyi dan getaran"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Kebolehaksesan"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Nada dering telefon"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Juga bergetar untuk panggilan"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Nada pad dail"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Lain-lain"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Panjang nada pad dail"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Biasa"</item>
+    <item msgid="6177579030803486015">"Panjang"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respons pantas"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Panggilan"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Akaun panggilan"</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index dde4b25..12b1115 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ဖုန်း"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ဖုန်း"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"ခေါ်ဆိုမှု မှတ်တမ်း"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"စာတို ပို့ရန်"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> ကိုခေါ်ပါ"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ဖုန်းမခေါ်ခင် နံပါတ်အားပြင်ရန်"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"လိပ်စာများထဲသို့ ထည့်ပါ"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ခေါ်ဆိုမှု မှတ်တမ်းကို ရှင်းပစ်ရမလား?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ဒါက သင့် မှတ်တမ်းထဲက ခေါ်ဆိုမှုများ  အားလုံးကို ဖျက်ပစ်မည်"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ခေါ်ဆိုမှု မှတ်တမ်းကို ရှင်းနေ…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"အသံစာပို့စနစ်"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> အသံစာများ"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> အသံမေးလ်များ </item>
+      <item quantity="one"> အသံမေးလ်</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"နားထောင်သည်"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> ဆီမှ အသံစာ အသစ်"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"လွတ်သွားသော ခေါ်ဆိုမှုများသာပြပါ"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"အသံပို့စာများသာ ပြပါ"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"ဖုန်းခေါ်မှုအားလုံးပြရန်"</string>
-    <string name="add_contact" msgid="4579643070374941999">"အဆက်အသွယ်များ ထဲသို့ ထည့်ရန်"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"၂စက္ကန့်ရပ်ဆိုင်းရန် ထည့်ပါ"</string>
     <string name="add_wait" msgid="3360818652790319634">"စောင့်ဆိုင်းခြင်း ထည့်ပါ"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"ဆက်တင်များ"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"အနှစ်သက်ဆုံးများထဲမှာ ထုတ်လိုက်ပါပြီ"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"နောက်ပြန်လုပ်ပါ"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ကိုခေါ်ပါ"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"လိပ်စာများထဲသို့ ထည့်ပါ"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"အဆက်အသွယ် အသစ် ဖန်တီးရန်"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"လက်ရှိ အဆက်အသွယ်တွင်း ထည့်ရန်"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"စာတို ပို့ရန်"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ဗီဒီယို ခေါ်ဆိုမှု ပြုလုပ်ရန်"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"ခေါ်ဆိုမှု မှတ်တမ်း အပြည့်ကို ကြည့်ရန်"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"လွတ်သွားသောဖုန်း <xliff:g id="NUMBER">%s</xliff:g> ခါ"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"အမြန် နံပါတ်လှည့်မှုမှာ စိတ်ကြိုက်များ နှင့် သင်မကြာခဏ ခေါ်သည့် နံပါတ်များကို တစ်ချက်နှိပ် နံပါတ်လှည့်မှု ဖြစ်သည်"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"အဆက်အသွယ်များ မရှိ"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"နံပါတ်များ အားလုံးကိုကြည့်ရန် ပုံကို ထိပါ သို့မဟုတ် ပြန်စီရန် ထိလျက် &amp; ကိုင်ထားပါ"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"လွှတ်လိုက်သည်"</string>
     <string name="remove_contact" msgid="1080555335283662961">"ဖယ်ရှာခြင်း"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"အဆက်အသွယ်များအားလုံး"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ပြန် ခေါ်ဆိုမှု"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ခေါ်ရန်"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ထပ်ခေါ်ရန်"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ဗီဒီယို ခေါ်ဆိုမှု"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ဗီဒီယို ခေါ်ဆိုမှု"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"နားထောင်ရန်"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"အသေးစိတ်များ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"အသေးစိတ်များကို ကြည့်မည်"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၊ <xliff:g id="TYPEORLOCATION">^2</xliff:g>၊ <xliff:g id="TIMEOFCALL">^3</xliff:g>၊ <xliff:g id="PHONEACCOUNT">^4</xliff:g> မှ ခေါ်ဆိုမှု လွတ်သွား၏။"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၊ <xliff:g id="TYPEORLOCATION">^2</xliff:g>၊ <xliff:g id="TIMEOFCALL">^3</xliff:g>၊ <xliff:g id="PHONEACCOUNT">^4</xliff:g> မှ ခ​ေါ်ဆိုမှုအား ဖြေထား၏။"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၊ <xliff:g id="TYPEORLOCATION">^2</xliff:g>၊ <xliff:g id="TIMEOFCALL">^3</xliff:g>၊ <xliff:g id="PHONEACCOUNT">^4</xliff:g> အား ခေါ်ခြင်း။"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> ၌"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ကို ပြန် ခေါ်ဆိုပါ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ခေါ်ဆိုမှု"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> အားခေါ်ရန်"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ထံသို့ ဗီဒီယို ခေါ်ဆိုမှု"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ထံမှ အသံစာကို နားထောင်ရန်"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>၏ ခေါ်ဆိုမှု အသေးစိတ်များ"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"ခေါ်ဆိုမှု မှတ်တမ်းထဲမှ ဖျက်ပစ်ခဲ့"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"နံပါတ်ကို Google ထံသို့ အစီရင်ခံပြီး"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"အစီရင်ခံရန်"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"သတင်းပို့ပါ"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"ယနေ့"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"မနေ့က"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"ပိုဟောင်းသော"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"ပိုနှေးစွာ ကစားရန်"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ဖွင့်မှု စတင် သို့မဟုတ် ဆိုင်းငံ့ရန်"</string>
     <string name="list_delimeter" msgid="4571593167738725100">"၊ "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"အထွေထွေ"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"အဆက်အသွယ် ပြသမှု ရွေးစရာများ"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"အသံနှင့် တုန်ခါမှု"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ပြသမှုအတွက်ရွေးစရာများ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"အသံများနှင့် တုန်ခါမှု"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ရယူသုံးနိုင်မှု"</string>
     <string name="ringtone_title" msgid="760362035635084653">"ဖုန်း သံစဉ်"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ဖုန်းဝင်လျှင် တုန်ခါရန်"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ဖုန်းဒိုင်ခွက် အသံ"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"အခြား"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"နံပါတ်ကွက် နှိပ်သံ ချိန်ညှိ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ပုံမှန်"</item>
+    <item msgid="6177579030803486015">"အရှည်"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"အမြန် တုံ့ပြန်ချက်များ"</string>
     <string name="call_settings_label" msgid="313434211353070209">"ခေါ်ဆိုမှုများ"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"ခေါ်ဆိုသော အကောင့်များ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 70ce879..a3a8fac 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Anropslogg"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Send SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Rediger nummer før anrop"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Legg til kontakter"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vil du slette anropsloggen?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Dette sletter alle anrop fra loggen"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Sletter anropsloggen …"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Talepostkasse"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> talemeldinger"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> talemeldinger </item>
+      <item quantity="one">talemelding</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spill av"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nye talemeldinger fra <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Vis bare tapte"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Vis bare talemeldinger"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Vis alle samtaler"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Legg til i kontakter"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Legg til pause på 2 sek."</string>
     <string name="add_wait" msgid="3360818652790319634">"Legg til Vent"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Innstillinger"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Fjernet fra favoritter"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Angre"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Legg til i kontakter"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Opprett ny kontakt"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Legg til i eksisterende kontakt"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Send SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Start en videosamtale"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Se hele anropsloggen"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nye tapte anrop"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Hurtigoppringing ringer til favorittene dine og numrene du ringer ofte, med bare ett trykk"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Ingen kontakter"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Trykk på bildet for å se alle numre, eller trykk på og hold nede for å omorganisere"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Fjern"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Fjern"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLE KONTAKTER"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"RING TILBAKE"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"RING"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"RING OPP PÅ NYTT"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOANROP"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videoanrop"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"LYTT"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALJER"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Vis detaljer"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Ubesvart anrop fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Besvart anrop fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Ring til <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"på <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Ring tilbake til <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Ring"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Ring <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videosamtale startet med <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Lytt til talepostkasse fra <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Samtaledetaljer for <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Slettet fra anropsloggen"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummeret er rapportert til Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"RAPPORTÉR"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Rapportér"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"I dag"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"I går"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Eldre"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Spill av saktere."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Start eller stopp avspillingen."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Generelt"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Visningsalternativer for kontakter"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Lyder og vibrering"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Visningsalternativer"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Lyder og vibrasjon"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Tilgjengelighet"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Telefonringetone"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrer også når det ringer"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tastetoner for tastaturet"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Annet"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tonelengde for tastaturet"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Lang"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hurtigsvar"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Anrop"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Ringe kontoer"</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index d1d19c1..8290fa8 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"फोन"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"फोन"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"कल इतिहास"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS पठाउनुहोस्"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"कल <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"कल गर्नुअगाडी नम्बर सम्पादन गर्नुहोस्"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"सम्पर्कहरूमा थप्नुहोस्"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"कल इतिहास हटाउने हो?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"यस कार्यले तपाईँको इतिहासबाट सबै कल मेट्नेछ"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"कल इतिहास हाटउँदै..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"भ्वाइसमेल"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> भ्वाइसमेलहरू"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> भ्वाइसमेलहरू </item>
+      <item quantity="one">भ्वाइसमेल</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"बजाउनुहोस्"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> बाट नयाँ भ्वाइसमेल"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"छुटेकाहरू मात्र देखाउनुहोस्"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"भ्वाइसमेलहरू मात्र देखाउनुहोस्"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"सबै कलहरू देखाउनुहोस्"</string>
-    <string name="add_contact" msgid="4579643070374941999">"सम्पर्कहरूमा थप्नुहोस्"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"२ सेकन्डको रोकाइ थप्नुहोस्"</string>
     <string name="add_wait" msgid="3360818652790319634">"पर्खाइ थप्नुहोस्"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"सेटिङ्हरू"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"मनपर्नेहरूबाट हटाइयो"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"अनडु गर्नुहोस्"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> कल गर्नुहोस्"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"सम्पर्कहरूमा थप्नुहोस्"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"नयाँ सम्पर्क सिर्जना गर्नुहोस्"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"अवस्थित सम्पर्कमा थप्नुहोस्"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS पठाउनुहोस्"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"भिडियो कल बनाउनुहोस्"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"पूर्ण कल इतिहास हेर्नुहोस्"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> नयाँ छुटेका कलहरु"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"द्रूत डायल मनपर्नेका लागि एक-टच डाइलिङ र तपाईंले प्राय: कल गर्ने नम्बर हुन्।"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"कुनै सम्पर्कहरू छैन।"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"सबै संख्या हेर्न  छविलाई छुनुहोस् वा पुन:क्रमबद्ध गर्न समात्नुहोस्"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"खारेज गर्नुहोस्"</string>
     <string name="remove_contact" msgid="1080555335283662961">"हटाउँनुहोस्"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"सबै सम्पर्कहरू"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"कल फर्काउने"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"कल  गर्नुहोस्"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"पुन: डायल गर्नुहोस्"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEO CALL"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"भिडियो कल"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"LISTEN"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"जानकारी"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"विवरणहरू हेर्नुहोस्"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> बाट मिस्ड कल।"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> बाट कलको जवाफ दिइयो।"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> लाई कल गर्नुहोस्।"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> मा"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"कल फर्काउनुस <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"कल गर्नुहोस्"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> कल गर्नुहोस्"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>. लाई भिडियो कल।"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> बाट भ्वाइसमेल सुन्नुहोस्"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> का लागि कल विवरणहरू"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"कल इतिहासबाट मेटाइयो"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google लाई नम्बर रिपोर्ट गरियो"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"REPORT"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"रिपोर्ट गर्नुहोस्"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"आज"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"हिजो"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"अझ पुरानो"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"ढिलो चलाउनुहोस्।"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"दोहर्याउने सुरु गर्नुहोस् वा रोक्नुहोस्।"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"सामान्य"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"सम्पर्क प्रदर्शन विकल्पहरू"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ध्वनि र कम्पन"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"विकल्पहरू प्रदर्शन गर्नुहोस्"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ध्वनि र कम्पन"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"पहुँचता"</string>
     <string name="ringtone_title" msgid="760362035635084653">"फोन रिङटोन"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"कलका लागि कम्पन पनि गर्नुहोस्"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"डायलप्याड ध्वनि"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"अन्य"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"डायलप्याड टोन लम्बाइ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"सामान्य"</item>
+    <item msgid="6177579030803486015">"लामो"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"द्रुत प्रतिक्रियाहरू"</string>
     <string name="call_settings_label" msgid="313434211353070209">"कलहरू"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"खाता कलिङ"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 715e2a5..60027f7 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefoon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefoon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Oproepgeschiedenis"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Sms verzenden"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> bellen"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Nummer bewerken voor bellen"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Toevoegen aan contacten"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Oproepgeschiedenis wissen?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Hiermee worden alle oproepen uit uw geschiedenis verwijderd"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Oproepgeschiedenis wissen…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Voicemail"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> voicemails"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> voicemails </item>
+      <item quantity="one">Voicemail</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Afspelen"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nieuwe voicemail van <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Alleen gemist weergeven"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Alleen voicemails weergeven"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Alle oproepen weergeven"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Toevoegen aan contacten"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Pauze van 2 seconden toevoegen"</string>
     <string name="add_wait" msgid="3360818652790319634">"Wachten toevoegen"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Instellingen"</string>
@@ -117,7 +115,7 @@
     <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. <xliff:g id="SECONDS">%s</xliff:g> sec."</string>
     <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Kan dit nummer niet bellen"</string>
     <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Voor het instellen van voicemail, gaat u naar \'Menu\' &gt; \'Instellingen\'."</string>
-    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Als u uw voicemail wilt bellen, moet u eerst de Vliegmodus uitschakelen."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Als u uw voicemail wilt bellen, moet u eerst de Vliegtuigmodus uitschakelen."</string>
     <string name="contact_list_loading" msgid="5488620820563977329">"Laden..."</string>
     <string name="imei" msgid="3045126336951684285">"IMEI-nummer"</string>
     <string name="meid" msgid="6210568493746275750">"MEID"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Verwijderd uit favorieten"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Ongedaan maken"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Bel <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Toevoegen aan contacten"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Nieuw contact maken"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Toevoegen aan bestaand contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Sms verzenden"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videogesprek starten"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Volledige oproepgeschiedenis bekijken"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nieuwe gemiste oproepen"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Met snelkeuze kunt u met één tik op een knop favorieten en nummers kiezen die u vaak belt"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Geen contacten"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Tik op de afbeelding om alle nummers te bekijken of blijf de afbeelding aanraken om opnieuw te rangschikken"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Sluiten"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Verwijderen"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLE CONTACTEN"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"TERUGBELLEN"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"BELLEN"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"OPNIEUW KIEZEN"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOGESPREK"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videogesprek"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"LUISTEREN"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETAILS"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Details weergeven"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Oproep gemist van <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Oproep beantwoord van <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Oproep naar <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"in <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> terugbellen"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Bellen"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> bellen"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videogesprek naar <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Voicemail beluisteren van <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Oproepgegevens voor <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Verwijderd uit oproepgeschiedenis"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummer gemeld aan Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"MELDEN"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Melden"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Vandaag"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Gisteren"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Ouder"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Langzamer afspelen."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Afspelen starten of onderbreken."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Algemeen"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Weegaveopties voor contacten"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Geluiden en trillen"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Weergaveopties"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Geluiden en trillingen"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Toegankelijkheid"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Beltoon telefoon"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Ook trillen voor oproepen"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonen bij toetsaanslag"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Anders"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Toonduur toetsenblok"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normaal"</item>
+    <item msgid="6177579030803486015">"Lang"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Snelle reacties"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Oproepen"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Oproepaccounts"</string>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
new file mode 100644
index 0000000..94c5a00
--- /dev/null
+++ b/res/values-pa-rIN/strings.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="8490255569343340580">"ਡਾਇਲਰ"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"ਫੋਨ"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"ਫੋਨ"</string>
+    <string name="recentCallsIconLabel" msgid="2639489159797075507">"ਕਾਲ ਇਤਿਹਾਸ"</string>
+    <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ਕਾਲ ਤੋਂ ਪਹਿਲਾਂ ਨੰਬਰ ਸੰਪਾਦਿਤ ਕਰੋ"</string>
+    <string name="recentCalls_addToContact" msgid="1429899535546487008">"ਸੰਪਰਕਾਂ ਵਿੱਚ ਜੋੜੋ"</string>
+    <string name="recentCalls_removeFromRecentList" msgid="5551148439199439404">"ਕਾਲ ਇਤਿਹਾਸ ਵਿੱਚੋਂ ਮਿਟਾਓ"</string>
+    <string name="recentCalls_deleteAll" msgid="5157887960461979812">"ਕਾਲ ਇਤਿਹਾਸ ਹਟਾਓ"</string>
+    <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"ਵੌਇਸਮੇਲ ਮਿਟਾਓ"</string>
+    <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"ਵੌਇਸਮੇਲ ਸ਼ੇਅਰ ਕਰੋ"</string>
+    <string name="recentCalls_empty" msgid="8555115547405030734">"ਕੋਈ ਕਾਲਾਂ ਨਹੀਂ"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ਕੀ ਕਾਲ ਇਤਿਹਾਸ ਹਟਾਉਣਾ ਹੈ?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"ਇਹ ਤੁਹਾਡੇ ਇਤਿਹਾਸ ਤੋਂ ਸਾਰੀਆਂ ਕਾਲਾਂ ਮਿਟਾ ਦੇਵੇਗਾ"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ਕਾਲ ਇਤਿਹਾਸ ਹਟਾ ਰਿਹਾ ਹੈ…"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> ਵੌਇਸਮੇਲਾਂ </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ਵੌਇਸਮੇਲਾਂ </item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ਪਲੇ ਕਰੋ"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> ਦੀ ਨਵੀਂ ਵੌਇਸਮੇਲ"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"ਵੌਇਸਮੇਲ ਪਲੇ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
+    <string name="voicemail_buffering" msgid="738287747618697097">"ਬਫਰਿੰਗ..."</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"ਵੌਇਸਮੇਲ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"ਵੌਇਸਮੇਲ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕਿਆ"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"ਕੇਵਲ ਵੌਇਸਮੇਲ ਵਾਲੀਆਂ ਕਾਲਾਂ"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"ਕੇਵਲ ਇਨਕਮਿੰਗ ਕਾਲਾਂ"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"ਕੇਵਲ ਆਊਟਗੋਇੰਗ ਕਾਲਾਂ"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"ਕੇਵਲ ਮਿਸਡ ਕਾਲਾਂ"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"ਵੌਇਸਮੇਲ ਅਪਡੇਟਾਂ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"ਨਵੀਂ ਵੌਇਸਮੇਲ ਉਡੀਕ ਰਹੀ ਹੈ। ਹੁਣ ਲੋਡ ਨਹੀਂ ਕਰ ਸਕਦਾ।"</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"ਆਪਣੀ ਵੌਇਸਮੇਲ ਸੈਟ ਅਪ ਕਰੋ"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"ਔਡੀਓ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"ਸੈਟ ਅਪ"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"ਵੌਇਸਮੇਲ ਤੇ ਕਾਲ ਕਰੋ"</string>
+    <string name="voicemail_speed_slowest" msgid="1733460666177707312">"ਬਿਲਕੁਲ ਹੌਲੀ ਸਪੀਡ"</string>
+    <string name="voicemail_speed_slower" msgid="1508601287347216244">"ਹੌਲੀ ਸਪੀਡ"</string>
+    <string name="voicemail_speed_normal" msgid="9033988544627228892">"ਸਧਾਰਨ ਸਪੀਡ"</string>
+    <string name="voicemail_speed_faster" msgid="2019965121475935488">"ਤੇਜ਼ ਸਪੀਡ"</string>
+    <string name="voicemail_speed_fastest" msgid="5758712343491183292">"ਵੱਧ ਤੇਜ਼ ਸਪੀਡ"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"ਨੰਬਰ ਚੁਣੋ"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"ਨੰਬਰ ਚੁਣੋ"</string>
+    <string name="make_primary" msgid="5829291915305113983">"ਇਹ ਚੋਣ ਯਾਦ ਰੱਖੋ"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"ਖੋਜੋ"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"ਡਾਇਲ ਕਰੋ"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"ਡਾਇਲ ਕਰਨ ਲਈ ਨੰਬਰ"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"ਪਲੇਬੈਕ ਪਲੇ ਕਰੋ ਜਾਂ ਰੋਕੋ"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"ਸਪੀਕਰਫੋਨ ਨੂੰ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"ਪਲੇਬੈਕ ਪੋਜੀਸ਼ਨ ਖੋਜੋ"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"ਪਲੇਬੈਕ ਰੇਟ ਘਟਾਓ"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"ਪਲੇਬੈਕ ਰੇਟ ਵਧਾਓ"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"ਕਾਲ ਇਤਿਹਾਸ"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"ਹੋਰ ਚੋਣਾਂ"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"ਡਾਇਲ ਪੈਡ"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"ਕਾਪੀ ਕਰੋ"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"ਕੇਵਲ ਆਊਟਗੋਇੰਗ ਦਿਖਾਓ"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"ਕੇਵਲ ਇਨਕਮਿੰਗ ਦਿਖਾਓ"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"ਕੇਵਲ ਮਿਸਡ ਦਿਖਾਓ"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"ਕੇਵਲ ਵੌਇਸਮੇਲਾਂ ਦਿਖਾਓ"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"ਸਾਰੀਆਂ ਕਾਲਾਂ ਦਿਖਾਓ"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"2-ਸਕਿੰਟ ਦਾ ਪੌਜ ਜੋੜੋ"</string>
+    <string name="add_wait" msgid="3360818652790319634">"ਉਡੀਕ ਜੋੜੋ"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"ਸੈਟਿੰਗਾਂ"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"ਨਵਾਂ ਸੰਪਰਕ"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"ਸਾਰੇ ਸੰਪਰਕ"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"ਕਾਲ ਵੇਰਵੇ"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"ਵੇਰਵੇ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"ਟਚ ਟੋਨ ਕੀਪੈਡ ਵਰਤੋ"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"ਪ੍ਰਗਤੀ ਵਿੱਚ ਕਾਲ ਤੇ ਵਾਪਸ ਜਾਓ"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"ਕਾਲ ਜੋੜੋ"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"ਇਨਕਮਿੰਗ ਕਾਲ"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"ਆਊਟਗੋਇੰਗ ਕਾਲ"</string>
+    <string name="type_missed" msgid="2720502601640509542">"ਮਿਸਡ ਕਾਲ"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"ਇਨਕਮਿੰਗ ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"ਆਊਟਗੋਇੰਗ ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"ਮਿਸਡ ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"ਵੌਇਸਮੇਲ"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"ਇਨਕਮਿੰਗ ਕਾਲਾਂ"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"ਵੌਇਸਮੇਲ ਪਲੇ ਕਰੋ"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"ਸੰਪਰਕ <xliff:g id="NAME">%1$s</xliff:g> ਦੇਖੋ"</string>
+    <string name="description_call" msgid="3443678121983852666">"<xliff:g id="NAME">%1$s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"<xliff:g id="NAMEORNUMBER">%1$s</xliff:g> ਲਈ ਸੰਪਰਕ ਵੇਰਵੇ"</string>
+    <string name="description_new_voicemail" msgid="2133792360865517746">"ਨਵੀਂ ਵੌਇਸਮੇਲ।"</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> ਕਾਲਾਂ।"</string>
+    <string name="description_video_call" msgid="2933838090743214204">"ਵੀਡੀਓ ਕਾਲ।"</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"<xliff:g id="NAME">%1$s</xliff:g> ਨੂੰ SMS ਭੇਜੋ"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"ਅਣਸੁਣੀ ਵੌਇਸਮੇਲ"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"ਵੌਇਸ ਖੋਜ ਚਾਲੂ ਕਰੋ"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"<xliff:g id="NUMBER">%s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="unknown" msgid="740067747858270469">"ਅਗਿਆਤ"</string>
+    <string name="voicemail" msgid="3851469869202611441">"ਵੌਇਸਮੇਲ"</string>
+    <string name="private_num" msgid="6374339738119166953">"ਨਿੱਜੀ ਨੰਬਰ"</string>
+    <string name="payphone" msgid="7726415831153618726">"ਪੇਫੋਨ"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> ਮਿੰਟ <xliff:g id="SECONDS">%s</xliff:g> ਸਕਿੰਟ"</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"ਇਸ ਨੰਬਰ ਤੇ ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"ਵੌਇਸਮੇਲ ਸੈਟ ਅਪ ਕਰਨ ਲਈ, ਮੀਨੂ &gt; ਸੈਟਿੰਗਾਂ ਤੇ ਜਾਓ।"</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"ਵੌਇਸਮੇਲ ਕਾਲ ਕਰਨ ਲਈ, ਪਹਿਲਾਂ ਏਅਰਪਲੇਨ ਮੋਡ ਬੰਦ ਕਰੋ।"</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"SIM ਕਾਰਡ ਵਿੱਚੋਂ ਲੋਡ ਕਰ ਰਿਹਾ ਹੈ…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"SIM ਕਾਰਡ ਸੰਪਰਕ"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"ਕੋਈ ਸੰਪਰਕ ਐਪ ਉਪਲਬਧ ਨਹੀਂ"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"ਵੌਇਸ ਖੋਜ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"ਇੱਕ ਫੋਨ ਕਾਲ ਨਹੀਂ ਕਰ ਸਕਦਾ ਕਿਉਂਕਿ ਫੋਨ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਇਆ ਗਿਆ ਹੈ।"</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"ਉਸ ਲਈ ਇਸ ਡਿਵਾਈਸ ਤੇ ਕੋਈ ਐਪ ਨਹੀਂ"</string>
+    <string name="dialer_hint_find_contact" msgid="1012544667033887519">"ਇੱਕ ਨਾਮ ਜਾਂ ਫੋਨ ਨੰਬਰ ਦਰਜ ਕਰੋ"</string>
+    <string name="recentMissed_empty" msgid="4901789420356796156">"ਕੋਈ ਕਾਲਾਂ ਨਹੀਂ"</string>
+    <string name="recentVoicemails_empty" msgid="8582424947259156664">"ਕੋਈ ਹਾਲੀਆ ਵੌਇਸਮੇਲਾਂ ਨਹੀਂ"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"ਕੇਵਲ ਮਨਪਸੰਦ ਦਿਖਾਓ"</string>
+    <string name="call_log_activity_title" msgid="4612824396355272023">"ਇਤਿਹਾਸ"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"ਸਭ"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"ਮਿਸਡ"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"ਵੌਇਸਮੇਲ"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"ਸਪੀਡ ਡਾਇਲ"</string>
+    <string name="tab_recents" msgid="929949073851377206">"ਹਾਲੀਆ"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"ਸੰਪਰਕ"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"ਮਨਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਇਆ ਗਿਆ"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"ਪਹਿਲਾਂ ਵਰਗਾ ਕਰੋ"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"ਨਵਾਂ ਸੰਪਰਕ ਬਣਾਓ"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"ਮੌਜੂਦਾ ਸੰਪਰਕਾਂ ਵਿੱਚ ਜੋੜੋ"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS ਭੇਜੋ"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ਵੀਡੀਓ ਕਾਲ ਕਰੋ"</string>
+    <string name="recents_footer_text" msgid="7315554578957453359">"ਪੂਰਾ ਕਾਲ ਇਤਿਹਾਸ ਦੇਖੋ"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ਨਵੀਆਂ ਮਿਸਡ ਕਾਲਾਂ"</string>
+    <string name="speed_dial_empty" msgid="1931474498966072849">"ਸਪੀਡ ਡਾਇਲ ਉਹਨਾਂ ਮਨਪਸੰਦ ਅਤੇ ਨੰਬਰਾਂ ਲਈ ਇੱਕ ਟਚ ਡਾਇਲਿੰਗ ਹੈ ਜਿਹਨਾਂ ਤੇ ਤੁਸੀਂ ਅਕਸਰ ਕਾਲ ਕਰਦੇ ਹੋ।"</string>
+    <string name="all_contacts_empty" msgid="2299508125100209367">"ਕੋਈ ਸੰਪਰਕ ਨਹੀਂ"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"ਸਾਰੇ ਨੰਬਰ ਦੇਖਣ ਲਈ ਚਿੱਤਰ ਨੂੰ ਛੋਹਵੋ ਜਾਂ ਪੁਨਰ ਤਰਤੀਬ ਦੇਣ ਲਈ ਛੋਹਵੋ &amp; ਹੋਲਡ ਕਰੋ"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"ਹਟਾਓ"</string>
+    <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ਸਾਰੇ ਸੰਪਰਕ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ਵੀਡੀਓ ਕਾਲ"</string>
+    <string name="call_log_action_voicemail" msgid="4978620572562925654">"ਸੁਣੋ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"ਵੇਰਵੇ ਦੇਖੋ"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ਦੀ ਮਿਸਡ ਕਾਲ।"</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ਦੀ ਕਾਲ ਦਾ ਜਵਾਬ ਦਿੱਤਾ।"</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ।"</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> ਤੇ"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ਕਾਲ ਕਰੋ"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਨੂੰ ਕਾਲ ਕਰੋ"</string>
+    <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਨੂੰ ਵੀਡੀਓ ਕਾਲ ਕਰੋ।"</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਦੀ ਵੌਇਸਮੇਲ ਚੁਣੋ"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ਲਈ ਕਾਲ ਵੇਰਵੇ"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"ਕਾਲ ਇਤਿਹਾਸ ਵਿੱਚੋਂ ਮਿਟਾਇਆ ਗਿਆ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"ਰਿਪੋਰਟ"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"ਅੱਜ"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"ਕੱਲ੍ਹ"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"ਪੁਰਾਣੇ"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"ਕਾਲਸ ਸੂਚੀ"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"ਸਪੀਕਰ ਚਾਲੂ ਕਰੋ।"</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"ਸਪੀਕਰ ਬੰਦ ਕਰੋ।"</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"ਵੱਧ ਤੇਜ਼ ਪਲੇ ਕਰੋ।"</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"ਵੱਧ ਹੌਲੀ ਪਲੇ ਕਰੋ।"</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ਪਲੇਬੈਕ ਚਾਲੂ ਕਰੋ ਜਾਂ ਰੋਕੋ।"</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ਡਿਸਪਲੇ ਚੋਣਾਂ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ਅਵਾਜ਼ਾਂ ਅਤੇ ਵਾਈਬ੍ਰੇਸ਼ਨ"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ਪਹੁੰਚਯੋਗਤਾ"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"ਫੋਨ ਰਿੰਗਟੋਨ"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ਕਾਲਾਂ ਲਈ ਵਾਈਬ੍ਰੇਟ ਵੀ ਕਰੋ"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ਡਾਇਲਪੈਡ ਟੋਨਾਂ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ਡਾਇਲਪੈਡ ਟੋਨ ਲੰਮਾਈ"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ਸਧਾਰਨ"</item>
+    <item msgid="6177579030803486015">"ਲੰਮਾ"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ਤਤਕਾਲ ਜਵਾਬ"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"ਕਾਲਾਂ"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"ਕਾਲਿੰਗ ਖਾਤੇ"</string>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 235ef5e..5266e24 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Historia połączeń"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Wyślij SMS-a"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Zadzwoń do: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Edytuj numer przed nawiązaniem połączenia"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Dodaj do kontaktów"</string>
@@ -33,10 +32,12 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Wyczyścić historię połączeń?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Spowoduje to usunięcie wszystkich połączeń z historii"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Czyszczę historię połączeń…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Poczta głosowa"</item>
-    <item quantity="other" msgid="5513481419205061254">"Wiadomości głosowe: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> wiadomości głosowe </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> wiadomości głosowych </item>
+      <item quantity="other"> Wiadomości głosowe: <xliff:g id="COUNT">%1$d</xliff:g> </item>
+      <item quantity="one">Wiadomość głosowa</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Odtwórz"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nowa poczta głosowa od: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Pokaż tylko nieodebrane"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Pokaż tylko pocztę głosową"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Pokaż wszystkie połączenia"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Dodaj do kontaktów"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj 2-sekundową pauzę"</string>
     <string name="add_wait" msgid="3360818652790319634">"Dodaj oczekiwanie"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Ustawienia"</string>
@@ -141,33 +141,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Usunięto z ulubionych"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Cofnij"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Zadzwoń: <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Dodaj do kontaktów"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Utwórz nowy kontakt"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Dodaj do istniejącego kontaktu"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Wyślij SMS-a"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Rozmowa wideo"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Wyświetl pełną historię połączeń"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Nowe nieodebrane połączenia: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Szybkie wybieranie pozwala jednym kliknięciem zadzwonić pod ulubione lub częste numery"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Brak kontaktów"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Kliknij obraz, by zobaczyć wszystkie numery, lub kliknij go i przytrzymaj, by zmienić kolejność"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Zamknij"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Usuń"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"WSZYSTKIE KONTAKTY"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ODDZWOŃ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ZADZWOŃ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"WYBIERZ PONOWNIE"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ROZMOWA WIDEO"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Rozmowa wideo"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"POSŁUCHAJ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"SZCZEGÓŁY"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Wyświetl szczegóły"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Nieodebrane połączenie: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Odebrane połączenie: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Połączenie: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"na koncie <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Oddzwoń do: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Zadzwoń"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Zadzwoń do <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Rozmowa wideo z: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Posłuchaj wiadomości głosowej od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Szczegóły połączeń: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Usunięto z historii połączeń"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numer został zgłoszony do Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ZGŁOŚ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Zgłoś"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Dzisiaj"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Wczoraj"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Starsze"</string>
@@ -178,13 +176,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Odtwarzaj wolniej."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Rozpocznij lub wstrzymaj odtwarzanie."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Ogólne"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opcje wyświetlania kontaktów"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Dźwięki i wibracje"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opcje wyświetlania"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Dźwięki i wibracje"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Ułatwienia dostępu"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Dzwonek telefonu"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Wibracja przy połączeniach"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Dźwięki klawiatury"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Inne"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tony klawiatury"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normalne"</item>
+    <item msgid="6177579030803486015">"Długie"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Szybkie odpowiedzi"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Połączenia"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Konta telefoniczne"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 07a9916..ac14a0b 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telemóvel"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefone"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Histórico de chamadas"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ligar a <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes de efectuar a chamada"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Adicionar aos contactos"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Limpar histórico de chamadas?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Todas as chamadas serão eliminadas do histórico"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"A limpar histórico de chamadas…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Correio de voz"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Mensagens de correio de voz"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> mensagens de correio de voz </item>
+      <item quantity="one">Mensagem de correio de voz</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduzir"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova msg de correio de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar apenas cham. n. atend."</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Mostrar apenas msgs corr. voz"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Adicionar aos contactos"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Adicionar pausa de 2 seg."</string>
     <string name="add_wait" msgid="3360818652790319634">"Adicionar espera"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Definições"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Removido dos favoritos"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Anular"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefonar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Adicionar aos contactos"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Criar novo contacto"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Adicionar ao contacto existente"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fazer videochamada"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Ver histórico de chamadas completo"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> chamadas não atendidas novas"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"A marcação rápida é uma marcação de um toque dos favoritos e dos números mais frequentes"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Sem contactos"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Toque na imagem para ver todos os números ou toque sem soltar para reordenar"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ignorar"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Remover"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS OS CONTACTOS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"TELEFONAR DE VOLTA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"TELEFONAR"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"REMARCAR"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOCHAMADA"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videochamada"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"OUVIR"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALHES"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Ver detalhes"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Chamada não atendida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Chamada atendida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Telefonar para <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"em <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Telefonar de volta para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telefonar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Telefonar a <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videochamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Ouvir o correio de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Detalhes de chamadas de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Eliminado do histórico de chamadas"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Número comunicado à Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"DENUNCIAR"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Denunciar"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Hoje"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ontem"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Mais antigas"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Reproduzir mais lento."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Iniciar ou interromper a reprodução."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Geral"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opções de visualização de contactos"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons e vibração"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opções de visualização"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibração"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Acessibilidade"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Toque do telemóvel"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrar também para chamadas"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons do teclado"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Outras"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duração do tom do teclado"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Longa"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 13672ee..e858734 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefone"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefone"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Histórico de chamadas"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Enviar SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ligar para <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Editar número antes da chamada"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Adicionar aos contatos"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Limpar histórico de chamadas?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Esta ação excluirá todas as chamadas do seu histórico"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Limpando histórico de chamadas…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Mensagem de voz"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> mensagens de voz"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Correios de voz </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Reproduzir"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova mensagem de voz de <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Mostrar apenas perdidas"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Exibir apenas mensagens de voz"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Mostrar todas as chamadas"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Adicionar aos contatos"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Adicionar pausa de 2 segundos"</string>
     <string name="add_wait" msgid="3360818652790319634">"Adicionar espera"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Configurações"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Removido dos favoritos"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Desfazer"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ligar para <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Adicionar aos contatos"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Criar novo contato"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Adicionar a contato já existente"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Enviar SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Fazer vídeo chamada"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Ver todo o histórico de chamadas"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> novas chamadas perdidas"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"A discagem rápida é feita com apenas um toque para favoritos e números para os quais você liga com frequência"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Nenhum contato"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Toque na imagem para ver todos os números ou toque e segure para reordenar"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Descartar"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Remover"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TODOS OS CONTATOS"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"RETORNAR CHAMADA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"CHAMAR"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"REDISCAR"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VÍDEO CHAMADA"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Vídeo chamada"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"OUVIR"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALHES"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Ver detalhes"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Chamada perdida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Chamada atendida de <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"em <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Retornar chamada de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Ligar"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Ligar para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Vídeo chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Ouvir mensagem de voz de <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Detalhes de chamada para <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Excluída do histórico de chamadas"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Número informado ao Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"DENUNCIAR"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Informar"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Hoje"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ontem"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Antiga"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Reprodução mais lenta."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Inicie ou pause a reprodução."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Geral"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opções de exibição de contato"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sons e vibração"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opções de exibição"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sons e vibração"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Acessibilidade"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Toque do telefone"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Também vibrar para chamadas"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tons de teclado"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Outras"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Duração do tom do teclado"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normais"</item>
+    <item msgid="6177579030803486015">"Longos"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Respostas rápidas"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Chamadas"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Contas de chamadas"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 06bca10..86a82b7 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Istoricul apelurilor"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Trimiteți SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Apelaţi <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Modificaţi numărul înainte de apelare"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Adăugaţi la persoane din agendă"</string>
@@ -33,10 +32,11 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Ștergeți istoricul apelurilor?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Astfel vor fi șterse toate apelurile din istoric"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Se șterge istoricul apelurilor…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Mesaj vocal"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> (de) mesaje vocale"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> mesaje vocale </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> de mesaje vocale </item>
+      <item quantity="one">Mesaj vocal</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Redaţi"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Mesaj vocal nou de la <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +80,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Numai apelurile nepreluate"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Afişaţi numai mesajele vocale"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Afişaţi toate apelurile"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Adăugați în Agendă"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Adăugați o pauză de 2 secunde"</string>
     <string name="add_wait" msgid="3360818652790319634">"Adăugaţi interval de aşteptare"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Setări"</string>
@@ -141,33 +140,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"S-a eliminat din preferate"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Anulați"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Apelați <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Adăugați în Agendă"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Creați o persoană de contact nouă"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Adăugați la o persoană de contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Trimiteți SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Inițiați un apel video"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Vedeți istoricul complet al apelurilor"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> (de) apeluri nepreluate noi"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Apelarea rapidă este apelarea printr-o singură atingere a numerelor preferate și a numerelor pe care le apelați frecvent"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Nu există persoane de contact"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Atingeți imaginea pentru a vedea toate numerele sau atingeți lung pentru reordonare"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Închideți"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Eliminați"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TOATĂ AGENDA"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"SUNAȚI"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"APELAȚI"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"REAPELAȚI"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"APEL VIDEO"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Apel video"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ASCULTAȚI"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"DETALII"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Vedeți detaliile"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Apel nepreluat de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Apel preluat de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Apel către <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"pe <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Sunați <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Apelați"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Apelați <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Apel video către <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Ascultați mesajul vocal de la <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Detaliile apelului pentru <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"S-a șters din istoricul apelurilor"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numărul a fost raportat la Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"RAPORTAȚI"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Raportați"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Astăzi"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Ieri"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Mai vechi"</string>
@@ -178,13 +175,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Jucați mai lent."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Porniți sau întrerupeți redarea."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Generale"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Opțiuni de afișare a agendei"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sunete și vibrații"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opțiuni de afișare"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sunete și vibrații"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accesibilitate"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Ton de apel al telefonului"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrează și pentru apeluri"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonuri pt. tastatura numerică"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Altele"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Lungimea tonului tastaturii numerice"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normală"</item>
+    <item msgid="6177579030803486015">"Lungă"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Răspunsuri rapide"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Apeluri"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Conturi pentru apelare"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 9fe65af..5088cb2 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Кнопки"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Журнал звонков."</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Отправить SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Вызов: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Изменить номер и вызвать"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Добавить в контакты"</string>
@@ -33,10 +32,12 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Очистить историю звонков?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"История звонков будет удалена."</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Очистка журнала звонков…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Голосовая почта"</item>
-    <item quantity="other" msgid="5513481419205061254">"Голосовые сообщения: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> голосовое сообщение </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> голосовых сообщения </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> голосовых сообщений </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> голосового сообщения </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Прослушать"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Новое гол. сообщение: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Пропущенные"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Показать голосовые сообщения"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Все вызовы"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Добавить в контакты"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Добавить двухсекундную паузу"</string>
     <string name="add_wait" msgid="3360818652790319634">"Добавить паузу"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Настройки"</string>
@@ -141,33 +141,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Контакт удален из избранных"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Отмена"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Позвонить: <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Добавить в контакты"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Создать контакт"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Добавить к контакту"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Отправить SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Начать видеовстречу"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Посмотреть весь журнал звонков"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Пропущенных вызовов: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Настройте быстрый набор, чтобы вам было удобнее звонить на часто используемые номера."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Ничего не найдено."</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Коснитесь изображения, чтобы увидеть все номера, или нажмите и удерживайте, чтобы изменить порядок"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Закрыть"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Удалить"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ВСЕ КОНТАКТЫ"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ВЫЗОВ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ПОЗВОНИТЬ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ПЕРЕЗВОНИТЬ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ВИДЕОВЫЗОВ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видеовстреча"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ПРОСЛУШАТЬ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ПОДРОБНЕЕ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Сведения"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропущен вызов от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>. <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Принят вызов от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>. <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Вызов контакту <xliff:g id="NAMEORNUMBER">^1</xliff:g>. <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Перезвонить контакту <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Вызов"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Позвонить: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Отправить ответный видеовызов контакту <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Прослушать сообщение от контакта <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> – сведения о вызове"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Вызов удален из журнала"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Жалоба отправлена в Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"СООБЩИТЬ ОБ ОШИБКЕ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Отчет"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Сегодня"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Вчера"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Предыдущие записи"</string>
@@ -178,13 +176,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Уменьшить скорость воспроизведения."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Начать или приостановить воспроизведение."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Общие"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Отображение контактов"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звук и вибросигнал"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Упорядочить"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуки и вибрация"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Специальные возможности"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Рингтон"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибросигнал при вызове"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звук при наборе номера"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Другие настройки"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Длительность сигналов при наборе номера"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Обычная"</item>
+    <item msgid="6177579030803486015">"Большая"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Быстрые ответы"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Вызовы"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Аккаунты для звонков"</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 2d862cb..f1c2f06 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"දුරකථනය"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"දුරකථනය"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"ඇමතුම් ඉතිහාසය"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS යවන්න"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> අමතන්න"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"ඇමතීමට කලින් අංකය වෙනස් කරන්න"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"සම්බන්ධතා වලට එක් කරන්න"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ඇමතුම් ඉතිහාසය හිස් කරන්නද?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"මෙය ඔබේ ඉතිහාසයෙන් සියලු ඇමතුම් මකනු ඇත"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"ඇමතුම් ඉතිහාසය හිස් කරමින්…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"හඬ තැපෑල"</item>
-    <item quantity="other" msgid="5513481419205061254">"හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one">හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g> </item>
+      <item quantity="other">හඬ තැපැල් <xliff:g id="COUNT">%1$d</xliff:g> </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ධාවනය කරන්න"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> වෙතින් නව හඬ තැපැලක්"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"මඟ හැරුණු ඒවා පමණක් පෙන්වන්න"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"හඬ තැපැල් පමණක් පෙන්වන්න"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"සියලු ඇමතුම් පෙන්වන්න"</string>
-    <string name="add_contact" msgid="4579643070374941999">"සම්බන්ධතා වලට එක් කරන්න"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"තත්පර 2 ක විරාමයක් එක් කරන්න"</string>
     <string name="add_wait" msgid="3360818652790319634">"රැඳී සිටීම එක් කරන්න"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"සැකසීම්"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"ප්‍රියතමයන්ගෙන් ඉවත් කරන්න"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"අස් කරන්න"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> අමතන්න"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"සම්බන්ධතා වලට එක් කරන්න"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"නව සම්බන්ධතාවයක් සාදන්න"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"පවතින සම්බන්ධතාව වෙත එක් කරන්න"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS යවන්න"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"වීඩියෝ ඇමතුමක් ලබාගන්න"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"සම්පූර්ණ ඇමතුම් ඉතිහාසය බලන්න"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"නව මඟ හැරුණු ඇමතුම් <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"වේග ඩයලනය යනු ප්‍රියතමයන් සහ ඔබ නිතර අමතන අංක සඳහා එක්-ස්පර්ශ ඩයල් කිරීමකි"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"සබඳතා නැත"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"සියලු අංක බැලීමට අනුරුව ස්පර්ශ කරන්න නැතහොත් &amp; යළි ඇණවුම් කිරීමට අල්ලාගෙන සිටින්න"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"ඉවතලන්න"</string>
     <string name="remove_contact" msgid="1080555335283662961">"ඉවත් කරන්න"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"සියලු සම්බන්ධතා"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"නැවත අමතන්න"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"අමතන්න"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"නැවත ඩයල් කරන්න"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"වීඩියෝ ඇමතුම"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"වීඩියෝ ඇමතුම"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"අහනවා"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"විස්තර"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"විස්තර බලන්න"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> වෙතින් ඇමතුමක් මගහැරුණා."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> වෙතින් ඇමතුමකට පිළිතුරු දුන්නා."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g> වෙත ඇමතුමක්."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> හි"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> නැවත අමතන්න"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"ඇමතුම"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> අමතන්න"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> වෙත වීඩියෝ ඇමතුම."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> වෙතින් හඬ තැපෑලට සවන් දෙන්න"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> සඳහා ඇමතුම් විස්තර"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"ඇමතුම් ඉතිහාසයෙන් මකන ලදී"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Google වෙත වාර්තා කළ අංකය"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"වාර්තාව"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"වාර්තා කරන්න"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"අද"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"ඊයේ"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"වඩා පරණ"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"හෙමින් ධාවනය කරන්න."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"නැවත ධාවනයෙදී ආරම්භ කරන්න හෝ විරාමය කරන්න."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"පොදු"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"සම්බන්ධතා දර්ශනය කිරීමේ විකල්ප"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"හඬ සහ කම්පන"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"විකල්ප පෙන්වන්න"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ශබ්ද සහ කම්පන"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ප්‍රවේශ්‍යතාවය"</string>
     <string name="ringtone_title" msgid="760362035635084653">"දුරකථන රිගින්ටෝනය"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"ඇමතුම් සඳහා කම්පනයද කරන්න"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ඩයල්පෑඩ ස්පර්ශක හඬ"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"වෙනත්"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ඇමතුම් පෑඩයේ නාද දිග"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"සාමාන්‍ය"</item>
+    <item msgid="6177579030803486015">"දීර්ඝ"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"ක්ෂණික ප්‍රතිචාර"</string>
     <string name="call_settings_label" msgid="313434211353070209">"ඇමතුම්"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"ගිණුම් ඇමතීම"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 1cbb44a..8a3a841 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefón"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefón"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"História hovorov"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Odoslať SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Zavolať kontakt <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Pred volaním upraviť číslo"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Pridať medzi kontakty"</string>
@@ -33,10 +32,12 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Chcete vymazať históriu hovorov?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Týmto sa z histórie odstránia všetky hovory"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Vymazáva sa história hovorov..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Hlasová správa"</item>
-    <item quantity="other" msgid="5513481419205061254">"Počet hlasových správ: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> odkazy v hlasovej schránke </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> odkazu v hlasovej schránke </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> odkazov v hlasovej schránke </item>
+      <item quantity="one">Odkaz v hlasovej schránke</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Prehrať"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nová hlasová správa – <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Zobraziť len zmeškané"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Zobraziť len hlasové správy"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Zobraziť všetky hovory"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Pridať do kontaktov"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Pridať dvojsekundovú pauzu"</string>
     <string name="add_wait" msgid="3360818652790319634">"Pridať čakanie"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Nastavenia"</string>
@@ -141,33 +141,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Odstránené z obľúbených"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Späť"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Volať na číslo <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Pridať do kontaktov"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Vytvoriť nový kontakt"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Pridať k existujúcemu kontaktu"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Odoslať správu SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Uskutočniť videohovor"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Zobraziť úplnú históriu hovorov"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Počet nových zmeškaných hovorov: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Rýchla voľba je funkcia umožňujúca jedným klepnutím vytočiť obľúbené osoby a často volané čísla."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Žiadne kontakty"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Klepnutím na obrázok si môžete zobraziť všetky čísla. Ak naň klepnete a podržíte ho, môžete zmeniť ich poradie."</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Zatvoriť"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Odstrániť"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"VŠETKY KONTAKTY"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ZAVOLAŤ SPÄŤ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"VOLAŤ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ZNOVA VYTOČIŤ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOHOVOR"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videohovor"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"POČÚVAŤ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"PODROBNOSTI"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Zobraziť podrobnosti"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Zmeškaný hovor – kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Prijatý hovor – kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Volanie – kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"v rámci účtu <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Zavolať späť používateľovi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Volať"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Zavolať kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Začať videohovor s kontaktom <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Vypočuť si správu v hlasovej schránke od používateľa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Podrobnosti hovoru pre kontakt <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Odstránené z histórie hovorov"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Číslo bolo nahlásené Googlu"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"NAHLÁSIŤ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Nahlásiť"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Dnes"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Včera"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Staršie"</string>
@@ -178,13 +176,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Prehrať pomalšie"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Spustiť alebo pozastaviť prehrávanie"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Všeobecné"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Možnosti zobrazenia kontaktov"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Zvuky a vibrovanie"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Možnosti zobrazenia"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvuky a vibrovanie"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Dostupnosť"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Tón zvonenia telefónu"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrovať aj pri hovoroch"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tóny číselnej klávesnice"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Ďalšie"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dĺžka zvukov číselnej klávesnice"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normálne"</item>
+    <item msgid="6177579030803486015">"Dlhé"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Rýchle odpovede"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Hovory"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Telefónne účty"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index b291b5a..736e170 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Zgodovina klicev"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Pošlji SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Pokliči <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Pred klicanjem uredi številko"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Dodaj med stike"</string>
@@ -33,10 +32,12 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Želite izbrisati zgodovino klicev?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"S tem boste iz zgodovine izbrisali vse klice"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Izbris zgodovine klicev …"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Sporočila glasovne pošte"</item>
-    <item quantity="other" msgid="5513481419205061254">"Št. sporočil glasovne pošte: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> sporočilo v odzivniku </item>
+      <item quantity="two"> <xliff:g id="COUNT">%1$d</xliff:g> sporočili v odzivniku </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> sporočila v odzivniku </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> sporočil v odzivniku </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Predvajaj"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nova glasovna pošta od <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Pokaži samo neodgovorjene"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Pokaži samo spor. glasovne pošte"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Pokaži vse klice"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Dodaj med stike"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Dodaj 2 sekundi premora"</string>
     <string name="add_wait" msgid="3360818652790319634">"Dodaj premor"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Nastavitve"</string>
@@ -141,33 +141,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Odstranjeno iz priljubljenih"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Razveljavi"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Pokliči <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Dodaj med stike"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Ustvari nov stik"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Dodaj obstoječemu stiku"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Pošljite SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Opravi videoklic"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Prikaz celotne zgodovine klicev"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Št. novih zgrešenih klicev: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Hitro izbiranje je klicanje priljubljenih številk in tistih, ki jih kličete najpogosteje, z enim dotikom."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Ni stikov"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Dotaknite se slike, če želite videti vse številke, ali pa se je dotaknite in pridržite, če želite spremeniti vrstni red."</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Opusti"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Odstrani"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"VSI STIKI"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"POVRATNI KLIC"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"POKLIČI"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ZNOVA POKLIČI"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOKLIC"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videoklic"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"POSLUŠAJ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"PODROBNOSTI"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Ogled podrobnosti"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Neodgovorjen klic od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Odgovorjen klic od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Klic za: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"z računom: <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Povratni klic: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Klic"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Klicanje: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videoklic za: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Poslušajte sporočilo v odzivniku od: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Podrobnosti klica za: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Izbrisano iz zgodovine klicev"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Številka sporočena Googlu"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"PRIJAVI"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Poročanje"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Danes"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Včeraj"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Starejši"</string>
@@ -178,13 +176,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Predvajaj počasneje."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Začni ali zaustavi predvajanje."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Splošno"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Možnosti prikaza stikov"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Zvoki in vibriranje"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Možnosti prikaza"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Zvoki in vibriranje"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Funkcije za ljudi s posebnimi potrebami"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Ton zvonjenja telefona"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibriranje tudi za klice"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Toni tipkovnice"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Drugo"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Dolžina tonov tipk"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Običajno"</item>
+    <item msgid="6177579030803486015">"Dolgo"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hitri odgovori"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Klici"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Računi za klicanje"</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
new file mode 100644
index 0000000..c89b415
--- /dev/null
+++ b/res/values-sq-rAL/strings.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  ~ Copyright (C) 2012 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
+   -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="applicationLabel" msgid="8490255569343340580">"Formuesi i numrit"</string>
+    <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefoni"</string>
+    <string name="dialerIconLabel" msgid="6500826552823403796">"Telefoni"</string>
+    <string name="recentCallsIconLabel" msgid="2639489159797075507">"Historiku i telefonatave"</string>
+    <string name="recentCalls_callNumber" msgid="1756372533999226126">"Telefono <xliff:g id="NAME">%s</xliff:g>"</string>
+    <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redakto numrin para telefonatës"</string>
+    <string name="recentCalls_addToContact" msgid="1429899535546487008">"Shto te kontaktet"</string>
+    <string name="recentCalls_removeFromRecentList" msgid="5551148439199439404">"Fshi nga historiku i telefonatave"</string>
+    <string name="recentCalls_deleteAll" msgid="5157887960461979812">"Pastro historikun e telefonatave"</string>
+    <string name="recentCalls_trashVoicemail" msgid="7604696960787435655">"Fshije postën zanore"</string>
+    <string name="recentCalls_shareVoicemail" msgid="1416112847592942840">"Shpërndaje postën zanore"</string>
+    <string name="recentCalls_empty" msgid="8555115547405030734">"Nuk ka asnjë telefonatë"</string>
+    <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Të pastrohet historiku i telefonatave?"</string>
+    <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Kjo do të fshijë të gjitha telefonatat nga historiku yt"</string>
+    <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Po pastron historikun e telefonatave…"</string>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> posta zanore </item>
+      <item quantity="one"> postë zanore</item>
+    </plurals>
+    <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Luaj"</string>
+    <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
+    <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Postë e re zanore nga <xliff:g id="CALLER">%1$s</xliff:g>"</string>
+    <string name="voicemail_playback_error" msgid="3356071912353297599">"Posta zanore nuk mund të luhej"</string>
+    <string name="voicemail_buffering" msgid="738287747618697097">"Po ruan në memorien e përkohshme…"</string>
+    <string name="voicemail_fetching_content" msgid="1287895365599580842">"Po ngarkon postën zanore…"</string>
+    <string name="voicemail_fetching_timout" msgid="3959428065511972176">"Posta zanore nuk mund të ngarkohej"</string>
+    <string name="call_log_voicemail_header" msgid="3945407886667089173">"Vetëm telefonatat me mesazhe zanore"</string>
+    <string name="call_log_incoming_header" msgid="2787722299753674684">"Vetëm telefonatat hyrëse"</string>
+    <string name="call_log_outgoing_header" msgid="761009180766735769">"Vetëm telefonatat dalëse"</string>
+    <string name="call_log_missed_header" msgid="8017148056610855956">"Vetëm telefonatat e humbura"</string>
+    <string name="voicemail_status_voicemail_not_available" msgid="5222480147701456390">"Përditësimet e postës zanore nuk mundësohen"</string>
+    <string name="voicemail_status_messages_waiting" msgid="6329544650250068650">"Posta të reja zanore janë në pritje. Nuk mund të ngarkohen tani."</string>
+    <string name="voicemail_status_configure_voicemail" msgid="8300808991932816153">"Konfiguro postën zanore"</string>
+    <string name="voicemail_status_audio_not_available" msgid="2449801102560158082">"Audioja nuk mundësohet"</string>
+    <string name="voicemail_status_action_configure" msgid="8671796489912239589">"Konfiguro"</string>
+    <string name="voicemail_status_action_call_server" msgid="1824816252288551794">"Telefono postën zanore"</string>
+    <string name="voicemail_speed_slowest" msgid="1733460666177707312">"Shpejtësi më e ulët"</string>
+    <string name="voicemail_speed_slower" msgid="1508601287347216244">"Shpejtësi e ulët"</string>
+    <string name="voicemail_speed_normal" msgid="9033988544627228892">"Shpejtësi normale"</string>
+    <string name="voicemail_speed_faster" msgid="2019965121475935488">"Shpejtësi e lartë"</string>
+    <string name="voicemail_speed_fastest" msgid="5758712343491183292">"Shpejtësi më e lartë"</string>
+    <string name="call_log_item_count_and_date" msgid="7641933305703520787">"(<xliff:g id="COUNT">%1$d</xliff:g>) <xliff:g id="DATE">%2$s</xliff:g>"</string>
+    <string name="sms_disambig_title" msgid="5846266399240630846">"Zgjidh një numër"</string>
+    <string name="call_disambig_title" msgid="4392886850104795739">"Zgjidh një numër"</string>
+    <string name="make_primary" msgid="5829291915305113983">"Kujtoje këtë zgjedhje"</string>
+    <string name="description_search_button" msgid="3660807558587384889">"kërko"</string>
+    <string name="description_dial_button" msgid="1274091017188142646">"formo numrin"</string>
+    <string name="description_digits_edittext" msgid="8760207516497016437">"numri për t\'u formuar"</string>
+    <string name="description_playback_start_stop" msgid="5060732345522492292">"Luaj ose ndalo luajtjen"</string>
+    <string name="description_playback_speakerphone" msgid="6008323900245707504">"Aktivizo ose çaktivizo altoparlantin"</string>
+    <string name="description_playback_seek" msgid="4509404274968530055">"Kërko pozicionin e luajtjes"</string>
+    <string name="description_rate_decrease" msgid="3161652589401708284">"Ule shpejtësinë e luajtjes"</string>
+    <string name="description_rate_increase" msgid="6324606574127052385">"Rrite shpejtësinë e luajtjes"</string>
+    <string name="action_menu_call_history_description" msgid="9018442816219748968">"Historiku i telefonatave"</string>
+    <string name="action_menu_overflow_description" msgid="2303272250613084574">"Opsione të tjera"</string>
+    <string name="action_menu_dialpad_button" msgid="1425910318049008136">"blloku i formimit të numrit"</string>
+    <string name="menu_copy" msgid="6108677035381940698">"Kopjo"</string>
+    <string name="menu_show_outgoing_only" msgid="1965570298133301970">"Shfaq vetëm dalëset"</string>
+    <string name="menu_show_incoming_only" msgid="7534206815238877417">"Shfaq vetëm hyrëset"</string>
+    <string name="menu_show_missed_only" msgid="154473166059743996">"Shfaq vetëm të humburat"</string>
+    <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Shfaq vetëm postën zanore"</string>
+    <string name="menu_show_all_calls" msgid="7560347482073345885">"Shfaqi të gjitha telefonatat"</string>
+    <string name="add_2sec_pause" msgid="9214012315201040129">"Shto një ndërprerje 2-sekondëshe"</string>
+    <string name="add_wait" msgid="3360818652790319634">"Shto një pritje"</string>
+    <string name="dialer_settings_label" msgid="4305043242594150479">"Cilësimet"</string>
+    <string name="menu_newContact" msgid="1209922412763274638">"Kontakt i ri"</string>
+    <string name="menu_allContacts" msgid="6948308384034051670">"Të gjitha kontaktet"</string>
+    <string name="callDetailTitle" msgid="5340227785196217938">"Detajet e telefonatës"</string>
+    <string name="toast_call_detail_error" msgid="6947041258280380832">"Detajet nuk mundësohen"</string>
+    <string name="dialer_useDtmfDialpad" msgid="1707548397435075040">"Përdor bllokun e tasteve me tone të prekjes"</string>
+    <string name="dialer_returnToInCallScreen" msgid="3719386377550913067">"Kthehu te telefonata në vazhdim"</string>
+    <string name="dialer_addAnotherCall" msgid="4205688819890074468">"Shto një telefonatë"</string>
+    <string name="type_incoming" msgid="6502076603836088532">"Telefonatë hyrëse"</string>
+    <string name="type_outgoing" msgid="343108709599392641">"Telefonatë dalëse"</string>
+    <string name="type_missed" msgid="2720502601640509542">"Telefonatë e humbur"</string>
+    <string name="type_incoming_video" msgid="82323391702796181">"Telefonatë hyrëse me video"</string>
+    <string name="type_outgoing_video" msgid="2858140021680755266">"Telefonatë dalëse me video"</string>
+    <string name="type_missed_video" msgid="954396897034220545">"Telefonatë e humbur me video"</string>
+    <string name="type_voicemail" msgid="5153139450668549908">"Posta zanore"</string>
+    <string name="actionIncomingCall" msgid="6028930669817038600">"Telefonatat hyrëse"</string>
+    <string name="description_call_log_play_button" msgid="651182125650429846">"Luaj postën zanore"</string>
+    <string name="description_view_contact" msgid="5205669345700598415">"Shiko kontaktin <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call" msgid="3443678121983852666">"Telefono <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_contact_details" msgid="51229793651342809">"Detajet e kontaktit për <xliff:g id="NAMEORNUMBER">%1$s</xliff:g>"</string>
+    <string name="description_new_voicemail" msgid="2133792360865517746">"Postë e re zanore."</string>
+    <string name="description_num_calls" msgid="1601505153694540074">"<xliff:g id="NUMBEROFCALLS">%1$s</xliff:g> telefonata."</string>
+    <string name="description_video_call" msgid="2933838090743214204">"Telefonatë me video."</string>
+    <string name="description_send_text_message" msgid="3118485319691414221">"Dërgo SMS te <xliff:g id="NAME">%1$s</xliff:g>"</string>
+    <string name="description_call_log_unheard_voicemail" msgid="118101684236996786">"Postë zanore e padëgjuar"</string>
+    <string name="description_start_voice_search" msgid="520539488194946012">"Nis kërkimin me zë"</string>
+    <string name="menu_callNumber" msgid="997146291983360266">"Telefono <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="unknown" msgid="740067747858270469">"Të panjohur"</string>
+    <string name="voicemail" msgid="3851469869202611441">"Posta zanore"</string>
+    <string name="private_num" msgid="6374339738119166953">"Numër privat"</string>
+    <string name="payphone" msgid="7726415831153618726">"Telefon me pagesë"</string>
+    <string name="callDetailsDurationFormat" msgid="6061406028764382234">"<xliff:g id="MINUTES">%s</xliff:g> min. e <xliff:g id="SECONDS">%s</xliff:g> sek."</string>
+    <string name="dialog_phone_call_prohibited_message" msgid="5730565540182492608">"Ky numër nuk mund të telefonohet"</string>
+    <string name="dialog_voicemail_not_ready_message" msgid="4384716252789515378">"Për të konfiguruar postën zanore, shko te \"Menyja\" &gt; \"Cilësimet\"."</string>
+    <string name="dialog_voicemail_airplane_mode_message" msgid="530922773669546093">"Për të shtuar një postë zanore, në fillim çaktivizo modalitetin \"në aeroplan\"."</string>
+    <string name="contact_list_loading" msgid="5488620820563977329">"Po ngarkon..."</string>
+    <string name="imei" msgid="3045126336951684285">"IMEI"</string>
+    <string name="meid" msgid="6210568493746275750">"MEID"</string>
+    <string name="simContacts_emptyLoading" msgid="6700035985448642408">"Po ngarkon nga karta SIM…"</string>
+    <string name="simContacts_title" msgid="27341688347689769">"Kontaktet e kartës SIM"</string>
+    <string name="add_contact_not_available" msgid="5547311613368004859">"Nuk mund të përdoret asnjë aplikacion për kontaktet"</string>
+    <string name="voice_search_not_available" msgid="2977719040254285301">"Kërkimi me zë nuk mundësohet"</string>
+    <string name="call_not_available" msgid="8941576511946492225">"Telefonata nuk mund të bëhet sepse aplikacioni \"Telefoni\" është i çaktivizuar."</string>
+    <string name="activity_not_available" msgid="2287665636817987623">"Nuk ka aplikacion për atë në këtë pajisje"</string>
+    <string name="dialer_hint_find_contact" msgid="1012544667033887519">"Fut një emër ose një numër telefoni"</string>
+    <string name="recentMissed_empty" msgid="4901789420356796156">"Nuk ka asnjë telefonatë"</string>
+    <string name="recentVoicemails_empty" msgid="8582424947259156664">"Nuk ka posta zanore së fundi"</string>
+    <string name="show_favorites_only" msgid="5520072531022614595">"Shfaq vetëm të preferuarat"</string>
+    <string name="call_log_activity_title" msgid="4612824396355272023">"Historiku"</string>
+    <string name="call_log_all_title" msgid="3566738938889333307">"Të gjitha"</string>
+    <string name="call_log_missed_title" msgid="4541142293870638971">"Të humbura"</string>
+    <string name="call_log_voicemail_title" msgid="940422274047025948">"Posta zanore"</string>
+    <string name="tab_speed_dial" msgid="7552166276545648893">"Telefonatë e shpejtë"</string>
+    <string name="tab_recents" msgid="929949073851377206">"Të fundit"</string>
+    <string name="tab_all_contacts" msgid="1410922767166533690">"Kontaktet"</string>
+    <string name="favorite_hidden" msgid="5011234945140912047">"U hoq nga të preferuarat"</string>
+    <string name="favorite_hidden_undo" msgid="2508998611039406474">"Zhbëj"</string>
+    <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefono <xliff:g id="NUMBER">%s</xliff:g>"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Krijo një kontakt të ri"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Shto te kontakti ekzistues"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Dërgo SMS"</string>
+    <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Bëj një telefonatë me video"</string>
+    <string name="recents_footer_text" msgid="7315554578957453359">"Shiko historikun e plotë të telefonatave"</string>
+    <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> telefonata të reja të humbura"</string>
+    <string name="speed_dial_empty" msgid="1931474498966072849">"Telefonata e shpejtë është formim numri me një prekje për të preferuarat dhe për numrat që telefonon më shpesh."</string>
+    <string name="all_contacts_empty" msgid="2299508125100209367">"Nuk ka asnjë kontakt"</string>
+    <string name="contact_tooltip" msgid="2019777545923635266">"Prek imazhin për të parë të gjithë numrat ose mbaje të shtypur për ta pozicionuar përsëri"</string>
+    <string name="remove_contact" msgid="1080555335283662961">"Hiq"</string>
+    <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TË GJITHA KONTAKTET"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Telefonatë me video"</string>
+    <string name="call_log_action_voicemail" msgid="4978620572562925654">"DËGJO"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Shiko detajet"</string>
+    <string name="description_incoming_missed_call" msgid="2381085098795943627">"Telefonatë e humbur nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_incoming_answered_call" msgid="7117665748428816544">"Telefonatë e përgjigjur nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_outgoing_call" msgid="6386364390619734734">"Telefonatë për <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
+    <string name="description_phone_account" msgid="1767072759541443861">"në <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telefono"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Telefono <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_video_call_action" msgid="4303952636480252389">"Telefonatë me video për <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
+    <string name="description_voicemail_action" msgid="8054891873788903063">"Dëgjo postën zanore nga <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_details_action" msgid="2433827152749491785">"Detajet e telefonatës për <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="toast_entry_removed" msgid="8010830299576311534">"U fshi nga historiku i telefonatave"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Raporto"</string>
+    <string name="call_log_header_today" msgid="3225248682434212981">"Sot"</string>
+    <string name="call_log_header_yesterday" msgid="9139172458834033092">"Dje"</string>
+    <string name="call_log_header_other" msgid="5769921959940709084">"Më të vjetra"</string>
+    <string name="call_detail_list_header" msgid="3752717059699600861">"Lista e telefonatave"</string>
+    <string name="voicemail_speaker_on" msgid="209154030283487068">"Aktivizo altoparlantin."</string>
+    <string name="voicemail_speaker_off" msgid="7390530056413093958">"Çaktivizo altoparlantin."</string>
+    <string name="voicemail_play_faster" msgid="3444751008615323006">"Luaj më shpejt."</string>
+    <string name="voicemail_play_slower" msgid="4544796503902818832">"Luaj më ngadalë."</string>
+    <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Nis ose ndërprit luajtjen."</string>
+    <string name="list_delimeter" msgid="4571593167738725100">", "</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Opsionet e paraqitjes"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Tingujt dhe dridhjet"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Qasshmëria"</string>
+    <string name="ringtone_title" msgid="760362035635084653">"Toni i ziles i telefonit"</string>
+    <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Dridhje edhe për telefonatat"</string>
+    <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tonet e bllokut të formimit të numrit"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Gjatësia e tonit të bllokut të formimit të numrave"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"I gjatë"</item>
+  </string-array>
+    <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Përgjigjet e shpejta"</string>
+    <string name="call_settings_label" msgid="313434211353070209">"Telefonatat"</string>
+    <string name="phone_account_settings_label" msgid="5864322009841175294">"Llogaritë e telefonatave"</string>
+</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 92b6eb0..c03b51a 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Телефон"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Историја позива"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Пошаљи SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Позови <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Измените број пре позива"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Додај у контакте"</string>
@@ -33,10 +32,11 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Желите да обришете историју позива?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ово ће избрисати све позиве из историје"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Брише се историја позива…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Говорна пошта"</item>
-    <item quantity="other" msgid="5513481419205061254">"Говорних порука: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> говорна порука </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> говорне поруке </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> говорних порука </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Пусти"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова говорна порука од <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +80,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Прикажи само пропуштене"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Прикажи само говорне поруке"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Прикажи све позиве"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Додај у контакте"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Додај паузу од 2 секунде"</string>
     <string name="add_wait" msgid="3360818652790319634">"Додај чекање"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Подешавања"</string>
@@ -141,33 +140,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Уклоњено је из омиљених"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Опозови"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Позови <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Додај у контакте"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Направи нови контакт"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Додај постојећем контакту"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Пошаљи SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Упути видео позив"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Приказ пуне историје позива"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Нових пропуштених позива: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Брзо бирање је бирање једним додиром за омиљене контакте и бројеве које често зовете"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Нема контаката"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Додирните слику да бисте видели све бројеве или додирните и задржите да бисте променили распоред"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Одбаци"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Уклони"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"СВИ КОНТАКТИ"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"УПУТИ ПОВРАТНИ ПОЗИВ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ПОЗОВИ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ПОЗОВИ ПОНОВО"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ВИДЕО ПОЗИВ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Видео позив"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ПУСТИ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ДЕТАЉИ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Прикажи детаље"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропуштени позив: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Примљени позив: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Позвали сте: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"на налогу <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Упути повратни позив за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Позови"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Позови <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Видео позив за <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Пусти говорну пошту од <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Детаљи позива за <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Избрисано из историје позива"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Број је пријављен Google-у"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ПРИЈАВИ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Пријави"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Данас"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Јуче"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Старији"</string>
@@ -178,13 +175,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Спорија репродукција."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Започните или паузирајте репродукцију."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Опште"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Опције приказивања контаката"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звуци и вибрација"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Опције приказа"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуци и вибрација"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Приступачност"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Звук звона телефона"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Вибрирај и за позиве"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звуци нумеричке тастатуре"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Друго"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Трајање тонова нумеричке тастатуре"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Нормално"</item>
+    <item msgid="6177579030803486015">"Дугачко"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Брзи одговори"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Позиви"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Налози за позивање"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 5dc0587..9ccf2c5 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Samtalshistorik"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Skicka sms"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ring <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Redigera nummer före samtal"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Lägg till i Kontakter"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Vill du rensa samtalshistoriken?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Alla samtal raderas från historiken"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Rensar samtalshistoriken ..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Röstmeddelanden"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> röstmeddelanden"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> röstmeddelanden </item>
+      <item quantity="one">röstmeddelande</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Spela upp"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Nytt röstmeddelande från <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Visa endast missade samtal"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Visa bara röstmeddelanden"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Visa alla samtal"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Lägg till i Kontakter"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Lägg till en paus på 2 sek."</string>
     <string name="add_wait" msgid="3360818652790319634">"Lägg till väntetid"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Inställningar"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Borttagen från favoriter"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Ångra"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Ring <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Lägg till i Kontakter"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Skapa ny kontakt"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Lägg till i befintlig kontakt"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Skicka sms"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Ring videosamtal"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Visa hela samtalshistoriken"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> nya missade samtal"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Kortnummer är snabbval för favoritkontakter och nummer du ringer till ofta"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Inga kontakter"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Tryck på bilden och visa alla nummer eller tryck länge om du vill ändra ordningen"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Avvisa"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Ta bort"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ALLA KONTAKTER"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"RING UPP"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"RING"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"RING IGEN"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOSAMTAL"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Videosamtal"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"LYSSNA"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"INFORMATION"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Visa information"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Missat samtal från <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Besvarat samtal från <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Ring till <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"på <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Ring upp <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Samtal"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Ring <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videosamtal till <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Lyssna på ett röstmeddelande från <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Samtalsinformation för <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Har raderats från samtalshistoriken"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nummer som har rapporterats till Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"RAPPORTERA"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Rapport"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"I dag"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"I går"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Äldre"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Spela upp långsammare."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Starta eller pausa uppspelning."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Allmänt"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Visningsalternativ för kontakter"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Ljud och vibrationer"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Visningsalternativ"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ljud och vibration"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Tillgänglighet"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Ringsignal"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Vibrera också vid samtal"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Knappsatsljud"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Övrigt"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tonlängd för knappsats"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Lång"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Snabbsvar"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Samtal"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Konton för samtal"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 78e8a41..833b2f7 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Nambari ya simu"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Simu"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Rekodi ya simu zilizopigwa"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Tuma SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Pigia <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Hariri nambari kabla ya kupiga"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Ongeza kwa anwani"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Je, ungependa kufuta rekodi ya simu zilizopigwa?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Hii itafuta simu zote kutoka rekodi zako"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Inafuta rekodi ya simu zilizopigwa..."</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Ujumbe wa sauti"</item>
-    <item quantity="other" msgid="5513481419205061254">"Barua za sauti <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other">Ujumbe <xliff:g id="COUNT">%1$d</xliff:g> wa sauti </item>
+      <item quantity="one">Ujumbe wa sauti</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Cheza"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Barua mpya ya sauti kutoka <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Onyesha zilizokosa kupokewa pekee"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Onyesha barua za sauti pekee"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Onyesha simu zote"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Ongeza kwenye anwani"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Ongeza usitishaji wa sekunde 2"</string>
     <string name="add_wait" msgid="3360818652790319634">"Ongeza kusubiri"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Mipangilio"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Imeondolowa kwenye vipendwa"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Tendua"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Piga simu <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Ongeza kwenye anwani"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Ongeza anwani mpya"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Ongeza kwenye anwani iliyopo"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Tuma SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Piga Hangout ya video"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Angalia historia kamili ya simu zilizopigwa"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Simu <xliff:g id="NUMBER">%s</xliff:g> za karibuni ambazo hazikujibiwa"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Unaowasiliana nao zaidi ni upigaji simu wa kugusa mara moja kwa vipendeleo na nambari unazopiga mara kwa mara"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Hakuna anwani"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Gusa picha ili uone nambari zote au gusa na ushikilie ili upange upya"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ondoa"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Ondoa"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"ANWANI ZOTE"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"PIGA SIMU"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"PIGA SIMU"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"PIGA SIMU TENA"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"HANGOUT YA VIDEO"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Hangout ya Video"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"SIKILIZA"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"MAELEZO"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Angalia maelezo"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Simu ambayo haikupokelewa kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Simu iliyopokelewa kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Simu iliyopigwa kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"kwenye <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Piga simu kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Piga simu"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Piga simu kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Hangout ya video kwenda kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Sikiliza ujumbe wa sauti kutoka kwa <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Maelezo ya simu ya <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Ilifutwa kutoka rekodi ya simu zilizopigwa"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Nambari iliripotiwa kwa Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"RIPOTI"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Ripoti"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Leo"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Jana"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Nzee zaidi"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Cheza polepole."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Anzisha au usitishe kucheza."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Jumla"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Chaguo za onyesho la anwani"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sauti na mtetemo"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Chaguo za onyesho"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Sauti na mtetemo"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Zana za walio na matatizo ya kuona au kusikia"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Mlio wa simu"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Tetema simu zinapoingia pia"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Milio ya vitufe vya kupiga simu"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Nyingine"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Urefu wa toni ya vitufe vya kupiga simu"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Kawaida"</item>
+    <item msgid="6177579030803486015">"Ndefu"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Majibu ya haraka"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Simu zilizopigwa"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Akaunti za simu"</string>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 813ebfd..711ba0e 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ஃபோன்"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ஃபோன்"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"அழைப்பு வரலாறு"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS அனுப்பு"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> ஐ அழை"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"அழைப்பதற்கு முன் எண்ணைத் திருத்து"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"தொடர்புகளில் சேர்"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"அழைப்பு வரலாற்றை அழிக்கவா?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"வரலாற்றிலிருந்து இது எல்லா அழைப்புகளையும் நீக்கும்"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"அழைப்பு வரலாற்றை அழிக்கிறது…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"குரலஞ்சல்"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> குரலஞ்சல்கள்"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> குரலஞ்சல்கள் </item>
+      <item quantity="one">குரலஞ்சல்</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"இயக்கு"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> இன் புதிய குரலஞ்சல்"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"தவறியதை மட்டும் காட்டு"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"குரலஞ்சல்களை மட்டும் காட்டு"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"எல்லா அழைப்புகளையும் காட்டு"</string>
-    <string name="add_contact" msgid="4579643070374941999">"தொடர்புகளில் சேர்"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2-வினாடி இடைநிறுத்தத்தைச் சேர்"</string>
     <string name="add_wait" msgid="3360818652790319634">"காத்திருப்பைச் சேர்"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"அமைப்பு"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"பிடித்தவற்றிலிருந்து அகற்றப்பட்டது"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"செயல்தவிர்"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> ஐ அழை"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"தொடர்புகளில் சேர்"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"புதிய தொடர்பை உருவாக்கு"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"இருக்கும் தொடர்பில் சேர்"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS அனுப்பு"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"வீடியோவில் அழை"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"அழைப்பு பட்டியல் முழுவதையும் காட்டு"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> புதிய தவறிய அழைப்புகள்"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"விரைவு டயல் என்பது பிடித்த மற்றும் நீங்கள் அடிக்கடி அழைக்கும் எண்களை ஒரே தொடுதலின் மூலம் டயல் செய்யும் அம்சமாகும்."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"தொடர்புகள் இல்லை"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"எல்லா எண்களையும் பார்க்க, படத்தைத் தொடவும் அல்லது மறுவரிசைப்படுத்த தொட்டுப் பிடித்திருக்கவும்"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"விலக்கு"</string>
     <string name="remove_contact" msgid="1080555335283662961">"அகற்று"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"எல்லா தொடர்புகளும்"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"திரும்ப அழை"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"அழை"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"மீண்டும் அழை"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"வீடியோ அழைப்பு"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"வீடியோ அழைப்பு"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"கேள்"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"விவரங்கள்"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"விவரங்களைக் காட்டு"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"தவறிய அழைப்பு: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"பேசிய அழைப்பு: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"அழைத்த அழைப்பு: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> இல்"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> ஐத் திரும்ப அழை"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"அழை"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>ஐ அழை"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"அழைத்த வீடியோ அழைப்பு: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> இன் குரலஞ்சலைக் கேள்"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> இன் அழைப்பு விவரங்கள்"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"அழைப்பு வரலாற்றிலிருந்து நீக்கப்பட்டது"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Googleக்கு எண் அறிக்கையிடப்பட்டது"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"புகாரளி"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"புகாரளி"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"இன்று"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"நேற்று"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"பழையது"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"மெதுவாக இயக்கு."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"பிளேபேக்கைத் தொடங்கு அல்லது இடைநிறுத்து."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"பொது"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"தொடர்பின் காட்சி விருப்பங்கள்"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ஒலிகளும் அதிர்வுறுதலும்"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"திரை விருப்பங்கள்"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ஒலிகளும் அதிர்வும்"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"அணுகல் தன்மை"</string>
     <string name="ringtone_title" msgid="760362035635084653">"மொபைலின் ரிங்டோன்"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"அழைப்புகளுக்கும் அதிர்வுறு"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"டயல்பேட் ஒலிகள்"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"பிற"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"டயல்பேட் டோன் நீளம்"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"இயல்பு"</item>
+    <item msgid="6177579030803486015">"நீளமானது"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"விரைவு பதில்கள்"</string>
     <string name="call_settings_label" msgid="313434211353070209">"அழைப்புகள்"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"அழைப்பு கணக்குகள்"</string>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 49a1787..f1f69a9 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"ఫోన్"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"ఫోన్"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"కాల్ చరిత్ర"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS పంపు"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g>కు కాల్ చేయి"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"కాల్ చేయడానికి ముందు నంబర్‌ను సవరించు"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"పరిచయాలకు జోడించు"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"కాల్ చరిత్రను క్లియర్ చేయాలా?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"దీని వలన మీ చరిత్ర నుండి అన్ని కాల్‌లు తొలగించబడతాయి"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"కాల్ చరిత్రను క్లియర్ చేస్తోంది…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"వాయిస్ మెయిల్"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> వాయిస్ మెయిల్‌లు"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> వాయిస్ మెయిల్‌లు </item>
+      <item quantity="one">వాయిస్ మెయిల్</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"ప్లే చేయి"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> నుండి కొత్త వాయిస్ మెయిల్"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"సమాధానం ఇవ్వనివి మాత్రమే చూపు"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"వాయిస్ మెయిల్‌లు మాత్రమే చూపు"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"అన్ని కాల్‌లను చూపు"</string>
-    <string name="add_contact" msgid="4579643070374941999">"పరిచయాలకు జోడించు"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2-సెకన్ల పాజ్‌ను జోడించండి"</string>
     <string name="add_wait" msgid="3360818652790319634">"నిరీక్షణ సమయాన్ని జోడించు"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"సెట్టింగ్‌లు"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"ఇష్టమైనవాటి నుండి తీసివేయబడింది"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"చర్య రద్దు చేయి"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>కు కాల్ చేయండి"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"పరిచయాలకు జోడించండి"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"కొత్త పరిచయాన్ని సృష్టించు"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"ఇప్పటికే ఉన్న పరిచయానికి జోడించు"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS పంపు"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"వీడియో కాల్ చేయండి"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"పూర్తి కాల్ చరిత్రను వీక్షించండి"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> కొత్త సమాధానం ఇవ్వని కాల్‌లు"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"స్పీడ్ డయల్ అనేది మీరు ఇష్టమైనవిగా జోడించిన మరియు తరచుగా కాల్ చేసే నంబర్‌లకు ఒక్కసారి తాకడం ద్వారా డయల్ చేయగల సదుపాయం"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"పరిచయాలు లేవు"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"అన్ని నంబర్‌లను చూడటానికి చిత్రాన్ని తాకండి లేదా మళ్లీ క్రమం చేయడానికి తాకి, ఉంచండి"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"తీసివేయి"</string>
     <string name="remove_contact" msgid="1080555335283662961">"తీసివేయి"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"అన్ని పరిచయాలు"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"తిరిగి కాల్ చేయి"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"కాల్ చేయి"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"మళ్లీ డయల్ చేయి"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"వీడియో కాల్"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"వీడియో కాల్"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"వినండి"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"వివరాలు"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"వివరాలను వీక్షించండి"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g> నుండి <xliff:g id="TIMEOFCALL">^3</xliff:g> <xliff:g id="PHONEACCOUNT">^4</xliff:g>కి మిస్డ్ కాల్ ఇచ్చారు."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g> నుండి <xliff:g id="TIMEOFCALL">^3</xliff:g> <xliff:g id="PHONEACCOUNT">^4</xliff:g>కి చేసిన కాల్‌కి సమాధానం ఇచ్చారు."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>కి <xliff:g id="TIMEOFCALL">^3</xliff:g> <xliff:g id="PHONEACCOUNT">^4</xliff:g> నుండి కాల్ చేసారు."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g>లో"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>కి తిరిగి కాల్ చేయండి"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"కాల్ చేయి"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>కి కాల్ చేయి"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>కి చేసిన వీడియో కాల్."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> నుండి వచ్చిన వాయిస్ మెయిల్‌ను వినండి"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> యొక్క కాల్ వివరాలు"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"కాల్ చరిత్ర నుండి తొలగించబడింది"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Googleకి నంబర్ నివేదించబడింది"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"నివేదించండి"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"నివేదించు"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"ఈ రోజు"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"నిన్న"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"పాతది"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"నెమ్మదిగా ప్లే చేయి."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"ప్లేబ్యాక్‌ను ప్రారంభించు లేదా పాజ్ చేయి."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"సాధారణం"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"పరిచయ ప్రదర్శన ఎంపికలు"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"ధ్వనులు మరియు వైబ్రేట్"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ప్రదర్శన ఎంపికలు"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"ధ్వనులు మరియు వైబ్రేషన్"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"ప్రాప్యత సామర్థ్యం"</string>
     <string name="ringtone_title" msgid="760362035635084653">"ఫోన్ రింగ్‌టోన్"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"కాల్‌ల కోసం వైబ్రేట్ కూడా చేయి"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"డయల్‌ప్యాడ్ టోన్‌లు"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"ఇతరం"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"డయల్‌ప్యాడ్ టోన్ నిడివి"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"సాధారణం"</item>
+    <item msgid="6177579030803486015">"ఎక్కువ నిడివి"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"శీఘ్ర ప్రతిస్పందనలు"</string>
     <string name="call_settings_label" msgid="313434211353070209">"కాల్‌లు"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"కాల్ చేసే ఖాతాలు"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 91816b8..0914e49 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"โทรศัพท์"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"โทรศัพท์"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"ประวัติการโทร"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"ส่ง SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"โทรหา <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"แก้ไขหมายเลขก่อนโทร"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"เพิ่มในสมุดโทรศัพท์"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"ล้างประวัติการโทรไหม"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"การดำเนินการนี้จะลบการโทรทั้งหมดออกจากประวัติของคุณ"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"กำลังล้างประวัติการโทร…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"ข้อความเสียง"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ข้อความเสียง"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ข้อความเสียง </item>
+      <item quantity="one">ข้อความเสียง</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"เล่น"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"ข้อความเสียงใหม่จาก <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"แสดงสายที่ไม่ได้รับเท่านั้น"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"แสดงเฉพาะข้อความเสียง"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"แสดงการโทรทั้งหมด"</string>
-    <string name="add_contact" msgid="4579643070374941999">"เพิ่มในสมุดติดต่อ"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"เพิ่มช่วงคั่น 2 วินาที"</string>
     <string name="add_wait" msgid="3360818652790319634">"เพิ่มการรอ"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"การตั้งค่า"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"ลบจากรายการโปรด"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"เลิกทำ"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"โทร <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"เพิ่มในสมุดติดต่อ"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"สร้างรายชื่อติดต่อใหม่"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"เพิ่มไปยังรายชื่อติดต่อที่มีอยู่"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"ส่ง SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ใช้แฮงเอาท์วิดีโอ"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"ดูประวัติการโทรแบบเต็ม"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"สายที่ไม่ได้รับใหม่ <xliff:g id="NUMBER">%s</xliff:g> สาย"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"การโทรด่วนเป็นการโทรแบบแตะครั้งเดียวสำหรับรายการโปรดและหมายเลขที่คุณโทรบ่อย"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"ไม่มีรายชื่อติดต่อ"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"แตะรูปภาพเพื่อดูหมายเลขทั้งหมด หรือแตะค้างไว้เพื่อเรียงลำดับใหม่"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"ปิด"</string>
     <string name="remove_contact" msgid="1080555335283662961">"ลบ"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"รายชื่อติดต่อทั้งหมด"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"โทรกลับ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"โทร"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ต่อสายอีกครั้ง"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"แฮงเอาท์วิดีโอ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"แฮงเอาท์วิดีโอ"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"ฟัง"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"รายละเอียด"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"ดูรายละเอียด"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"ไม่ได้รับสายจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"รับสายจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"โทรหา <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"บน <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"โทรกลับ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"โทร"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"โทรไปที่ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"แฮงเอาท์วิดีโอถึง <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"ฟังข้อความเสียงจาก <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"รายละเอียดการโทรสำหรับ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"ลบออกจากประวัติการโทรแล้ว"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"หมายเลขที่รายงานไปยัง Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"รายงาน"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"รายงาน"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"วันนี้"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"เมื่อวานนี้"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"เก่ากว่า"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"เล่นช้าลง"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"เริ่มหรือหยุดเล่นชั่วคราว"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"ทั่วไป"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"ตัวเลือกการแสดงรายชื่อติดต่อ"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"เสียงและสั่น"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ตัวเลือกการแสดง"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"เสียงและการสั่น"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"การเข้าถึง"</string>
     <string name="ringtone_title" msgid="760362035635084653">"เสียงเรียกเข้า"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"สั่นเมื่อมีสายเรียกเข้าด้วย"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"เสียงแป้นหมายเลข"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"อื่นๆ"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ระยะเวลาของเสียงแป้นหมายเลข"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"ปกติ"</item>
+    <item msgid="6177579030803486015">"ยาว"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"คำตอบด่วน"</string>
     <string name="call_settings_label" msgid="313434211353070209">"การโทร"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"บัญชีการโทร"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 03df044..54f739c 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telepono"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telepono"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"History ng tawag"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Magpadala ng SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Tawagan si <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"I-edit ang numero bago tumawag"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Idagdag sa mga contact"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"I-clear ang history ng tawag?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Ide-delete nito ang lahat ng tawag mula sa iyong history"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Kini-clear ang history ng tawag…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Voicemail"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> (na) Voicemail"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Voicemail </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> na Voicemail </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"I-play"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Bagong voicemail mula kay <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Ipakita lang ang hindi nasagot"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Ipakita lamang ang mga voicemail"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Ipakita ang lahat ng tawag"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Idagdag sa mga contact"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Magdagdag ng pag-pause na 2-seg"</string>
     <string name="add_wait" msgid="3360818652790319634">"Magdagdag ng paghihintay"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Mga Setting"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Inalis sa mga paborito"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"I-undo"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Tumawag sa <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Idagdag sa mga contact"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Gumawa ng bagong contact"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Idagdag sa umiiral nang contact"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Magpadala ng SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Gumawa ng video call"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Tingnan ang buong kasaysayan ng tawag"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> (na) bagong hindi nasagot na tawag"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Ang speed dial ay one‑touch na pagda-dial para sa mga paborito at mga numerong madalas mong tinatawag"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Walang mga contact"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Pindutin ang larawan upang makita ang lahat ng numero o pindutin nang matagal upang ayusing muli"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"I-dismiss"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Alisin"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"LAHAT NG CONTACT"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"TUMAWAG"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"TAWAGAN"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"I-DIAL MULI"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEO CALL"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Mag-video call"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"MAKINIG"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"MGA DETALYE"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Tingnan ang mga detalye"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Hindi nasagot na tawag mula kay/sa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Nasagot na tawag mula kay/sa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Tawag kay/sa <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"sa <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Tumawag sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Tumawag"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Tawagan ang/si <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Nakipag-video call sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Makinig sa voicemail mula sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Mga detalye ng tawag para sa/kay <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Na-delete mula sa history ng tawag"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Naiulat ang numero sa Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"IULAT"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Mag-ulat"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Ngayon"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Kahapon"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Mas Luma"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Mag-play nang mas mabagal."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Simulan o i-pause ang pag-playback."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Pangkalahatan"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Mga opsyon ng display ng contact"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Mga tunog at pag-vibrate"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Mga opsyon sa pagpapakita"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Tunog at pag-vibrate"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Pagiging Naa-access"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Ringtone ng telepono"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Mag-vibrate din para sa tawag"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Mga dialpad tone"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Iba pa"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tagal ng tunog ng dialpad"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Mahaba"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Mga mabilisang tugon"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Mga Tawag"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Mga account sa pagtawag"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 2d9463a..5ddc5bd 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Çağrı geçmişi"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS gönder"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Ara: <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Önce numarayı düzenle"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Kişilere ekle"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Çağrı geçmişi temizlensin mi?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Bu işlem, geçmişinizdeki bütün çağrıları silecek"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Çağrı geçmişi temizleniyor…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Sesli mesaj"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Sesli mesaj"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Sesli Mesaj </item>
+      <item quantity="one">Sesli Mesaj</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Oynat"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Yeni sesli mesj gönderen: <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Yalnızca cevapsızları göster"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Yalnızca sesli msajları göster"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Tüm çağrıları göster"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Rehbere ekle"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 saniyelik duraklama ekle"</string>
     <string name="add_wait" msgid="3360818652790319634">"Bekleme ekle"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Ayarlar"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Favorilerden kaldırıldı"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Geri al"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Telefon et: <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Kişilere ekle"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Yeni kişi oluştur"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Mevcut kişiye ekle"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS gönder"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Video görüşmesi yap"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Tüm çağrı geçmişini görüntüle"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> yeni cevapsız çağrı"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Hızlı arama, favorilerinizin ve sık kullandığınız numaraların tek tuşla aranmasıdır."</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Kişi yok"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Tüm numaraları görmek için resme dokunun veya yeniden sıralamak için dokunup basılı tutun"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Kapat"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Kaldır"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TÜM KİŞİLER"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"GERİ ARA"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"TELEFON ET"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"YENİDEN ARA"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VİDEO GÖRÜŞMESİ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video görüşmesi"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"DİNLE"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"AYRINTILAR"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Ayrıntıları görüntüle"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Cevapsız çağrı: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Cevaplanan çağrı: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Yapılan çağrı: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> üzerinde"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Geri ara: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Telefon et"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Telefon et: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> olarak kayıtlı kişiye video görüşmesi isteğinde bulun."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Şu numaradan gelen sesli mesajı dinle: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> için çağrı ayrıntıları"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Çağrı geçmişinden silindi"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Numara Google\'a bildirildi"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"BİLDİR"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Bildir"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Bugün"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Dün"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Daha eski"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Daha yavaş çalın."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Çalmayı başlatın veya duraklatın."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Genel"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kişi görüntüleme seçenekleri"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Sesler ve titreşim"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Görüntüleme seçenekleri"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ses ve titreşim"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Erişilebilirlik"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Telefon zil sesi"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Çağrılarda ayrıca titret"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tuş takımı tonları"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Diğer"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Tuş takımı ses uzunluğu"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Normal"</item>
+    <item msgid="6177579030803486015">"Uzun"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Hızlı yanıtlar"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Çağrılar"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Çağrı hesapları"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 0d763b4..0a60567 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Телефон"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Тел."</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Історія дзвінків"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Надіслати SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Набрати <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Редаг. номер перед викл."</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Додати в контакти"</string>
@@ -33,10 +32,12 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Очистити історію дзвінків?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"З історії буде видалено всі дзвінки"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Очищення історії дзвінків…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Голосова пошта"</item>
-    <item quantity="other" msgid="5513481419205061254">"Повідомлень голос. пошти: <xliff:g id="COUNT">%1$d</xliff:g>"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> голосове повідомлення </item>
+      <item quantity="few"> <xliff:g id="COUNT">%1$d</xliff:g> голосові повідомлення </item>
+      <item quantity="many"> <xliff:g id="COUNT">%1$d</xliff:g> голосових повідомлень </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> голосових повідомлень </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Відтворити"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Нова голосова пошта від <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +81,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Показувати лише пропущені"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Показувати лише голосову пошту"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Показувати всі виклики"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Додати в контакти"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Додати 2-сек. паузу"</string>
     <string name="add_wait" msgid="3360818652790319634">"Додати паузу"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Налаштування"</string>
@@ -141,33 +141,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Вилучено з вибраного"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Відмінити"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Набрати <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Додати до контактів"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Створити новий контакт"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Додати до наявного контакта"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Надіслати SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Здійснити відеодзвінок"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Переглянути всю історію дзвінків"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"Нових пропущених дзвінків: <xliff:g id="NUMBER">%s</xliff:g>"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Швидкий набір – це набір вибраних номерів і номерів, на які ви часто телефонуєте, одним дотиком"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Немає контактів"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Торкніться зображення, щоб побачити всі номери, або натисніть і утримуйте, щоб змінити порядок"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Закрити"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Видалити"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"УСІ КОНТАКТИ"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"ТЕЛЕФОНУВАТИ"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"ЗАТЕЛЕФОНУВАТИ"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"ЗАТЕЛЕФОНУВАТИ ЗНОВУ"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ВІДЕОДЗВІНОК"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Відеодзвінок"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"СЛУХАТИ"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"ДЕТАЛІ"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Переглянути деталі"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Пропущений дзвінок: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Прийнятий дзвінок: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Вихідний дзвінок: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"Обліковий запис: <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Передзвонити на <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Виклик"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Телефонувати: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Відеодзвінок: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Слухати голосову пошту: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>: деталі виклику"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Видалено з історії дзвінків"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Номер надіслано в Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"ПОСКАРЖИТИСЯ"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Повідомити"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Сьогодні"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Учора"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Старіші"</string>
@@ -178,13 +176,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Відтворювати повільніше."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Почати або призупинити відтворення."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Загальні налаштування"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Параметри відображення контактів"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Звуки та вібросигнал"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Параметри відображення"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Звуки та вібрація"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Спеціальні можливості"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Сигнал дзвінка телефона"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Також вібрувати для дзвінків"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Звуки цифрової клавіатури"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Інше"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Тривалість сигналу цифрової клавіатури"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Стандартний сигнал"</item>
+    <item msgid="6177579030803486015">"Довгий сигнал"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Швидкі відповіді"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Дзвінки"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Обл. записи для дзвінків"</string>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index e825624..0b2eaf4 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"فون"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"فون"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"کال کی سرگزشت"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"‏SMS بھیجیں"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g> کو کال کریں"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"کال کرنے سے پہلے نمبر میں ترمیم کریں"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"رابطوں میں شامل کریں"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"کال کی سرگزشت صاف کریں؟"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"یہ آپ کی سرگزشت سے سبھی کالز کو حذف کر دے گا"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"کال کی سرگزشت صاف کی جا رہی ہے…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"صوتی میل"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> صوتی میلز"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> صوتی میلز </item>
+      <item quantity="one">صوتی میل</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"چلائیں"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>، <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g> کی جانب سے نیا صوتی میل"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"صرف چھوٹی ہوئی دکھائیں"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"صرف صوتی میلز دکھائیں"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"سبھی کالیں دکھائیں"</string>
-    <string name="add_contact" msgid="4579643070374941999">"رابطوں میں شامل کریں"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 سیکنڈ کا توقف شامل کریں"</string>
     <string name="add_wait" msgid="3360818652790319634">"انتظار شامل کریں"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"ترتیبات"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"پسندیدہ سے ہٹا دیا گیا"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"کالعدم کریں"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g> کو کال کریں"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"رابطوں میں شامل کریں"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"نیا رابطہ بنائیں"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"موجودہ رابطے میں شامل کریں"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"‏SMS بھیجیں"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"ویڈیو کال کریں"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"کال کی مکمل سرگزشت دیکھیں"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> نئی چھوٹی ہوئی کالیں"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"اسپیڈ ڈائل ان پسندیدگیوں اور نمبرز کیلئے جنہیں آپ اکثر کال کرتے ہیں ایک ٹچ ڈائلنگ ہے"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"کوئی رابطے نہیں ہیں"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"سبھی نمبرز دیھکنے کیلئے تصویر ٹچ کریں یا دوبارہ ترتیب دینے کیلئے ٹچ کریں اور دبائے رکھیں"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"کالعدم کریں"</string>
     <string name="remove_contact" msgid="1080555335283662961">"ہٹائیں"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"سبھی رابطے"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"واپس کال کریں"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"کال کریں"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"دوبارہ ڈائل کریں"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"ویڈیو کال"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"ویڈیو کال"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"سنیں"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"تفصیلات"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"تفصیلات دیکھیں"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g> کی جانب سے چھوٹی ہوئی کال۔"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g> کی جانب سے جواب دی گئی کال۔"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="NAMEORNUMBER">^1</xliff:g>، <xliff:g id="TYPEORLOCATION">^2</xliff:g>، <xliff:g id="TIMEOFCALL">^3</xliff:g>، <xliff:g id="PHONEACCOUNT">^4</xliff:g> پر کال کریں۔"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> پر"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> پر واپس کال کریں"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"کال کریں"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کو کال کریں"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کو کی گئی ویڈیو کال۔"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> سے صوتی میل سنیں"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> کیلئے کال کی تفصیلات"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"کال کی سرگزشت سے حذف کر دیا گیا"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"‏Google کو نمبر کی اطلاع دی گئی"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"اطلاع دیں"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"اطلاع دیں"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"ﺁﺝ"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"گزشتہ کل"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"قدیم تر"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"آہستہ چلائیں۔"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"پلے بیک شروع یا موقوف کریں۔"</string>
     <string name="list_delimeter" msgid="4571593167738725100">"، "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"عام"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"رابطہ کے ڈسپلے کے اختیارات"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"آوازیں اور وائبریٹ"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"ڈسپلے کے اختیارات"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"آوازیں اور وائبریشن"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Accessibility"</string>
     <string name="ringtone_title" msgid="760362035635084653">"فون رِنگ ٹون"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"کالز کیلئے وائبریٹ بھی کرے"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"ڈائل پیڈ ٹونز"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"دیگر"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"ڈائل پیڈ ٹون کی لمبائی"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"حسب معمول"</item>
+    <item msgid="6177579030803486015">"طویل"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"فوری جوابات"</string>
     <string name="call_settings_label" msgid="313434211353070209">"کالز"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"کالنگ اکاؤنٹس"</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index e054bc9..8c3e426 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Telefon"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Telefon"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Qo‘ng‘iroqlar tarixi"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"SMS yuborish"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"<xliff:g id="NAME">%s</xliff:g>ga qo‘ng‘iroq qilish"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Qo‘ng‘iroq qilishdan oldin raqamni tahrirlang"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Kontaktlarga qo‘shish"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Qo‘ng‘iroqlar tarixi tozalansinmi?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Bu barcha qo‘ng‘iroqlar tarixini o‘chirib tashlaydi"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Qo‘ng‘iroqlar tarixi tozalanmoqda…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Ovozli xabar"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ta ovozli xabar"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> ta ovozli xabar </item>
+      <item quantity="one">Ovozli xabar</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Tinglash"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"<xliff:g id="CALLER">%1$s</xliff:g>dan yangi ovozli xabar"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Javobsiz qo‘n-larni ko‘rsatish"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Ovozli xabarlarni ko‘rsatish"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Barcha qo‘n-larni ko‘rsatish"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Kontaktlarga qo‘shish"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"2 soniyalik pauza qo‘shish"</string>
     <string name="add_wait" msgid="3360818652790319634">"Kutishni qo‘shish"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Sozlamalar"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Tanlanganlardan o‘chirilgan"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Qaytarish"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"<xliff:g id="NUMBER">%s</xliff:g>ga qo‘ng‘iroq qilish"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Kontaktlarga qo‘shish"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Yangi kontakt yaratish"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Mavjud kontaktga qo‘shish"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"SMS yuborish"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Videoqo‘ng‘iroq qilish"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"To‘liq qo‘ng‘iroqlar tarixini ko‘rish"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> ta javobsiz qo‘ng‘iroq"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Tezkor terish bu – sevimli kontaktlaringiz va ko‘p foydalaniladigan raqamlarga bir marta bosish orqali qo‘ng‘iroq qilish vositasidir"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Kontaktlar yo‘q"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Barcha raqamlarni ko‘rish uchun rasm ustiga bosing. Joyini o‘zgartirish uchun uni bosib turing."</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Ahamiyatsiz qoldirish"</string>
     <string name="remove_contact" msgid="1080555335283662961">"O‘chirish"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"BARCHA KONTAKTLAR"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"CHAQIRUV"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"QO‘NG‘IROQ QILISH"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"QAYTA TERISH"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"VIDEOQO‘NG‘IROQ"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Video qo‘ng‘iroq"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"TINGLASH"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"TAFSILOTLAR"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Tafsilotlarni ko‘rish"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Qo‘ng‘iroq javobsiz qoldirildi: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Qo‘ng‘iroqqa javob berildi: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Qo‘ng‘iroq qilindi: <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"<xliff:g id="PHONEACCOUNT">^1</xliff:g> orqali"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> raqamiga qaytib qo‘ng‘iroq qilish"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Qo‘ng‘iroq qilish"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Qo‘ng‘iroq qilish: <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Videoqo‘ng‘iroq: <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> kontaktidan kelgan ovozli xabarni tinglash"</string>
     <string name="description_details_action" msgid="2433827152749491785">"<xliff:g id="NAMEORNUMBER">^1</xliff:g> – qo‘ng‘iroq tafsilotlari"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Qo‘ng‘iroqlar tarixidan o‘chirib tashlandi"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Raqam haqidagi ma’lumotlar Google’ga yuborildi"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"GOOGLE’GA XABAR BERISH"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Hisobot"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Bugun"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Kecha"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Eskiroq"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Sekinroq ijro etish."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Ijroni boshlash yoki to‘xtatish"</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Umumiy"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Kontaktlarni ko‘rsatish uchun tanlamalar"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Ovoz va tebranish"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Ko‘rsatish sozlamalari"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Ovozlar va tebranish"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Maxsus imkoniyatlar"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Telefon uchun rington"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Qo‘ng‘iroq vaqtida tebranish"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Tugmalar tovushi"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Boshqa"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Klaviatura ohangi uzunligi"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"O‘rtacha"</item>
+    <item msgid="6177579030803486015">"Uzun"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Tezkor javoblar"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Qo‘ng‘iroqlar"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Qo‘ng‘iroq uchun hisoblar"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 4e46eaa..fabc27c 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Điện thoại"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Điện thoại"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Nhật ký cuộc gọi"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Gửi SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Gọi <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Chỉnh sửa số trước khi gọi"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Thêm vào danh bạ"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Xóa nhật ký cuộc gọi?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Thao tác này sẽ xóa tất cả cuộc gọi khỏi nhật ký của bạn"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Đang xóa nhật ký cuộc gọi…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Thư thoại"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> Thư thoại"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Thư thoại </item>
+      <item quantity="one">Thư thoại</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Phát"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"Thư thoại mới từ <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Chỉ hiển thị cuộc gọi nhỡ"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Chỉ hiển thị thư thoại"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Hiển thị tất cả cuộc gọi"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Thêm vào danh bạ"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Thêm 2 giây dừng"</string>
     <string name="add_wait" msgid="3360818652790319634">"Thêm chờ"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Cài đặt"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Đã xóa khỏi mục yêu thích"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Hoàn tác"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Gọi <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Thêm vào danh bạ"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Tạo liên hệ mới"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Thêm vào liên hệ hiện có"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Gửi SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Gọi điện video"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Xem lịch sử cuộc gọi đầy đủ"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> cuộc gọi nhỡ mới"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Quay số nhanh là quay số bằng một lần chạm đối với các liên hệ yêu thích và các số bạn thường xuyên gọi"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Không có liên hệ nào"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Chạm vào hình ảnh để xem tất cả các số hoặc chạm và giữ để sắp xếp lại"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Loại bỏ"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Xóa"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"TẤT CẢ NGƯỜI LIÊN HỆ"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"GỌI LẠI"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"GỌI"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"GỌI LẠI"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"GỌI ĐIỆN VIDEO"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Cuộc gọi điện video"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"NGHE"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"CHI TIẾT"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Xem chi tiết"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Cuộc gọi nhỡ từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Cuộc gọi đã trả lời từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Gọi tới <xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"trên <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Gọi lại <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Gọi"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Gọi <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Cuộc gọi điện video tới <xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Nghe thư thoại từ <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Chi tiết cuộc gọi cho <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Đã xóa khỏi nhật ký cuộc gọi"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Đã báo cáo số cho Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"BÁO CÁO"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Báo cáo"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Hôm nay"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Hôm qua"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Cũ hơn"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Phát chậm hơn."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Bắt đầu hoặc tạm dừng phát lại."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Chung"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Tùy chọn hiển thị liên hệ"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Âm thanh và rung"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Tùy chọn hiển thị"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Âm thanh và rung"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Trợ năng"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Nhạc chuông điện thoại"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Đồng thời rung khi có cuộc gọi"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Âm bàn phím số"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Khác"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Độ dài âm bàn phím số"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Thường"</item>
+    <item msgid="6177579030803486015">"Dài"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Trả lời nhanh"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Cuộc gọi"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Tài khoản gọi"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 4dfb20d..850908d 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"电话"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"拨号"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"通话记录"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"发送短信"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"呼叫<xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"呼叫之前编辑号码"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"添加到通讯录"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"要清除通话记录吗?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"这会删除您的所有通话记录"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通话记录…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"语音邮件"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> 封语音邮件"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> 封语音邮件</item>
+      <item quantity="one">1 封语音邮件</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"播放"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>,<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"来自<xliff:g id="CALLER">%1$s</xliff:g>的新语音邮件"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"只显示未接来电"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"只显示语音邮件"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"显示所有通话"</string>
-    <string name="add_contact" msgid="4579643070374941999">"添加到通讯录"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"延长暂停时间2秒"</string>
     <string name="add_wait" msgid="3360818652790319634">"延长等待时间"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"设置"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"已从收藏中移除"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"撤消"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"拨打<xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"添加到通讯录"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"新建联系人"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"添加到现有联系人"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"发送短信"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"发起视频通话"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"查看全部通话记录"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g>个新的未接电话"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"使用快速拨号功能,只需轻轻一点即可拨打收藏联系人的电话号码以及经常拨打的电话号码。"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"没有联系人"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"触摸图片可查看所有号码,触摸并按住可重新排序"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"关闭"</string>
     <string name="remove_contact" msgid="1080555335283662961">"移除"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"所有联系人"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"回电"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"拨打电话"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"重拨"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"视频通话"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"视频通话"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"听取"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"详情"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"查看详情"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"<xliff:g id="PHONEACCOUNT">^4</xliff:g> 上 <xliff:g id="TIMEOFCALL">^3</xliff:g>来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="TYPEORLOCATION">^2</xliff:g>)的未接电话。"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"<xliff:g id="PHONEACCOUNT">^4</xliff:g> 上 <xliff:g id="TIMEOFCALL">^3</xliff:g>来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="TYPEORLOCATION">^2</xliff:g>)的已接电话。"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"<xliff:g id="TIMEOFCALL">^3</xliff:g>通过 <xliff:g id="PHONEACCOUNT">^4</xliff:g> 拨打给<xliff:g id="NAMEORNUMBER">^1</xliff:g>(<xliff:g id="TYPEORLOCATION">^2</xliff:g>)的电话。"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"通过 <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"给<xliff:g id="NAMEORNUMBER">^1</xliff:g>回电"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"拨打电话"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"呼叫<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"向<xliff:g id="NAMEORNUMBER">^1</xliff:g>发起的视频通话。"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"听取来自<xliff:g id="NAMEORNUMBER">^1</xliff:g>的语音邮件"</string>
     <string name="description_details_action" msgid="2433827152749491785">"与<xliff:g id="NAMEORNUMBER">^1</xliff:g>的通话详情"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"已从通话记录中删除"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"电话号码已报告给 Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"报告问题"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"报告"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"今天"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"昨天"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"更早"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"慢放。"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"开始或暂停播放。"</string>
     <string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"常规"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"联系人显示选项"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"提示音和振动"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"显示选项"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"提示音和振动"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"无障碍功能"</string>
     <string name="ringtone_title" msgid="760362035635084653">"手机铃声"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"有来电时响铃并振动"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"拨号键盘提示音"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"其他"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"拨号键盘提示音长度"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"标准"</item>
+    <item msgid="6177579030803486015">"长"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"快速回复"</string>
     <string name="call_settings_label" msgid="313434211353070209">"通话"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"通话帐户"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 2f492a7..f99d23b 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"電話"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"通話記錄"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"傳送短訊"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"打電話給<xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"在撥打前編輯號碼"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"新增至通訊錄"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"要清除通話記錄嗎?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"這會刪除所有通話記錄"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通話記錄…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"話音留言"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> 個語音留言"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"><xliff:g id="COUNT">%1$d</xliff:g> 個留言</item>
+      <item quantity="one">留言</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"播放"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g> , <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"來自<xliff:g id="CALLER">%1$s</xliff:g>的新語音留言"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"只顯示未接來電"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"僅顯示語音留言"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"顯示所有通話"</string>
-    <string name="add_contact" msgid="4579643070374941999">"加入通訊錄"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"新增 2 秒暫停功能"</string>
     <string name="add_wait" msgid="3360818652790319634">"新增插播功能"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"設定"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"已從「我的最愛」中移除"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"復原"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"加入通訊錄"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"建立新聯絡人"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"加到現有的聯絡人"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"傳送短訊"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"進行視像通話"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"查看完整通話記錄"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> 個新的未接來電"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"使用快速撥號,只需點一下螢幕就能撥出常用電話號碼並致電最愛的親友"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"沒有聯絡人"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"輕觸圖像以查看所有電話號碼,或輕觸並按住圖像以重新排序"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"關閉"</string>
     <string name="remove_contact" msgid="1080555335283662961">"移除"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"所有聯絡人"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"回撥電話"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"通話"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"重新撥號"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"視像通話"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"視像通話"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"收聽"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"詳情"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"查看詳情"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"未接聽來電:<xliff:g id="NAMEORNUMBER">^1</xliff:g> (<xliff:g id="TIMEOFCALL">^3</xliff:g>,<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="PHONEACCOUNT">^4</xliff:g>)。"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"已接聽來電:<xliff:g id="NAMEORNUMBER">^1</xliff:g> (<xliff:g id="TIMEOFCALL">^3</xliff:g>,<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="PHONEACCOUNT">^4</xliff:g>)。"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"致電:<xliff:g id="NAMEORNUMBER">^1</xliff:g> (<xliff:g id="TIMEOFCALL">^3</xliff:g>,<xliff:g id="TYPEORLOCATION">^2</xliff:g><xliff:g id="PHONEACCOUNT">^4</xliff:g>)。"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"使用 <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"回撥電話給「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"撥號"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"致電 <xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"視像通話,通話對象:<xliff:g id="NAMEORNUMBER">^1</xliff:g>。"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"收聽來自「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的留言信箱"</string>
     <string name="description_details_action" msgid="2433827152749491785">"與「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」通話的詳細資料"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"已從通話記錄中刪除"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"已向 Google 報告電話號碼"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"報告"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"報告"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"今天"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"昨天"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"較早"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"放慢播放速度。"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"開始或暫停播放。"</string>
     <string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"一般"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"聯絡人顯示選項"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"音效和震動"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"顯示選項"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"聲音和震動"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"無障礙功能"</string>
     <string name="ringtone_title" msgid="760362035635084653">"手機鈴聲"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"來電時同時震動"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"撥號盤音效"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"其他"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"撥號音長度"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"正常"</item>
+    <item msgid="6177579030803486015">"長"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"快速回應"</string>
     <string name="call_settings_label" msgid="313434211353070209">"通話"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"通話帳戶"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 322309e..c5b7cae 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"電話"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"電話"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"通話紀錄"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"傳送簡訊"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"撥電話給<xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"撥打電話前編輯號碼"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"新增至通訊錄"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"清除通話紀錄?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"這項操作會將所有通話從您的紀錄中刪除"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"正在清除通話紀錄…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"語音留言"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> 則語音留言"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> 則語音留言</item>
+      <item quantity="one">語音留言</item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"播放"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>、<xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"最新語音留言者:<xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"僅顯示未接來電"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"僅顯示語音留言"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"顯示所有通話"</string>
-    <string name="add_contact" msgid="4579643070374941999">"新增為聯絡人"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"暫停時間延長 2 秒"</string>
     <string name="add_wait" msgid="3360818652790319634">"延長等待時間"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"設定"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"已從最愛的聯絡人移除"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"復原"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"撥打 <xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"新增為聯絡人"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"建立新聯絡人"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"新增到現有的聯絡人"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"傳送簡訊"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"進行視訊通話"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"查看完整通話紀錄"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> 通新的未接來電"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"快速撥號功能可讓您輕觸一下即撥打電話給最愛聯絡人和經常通話的號碼"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"沒有聯絡人"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"輕觸圖片即可查看所有號碼,輕觸並按住則可重新排序"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"關閉"</string>
     <string name="remove_contact" msgid="1080555335283662961">"移除"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"所有聯絡人"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"回電"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"通話"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"重新撥號"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"視訊通話"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"視訊通話"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"聽取"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"詳細資料"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"查看詳細資料"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"未接來電:<xliff:g id="NAMEORNUMBER">^1</xliff:g>/<xliff:g id="TYPEORLOCATION">^2</xliff:g>/<xliff:g id="TIMEOFCALL">^3</xliff:g>/<xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"已接來電:<xliff:g id="NAMEORNUMBER">^1</xliff:g>/<xliff:g id="TYPEORLOCATION">^2</xliff:g>/<xliff:g id="TIMEOFCALL">^3</xliff:g>/<xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"撥出通話:<xliff:g id="NAMEORNUMBER">^1</xliff:g>/<xliff:g id="TYPEORLOCATION">^2</xliff:g>/<xliff:g id="TIMEOFCALL">^3</xliff:g>/<xliff:g id="PHONEACCOUNT">^4</xliff:g>"</string>
     <string name="description_phone_account" msgid="1767072759541443861">"透過 <xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"回電給「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"撥號"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"撥號給「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"視訊通話,通話對象:<xliff:g id="NAMEORNUMBER">^1</xliff:g>。"</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"聽取「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」的語音留言"</string>
     <string name="description_details_action" msgid="2433827152749491785">"與「<xliff:g id="NAMEORNUMBER">^1</xliff:g>」通話的詳細資料"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"已從通話紀錄中刪除"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"已將號碼回報給 Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"檢舉"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"回報"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"今天"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"昨天"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"較舊"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"放慢播放速度。"</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"開始或暫停播放。"</string>
     <string name="list_delimeter" msgid="4571593167738725100">"、 "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"一般"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"聯絡人顯示選項"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"音效和震動"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"顯示選項"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"音效與振動"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"協助工具"</string>
     <string name="ringtone_title" msgid="760362035635084653">"手機鈴聲"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"來電時同時震動"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"撥號鍵盤音效"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"其他"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"撥號音長度"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"一般"</item>
+    <item msgid="6177579030803486015">"長"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"快速回應"</string>
     <string name="call_settings_label" msgid="313434211353070209">"通話"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"通話帳戶"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index b49ceb5..c254886 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -21,7 +21,6 @@
     <string name="launcherActivityLabel" msgid="1129729740601172692">"Ifoni"</string>
     <string name="dialerIconLabel" msgid="6500826552823403796">"Ifoni"</string>
     <string name="recentCallsIconLabel" msgid="2639489159797075507">"Umlando wekholi"</string>
-    <string name="menu_sendTextMessage" msgid="8682056943960339239">"Thumela i-SMS"</string>
     <string name="recentCalls_callNumber" msgid="1756372533999226126">"Shayela <xliff:g id="NAME">%s</xliff:g>"</string>
     <string name="recentCalls_editNumberBeforeCall" msgid="7756171675833267857">"Hlela inombolo ngaphambi kokushaya ucingo"</string>
     <string name="recentCalls_addToContact" msgid="1429899535546487008">"Engeza kothintana nabo"</string>
@@ -33,10 +32,10 @@
     <string name="clearCallLogConfirmation_title" msgid="801753155679372984">"Sula umlando wekholi?"</string>
     <string name="clearCallLogConfirmation" msgid="7899552396101432827">"Lokhu kuzosusa wonke amakholi kusukela kumlando wakho"</string>
     <string name="clearCallLogProgress_title" msgid="3372471156216306132">"Isula umlando wekholi…"</string>
-  <plurals name="notification_voicemail_title">
-    <item quantity="one" msgid="1746619685488504230">"Ivoyisimeyili"</item>
-    <item quantity="other" msgid="5513481419205061254">"<xliff:g id="COUNT">%1$d</xliff:g> ama-meyli ezwi"</item>
-  </plurals>
+    <plurals name="notification_voicemail_title" formatted="false" msgid="9088953961148324851">
+      <item quantity="one"> <xliff:g id="COUNT">%1$d</xliff:g> Amavoyisimeyili </item>
+      <item quantity="other"> <xliff:g id="COUNT">%1$d</xliff:g> Amavoyisimeyili </item>
+    </plurals>
     <string name="notification_action_voicemail_play" msgid="6113133136977996863">"Dlala"</string>
     <string name="notification_voicemail_callers_list" msgid="1153954809339404149">"<xliff:g id="NEWER_CALLERS">%1$s</xliff:g>, <xliff:g id="OLDER_CALLER">%2$s</xliff:g>"</string>
     <string name="notification_new_voicemail_ticker" msgid="895342132049452081">"I-imeyli entsha esuka ku <xliff:g id="CALLER">%1$s</xliff:g>"</string>
@@ -80,7 +79,6 @@
     <string name="menu_show_missed_only" msgid="154473166059743996">"Bonisa okugejiwe kuphela"</string>
     <string name="menu_show_voicemails_only" msgid="1898421289561435703">"Bonisa ama-imeyli ezwi kuphela"</string>
     <string name="menu_show_all_calls" msgid="7560347482073345885">"Bonisa zonke izingcingo ezenziwe"</string>
-    <string name="add_contact" msgid="4579643070374941999">"Engeza koxhumana nabo"</string>
     <string name="add_2sec_pause" msgid="9214012315201040129">"Faka ukumisa okwesikhashana kwamasekhondi angu-2"</string>
     <string name="add_wait" msgid="3360818652790319634">"Yengeza ukulinda"</string>
     <string name="dialer_settings_label" msgid="4305043242594150479">"Izilungiselelo"</string>
@@ -141,33 +139,31 @@
     <string name="favorite_hidden" msgid="5011234945140912047">"Kukhishiwe kusuka kuzintandokazi"</string>
     <string name="favorite_hidden_undo" msgid="2508998611039406474">"Hlehlisa"</string>
     <string name="search_shortcut_call_number" msgid="7277194656832895870">"Shayela ku-<xliff:g id="NUMBER">%s</xliff:g>"</string>
-    <string name="search_shortcut_add_to_contacts" msgid="1853716708655789069">"Engeza koxhumana nabo"</string>
+    <string name="search_shortcut_create_new_contact" msgid="1679917465521554093">"Dala oxhumana naye omusha"</string>
+    <string name="search_shortcut_add_to_existing_contact" msgid="4403132207405813444">"Engeza koxhumana naye okhona"</string>
+    <string name="search_shortcut_send_sms_message" msgid="2569304043345025525">"Thumela i-SMS"</string>
     <string name="search_shortcut_make_video_call" msgid="1265971685034465166">"Yenza ikholi yevidiyo"</string>
     <string name="recents_footer_text" msgid="7315554578957453359">"Buka wonke umlando wekholi"</string>
     <string name="num_missed_calls" msgid="8081736535604293886">"<xliff:g id="NUMBER">%s</xliff:g> amakholi amasha owaphuthelwe"</string>
     <string name="speed_dial_empty" msgid="1931474498966072849">"Ukudayela ngokushesha ukudayela kokuthinta okukodwa kwezintandokazi nezinombolo ovamise ukuzishayela"</string>
     <string name="all_contacts_empty" msgid="2299508125100209367">"Abekho oxhumana nabo"</string>
     <string name="contact_tooltip" msgid="2019777545923635266">"Thinta isithombe ukuze ubone zonke izinombolo noma uthinte uphinde ubambe ukuze uhlele kabusha"</string>
-    <string name="description_dismiss" msgid="2146276780562549643">"Cashisa"</string>
     <string name="remove_contact" msgid="1080555335283662961">"Susa"</string>
     <string name="favorites_menu_all_contacts" msgid="992506284449891186">"BONKE OXHUMANA NABO"</string>
-    <string name="call_log_action_call_back" msgid="4944463006859852473">"SHAYA FUTHI"</string>
-    <string name="call_log_action_call" msgid="8187991828921352552">"SHAYA"</string>
-    <string name="call_log_action_redial" msgid="8159106862639797417">"DAYELA KABUSHA"</string>
-    <string name="call_log_action_video_call" msgid="3818588654537490948">"IKHOLI YEVIDIYO"</string>
+    <string name="call_log_action_video_call" msgid="7724301709041128296">"Ikholi yevidiyo"</string>
     <string name="call_log_action_voicemail" msgid="4978620572562925654">"LALELA"</string>
-    <string name="call_log_action_details" msgid="6252596497021563115">"IMINININGWANE"</string>
+    <string name="call_log_action_details" msgid="7957138590190911171">"Buka imininingwane"</string>
     <string name="description_incoming_missed_call" msgid="2381085098795943627">"Ikholi egejiwe kusuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_incoming_answered_call" msgid="7117665748428816544">"Phendula ikholi kusuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_outgoing_call" msgid="6386364390619734734">"Ikholi eya ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>, <xliff:g id="TYPEORLOCATION">^2</xliff:g>, <xliff:g id="TIMEOFCALL">^3</xliff:g>, <xliff:g id="PHONEACCOUNT">^4</xliff:g>."</string>
     <string name="description_phone_account" msgid="1767072759541443861">"ku-<xliff:g id="PHONEACCOUNT">^1</xliff:g>"</string>
-    <string name="description_call_back_action" msgid="3012837380108884260">"Phinda ushayele u-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
+    <string name="description_call_log_call_action" msgid="3682561657090693134">"Shaya"</string>
+    <string name="description_call_action" msgid="4000549004089776147">"Shayela ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_video_call_action" msgid="4303952636480252389">"Ikholi yevidiyo eya ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>."</string>
     <string name="description_voicemail_action" msgid="8054891873788903063">"Lalela ivoyisimeyili esuka ku-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="description_details_action" msgid="2433827152749491785">"Imininingwane yekholi ye-<xliff:g id="NAMEORNUMBER">^1</xliff:g>"</string>
     <string name="toast_entry_removed" msgid="8010830299576311534">"Isusiwe kusukela kumlando wekholi"</string>
-    <string name="toast_caller_id_reported" msgid="2240847358945525483">"Inombolo ibikwe ku-Google"</string>
-    <string name="call_log_action_report" msgid="561229827189128879">"BIKA"</string>
+    <string name="call_log_action_report" msgid="4327809827087468864">"Umbiko"</string>
     <string name="call_log_header_today" msgid="3225248682434212981">"Namhlanje"</string>
     <string name="call_log_header_yesterday" msgid="9139172458834033092">"Izolo"</string>
     <string name="call_log_header_other" msgid="5769921959940709084">"Okudala"</string>
@@ -178,13 +174,17 @@
     <string name="voicemail_play_slower" msgid="4544796503902818832">"Dlala ngokungasheshi."</string>
     <string name="voicemail_play_start_pause" msgid="3687447935787768983">"Qala noma misa isikhashana ukudlala."</string>
     <string name="list_delimeter" msgid="4571593167738725100">", "</string>
-    <string name="general_settings_label" msgid="5748319557716674189">"Okujwayelekile"</string>
-    <string name="contact_display_options_category_title" msgid="5719485933817512769">"Izinketho zokubonisa oxhumana naye"</string>
-    <string name="sounds_and_vibrate_category_title" msgid="7589787045192519254">"Imisindo nokudlidliza"</string>
+    <string name="display_options_title" msgid="7812852361055667468">"Izinketho zokubukeka"</string>
+    <string name="sounds_and_vibration_title" msgid="1692290115642160845">"Imisindo nokudlidliza"</string>
+    <string name="accessibility_settings_title" msgid="6068141142874046249">"Ukufinyeleleka"</string>
     <string name="ringtone_title" msgid="760362035635084653">"Ithoni yokukhala yefoni"</string>
     <string name="vibrate_on_ring_title" msgid="3362916460327555241">"Iyadlidliza futhi ngamakholi"</string>
     <string name="dtmf_tone_enable_title" msgid="6571449695997521615">"Ukukhala kwephedi yokudayela"</string>
-    <string name="other_settings_title" msgid="7976283601445863248">"Okunye"</string>
+    <string name="dtmf_tone_length_title" msgid="8581125689808919460">"Ubude bethoni bephedi yokudayela"</string>
+  <string-array name="dtmf_tone_length_entries">
+    <item msgid="1036113889050195575">"Okujwayelekile"</item>
+    <item msgid="6177579030803486015">"Kude"</item>
+  </string-array>
     <string name="respond_via_sms_setting_title" msgid="1318281521087951580">"Izimpendulo ezisheshayo"</string>
     <string name="call_settings_label" msgid="313434211353070209">"Amakholi"</string>
     <string name="phone_account_settings_label" msgid="5864322009841175294">"Ama-akhawunti wokushaya"</string>
diff --git a/res/values/animation_constants.xml b/res/values/animation_constants.xml
index b8b2a59..4e4bc36 100644
--- a/res/values/animation_constants.xml
+++ b/res/values/animation_constants.xml
@@ -27,16 +27,4 @@
     <dimen name="min_swipe">0dip</dimen>
     <dimen name="min_vert">10dip</dimen>
     <dimen name="min_lock">20dip</dimen>
-
-    <!-- Expand/collapse of call log entry duration. -->
-    <integer name="call_log_expand_collapse_duration">200</integer>
-
-    <!-- Start delay for the fade in of the call log actions. -->
-    <integer name="call_log_actions_fade_start">150</integer>
-
-    <!-- Duration of the fade in of the call log actions. -->
-    <integer name="call_log_actions_fade_in_duration">50</integer>
-
-    <!-- Duration of the fade out of the call log actions. -->
-    <integer name="call_log_actions_fade_out_duration">20</integer>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 6e44f8b..86ac9be 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -18,7 +18,7 @@
     <!--  Primary text color in the Dialer -->
     <color name="dialtacts_primary_text_color">#333333</color>
     <!-- Secondary text color in the Dialer -->
-    <color name="dialtacts_secondary_text_color">#737373</color>
+    <color name="dialtacts_secondary_text_color">#636363</color>
     <color name="dialer_red_highlight_color">#ff1744</color>
     <color name="dialer_green_highlight_color">#00c853</color>
 
@@ -26,6 +26,7 @@
     <color name="setting_primary_color">@color/dialtacts_primary_text_color</color>
     <!-- Color for the setting description text. -->
     <color name="setting_secondary_color">@color/dialtacts_secondary_text_color</color>
+    <color name="setting_disabled_color">#aaaaaa</color>
     <color name="setting_background_color">#ffffff</color>
     <color name="setting_button_color">#eee</color>
 
@@ -37,7 +38,6 @@
 
     <!-- Tint of the recent card phone icon -->
     <color name="recent_call_log_item_phone_icon_tint">#000000</color>
-    <color name="call_log_extras_text_color">#0277bd</color>
 
     <!--
          Colour of voicemail progress bar to the right of position indicator.
@@ -57,9 +57,8 @@
     <color name="background_dialer_light">#fafafa</color>
     <!-- Background color for search results and call details -->
     <color name="background_dialer_results">#f9f9f9</color>
-    <!-- Background color of dialer list items (contacts, call log entries) -->
-    <color name="background_dialer_list_items">@color/background_dialer_light</color>
-    <color name="background_dialer_details_list_items">@color/background_dialer_results</color>
+    <color name="background_dialer_call_log">@color/background_dialer_light</color>
+    <color name="background_dialer_call_log_list_item">@color/background_dialer_white</color>
 
     <!-- Color of the 1dp divider that separates favorites -->
     <color name="favorite_contacts_separator_color">#d0d0d0</color>
@@ -84,7 +83,6 @@
     <!-- Color of the bottom border below the contacts grid on the main dialer screen. -->
     <color name="contacts_grid_bottom_border_color">#16000000</color>
 
-    <color name="call_log_expanded_background_color">#ffffff</color>
     <!-- Color of actions in expanded call log entries.  This text color represents actions such
          as call back, play voicemail, etc. -->
     <color name="call_log_action_text">@color/dialer_theme_color</color>
@@ -102,4 +100,5 @@
 
     <color name="floating_action_button_touch_tint">#80ffffff</color>
 
+    <color name="call_log_action_divider">#eeeeee</color>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index b8b93cb..b36b9d6 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -22,15 +22,19 @@
     <dimen name="remove_text_size">16dp</dimen>
 
     <!-- Call Log -->
-    <dimen name="call_log_call_action_size">32dip</dimen>
+    <dimen name="call_log_horizontal_margin">8dp</dimen>
+    <dimen name="call_log_call_action_size">32dp</dimen>
     <dimen name="call_log_call_action_width">54dp</dimen>
-    <dimen name="call_log_icon_margin">4dip</dimen>
-    <dimen name="call_log_inner_margin">13dip</dimen>
+    <dimen name="call_log_icon_margin">4dp</dimen>
+    <dimen name="call_log_inner_margin">13dp</dimen>
     <dimen name="call_log_outer_margin">8dp</dimen>
-    <dimen name="call_log_start_margin">16dp</dimen>
-    <dimen name="call_log_indent_margin">24dip</dimen>
+    <dimen name="call_log_start_margin">8dp</dimen>
+    <dimen name="call_log_indent_margin">24dp</dimen>
     <dimen name="call_log_name_margin_bottom">2dp</dimen>
-    <dimen name="call_log_list_item_height">56dip</dimen>
+    <dimen name="call_log_vertical_padding">12dp</dimen>
+    <dimen name="call_log_list_item_height">56dp</dimen>
+    <dimen name="call_log_list_item_info_margin_start">16dp</dimen>
+    <dimen name="show_call_history_list_item_height">72dp</dimen>
 
     <!-- Size of contact photos in the call log and call details. -->
     <dimen name="contact_photo_size">40dp</dimen>
@@ -64,21 +68,6 @@
     <dimen name="favorites_row_end_padding">0dp</dimen>
     <dimen name="favorites_row_undo_text_side_padding">32dp</dimen>
 
-    <!-- Dimensions for most recent call shortcut cards -->
-    <dimen name="recent_call_log_item_translation_z">3dp</dimen>
-    <dimen name="recent_call_log_item_margin_horizontal">8dp</dimen>
-    <dimen name="recent_call_log_item_margin_top">4dp</dimen>
-    <dimen name="recent_call_log_item_margin_bottom">6dp</dimen>
-
-    <!-- The maximum amount to clip on the left and right of the recent call shortcut card -->
-    <dimen name="recent_call_log_item_horizontal_clip_limit">20dp</dimen>
-    <dimen name="recent_call_log_item_padding_start">8dp</dimen>
-    <dimen name="recent_call_log_item_padding_top">12dp</dimen>
-    <dimen name="recent_call_log_item_padding_bottom">11dp</dimen>
-
-    <dimen name="call_log_item_extra_padding_vertical">4dp</dimen>
-
-
     <!-- Size of the star icon on the favorites tile. -->
     <dimen name="favorites_star_icon_size">12dp</dimen>
 
@@ -114,20 +103,17 @@
     <dimen name="search_list_padding_top">16dp</dimen>
     <dimen name="search_box_elevation">3dp</dimen>
 
-    <!-- Padding to the left and right of call log action buttons. -->
-    <dimen name="call_log_action_horizontal_padding">8dp</dimen>
-    <!-- Left-padding for the call log action buttons - ensures the buttons align with the text
-         to the right of the contact badge.  Adjust when any of the following change:
-         call_log_action_horizontal_padding
-         call_log_list_contact_photo_size  -->
+    <dimen name="call_log_action_height">48dp</dimen>
+    <dimen name="call_log_action_icon_margin_start">16dp</dimen>
+    <dimen name="call_log_action_icon_dimen">24dp</dimen>
+    <dimen name="call_log_action_horizontal_padding">24dp</dimen>
+
     <dimen name="call_log_actions_left_padding">64dp</dimen>
-    <dimen name="call_log_primary_text_size">16sp</dimen>
+    <dimen name="call_log_primary_text_size">14sp</dimen>
     <dimen name="call_log_secondary_text_size">14sp</dimen>
     <dimen name="call_log_list_item_actions_text_size">12sp</dimen>
     <!-- Height of the call log actions section for each call log entry -->
     <dimen name="call_log_action_height">44dp</dimen>
-    <!-- Z Translation of expanded call log items. -->
-    <dimen name="call_log_expanded_translation_z">2dp</dimen>
     <dimen name="call_log_day_group_padding_top">15dp</dimen>
     <dimen name="call_log_day_group_padding_bottom">9dp</dimen>
 
diff --git a/res/values/ids.xml b/res/values/ids.xml
deleted file mode 100644
index 2b09504..0000000
--- a/res/values/ids.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2012 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
-  -->
-<resources>
-    <item type="id"
-        name="is_swipeable_tag" />
-    <item type="id"
-        name="contact_entry_index_tag" />
-</resources>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5d06852..79c441d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -42,9 +42,6 @@
     [CHAR LIMIT=NONE] -->
     <string name="recentCallsIconLabel">Call history</string>
 
-    <!-- Menu item used to send an SMS or MMS message to a phone number  -->
-    <string name="menu_sendTextMessage">Send SMS</string>
-
     <!-- Menu item used to call a contact from the call log -->
     <string name="recentCalls_callNumber">Call
         <xliff:g id="name">%s</xliff:g>
@@ -262,7 +259,6 @@
     <string name="menu_show_all_calls">Show all calls</string>
 
     <!-- Menu items for dialpad options as part of Pause and Wait ftr [CHAR LIMIT=30] -->
-    <string name="add_contact">Add to contacts</string>
     <string name="add_2sec_pause">Add 2-sec pause</string>
     <string name="add_wait">Add wait</string>
 
@@ -502,14 +498,22 @@
         <xliff:g id="number">%s</xliff:g>
     </string>
 
-    <!-- Shortcut item used to add a number directly from search -->
-    <string name="search_shortcut_add_to_contacts">Add to contacts</string>
+    <!-- Shortcut item used to add a number directly to a new contact from search.
+         [CHAR LIMIT=40] -->
+    <string name="search_shortcut_create_new_contact">Create new contact</string>
+
+    <!-- Shortcut item used to add a number to an existing contact directly from search.
+         [CHAR LIMIT=40] -->
+    <string name="search_shortcut_add_to_existing_contact">Add to existing contact</string>
+
+    <!-- Shortcut item used to send a text message directly from search. [CHAR LIMIT=40] -->
+    <string name="search_shortcut_send_sms_message">Send SMS</string>
 
     <!-- Shortcut item used to make a video call directly from search. -->
     <string name="search_shortcut_make_video_call">Make video call</string>
 
-    <!-- Title for the recent calls footer that brings users to the full call history when clicked -->
-    <string name="recents_footer_text">View full call history</string>
+    <!-- Title for the call log list item that brings users to the full call history when clicked -->
+    <string name="show_call_history">View full call history</string>
 
     <!-- Number of missed calls shown on call card [CHAR LIMIT=40] -->
     <string name="num_missed_calls"><xliff:g id="number">%s</xliff:g> new missed calls</string>
@@ -526,9 +530,6 @@
     -->
     <string name="contact_tooltip">Touch image to see all numbers or touch &amp; hold to reorder</string>
 
-    <!-- Content description for dismiss button on badge. [CHAR LIMIT=NONE] -->
-    <string name="description_dismiss">Dismiss</string>
-
     <!-- Remove button that shows up when contact is long-pressed. [CHAR LIMIT=NONE] -->
     <string name="remove_contact">Remove</string>
 
@@ -538,30 +539,10 @@
          [CHAR LIMIT=21] -->
     <string name="favorites_menu_all_contacts">ALL CONTACTS</string>
 
-    <!-- Button text for the "call back" button displayed underneath an entry in the call log. This
-         is used to describe the action of calling a phone number that the user previously received
-         an incoming call from. Tapping causes a call to be placed to the number represented by the
-         call log entry.
-         [CHAR LIMIT=30] -->
-    <string name="call_log_action_call_back">CALL BACK</string>
-
-    <!-- BUTTON text for the "call" button displayed underneath an entry in the call log. This
-         is used to describe the action of calling a phone number. Tapping causes a call to be
-         placed to the number represented by the call log entry.
-         [CHAR LIMIT=30] -->
-    <string name="call_log_action_call">CALL</string>
-
-    <!-- BUTTON text for the "redial" button displayed underneath an entry in the call log. This
-         is used to describe the action of calling a phone number that the user previously made an
-         outgoing call to. Tapping causes a call to be placed to the number represented by the call
-         log entry.
-         [CHAR LIMIT=30] -->
-    <string name="call_log_action_redial">REDIAL</string>
-
-    <!-- Button text for the "video call" button displayed underneath an entry in the call log.
+    <!-- Button text for the "video call" displayed underneath an entry in the call log.
          Tapping causes a video call to be placed to the caller represented by the call log entry.
-         [CHAR LIMIT=30] -->
-    <string name="call_log_action_video_call">VIDEO CALL</string>
+         [CHAR LIMIT=50] -->
+    <string name="call_log_action_video_call">Video call</string>
 
     <!-- Button text for the "LISTEN" button displayed underneath an entry in the call log.
          Tapping navigates the user to the call details screen where the user can listen to the
@@ -569,11 +550,10 @@
          [CHAR LIMIT=30] -->
     <string name="call_log_action_voicemail">LISTEN</string>
 
-    <!-- Button text for the "DETAILS" button displayed underneath an entry in the call log.
+    <!-- Button text for the button displayed underneath an entry in the call log.
          Tapping navigates the user to the call details screen where the user can view details for
-         the call log entry.
-         [CHAR LIMIT=30] -->
-    <string name="call_log_action_details">DETAILS</string>
+         the call log entry. [CHAR LIMIT=50] -->
+    <string name="call_log_action_details">View details</string>
 
     <!-- String describing an incoming missed call entry in the call log.
          Note: AccessibilityServices uses this attribute to announce what the view represents.
@@ -597,43 +577,70 @@
          [CHAR LIMIT=NONE] -->
     <string name="description_phone_account">on <xliff:g id="phoneAccount" example="SIM 1">^1</xliff:g></string>
 
-    <!-- String describing the "call back" action for an entry in the call log.  The call back
+    <!-- String describing the phone icon on a call log list item. When tapped, it will place a
+         call to the number represented by that call log entry. [CHAR LIMIT=NONE]-->
+    <string name="description_call_log_call_action">Call</string>
+
+    <!-- String describing the "call" action for an entry in the call log.  The call back
          action triggers a return call to the named user.
          Note: AccessibilityServices uses this attribute to announce the purpose of the button.
          [CHAR LIMIT=NONE] -->
-    <string name="description_call_back_action">Call back <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g></string>
+    <string name="description_call_action">
+        Call <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
 
     <!-- String describing the "video call" action for an entry in the call log.  The video call
          action triggers a return video call to the named person/number.
          Note: AccessibilityServices uses this attribute to announce the purpose of the button.
          [CHAR LIMIT=NONE] -->
-    <string name="description_video_call_action">Video call to <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>.</string>
+    <string name="description_video_call_action">
+        Video call <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>.
+    </string>
 
     <!-- String describing the "listen" action for an entry in the call log.  The listen
          action is shown for call log entries representing a voicemail message and this button
          triggers playing back the voicemail.
          Note: AccessibilityServices uses this attribute to announce the purpose of the button.
          [CHAR LIMIT=NONE] -->
-    <string name="description_voicemail_action">Listen to voicemail from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g></string>
+    <string name="description_voicemail_action">
+        Listen to voicemail from <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- Description for the "create new contact" action for an entry in the call log. This action
+         opens a screen for creating a new contact for this name or number. [CHAR LIMIT=NONE] -->
+    <string name="description_create_new_contact_action">
+        Create contact for <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- Description for the "add to existing contact" action for an entry in the call log. This
+         action opens a screen for adding this name or number to an existing contact.
+         [CHAR LIMIT=NONE] -->
+    <string name="description_add_to_existing_contact_action">
+        Add <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g> to existing contact
+    </string>
 
     <!-- String describing the "details" action for an entry in the call log.  The details action
          displays the call details screen for an entry in the call log.  This shows the calls to
          and from the specified number associated with the call log entry.
          [CHAR LIMIT=NONE] -->
-    <string name="description_details_action">Call details for <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g></string>
+    <string name="description_details_action">
+        Call details for <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
+
+    <!-- Description for the "report" action for an entry in the call log. This action reports that
+         the phone number lookup performed for the entry was inaccurate. [CHAR LIMIT=NONE] -->
+    <string name="description_report_action">
+        Report <xliff:g id="nameOrNumber" example="John Smith">^1</xliff:g>
+    </string>
 
     <!-- Toast message which appears when a call log entry is deleted.
          [CHAR LIMIT=NONE] -->
     <string name="toast_entry_removed">Deleted from call history</string>
 
-    <!-- Toast message which appears when a call log contact is reported.
-         [CHAR LIMIT=NONE] -->
-    <string name="toast_caller_id_reported">Number reported to Google</string>
-
     <!-- Button text for the "report" button displayed underneath an entry in the call log.
          Tapping causes the call log entry to be reported to Google as a bad id.
          [CHAR LIMIT=30] -->
-    <string name="call_log_action_report">REPORT</string>
+    <string name="call_log_action_report">Report</string>
 
     <!-- String used as a header in the call log above calls which occurred today.
          [CHAR LIMIT=65] -->
@@ -690,16 +697,17 @@
 
     <!-- Dialer settings related strings-->
 
-    <!-- Label for the general dialer settings section [CHAR LIMIT=30]-->
-    <string name="general_settings_label">General</string>
+    <!-- Title for "Display options" category, which controls how contacts are shown.
+         [CHAR LIMIT=40] -->
+    <string name="display_options_title">Display options</string>
 
-    <!-- Title for "Contact display options" category, which is shown above options which
-         manipulate how contacts are shown. [CHAR LIMIT=40] -->
-    <string name="contact_display_options_category_title">Contact display options</string>
+    <!-- Title for the "Sounds and vibration" settings control settings related to ringtones,
+         dialpad tones, and vibration for incoming calls. [CHAR LIMIT=40] -->
+    <string name="sounds_and_vibration_title">Sounds and vibration</string>
 
-    <!-- Title for the category "sounds", which is shown above sounds and vibration related
-         settings. [CHAR LIMIT=30] -->
-    <string name="sounds_and_vibrate_category_title">Sounds and vibrate</string>
+    <!-- Title for "Accessibility" category, which controls settings such as TTY mode and hearing
+         aid compatability. [CHAR LIMIT=40] -->
+    <string name="accessibility_settings_title">Accessibility</string>
 
     <!-- Setting option name to pick ringtone (a list dialog comes up). [CHAR LIMIT=30] -->
     <string name="ringtone_title">Phone ringtone</string>
@@ -710,9 +718,18 @@
 
     <!-- Setting option name to enable or disable DTMF tone sound [CHAR LIMIT=30] -->
     <string name="dtmf_tone_enable_title">Dialpad tones</string>
-
-    <!-- Label for section of general call settings where miscellaneous settings are listed. -->
-    <string name="other_settings_title">Other</string>
+    <!-- Label for setting to adjust the length of DTMF tone sounds. [CHAR LIMIT=40] -->
+    <string name="dtmf_tone_length_title">Dialpad tone length</string>
+    <!-- Options displayed for the length of DTMF tone sounds. [CHAR LIMIT=40] -->
+    <string-array name="dtmf_tone_length_entries">
+      <item>Normal</item>
+      <item>Long</item>
+    </string-array>
+    <!-- Do not translate. -->
+    <string-array name="dtmf_tone_length_entry_values" translatable="false">
+       <item>0</item>
+       <item>1</item>
+    </string-array>
 
     <!-- Title of settings screen for managing the "Respond via SMS" feature. [CHAR LIMIT=30] -->
     <string name="respond_via_sms_setting_title">Quick responses</string>
@@ -722,4 +739,13 @@
 
     <!-- Label for the phone account settings [CHAR LIMIT=30] -->
     <string name="phone_account_settings_label">Calling accounts</string>
+
+    <!-- DO NOT TRANSLATE. Internal key for ringtone preference. -->
+    <string name="ringtone_preference_key" translatable="false">button_ringtone_key</string>
+    <!-- DO NOT TRANSLATE. Internal key for vibrate when ringing preference. -->
+    <string name="vibrate_on_preference_key" translatable="false">button_vibrate_on_ring</string>
+    <!-- DO NOT TRANSLATE. Internal key for vibrate when ringing preference. -->
+    <string name="play_dtmf_preference_key" translatable="false">button_play_dtmf_tone</string>
+    <!-- DO NOT TRANSLATE. Internal key for DTMF tone length preference. -->
+    <string name="dtmf_tone_length_preference_key" translatable="false">button_dtmf_settings</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 82df4ec..dab5c6a 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -158,6 +158,36 @@
         <item name="android:overScrollMode">always</item>
     </style>
 
+    <style name="CallLogActionStyle">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">@dimen/call_log_action_height</item>
+        <item name="android:background">@drawable/call_log_action_border</item>
+        <item name="android:foreground">?android:attr/selectableItemBackground</item>
+        <item name="android:orientation">horizontal</item>
+        <item name="android:gravity">center_vertical</item>
+    </style>
+
+    <style name="CallLogActionTextStyle">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:paddingStart">@dimen/call_log_action_horizontal_padding</item>
+        <item name="android:paddingEnd">@dimen/call_log_action_horizontal_padding</item>
+        <item name="android:textColor">?attr/call_log_secondary_text_color</item>
+        <item name="android:textSize">@dimen/call_log_list_item_actions_text_size</item>
+        <item name="android:fontFamily">"sans-serif-medium"</item>
+        <item name="android:focusable">true</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:importantForAccessibility">no</item>
+    </style>
+
+    <style name="CallLogActionIconStyle">
+        <item name="android:layout_width">@dimen/call_log_action_icon_dimen</item>
+        <item name="android:layout_height">@dimen/call_log_action_icon_dimen</item>
+        <item name="android:layout_marginStart">@dimen/call_log_action_icon_margin_start</item>
+        <item name="android:tint">?attr/call_log_secondary_text_color</item>
+        <item name="android:importantForAccessibility">no</item>
+    </style>
+
     <style name="DismissButtonStyle">
         <item name="android:paddingLeft">@dimen/dismiss_button_padding_start</item>
         <item name="android:paddingRight">@dimen/dismiss_button_padding_end</item>
@@ -166,9 +196,9 @@
     <!-- Style applied to the "Settings" screen.  Keep in sync with SettingsLight in Telephony. -->
     <style name="SettingsStyle" parent="DialtactsThemeWithoutActionBarOverlay">
         <!-- Setting text. -->
-        <item name="android:textColor">@color/setting_primary_color</item>
+        <item name="android:textColorPrimary">@color/settings_text_color_primary</item>
         <!-- Setting description. -->
-        <item name="android:textColorSecondary">@color/setting_secondary_color</item>
+        <item name="android:textColorSecondary">@color/settings_text_color_secondary</item>
         <item name="android:windowBackground">@color/setting_background_color</item>
         <item name="android:colorAccent">@color/dialtacts_theme_color</item>
         <item name="android:textColorLink">@color/dialtacts_theme_color</item>
@@ -179,4 +209,13 @@
     <style name="AlertDialogTheme" parent="@android:style/Theme.Material.Light.Dialog">
         <item name="android:colorAccent">@color/dialtacts_theme_color</item>
     </style>
+
+    <style name="CallLogCardStyle" parent="CardView">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_margin">4dp</item>
+        <item name="android:baselineAligned">false</item>
+        <item name="cardCornerRadius">2dp</item>
+        <item name="cardBackgroundColor">@color/background_dialer_call_log_list_item</item>
+    </style>
 </resources>
diff --git a/res/xml/display_options_settings.xml b/res/xml/display_options_settings.xml
new file mode 100644
index 0000000..07aadf7
--- /dev/null
+++ b/res/xml/display_options_settings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2015 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
+  -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <com.android.contacts.common.preference.SortOrderPreference
+        android:key="sortOrder"
+        android:title="@string/display_options_sort_list_by"
+        android:dialogTitle="@string/display_options_sort_list_by" />
+
+    <com.android.contacts.common.preference.DisplayOrderPreference
+        android:key="displayOrder"
+        android:title="@string/display_options_view_names_as"
+        android:dialogTitle="@string/display_options_view_names_as" />
+
+</PreferenceScreen>
diff --git a/res/xml/general_settings.xml b/res/xml/general_settings.xml
deleted file mode 100644
index b1a78c1..0000000
--- a/res/xml/general_settings.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  ~ Copyright (C) 2014 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
-  -->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <PreferenceCategory
-        android:key="dialer_contact_display_options_category_key"
-        android:title="@string/contact_display_options_category_title"
-        android:persistent="false">
-
-        <com.android.contacts.common.preference.SortOrderPreference
-            android:key="sortOrder"
-            android:title="@string/display_options_sort_list_by"
-            android:dialogTitle="@string/display_options_sort_list_by" />
-
-        <com.android.contacts.common.preference.DisplayOrderPreference
-            android:key="displayOrder"
-            android:title="@string/display_options_view_names_as"
-            android:dialogTitle="@string/display_options_view_names_as" />
-
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="dialer_general_sounds_category_key"
-        android:title="@string/sounds_and_vibrate_category_title"
-        android:persistent="false">
-
-        <com.android.dialer.settings.DefaultRingtonePreference
-            android:key="button_ringtone_key"
-            android:title="@string/ringtone_title"
-            android:dialogTitle="@string/ringtone_title"
-            android:persistent="false"
-            android:ringtoneType="ringtone" />
-
-        <CheckBoxPreference
-            android:key="button_play_dtmf_tone"
-            android:title="@string/dtmf_tone_enable_title"
-            android:persistent="false"
-            android:defaultValue="true" />
-
-        <CheckBoxPreference
-            android:key="button_vibrate_on_ring"
-            android:title="@string/vibrate_on_ring_title"
-            android:persistent="false"
-            android:defaultValue="false" />
-
-    </PreferenceCategory>
-
-    <PreferenceCategory
-        android:key="dialer_general_other_settings_category_key"
-        android:title="@string/other_settings_title"
-        android:persistent="false" >
-
-        <PreferenceScreen
-            android:key="button_respond_via_sms_key"
-            android:title="@string/respond_via_sms_setting_title"
-            android:persistent="false">
-
-            <intent
-                android:action="android.intent.action.MAIN"
-                android:targetPackage="com.android.server.telecom"
-                android:targetClass="com.android.server.telecom.RespondViaSmsSettings$Settings" />
-
-        </PreferenceScreen>
-
-    </PreferenceCategory>
-
-</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
new file mode 100644
index 0000000..80fad62
--- /dev/null
+++ b/res/xml/sound_settings.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  ~ Copyright (C) 2014 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
+  -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <com.android.dialer.settings.DefaultRingtonePreference
+        android:key="@string/ringtone_preference_key"
+        android:title="@string/ringtone_title"
+        android:dialogTitle="@string/ringtone_title"
+        android:persistent="false"
+        android:ringtoneType="ringtone" />
+
+    <CheckBoxPreference
+        android:key="@string/vibrate_on_preference_key"
+        android:title="@string/vibrate_on_ring_title"
+        android:persistent="false"
+        android:defaultValue="false" />
+
+    <CheckBoxPreference
+        android:key="@string/play_dtmf_preference_key"
+        android:title="@string/dtmf_tone_enable_title"
+        android:persistent="false"
+        android:defaultValue="true" />
+
+    <ListPreference
+        android:key="@string/dtmf_tone_length_preference_key"
+        android:title="@string/dtmf_tone_length_title"
+        android:entries="@array/dtmf_tone_length_entries"
+        android:entryValues="@array/dtmf_tone_length_entry_values" />
+
+</PreferenceScreen>
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 6c57650..0a295c4 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -27,6 +27,7 @@
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
+import android.os.PowerManager;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
@@ -50,10 +51,11 @@
 import android.widget.Toast;
 
 import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.CallUtil;
 import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
 import com.android.contacts.common.GeoUtil;
+import com.android.contacts.common.CallUtil;
 import com.android.dialer.calllog.CallDetailHistoryAdapter;
+import com.android.dialer.calllog.CallLogNotificationsService;
 import com.android.dialer.calllog.CallTypeHelper;
 import com.android.dialer.calllog.ContactInfo;
 import com.android.dialer.calllog.ContactInfoHelper;
@@ -62,7 +64,9 @@
 import com.android.dialer.calllog.PhoneNumberUtilsWrapper;
 import com.android.dialer.util.AsyncTaskExecutor;
 import com.android.dialer.util.AsyncTaskExecutors;
+import com.android.dialer.util.CallIntentUtil;
 import com.android.dialer.util.DialerUtils;
+import com.android.dialer.util.TelecomUtil;
 import com.android.dialer.voicemail.VoicemailPlaybackFragment;
 import com.android.dialer.voicemail.VoicemailStatusHelper;
 import com.android.dialer.voicemail.VoicemailStatusHelper.StatusMessage;
@@ -82,11 +86,6 @@
     private static final char LEFT_TO_RIGHT_EMBEDDING = '\u202A';
     private static final char POP_DIRECTIONAL_FORMATTING = '\u202C';
 
-    /** The time to wait before enabling the blank the screen due to the proximity sensor. */
-    private static final long PROXIMITY_BLANK_DELAY_MILLIS = 100;
-    /** The time to wait before disabling the blank the screen due to the proximity sensor. */
-    private static final long PROXIMITY_UNBLANK_DELAY_MILLIS = 500;
-
     /** The enumeration of {@link AsyncTask} objects used in this class. */
     public enum Tasks {
         MARK_VOICEMAIL_READ,
@@ -143,59 +142,7 @@
     /** Whether we should show "remove from call log" in the options menu. */
     private boolean mHasRemoveFromCallLogOption;
 
-    private ProximitySensorManager mProximitySensorManager;
-    private final ProximitySensorListener mProximitySensorListener = new ProximitySensorListener();
-
-    /** Listener to changes in the proximity sensor state. */
-    private class ProximitySensorListener implements ProximitySensorManager.Listener {
-        /** Used to show a blank view and hide the action bar. */
-        private final Runnable mBlankRunnable = new Runnable() {
-            @Override
-            public void run() {
-                View blankView = findViewById(R.id.blank);
-                blankView.setVisibility(View.VISIBLE);
-                getActionBar().hide();
-            }
-        };
-        /** Used to remove the blank view and show the action bar. */
-        private final Runnable mUnblankRunnable = new Runnable() {
-            @Override
-            public void run() {
-                View blankView = findViewById(R.id.blank);
-                blankView.setVisibility(View.GONE);
-                getActionBar().show();
-            }
-        };
-
-        @Override
-        public synchronized void onNear() {
-            clearPendingRequests();
-            postDelayed(mBlankRunnable, PROXIMITY_BLANK_DELAY_MILLIS);
-        }
-
-        @Override
-        public synchronized void onFar() {
-            clearPendingRequests();
-            postDelayed(mUnblankRunnable, PROXIMITY_UNBLANK_DELAY_MILLIS);
-        }
-
-        /** Removed any delayed requests that may be pending. */
-        public synchronized void clearPendingRequests() {
-            View blankView = findViewById(R.id.blank);
-            blankView.removeCallbacks(mBlankRunnable);
-            blankView.removeCallbacks(mUnblankRunnable);
-        }
-
-        /** Post a {@link Runnable} with a delay on the main thread. */
-        private synchronized void postDelayed(Runnable runnable, long delayMillis) {
-            // Post these instead of executing immediately so that:
-            // - They are guaranteed to be executed on the main thread.
-            // - If the sensor values changes rapidly for some time, the UI will not be
-            //   updated immediately.
-            View blankView = findViewById(R.id.blank);
-            blankView.postDelayed(runnable, delayMillis);
-        }
-    }
+    private PowerManager.WakeLock mProximityWakeLock;
 
     static final String[] CALL_LOG_PROJECTION = new String[] {
         CallLog.Calls.DATE,
@@ -244,12 +191,20 @@
 
         mQuickContactBadge = (QuickContactBadge) findViewById(R.id.quick_contact_photo);
         mQuickContactBadge.setOverlay(null);
+        mQuickContactBadge.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
         mCallerName = (TextView) findViewById(R.id.caller_name);
         mCallerNumber = (TextView) findViewById(R.id.caller_number);
         mAccountLabel = (TextView) findViewById(R.id.phone_account_label);
         mDefaultCountryIso = GeoUtil.getCurrentCountryIso(this);
         mContactPhotoManager = ContactPhotoManager.getInstance(this);
-        mProximitySensorManager = new ProximitySensorManager(this, mProximitySensorListener);
+        final PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
+        if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
+            mProximityWakeLock = powerManager.newWakeLock(
+                    PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, TAG);
+        } else {
+            mProximityWakeLock = null;
+        }
+
         mContactInfoHelper = new ContactInfoHelper(this, GeoUtil.getCurrentCountryIso(this));
         getActionBar().setDisplayHomeAsUpEnabled(true);
 
@@ -327,6 +282,9 @@
                 values.put(Voicemails.IS_READ, true);
                 getContentResolver().update(voicemailUri, values,
                         Voicemails.IS_READ + " = 0", null);
+                Intent intent = new Intent(getBaseContext(), CallLogNotificationsService.class);
+                intent.setAction(CallLogNotificationsService.ACTION_MARK_NEW_VOICEMAILS_AS_OLD);
+                getBaseContext().startService(intent);
                 return null;
             }
         });
@@ -350,7 +308,8 @@
         final int numIds = ids == null ? 0 : ids.length;
         final Uri[] uris = new Uri[numIds];
         for (int index = 0; index < numIds; ++index) {
-            uris[index] = ContentUris.withAppendedId(Calls.CONTENT_URI_WITH_VOICEMAIL, ids[index]);
+            uris[index] = ContentUris.withAppendedId(
+                    TelecomUtil.getCallLogUri(CallDetailActivity.this), ids[index]);
         }
         return uris;
     }
@@ -364,8 +323,8 @@
                         getSystemService(Context.TELEPHONY_SERVICE);
                 if (tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) {
                     DialerUtils.startActivityWithErrorToast(this,
-                            CallUtil.getCallIntent(Uri.fromParts(PhoneAccount.SCHEME_TEL, mNumber,
-                                    null)), R.string.call_not_available);
+                            CallIntentUtil.getCallIntent(Uri.fromParts(PhoneAccount.SCHEME_TEL,
+                                    mNumber, null)), R.string.call_not_available);
                     return true;
                 }
             }
@@ -414,7 +373,8 @@
                 // We know that all calls are from the same number and the same contact, so pick the
                 // first.
                 PhoneCallDetails firstDetails = details[0];
-                mNumber = firstDetails.number.toString();
+                mNumber = TextUtils.isEmpty(firstDetails.number) ?
+                        null : firstDetails.number.toString();
                 final int numberPresentation = firstDetails.numberPresentation;
                 final Uri contactUri = firstDetails.contactUri;
                 final Uri photoUri = firstDetails.photoUri;
@@ -712,7 +672,8 @@
                 new AsyncTask<Void, Void, Void>() {
                     @Override
                     public Void doInBackground(Void... params) {
-                        getContentResolver().delete(Calls.CONTENT_URI_WITH_VOICEMAIL,
+                        getContentResolver().delete(
+                                TelecomUtil.getCallLogUri(CallDetailActivity.this),
                                 Calls._ID + " IN (" + callIds + ")", null);
                         return null;
                     }
@@ -750,18 +711,34 @@
     protected void onPause() {
         // Immediately stop the proximity sensor.
         disableProximitySensor(false);
-        mProximitySensorListener.clearPendingRequests();
         super.onPause();
     }
 
     @Override
     public void enableProximitySensor() {
-        mProximitySensorManager.enable();
+        if (mProximityWakeLock == null) {
+            return;
+        }
+        if (!mProximityWakeLock.isHeld()) {
+            Log.i(TAG, "Acquiring proximity wake lock");
+            mProximityWakeLock.acquire();
+        } else {
+            Log.i(TAG, "Proximity wake lock already acquired");
+        }
     }
 
     @Override
     public void disableProximitySensor(boolean waitForFarState) {
-        mProximitySensorManager.disable(waitForFarState);
+        if (mProximityWakeLock == null) {
+            return;
+        }
+        if (mProximityWakeLock.isHeld()) {
+            Log.i(TAG, "Releasing proximity wake lock");
+            int flags = (waitForFarState ? PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY : 0);
+            mProximityWakeLock.release(flags);
+        } else {
+            Log.i(TAG, "Proximity wake lock already released");
+        }
     }
 
     private void closeSystemDialogs() {
diff --git a/src/com/android/dialer/DialerApplication.java b/src/com/android/dialer/DialerApplication.java
index c645308..7bc3bb4 100644
--- a/src/com/android/dialer/DialerApplication.java
+++ b/src/com/android/dialer/DialerApplication.java
@@ -17,6 +17,7 @@
 package com.android.dialer;
 
 import android.app.Application;
+import android.os.Trace;
 
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.extensions.ExtensionsFactory;
@@ -24,26 +25,19 @@
 
 public class DialerApplication extends Application {
 
+    private static final String TAG = "DialerApplication";
     private ContactPhotoManager mContactPhotoManager;
 
     @Override
     public void onCreate() {
+        Trace.beginSection(TAG + " onCreate");
         super.onCreate();
+        Trace.beginSection(TAG + " ExtensionsFactory initialization");
         ExtensionsFactory.init(getApplicationContext());
+        Trace.endSection();
+        Trace.beginSection(TAG + " Analytics initialization");
         AnalyticsUtil.initialize(this);
-    }
-
-    @Override
-    public Object getSystemService(String name) {
-        if (ContactPhotoManager.CONTACT_PHOTO_SERVICE.equals(name)) {
-            if (mContactPhotoManager == null) {
-                mContactPhotoManager = ContactPhotoManager.createContactPhotoManager(this);
-                registerComponentCallbacks(mContactPhotoManager);
-                mContactPhotoManager.preloadPhotosInBackground();
-            }
-            return mContactPhotoManager;
-        }
-
-        return super.getSystemService(name);
+        Trace.endSection();
+        Trace.endSection();
     }
 }
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 95b7215..cccc06e 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -28,6 +28,7 @@
 import android.content.res.Resources;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Trace;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.Intents;
 import android.speech.RecognizerIntent;
@@ -58,7 +59,6 @@
 import android.widget.PopupMenu;
 import android.widget.Toast;
 
-import com.android.contacts.common.CallUtil;
 import com.android.contacts.common.activity.TransactionSafeActivity;
 import com.android.contacts.common.dialog.ClearFrequentsDialog;
 import com.android.contacts.common.interactions.ImportExportDialogFragment;
@@ -82,6 +82,7 @@
 import com.android.dialer.list.SmartDialSearchFragment;
 import com.android.dialer.list.SpeedDialFragment;
 import com.android.dialer.settings.DialerSettingsActivity;
+import com.android.dialer.util.CallIntentUtil;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.widget.ActionBarController;
 import com.android.dialer.widget.SearchEditTextLayout;
@@ -90,6 +91,8 @@
 import com.android.phone.common.animation.AnimUtils;
 import com.android.phone.common.animation.AnimationListenerAdapter;
 
+import junit.framework.Assert;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -162,6 +165,15 @@
      */
     private Animation mSlideOut;
 
+    AnimationListenerAdapter mSlideInListener = new AnimationListenerAdapter() {
+        @Override
+        public void onAnimationEnd(Animation animation) {
+            if (!isInSearchUi()) {
+                enterSearchUi(true /* isSmartDial */, mSearchQuery, false);
+            }
+        }
+    };
+
     /**
      * Listener for after slide out animation completes on dialer fragment.
      */
@@ -195,11 +207,6 @@
     private boolean mIsLandscape;
 
     /**
-     * The position of the currently selected tab in the attached {@link ListsFragment}.
-     */
-    private int mCurrentTabPosition = 0;
-
-    /**
      * True if the dialpad is only temporarily showing due to being in call
      */
     private boolean mInCallDialpadUp;
@@ -235,7 +242,7 @@
      */
     private String mVoiceSearchQuery;
 
-    private class OptionsPopupMenu extends PopupMenu {
+    protected class OptionsPopupMenu extends PopupMenu {
         public OptionsPopupMenu(Context context, View anchor) {
             super(context, anchor, Gravity.END);
         }
@@ -295,7 +302,7 @@
                 final boolean sameSearchMode = (mIsDialpadShown && mInDialpadSearch) ||
                         (!mIsDialpadShown && mInRegularSearch);
                 if (!sameSearchMode) {
-                    enterSearchUi(mIsDialpadShown, mSearchQuery);
+                    enterSearchUi(mIsDialpadShown, mSearchQuery, true /* animate */);
                 }
             }
 
@@ -320,7 +327,8 @@
         public void onClick(View v) {
             if (!isInSearchUi()) {
                 mActionBarController.onSearchBoxTapped();
-                enterSearchUi(false /* smartDialSearch */, mSearchView.getText().toString());
+                enterSearchUi(false /* smartDialSearch */, mSearchView.getText().toString(),
+                        true /* animate */);
             }
         }
     };
@@ -350,27 +358,30 @@
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+        Trace.beginSection(TAG + " onCreate");
         super.onCreate(savedInstanceState);
         mFirstLaunch = true;
 
         final Resources resources = getResources();
         mActionBarHeight = resources.getDimensionPixelSize(R.dimen.action_bar_height_large);
 
+        Trace.beginSection(TAG + " setContentView");
         setContentView(R.layout.dialtacts_activity);
+        Trace.endSection();
         getWindow().setBackgroundDrawable(null);
 
+        Trace.beginSection(TAG + " setup Views");
         final ActionBar actionBar = getActionBar();
         actionBar.setCustomView(R.layout.search_edittext);
         actionBar.setDisplayShowCustomEnabled(true);
         actionBar.setBackgroundDrawable(null);
 
-        mActionBarController = new ActionBarController(this,
-                (SearchEditTextLayout) actionBar.getCustomView());
-
         SearchEditTextLayout searchEditTextLayout =
-                (SearchEditTextLayout) actionBar.getCustomView();
+                (SearchEditTextLayout) actionBar.getCustomView().findViewById(R.id.search_view_container);
         searchEditTextLayout.setPreImeKeyListener(mSearchEditTextLayoutListener);
 
+        mActionBarController = new ActionBarController(this, searchEditTextLayout);
+
         mSearchView = (EditText) searchEditTextLayout.findViewById(R.id.search_view);
         mSearchView.addTextChangedListener(mPhoneSearchQueryTextListener);
         mVoiceSearchButton = searchEditTextLayout.findViewById(R.id.voice_search_button);
@@ -401,12 +412,11 @@
         mOverflowMenu = buildOptionsMenu(searchEditTextLayout);
         optionsMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener());
 
-        // Add the favorites fragment, and the dialpad fragment, but only if savedInstanceState
-        // is null. Otherwise the fragment manager takes care of recreating these fragments.
+        // Add the favorites fragment but only if savedInstanceState is null. Otherwise the
+        // fragment manager is responsible for recreating it.
         if (savedInstanceState == null) {
             getFragmentManager().beginTransaction()
                     .add(R.id.dialtacts_frame, new ListsFragment(), TAG_FAVORITES_FRAGMENT)
-                    .add(R.id.dialtacts_container, new DialpadFragment(), TAG_DIALPAD_FRAGMENT)
                     .commit();
         } else {
             mSearchQuery = savedInstanceState.getString(KEY_SEARCH_QUERY);
@@ -431,6 +441,7 @@
         mSlideIn.setInterpolator(AnimUtils.EASE_IN);
         mSlideOut.setInterpolator(AnimUtils.EASE_OUT);
 
+        mSlideIn.setAnimationListener(mSlideInListener);
         mSlideOut.setAnimationListener(mSlideOutListener);
 
         mParentLayout = (FrameLayout) findViewById(R.id.dialtacts_mainlayout);
@@ -453,8 +464,13 @@
 
         setupActivityOverlay();
 
+        Trace.endSection();
+
+        Trace.beginSection(TAG + " initialize smart dialing");
         mDialerDatabaseHelper = DatabaseHelperManager.getDatabaseHelper(this);
         SmartDialPrefix.initializeNanpSettings(this);
+        Trace.endSection();
+        Trace.endSection();
     }
 
     private void setupActivityOverlay() {
@@ -472,6 +488,7 @@
 
     @Override
     protected void onResume() {
+        Trace.beginSection(TAG + " onResume");
         super.onResume();
         mStateSaved = false;
         if (mFirstLaunch) {
@@ -506,6 +523,7 @@
         prepareVoiceSearchButton();
         mDialerDatabaseHelper.startSmartDialUpdateThread();
         updateFloatingActionButtonControllerAlignment(false /* animate */);
+        Trace.endSection();
     }
 
     @Override
@@ -542,7 +560,7 @@
     public void onAttachFragment(Fragment fragment) {
         if (fragment instanceof DialpadFragment) {
             mDialpadFragment = (DialpadFragment) fragment;
-            if (!mShowDialpadOnResume) {
+            if (!mIsDialpadShown && !mShowDialpadOnResume) {
                 final FragmentTransaction transaction = getFragmentManager().beginTransaction();
                 transaction.hide(mDialpadFragment);
                 transaction.commit();
@@ -568,7 +586,9 @@
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.floating_action_button:
-                if (!mIsDialpadShown) {
+                if (mListsFragment.getTabPosition() == ListsFragment.TAB_INDEX_ALL_CONTACTS) {
+                    sendAddNewContactIntent();
+                } else if (!mIsDialpadShown) {
                     mInCallDialpadUp = false;
                     showDialpadFragment(true);
                 }
@@ -596,17 +616,13 @@
     public boolean onMenuItemClick(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.menu_history:
-                showCallHistory();
+                // Use explicit CallLogActivity intent instead of ACTION_VIEW +
+                // CONTENT_TYPE, so that we always open our call log from our dialer
+                final Intent intent = new Intent(this, CallLogActivity.class);
+                startActivity(intent);
                 break;
             case R.id.menu_add_contact:
-                try {
-                    startActivity(new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
-                } catch (ActivityNotFoundException e) {
-                    Toast toast = Toast.makeText(this,
-                            R.string.add_contact_not_available,
-                            Toast.LENGTH_SHORT);
-                    toast.show();
-                }
+                sendAddNewContactIntent();
                 break;
             case R.id.menu_import_export:
                 // We hard-code the "contactsAreAvailable" argument because doing it properly would
@@ -655,12 +671,19 @@
             return;
         }
         mIsDialpadShown = true;
-        mDialpadFragment.setAnimate(animate);
+
         mListsFragment.setUserVisibleHint(false);
-        AnalyticsUtil.sendScreenView(mDialpadFragment);
 
         final FragmentTransaction ft = getFragmentManager().beginTransaction();
-        ft.show(mDialpadFragment);
+        if (mDialpadFragment == null) {
+            mDialpadFragment = new DialpadFragment();
+            ft.add(R.id.dialtacts_container, mDialpadFragment, TAG_DIALPAD_FRAGMENT);
+        } else {
+            ft.show(mDialpadFragment);
+        }
+
+        mDialpadFragment.setAnimate(animate);
+        AnalyticsUtil.sendScreenView(mDialpadFragment);
         ft.commit();
 
         if (animate) {
@@ -670,15 +693,14 @@
         }
         mActionBarController.onDialpadUp();
 
-        if (!isInSearchUi()) {
-            enterSearchUi(true /* isSmartDial */, mSearchQuery);
-        }
+        mListsFragment.getView().animate().alpha(0).withLayer();
     }
 
     /**
      * Callback from child DialpadFragment when the dialpad is shown.
      */
     public void onDialpadShown() {
+        Assert.assertNotNull(mDialpadFragment);
         if (mDialpadFragment.getAnimate()) {
             mDialpadFragment.getView().startAnimation(mSlideIn);
         } else {
@@ -730,7 +752,7 @@
      * Finishes hiding the dialpad fragment after any animations are completed.
      */
     private void commitDialpadFragmentHide() {
-        if (!mStateSaved && !mDialpadFragment.isHidden()) {
+        if (!mStateSaved && mDialpadFragment != null && !mDialpadFragment.isHidden()) {
             final FragmentTransaction ft = getFragmentManager().beginTransaction();
             ft.hide(mDialpadFragment);
             ft.commit();
@@ -788,7 +810,7 @@
         }
     }
 
-    private OptionsPopupMenu buildOptionsMenu(View invoker) {
+    protected OptionsPopupMenu buildOptionsMenu(View invoker) {
         final OptionsPopupMenu popupMenu = new OptionsPopupMenu(this, invoker);
         popupMenu.inflate(R.menu.dialtacts_options);
         final Menu menu = popupMenu.getMenu();
@@ -838,14 +860,12 @@
             return;
         }
 
-        if (mDialpadFragment != null) {
-            final boolean phoneIsInUse = phoneIsInUse();
-            if (phoneIsInUse || (intent.getData() !=  null && isDialIntent(intent))) {
-                mDialpadFragment.setStartedFromNewIntent(true);
-                if (phoneIsInUse && !mDialpadFragment.isVisible()) {
-                    mInCallDialpadUp = true;
-                }
-                showDialpadFragment(false);
+        final boolean phoneIsInUse = phoneIsInUse();
+        if (phoneIsInUse || (intent.getData() !=  null && isDialIntent(intent))) {
+            showDialpadFragment(false);
+            mDialpadFragment.setStartedFromNewIntent(true);
+            if (phoneIsInUse && !mDialpadFragment.isVisible()) {
+                mInCallDialpadUp = true;
             }
         }
     }
@@ -887,7 +907,7 @@
     /**
      * Shows the search fragment
      */
-    private void enterSearchUi(boolean smartDialSearch, String query) {
+    private void enterSearchUi(boolean smartDialSearch, String query, boolean animate) {
         if (mStateSaved || getFragmentManager().isDestroyed()) {
             // Weird race condition where fragment is doing work after the activity is destroyed
             // due to talkback being on (b/10209937). Just return since we can't do any
@@ -916,7 +936,11 @@
         mInRegularSearch = !smartDialSearch;
 
         SearchFragment fragment = (SearchFragment) getFragmentManager().findFragmentByTag(tag);
-        transaction.setCustomAnimations(android.R.animator.fade_in, 0);
+        if (animate) {
+            transaction.setCustomAnimations(android.R.animator.fade_in, 0);
+        } else {
+            transaction.setTransition(FragmentTransaction.TRANSIT_NONE);
+        }
         if (fragment == null) {
             if (smartDialSearch) {
                 fragment = new SmartDialSearchFragment();
@@ -930,10 +954,14 @@
         // DialtactsActivity will provide the options menu
         fragment.setHasOptionsMenu(false);
         fragment.setShowEmptyListForNullQuery(true);
-        fragment.setQueryString(query, false /* delaySelection */);
+        if (!smartDialSearch) {
+            fragment.setQueryString(query, false /* delaySelection */);
+        }
         transaction.commit();
 
-        mListsFragment.getView().animate().alpha(0).withLayer();
+        if (animate) {
+            mListsFragment.getView().animate().alpha(0).withLayer();
+        }
         mListsFragment.setUserVisibleHint(false);
     }
 
@@ -947,7 +975,11 @@
         }
 
         mSearchView.setText(null);
-        mDialpadFragment.clearDialpad();
+
+        if (mDialpadFragment != null) {
+            mDialpadFragment.clearDialpad();
+        }
+
         setNotInSearchUi();
 
         final FragmentTransaction transaction = getFragmentManager().beginTransaction();
@@ -960,7 +992,8 @@
         transaction.commit();
 
         mListsFragment.getView().animate().alpha(1).withLayer();
-        if (!mDialpadFragment.isVisible()) {
+
+        if (mDialpadFragment == null || !mDialpadFragment.isVisible()) {
             // If the dialpad fragment wasn't previously visible, then send a screen view because
             // we are exiting regular search. Otherwise, the screen view will be sent by
             // {@link #hideDialpadFragment}.
@@ -1070,6 +1103,17 @@
         return intent;
     }
 
+    private void sendAddNewContactIntent() {
+        try {
+            startActivity(new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI));
+        } catch (ActivityNotFoundException e) {
+            Toast toast = Toast.makeText(this,
+                    R.string.add_contact_not_available,
+                    Toast.LENGTH_SHORT);
+            toast.show();
+        }
+    }
+
     private boolean canIntentBeHandled(Intent intent) {
         final PackageManager packageManager = getPackageManager();
         final List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,
@@ -1077,22 +1121,11 @@
         return resolveInfo != null && resolveInfo.size() > 0;
     }
 
-    @Override
-    public void showCallHistory() {
-        // Use explicit CallLogActivity intent instead of ACTION_VIEW +
-        // CONTENT_TYPE, so that we always open our call log from our dialer
-        final Intent intent = new Intent(this, CallLogActivity.class);
-        startActivity(intent);
-    }
-
     /**
      * Called when the user has long-pressed a contact tile to start a drag operation.
      */
     @Override
     public void onDragStarted(int x, int y, PhoneFavoriteSquareTileView view) {
-        if (mListsFragment.isPaneOpen()) {
-            mActionBarController.setAlpha(ListsFragment.REMOVE_VIEW_SHOWN_ALPHA);
-        }
         mListsFragment.showRemoveView(true);
     }
 
@@ -1105,9 +1138,6 @@
      */
     @Override
     public void onDragFinished(int x, int y) {
-        if (mListsFragment.isPaneOpen()) {
-            mActionBarController.setAlpha(ListsFragment.REMOVE_VIEW_HIDDEN_ALPHA);
-        }
         mListsFragment.showRemoveView(false);
     }
 
@@ -1141,8 +1171,8 @@
     @Override
     public void onCallNumberDirectly(String phoneNumber, boolean isVideoCall) {
         Intent intent = isVideoCall ?
-                CallUtil.getVideoCallIntent(phoneNumber, getCallOrigin()) :
-                CallUtil.getCallIntent(phoneNumber, getCallOrigin());
+                CallIntentUtil.getVideoCallIntent(phoneNumber, getCallOrigin()) :
+                CallIntentUtil.getCallIntent(phoneNumber, getCallOrigin());
         DialerUtils.startActivityWithErrorToast(this, intent);
         mClearSearchOnPause = true;
     }
@@ -1176,22 +1206,26 @@
         } else if (position != ListsFragment.TAB_INDEX_SPEED_DIAL) {
             mFloatingActionButtonController.onPageScrolled(1);
         }
+
+        if (position == ListsFragment.TAB_INDEX_ALL_CONTACTS) {
+            mFloatingActionButtonController.changeIcon(
+                    getResources().getDrawable(R.drawable.ic_person_add_24dp),
+                    getResources().getString(R.string.search_shortcut_create_new_contact));
+        } else {
+            mFloatingActionButtonController.changeIcon(
+                    getResources().getDrawable(R.drawable.fab_ic_dial),
+                    getResources().getString(R.string.action_menu_dialpad_button));
+        }
     }
 
     @Override
     public void onPageSelected(int position) {
-        position = mListsFragment.getRtlPosition(position);
-        mCurrentTabPosition = position;
     }
 
     @Override
     public void onPageScrollStateChanged(int state) {
     }
 
-    private TelephonyManager getTelephonyManager() {
-        return (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-    }
-
     private TelecomManager getTelecomManager() {
         return (TelecomManager) getSystemService(Context.TELECOM_SERVICE);
     }
@@ -1231,7 +1265,8 @@
      * @param animate Whether or not to animate the transition.
      */
     private void updateFloatingActionButtonControllerAlignment(boolean animate) {
-        int align = (!mIsLandscape && mCurrentTabPosition == ListsFragment.TAB_INDEX_SPEED_DIAL) ?
+        int align = (!mIsLandscape &&
+                mListsFragment.getTabPosition() == ListsFragment.TAB_INDEX_SPEED_DIAL) ?
                 FloatingActionButtonController.ALIGN_MIDDLE :
                         FloatingActionButtonController.ALIGN_END;
         mFloatingActionButtonController.align(align, 0 /* offsetX */, 0 /* offsetY */, animate);
diff --git a/src/com/android/dialer/PhoneCallDetailsHelper.java b/src/com/android/dialer/PhoneCallDetailsHelper.java
index b4e8171..7855a1d 100644
--- a/src/com/android/dialer/PhoneCallDetailsHelper.java
+++ b/src/com/android/dialer/PhoneCallDetailsHelper.java
@@ -28,7 +28,6 @@
 import android.view.View;
 import android.widget.TextView;
 
-import com.android.contacts.common.CallUtil;
 import com.android.contacts.common.testing.NeededForTesting;
 import com.android.contacts.common.util.PhoneNumberHelper;
 import com.android.dialer.calllog.ContactInfo;
diff --git a/src/com/android/dialer/ProximitySensorManager.java b/src/com/android/dialer/ProximitySensorManager.java
deleted file mode 100644
index 42d740f..0000000
--- a/src/com/android/dialer/ProximitySensorManager.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 2011 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.dialer;
-
-import android.content.Context;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-
-import javax.annotation.concurrent.GuardedBy;
-
-/**
- * Manages the proximity sensor and notifies a listener when enabled.
- */
-public class ProximitySensorManager {
-    /**
-     * Listener of the state of the proximity sensor.
-     * <p>
-     * This interface abstracts two possible states for the proximity sensor, near and far.
-     * <p>
-     * The actual meaning of these states depends on the actual sensor.
-     */
-    public interface Listener {
-        /** Called when the proximity sensor transitions from the far to the near state. */
-        public void onNear();
-        /** Called when the proximity sensor transitions from the near to the far state. */
-        public void onFar();
-    }
-
-    public static enum State {
-        NEAR, FAR
-    }
-
-    private final ProximitySensorEventListener mProximitySensorListener;
-
-    /**
-     * The current state of the manager, i.e., whether it is currently tracking the state of the
-     * sensor.
-     */
-    private boolean mManagerEnabled;
-
-    /**
-     * The listener to the state of the sensor.
-     * <p>
-     * Contains most of the logic concerning tracking of the sensor.
-     * <p>
-     * After creating an instance of this object, one should call {@link #register()} and
-     * {@link #unregister()} to enable and disable the notifications.
-     * <p>
-     * Instead of calling unregister, one can call {@link #unregisterWhenFar()} to unregister the
-     * listener the next time the sensor reaches the {@link State#FAR} state if currently in the
-     * {@link State#NEAR} state.
-     */
-    private static class ProximitySensorEventListener implements SensorEventListener {
-        private static final float FAR_THRESHOLD = 5.0f;
-
-        private final SensorManager mSensorManager;
-        private final Sensor mProximitySensor;
-        private final float mMaxValue;
-        private final Listener mListener;
-
-        /**
-         * The last state of the sensor.
-         * <p>
-         * Before registering and after unregistering we are always in the {@link State#FAR} state.
-         */
-        @GuardedBy("this") private State mLastState;
-        /**
-         * If this flag is set to true, we are waiting to reach the {@link State#FAR} state and
-         * should notify the listener and unregister when that happens.
-         */
-        @GuardedBy("this") private boolean mWaitingForFarState;
-
-        public ProximitySensorEventListener(SensorManager sensorManager, Sensor proximitySensor,
-                Listener listener) {
-            mSensorManager = sensorManager;
-            mProximitySensor = proximitySensor;
-            mMaxValue = proximitySensor.getMaximumRange();
-            mListener = listener;
-            // Initialize at far state.
-            mLastState = State.FAR;
-            mWaitingForFarState = false;
-        }
-
-        @Override
-        public void onSensorChanged(SensorEvent event) {
-            // Make sure we have a valid value.
-            if (event.values == null) return;
-            if (event.values.length == 0) return;
-            float value = event.values[0];
-            // Convert the sensor into a NEAR/FAR state.
-            State state = getStateFromValue(value);
-            synchronized (this) {
-                // No change in state, do nothing.
-                if (state == mLastState) return;
-                // Keep track of the current state.
-                mLastState = state;
-                // If we are waiting to reach the far state and we are now in it, unregister.
-                if (mWaitingForFarState && mLastState == State.FAR) {
-                    unregisterWithoutNotification();
-                }
-            }
-            // Notify the listener of the state change.
-            switch (state) {
-                case NEAR:
-                    mListener.onNear();
-                    break;
-
-                case FAR:
-                    mListener.onFar();
-                    break;
-            }
-        }
-
-        @Override
-        public void onAccuracyChanged(Sensor sensor, int accuracy) {
-            // Nothing to do here.
-        }
-
-        /** Returns the state of the sensor given its current value. */
-        private State getStateFromValue(float value) {
-            // Determine if the current value corresponds to the NEAR or FAR state.
-            // Take case of the case where the proximity sensor is binary: if the current value is
-            // equal to the maximum, we are always in the FAR state.
-            return (value > FAR_THRESHOLD || value == mMaxValue) ? State.FAR : State.NEAR;
-        }
-
-        /**
-         * Unregister the next time the sensor reaches the {@link State#FAR} state.
-         */
-        public synchronized void unregisterWhenFar() {
-            if (mLastState == State.FAR) {
-                // We are already in the far state, just unregister now.
-                unregisterWithoutNotification();
-            } else {
-                mWaitingForFarState = true;
-            }
-        }
-
-        /** Register the listener and call the listener as necessary. */
-        public synchronized void register() {
-            // It is okay to register multiple times.
-            mSensorManager.registerListener(this, mProximitySensor, SensorManager.SENSOR_DELAY_UI);
-            // We should no longer be waiting for the far state if we are registering again.
-            mWaitingForFarState = false;
-        }
-
-        public void unregister() {
-            State lastState;
-            synchronized (this) {
-                unregisterWithoutNotification();
-                lastState = mLastState;
-                // Always go back to the FAR state. That way, when we register again we will get a
-                // transition when the sensor gets into the NEAR state.
-                mLastState = State.FAR;
-            }
-            // Notify the listener if we changed the state to FAR while unregistering.
-            if (lastState != State.FAR) {
-                mListener.onFar();
-            }
-        }
-
-        @GuardedBy("this")
-        private void unregisterWithoutNotification() {
-            mSensorManager.unregisterListener(this);
-            mWaitingForFarState = false;
-        }
-    }
-
-    public ProximitySensorManager(Context context, Listener listener) {
-        SensorManager sensorManager =
-                (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
-        Sensor proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
-        if (proximitySensor == null) {
-            // If there is no sensor, we should not do anything.
-            mProximitySensorListener = null;
-        } else {
-            mProximitySensorListener =
-                    new ProximitySensorEventListener(sensorManager, proximitySensor, listener);
-        }
-    }
-
-    /**
-     * Enables the proximity manager.
-     * <p>
-     * The listener will start getting notifications of events.
-     * <p>
-     * This method is idempotent.
-     */
-    public void enable() {
-        if (mProximitySensorListener != null && !mManagerEnabled) {
-            mProximitySensorListener.register();
-            mManagerEnabled = true;
-        }
-    }
-
-    /**
-     * Disables the proximity manager.
-     * <p>
-     * The listener will stop receiving notifications of events, possibly after receiving a last
-     * {@link Listener#onFar()} callback.
-     * <p>
-     * If {@code waitForFarState} is true, if the sensor is not currently in the {@link State#FAR}
-     * state, the listener will receive a {@link Listener#onFar()} callback the next time the sensor
-     * actually reaches the {@link State#FAR} state.
-     * <p>
-     * If {@code waitForFarState} is false, the listener will receive a {@link Listener#onFar()}
-     * callback immediately if the sensor is currently not in the {@link State#FAR} state.
-     * <p>
-     * This method is idempotent.
-     */
-    public void disable(boolean waitForFarState) {
-        if (mProximitySensorListener != null && mManagerEnabled) {
-            if (waitForFarState) {
-                mProximitySensorListener.unregisterWhenFar();
-            } else {
-                mProximitySensorListener.unregister();
-            }
-            mManagerEnabled = false;
-        }
-    }
-}
diff --git a/src/com/android/dialer/SpecialCharSequenceMgr.java b/src/com/android/dialer/SpecialCharSequenceMgr.java
index eadb6ed..a57e2ee 100644
--- a/src/com/android/dialer/SpecialCharSequenceMgr.java
+++ b/src/com/android/dialer/SpecialCharSequenceMgr.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.app.AlertDialog;
+import android.app.DialogFragment;
 import android.app.KeyguardManager;
 import android.app.ProgressDialog;
 import android.content.ActivityNotFoundException;
@@ -29,10 +30,12 @@
 import android.net.Uri;
 import android.os.Looper;
 import android.provider.Settings;
+import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.TelephonyManager;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.WindowManager;
 import android.widget.EditText;
@@ -43,6 +46,7 @@
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
 import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment.SelectPhoneAccountListener;
 import com.android.dialer.calllog.PhoneAccountUtils;
+import com.android.dialer.util.TelecomUtil;
 
 import java.util.Arrays;
 import java.util.ArrayList;
@@ -63,6 +67,8 @@
 public class SpecialCharSequenceMgr {
     private static final String TAG = "SpecialCharSequenceMgr";
 
+    private static final String TAG_SELECT_ACCT_FRAGMENT = "tag_select_acct_fragment";
+
     private static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
     private static final String MMI_IMEI_DISPLAY = "*#06#";
     private static final String MMI_REGULATORY_INFO_DISPLAY = "*#07#";
@@ -209,7 +215,7 @@
                         PhoneAccountUtils.getSubscriptionPhoneAccounts(context);
 
                 boolean hasUserSelectedDefault = subscriptionAccountHandles.contains(
-                        telecomManager.getUserSelectedOutgoingPhoneAccount());
+                        telecomManager.getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL));
 
                 if (subscriptionAccountHandles.size() == 1 || hasUserSelectedDefault) {
                     Uri uri = telecomManager.getAdnUriForPhoneAccount(null);
@@ -228,9 +234,12 @@
                         public void onDialogDismissed() {}
                     };
 
-                    SelectPhoneAccountDialogFragment.showAccountDialog(
-                            ((Activity) context).getFragmentManager(), subscriptionAccountHandles,
-                            listener);
+                    // NOTE: If you want to support rotation of this dialog need
+                    // to refactor the listener and set it in DialpadFragment.onCreate()
+                    DialogFragment dialogFragment = SelectPhoneAccountDialogFragment.newInstance(
+                            subscriptionAccountHandles, listener);
+                    dialogFragment.show(((Activity) context).getFragmentManager(),
+                            TAG_SELECT_ACCT_FRAGMENT);
                 } else {
                     return false;
                 }
@@ -264,34 +273,38 @@
         sPreviousAdnQueryHandler = handler;
     }
 
-    static boolean handlePinEntry(Context context, final String input) {
+    static boolean handlePinEntry(final Context context, final String input) {
         if ((input.startsWith("**04") || input.startsWith("**05")) && input.endsWith("#")) {
             final TelecomManager telecomManager =
                     (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
             List<PhoneAccountHandle> subscriptionAccountHandles =
                     PhoneAccountUtils.getSubscriptionPhoneAccounts(context);
             boolean hasUserSelectedDefault = subscriptionAccountHandles.contains(
-                    telecomManager.getUserSelectedOutgoingPhoneAccount());
+                    telecomManager.getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL));
 
             if (subscriptionAccountHandles.size() == 1 || hasUserSelectedDefault) {
                 // Don't bring up the dialog for single-SIM or if the default outgoing account is
                 // a subscription account.
-                return telecomManager.handleMmi(input);
+                return TelecomUtil.handleMmi(context, input, null);
             } else if (subscriptionAccountHandles.size() > 1){
                 SelectPhoneAccountListener listener = new SelectPhoneAccountListener() {
                     @Override
                     public void onPhoneAccountSelected(PhoneAccountHandle selectedAccountHandle,
                             boolean setDefault) {
-                        telecomManager.handleMmi(selectedAccountHandle, input);
+                        TelecomUtil.handleMmi(context.getApplicationContext(),
+                                input, selectedAccountHandle);
                         //TODO: show error dialog if result isn't valid
                     }
                     @Override
                     public void onDialogDismissed() {}
                 };
 
-                SelectPhoneAccountDialogFragment.showAccountDialog(
-                        ((Activity) context).getFragmentManager(), subscriptionAccountHandles,
-                        listener);
+                // NOTE: If you want to support rotation of this dialog need
+                // to refactor the listener and set it in DialpadFragment.onCreate()
+                DialogFragment dialogFragment = SelectPhoneAccountDialogFragment.newInstance(
+                        subscriptionAccountHandles, listener);
+                dialogFragment.show(((Activity) context).getFragmentManager(),
+                        TAG_SELECT_ACCT_FRAGMENT);
             }
             return true;
         }
@@ -310,7 +323,10 @@
 
             List<String> deviceIds = new ArrayList<String>();
             for (int slot = 0; slot < telephonyManager.getPhoneCount(); slot++) {
-                deviceIds.add(telephonyManager.getDeviceId(slot));
+                String deviceId = telephonyManager.getDeviceId(slot);
+                if (!TextUtils.isEmpty(deviceId)) {
+                    deviceIds.add(deviceId);
+                }
             }
 
             AlertDialog alert = new AlertDialog.Builder(context)
diff --git a/src/com/android/dialer/calllog/CallLogActivity.java b/src/com/android/dialer/calllog/CallLogActivity.java
index 33e72bc..8a0cc13 100644
--- a/src/com/android/dialer/calllog/CallLogActivity.java
+++ b/src/com/android/dialer/calllog/CallLogActivity.java
@@ -66,6 +66,8 @@
 
     private boolean mHasActiveVoicemailProvider;
 
+    private boolean mIsResumed;
+
     private final Runnable mWaitForVoicemailTimeoutRunnable = new Runnable() {
         @Override
         public void run() {
@@ -188,14 +190,21 @@
 
     @Override
     protected void onResume() {
+        mIsResumed = true;
         super.onResume();
         CallLogQueryHandler callLogQueryHandler =
-                new CallLogQueryHandler(this.getContentResolver(), this);
+                new CallLogQueryHandler(this, this.getContentResolver(), this);
         callLogQueryHandler.fetchVoicemailStatus();
         sendScreenViewForChildFragment(mViewPager.getCurrentItem());
     }
 
     @Override
+    protected void onPause() {
+        mIsResumed = false;
+        super.onPause();
+    }
+
+    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         final MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.call_log_options, menu);
@@ -264,7 +273,7 @@
 
     @Override
     public void onPageSelected(int position) {
-        if (isResumed()) {
+        if (mIsResumed) {
             sendScreenViewForChildFragment(position);
         }
         mViewPagerTabs.onPageSelected(position);
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index bb20a13..6b24c0a 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -16,69 +16,38 @@
 
 package com.android.dialer.calllog;
 
-import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
-import android.content.Loader;
 import android.content.res.Resources;
 import android.database.Cursor;
-import android.database.sqlite.SQLiteFullException;
 import android.net.Uri;
-import android.os.Handler;
-import android.os.Message;
-import android.provider.CallLog.Calls;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.PhoneLookup;
+import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.telecom.PhoneAccountHandle;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.AccessibilityDelegate;
 import android.view.ViewGroup;
-import android.view.ViewStub;
 import android.view.ViewTreeObserver;
 import android.view.accessibility.AccessibilityEvent;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
 
-import com.android.common.widget.GroupingListAdapter;
-import com.android.contacts.common.CallUtil;
-import com.android.contacts.common.ContactPhotoManager;
-import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
-import com.android.contacts.common.util.PhoneNumberHelper;
-import com.android.contacts.common.model.Contact;
-import com.android.contacts.common.model.ContactLoader;
-import com.android.contacts.common.util.UriUtils;
-import com.android.dialer.DialtactsActivity;
 import com.android.dialer.PhoneCallDetails;
 import com.android.dialer.PhoneCallDetailsHelper;
 import com.android.dialer.R;
+import com.android.dialer.contactinfo.ContactInfoCache;
+import com.android.dialer.contactinfo.ContactInfoCache.OnContactInfoChangedListener;
 import com.android.dialer.util.DialerUtils;
-import com.android.dialer.util.ExpirableCache;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Objects;
 
-import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.LinkedList;
 
 /**
  * Adapter class to fill in data for the Call Log.
  */
 public class CallLogAdapter extends GroupingListAdapter
         implements ViewTreeObserver.OnPreDrawListener, CallLogGroupBuilder.GroupCreator {
-    private static final String TAG = CallLogAdapter.class.getSimpleName();
-
-    private static final int VOICEMAIL_TRANSCRIPTION_MAX_LINES = 10;
-
-    /** The enumeration of {@link android.os.AsyncTask} objects used in this class. */
-    public enum Tasks {
-        REMOVE_CALL_LOG_ENTRIES,
-    }
 
     /** Interface used to inform a parent UI element that a list item has been expanded. */
     public interface CallItemExpandedListener {
@@ -108,42 +77,7 @@
         public void onReportButtonClick(String number);
     }
 
-    /**
-     * Stores a phone number of a call with the country code where it originally occurred.
-     * <p>
-     * Note the country does not necessarily specifies the country of the phone number itself, but
-     * it is the country in which the user was in when the call was placed or received.
-     */
-    private static final class NumberWithCountryIso {
-        public final String number;
-        public final String countryIso;
-
-        public NumberWithCountryIso(String number, String countryIso) {
-            this.number = number;
-            this.countryIso = countryIso;
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (o == null) return false;
-            if (!(o instanceof NumberWithCountryIso)) return false;
-            NumberWithCountryIso other = (NumberWithCountryIso) o;
-            return TextUtils.equals(number, other.number)
-                    && TextUtils.equals(countryIso, other.countryIso);
-        }
-
-        @Override
-        public int hashCode() {
-            return (number == null ? 0 : number.hashCode())
-                    ^ (countryIso == null ? 0 : countryIso.hashCode());
-        }
-    }
-
-    /** The time in millis to delay starting the thread processing requests. */
-    private static final int START_PROCESSING_REQUESTS_DELAY_MILLIS = 1000;
-
-    /** The size of the cache of contact info. */
-    private static final int CONTACT_INFO_CACHE_SIZE = 100;
+    private static final int VIEW_TYPE_SHOW_CALL_HISTORY_LIST_ITEM = 10;
 
     /** Constant used to indicate no row is expanded. */
     private static final long NONE_EXPANDED = -1;
@@ -151,25 +85,12 @@
     protected final Context mContext;
     private final ContactInfoHelper mContactInfoHelper;
     private final CallFetcher mCallFetcher;
-    private final Toast mReportedToast;
     private final OnReportButtonClickListener mOnReportButtonClickListener;
     private ViewTreeObserver mViewTreeObserver = null;
 
-    /**
-     * A cache of the contact details for the phone numbers in the call log.
-     * <p>
-     * The content of the cache is expired (but not purged) whenever the application comes to
-     * the foreground.
-     * <p>
-     * The key is number with the country in which the call was placed or received.
-     */
-    private ExpirableCache<NumberWithCountryIso, ContactInfo> mContactInfoCache;
+    protected ContactInfoCache mContactInfoCache;
 
-    /**
-     * Tracks the call log row which was previously expanded.  Used so that the closure of a
-     * previously expanded call log entry can be animated on rebind.
-     */
-    private long mPreviouslyExpanded = NONE_EXPANDED;
+    private boolean mIsShowingRecentsTab;
 
     /**
      * Tracks the currently expanded call log row.
@@ -190,71 +111,11 @@
      */
     private HashMap<Long,Integer> mDayGroups = new HashMap<Long, Integer>();
 
-    /**
-     * A request for contact details for the given number.
-     */
-    private static final class ContactInfoRequest {
-        /** The number to look-up. */
-        public final String number;
-        /** The country in which a call to or from this number was placed or received. */
-        public final String countryIso;
-        /** The cached contact information stored in the call log. */
-        public final ContactInfo callLogInfo;
-
-        public ContactInfoRequest(String number, String countryIso, ContactInfo callLogInfo) {
-            this.number = number;
-            this.countryIso = countryIso;
-            this.callLogInfo = callLogInfo;
-        }
-
-        @Override
-        public boolean equals(Object obj) {
-            if (this == obj) return true;
-            if (obj == null) return false;
-            if (!(obj instanceof ContactInfoRequest)) return false;
-
-            ContactInfoRequest other = (ContactInfoRequest) obj;
-
-            if (!TextUtils.equals(number, other.number)) return false;
-            if (!TextUtils.equals(countryIso, other.countryIso)) return false;
-            if (!Objects.equal(callLogInfo, other.callLogInfo)) return false;
-
-            return true;
-        }
-
-        @Override
-        public int hashCode() {
-            final int prime = 31;
-            int result = 1;
-            result = prime * result + ((callLogInfo == null) ? 0 : callLogInfo.hashCode());
-            result = prime * result + ((countryIso == null) ? 0 : countryIso.hashCode());
-            result = prime * result + ((number == null) ? 0 : number.hashCode());
-            return result;
-        }
-    }
-
-    /**
-     * List of requests to update contact details.
-     * <p>
-     * Each request is made of a phone number to look up, and the contact info currently stored in
-     * the call log for this number.
-     * <p>
-     * The requests are added when displaying the contacts and are processed by a background
-     * thread.
-     */
-    private final LinkedList<ContactInfoRequest> mRequests;
-
     private boolean mLoading = true;
-    private static final int REDRAW = 1;
-    private static final int START_THREAD = 2;
-
-    private QueryThread mCallerIdThread;
 
     /** Instance of helper class for managing views. */
     private final CallLogListItemHelper mCallLogViewsHelper;
 
-    /** Helper to set up contact photos. */
-    private final ContactPhotoManager mContactPhotoManager;
     /** Helper to parse and process phone numbers. */
     private PhoneNumberDisplayHelper mPhoneNumberHelper;
     /** Helper to access Telephony phone number utils class */
@@ -262,22 +123,6 @@
     /** Helper to group call log entries. */
     private final CallLogGroupBuilder mCallLogGroupBuilder;
 
-    private CallItemExpandedListener mCallItemExpandedListener;
-
-    /** Can be set to true by tests to disable processing of requests. */
-    private volatile boolean mRequestProcessingDisabled = false;
-
-    private boolean mIsCallLog = true;
-
-    private View mBadgeContainer;
-    private ImageView mBadgeImageView;
-    private TextView mBadgeText;
-
-    private int mCallLogBackgroundColor;
-    private int mExpandedBackgroundColor;
-    private float mExpandedTranslationZ;
-    private int mPhotoSize;
-
     /** Listener for the primary or secondary actions in the list.
      *  Primary opens the call details.
      *  Secondary calls or plays.
@@ -285,7 +130,14 @@
     private final View.OnClickListener mActionListener = new View.OnClickListener() {
         @Override
         public void onClick(View view) {
-            startActivityForAction(view);
+            final IntentProvider intentProvider = (IntentProvider) view.getTag();
+            if (intentProvider != null) {
+                final Intent intent = intentProvider.getIntent(mContext);
+                // See IntentProvider.getCallDetailIntentProvider() for why this may be null.
+                if (intent != null) {
+                    DialerUtils.startActivityWithErrorToast(mContext, intent);
+                }
+            }
         }
     };
 
@@ -296,95 +148,64 @@
     private final View.OnClickListener mExpandCollapseListener = new View.OnClickListener() {
         @Override
         public void onClick(View v) {
-            final View callLogItem = (View) v.getParent().getParent();
-            handleRowExpanded(callLogItem, true /* animate */, false /* forceExpand */);
+            handleRowExpanded(v, false /* forceExpand */);
         }
     };
 
+    protected final OnContactInfoChangedListener mOnContactInfoChangedListener =
+            new OnContactInfoChangedListener() {
+                @Override
+                public void onContactInfoChanged() {
+                    notifyDataSetChanged();
+                }
+            };
+
     private AccessibilityDelegate mAccessibilityDelegate = new AccessibilityDelegate() {
         @Override
         public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
                 AccessibilityEvent event) {
             if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
-                handleRowExpanded(host, false /* animate */,
-                        true /* forceExpand */);
+                handleRowExpanded(host, true /* forceExpand */);
             }
             return super.onRequestSendAccessibilityEvent(host, child, event);
         }
     };
 
-    private void startActivityForAction(View view) {
-        final IntentProvider intentProvider = (IntentProvider) view.getTag();
-        if (intentProvider != null) {
-            final Intent intent = intentProvider.getIntent(mContext);
-            // See IntentProvider.getCallDetailIntentProvider() for why this may be null.
-            if (intent != null) {
-                DialerUtils.startActivityWithErrorToast(mContext, intent);
-            }
-        }
-    }
-
     @Override
     public boolean onPreDraw() {
         // We only wanted to listen for the first draw (and this is it).
         unregisterPreDrawListener();
 
-        // Only schedule a thread-creation message if the thread hasn't been
-        // created yet. This is purely an optimization, to queue fewer messages.
-        if (mCallerIdThread == null) {
-            mHandler.sendEmptyMessageDelayed(START_THREAD, START_PROCESSING_REQUESTS_DELAY_MILLIS);
-        }
-
+        mContactInfoCache.start();
         return true;
     }
 
-    private Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case REDRAW:
-                    notifyDataSetChanged();
-                    break;
-                case START_THREAD:
-                    startRequestProcessing();
-                    break;
-            }
-        }
-    };
-
-    public CallLogAdapter(Context context, CallFetcher callFetcher,
-            ContactInfoHelper contactInfoHelper, CallItemExpandedListener callItemExpandedListener,
-            OnReportButtonClickListener onReportButtonClickListener, boolean isCallLog) {
+    public CallLogAdapter(
+            Context context,
+            CallFetcher callFetcher,
+            ContactInfoHelper contactInfoHelper,
+            boolean isShowingRecentsTab,
+            OnReportButtonClickListener onReportButtonClickListener) {
         super(context);
 
         mContext = context;
         mCallFetcher = callFetcher;
         mContactInfoHelper = contactInfoHelper;
-        mIsCallLog = isCallLog;
-        mCallItemExpandedListener = callItemExpandedListener;
-
+        mIsShowingRecentsTab = isShowingRecentsTab;
         mOnReportButtonClickListener = onReportButtonClickListener;
-        mReportedToast = Toast.makeText(mContext, R.string.toast_caller_id_reported,
-                Toast.LENGTH_SHORT);
 
-        mContactInfoCache = ExpirableCache.create(CONTACT_INFO_CACHE_SIZE);
-        mRequests = new LinkedList<ContactInfoRequest>();
+        mContactInfoCache = new ContactInfoCache(
+                mContactInfoHelper, mOnContactInfoChangedListener);
 
         Resources resources = mContext.getResources();
         CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
-        mCallLogBackgroundColor = resources.getColor(R.color.background_dialer_list_items);
-        mExpandedBackgroundColor = resources.getColor(R.color.call_log_expanded_background_color);
-        mExpandedTranslationZ = resources.getDimension(R.dimen.call_log_expanded_translation_z);
-        mPhotoSize = resources.getDimensionPixelSize(R.dimen.contact_photo_size);
 
-        mContactPhotoManager = ContactPhotoManager.getInstance(mContext);
         mPhoneNumberHelper = new PhoneNumberDisplayHelper(mContext, resources);
         mPhoneNumberUtilsWrapper = new PhoneNumberUtilsWrapper(mContext);
         PhoneCallDetailsHelper phoneCallDetailsHelper =
                 new PhoneCallDetailsHelper(mContext, resources, mPhoneNumberUtilsWrapper);
         mCallLogViewsHelper =
-                new CallLogListItemHelper(
-                        phoneCallDetailsHelper, mPhoneNumberHelper, resources);
+                new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberHelper, resources);
         mCallLogGroupBuilder = new CallLogGroupBuilder(this);
     }
 
@@ -400,44 +221,12 @@
         mLoading = loading;
     }
 
-    @Override
     public boolean isEmpty() {
         if (mLoading) {
             // We don't want the empty state to show when loading.
             return false;
         } else {
-            return super.isEmpty();
-        }
-    }
-
-    /**
-     * Starts a background thread to process contact-lookup requests, unless one
-     * has already been started.
-     */
-    private synchronized void startRequestProcessing() {
-        // For unit-testing.
-        if (mRequestProcessingDisabled) return;
-
-        // Idempotence... if a thread is already started, don't start another.
-        if (mCallerIdThread != null) return;
-
-        mCallerIdThread = new QueryThread();
-        mCallerIdThread.setPriority(Thread.MIN_PRIORITY);
-        mCallerIdThread.start();
-    }
-
-    /**
-     * Stops the background thread that processes updates and cancels any
-     * pending requests to start it.
-     */
-    public synchronized void stopRequestProcessing() {
-        // Remove any pending requests to start the processing thread.
-        mHandler.removeMessages(START_THREAD);
-        if (mCallerIdThread != null) {
-            // Stop the thread; we are finished with it.
-            mCallerIdThread.stopProcessing();
-            mCallerIdThread.interrupt();
-            mCallerIdThread = null;
+            return getItemCount() == 0;
         }
     }
 
@@ -452,133 +241,14 @@
     }
 
     public void invalidateCache() {
-        mContactInfoCache.expireAll();
+        mContactInfoCache.invalidate();
 
         // Restart the request-processing thread after the next draw.
-        stopRequestProcessing();
         unregisterPreDrawListener();
     }
 
-    /**
-     * Enqueues a request to look up the contact details for the given phone number.
-     * <p>
-     * It also provides the current contact info stored in the call log for this number.
-     * <p>
-     * If the {@code immediate} parameter is true, it will start immediately the thread that looks
-     * up the contact information (if it has not been already started). Otherwise, it will be
-     * started with a delay. See {@link #START_PROCESSING_REQUESTS_DELAY_MILLIS}.
-     */
-    protected void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
-            boolean immediate) {
-        ContactInfoRequest request = new ContactInfoRequest(number, countryIso, callLogInfo);
-        synchronized (mRequests) {
-            if (!mRequests.contains(request)) {
-                mRequests.add(request);
-                mRequests.notifyAll();
-            }
-        }
-        if (immediate) startRequestProcessing();
-    }
-
-    /**
-     * Queries the appropriate content provider for the contact associated with the number.
-     * <p>
-     * Upon completion it also updates the cache in the call log, if it is different from
-     * {@code callLogInfo}.
-     * <p>
-     * The number might be either a SIP address or a phone number.
-     * <p>
-     * It returns true if it updated the content of the cache and we should therefore tell the
-     * view to update its content.
-     */
-    private boolean queryContactInfo(String number, String countryIso, ContactInfo callLogInfo) {
-        final ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso);
-
-        if (info == null) {
-            // The lookup failed, just return without requesting to update the view.
-            return false;
-        }
-
-        // Check the existing entry in the cache: only if it has changed we should update the
-        // view.
-        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
-        ContactInfo existingInfo = mContactInfoCache.getPossiblyExpired(numberCountryIso);
-
-        final boolean isRemoteSource = info.sourceType != 0;
-
-        // Don't force redraw if existing info in the cache is equal to {@link ContactInfo#EMPTY}
-        // to avoid updating the data set for every new row that is scrolled into view.
-        // see (https://googleplex-android-review.git.corp.google.com/#/c/166680/)
-
-        // Exception: Photo uris for contacts from remote sources are not cached in the call log
-        // cache, so we have to force a redraw for these contacts regardless.
-        boolean updated = (existingInfo != ContactInfo.EMPTY || isRemoteSource) &&
-                !info.equals(existingInfo);
-
-        // Store the data in the cache so that the UI thread can use to display it. Store it
-        // even if it has not changed so that it is marked as not expired.
-        mContactInfoCache.put(numberCountryIso, info);
-        // Update the call log even if the cache it is up-to-date: it is possible that the cache
-        // contains the value from a different call log entry.
-        updateCallLogContactInfoCache(number, countryIso, info, callLogInfo);
-        return updated;
-    }
-
-    /*
-     * Handles requests for contact name and number type.
-     */
-    private class QueryThread extends Thread {
-        private volatile boolean mDone = false;
-
-        public QueryThread() {
-            super("CallLogAdapter.QueryThread");
-        }
-
-        public void stopProcessing() {
-            mDone = true;
-        }
-
-        @Override
-        public void run() {
-            boolean needRedraw = false;
-            while (true) {
-                // Check if thread is finished, and if so return immediately.
-                if (mDone) return;
-
-                // Obtain next request, if any is available.
-                // Keep synchronized section small.
-                ContactInfoRequest req = null;
-                synchronized (mRequests) {
-                    if (!mRequests.isEmpty()) {
-                        req = mRequests.removeFirst();
-                    }
-                }
-
-                if (req != null) {
-                    // Process the request. If the lookup succeeds, schedule a
-                    // redraw.
-                    needRedraw |= queryContactInfo(req.number, req.countryIso, req.callLogInfo);
-                } else {
-                    // Throttle redraw rate by only sending them when there are
-                    // more requests.
-                    if (needRedraw) {
-                        needRedraw = false;
-                        mHandler.sendEmptyMessage(REDRAW);
-                    }
-
-                    // Wait until another request is available, or until this
-                    // thread is no longer needed (as indicated by being
-                    // interrupted).
-                    try {
-                        synchronized (mRequests) {
-                            mRequests.wait(1000);
-                        }
-                    } catch (InterruptedException ie) {
-                        // Ignore, and attempt to continue processing requests.
-                    }
-                }
-            }
-        }
+    public void pauseCache() {
+        mContactInfoCache.stop();
     }
 
     @Override
@@ -587,60 +257,55 @@
     }
 
     @Override
-    protected View newStandAloneView(Context context, ViewGroup parent) {
-        return newChildView(context, parent);
+    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        if (viewType == VIEW_TYPE_SHOW_CALL_HISTORY_LIST_ITEM) {
+            return ShowCallHistoryViewHolder.create(mContext, parent);
+        }
+        return createCallLogEntryViewHolder(parent);
     }
 
-    @Override
-    protected View newGroupView(Context context, ViewGroup parent) {
-        return newChildView(context, parent);
-    }
-
-    @Override
-    protected View newChildView(Context context, ViewGroup parent) {
-        LayoutInflater inflater = LayoutInflater.from(context);
+    /**
+     * Creates a new call log entry {@link ViewHolder}.
+     *
+     * @param parent the parent view.
+     * @return The {@link ViewHolder}.
+     */
+    private ViewHolder createCallLogEntryViewHolder(ViewGroup parent) {
+        LayoutInflater inflater = LayoutInflater.from(mContext);
         View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
 
-        // Get the views to bind to and cache them.
-        CallLogListItemViews views = CallLogListItemViews.fromView(view);
-        view.setTag(views);
+        CallLogListItemViewHolder viewHolder = CallLogListItemViewHolder.create(
+                view,
+                mContext,
+                mActionListener,
+                mPhoneNumberUtilsWrapper,
+                mCallLogViewsHelper);
+        viewHolder.primaryActionView.setTag(viewHolder);
 
-        // Set text height to false on the TextViews so they don't have extra padding.
-        views.phoneCallDetailsViews.nameView.setElegantTextHeight(false);
-        views.phoneCallDetailsViews.callLocationAndDate.setElegantTextHeight(false);
-
-        return view;
-    }
-
-    @Override
-    protected void bindStandAloneView(View view, Context context, Cursor cursor) {
-        bindView(view, cursor, 1);
-    }
-
-    @Override
-    protected void bindChildView(View view, Context context, Cursor cursor) {
-        bindView(view, cursor, 1);
-    }
-
-    @Override
-    protected void bindGroupView(View view, Context context, Cursor cursor, int groupSize,
-            boolean expanded) {
-        bindView(view, cursor, groupSize);
-    }
-
-    private void findAndCacheViews(View view) {
+        return viewHolder;
     }
 
     /**
      * Binds the views in the entry to the data in the call log.
+     * TODO: This gets called 20-30 times when Dialer starts up for a single call log entry and
+     * should not. It invokes cross-process methods and the repeat execution can get costly.
      *
      * @param callLogItemView the view corresponding to this entry
-     * @param c the cursor pointing to the entry in the call log
      * @param count the number of entries in the current item, greater than 1 if it is a group
      */
-    private void bindView(View callLogItemView, Cursor c, int count) {
-        callLogItemView.setAccessibilityDelegate(mAccessibilityDelegate);
-        final CallLogListItemViews views = (CallLogListItemViews) callLogItemView.getTag();
+    public void onBindViewHolder(ViewHolder viewHolder, int position) {
+        if (getItemViewType(position) == VIEW_TYPE_SHOW_CALL_HISTORY_LIST_ITEM) {
+            return;
+        }
+
+        Cursor c = (Cursor) getItem(position);
+        if (c == null) {
+            return;
+        }
+        int count = getGroupSize(position);
+
+        CallLogListItemViewHolder views = (CallLogListItemViewHolder) viewHolder;
+        views.rootView.setAccessibilityDelegate(mAccessibilityDelegate);
 
         // Default case: an item in the call log.
         views.primaryActionView.setVisibility(View.VISIBLE);
@@ -658,17 +323,12 @@
         final long rowId = c.getLong(CallLogQuery.ID);
         views.rowId = rowId;
 
-        // For entries in the call log, check if the day group has changed and display a header
-        // if necessary.
-        if (mIsCallLog) {
-            int currentGroup = getDayGroupForCall(rowId);
-            int previousGroup = getPreviousDayGroup(c);
-            if (currentGroup != previousGroup) {
-                views.dayGroupHeader.setVisibility(View.VISIBLE);
-                views.dayGroupHeader.setText(getGroupDescription(currentGroup));
-            } else {
-                views.dayGroupHeader.setVisibility(View.GONE);
-            }
+        // Check if the day group has changed and display a header if necessary.
+        int currentGroup = getDayGroupForCall(rowId);
+        int previousGroup = getPreviousDayGroup(c);
+        if (currentGroup != previousGroup) {
+            views.dayGroupHeader.setVisibility(View.VISIBLE);
+            views.dayGroupHeader.setText(getGroupDescription(currentGroup));
         } else {
             views.dayGroupHeader.setVisibility(View.GONE);
         }
@@ -683,74 +343,22 @@
         // Stash away the Ids of the calls so that we can support deleting a row in the call log.
         views.callIds = getCallIds(c, count);
 
-        final ContactInfo cachedContactInfo = getContactInfoFromCallLog(c);
+        final ContactInfo cachedContactInfo = mContactInfoHelper.getContactInfo(c);
 
         final boolean isVoicemailNumber =
                 mPhoneNumberUtilsWrapper.isVoicemailNumber(accountHandle, number);
 
-        // Where binding and not in the call log, use default behaviour of invoking a call when
-        // tapping the primary view.
-        if (!mIsCallLog) {
-            views.primaryActionView.setOnClickListener(this.mActionListener);
+        // Expand/collapse an actions section for the call log entry when the primary view is tapped.
+        views.primaryActionView.setOnClickListener(mExpandCollapseListener);
 
-            // Set return call intent, otherwise null.
-            if (PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)) {
-                // Sets the primary action to call the number.
-                if (isVoicemailNumber) {
-                    views.primaryActionView.setTag(
-                            IntentProvider.getReturnVoicemailCallIntentProvider());
-                } else {
-                    views.primaryActionView.setTag(
-                            IntentProvider.getReturnCallIntentProvider(number));
-                }
-            } else {
-                // Number is not callable, so hide button.
-                views.primaryActionView.setTag(null);
-            }
-        } else {
-            // In the call log, expand/collapse an actions section for the call log entry when
-            // the primary view is tapped.
-            views.primaryActionView.setOnClickListener(this.mExpandCollapseListener);
+        // Note: Binding of the action buttons is done as required in configureActionViews when the
+        // user expands the actions ViewStub.
 
-            // Note: Binding of the action buttons is done as required in configureActionViews
-            // when the user expands the actions ViewStub.
-        }
-
-        // Lookup contacts with this number
-        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
-        ExpirableCache.CachedValue<ContactInfo> cachedInfo =
-                mContactInfoCache.getCachedValue(numberCountryIso);
-        ContactInfo info = cachedInfo == null ? null : cachedInfo.getValue();
-        if (!PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)
-                || isVoicemailNumber) {
-            // If this is a number that cannot be dialed, there is no point in looking up a contact
-            // for it.
-            info = ContactInfo.EMPTY;
-        } else if (cachedInfo == null) {
-            mContactInfoCache.put(numberCountryIso, ContactInfo.EMPTY);
-            // Use the cached contact info from the call log.
-            info = cachedContactInfo;
-            // The db request should happen on a non-UI thread.
-            // Request the contact details immediately since they are currently missing.
-            enqueueRequest(number, countryIso, cachedContactInfo, true);
-            // We will format the phone number when we make the background request.
-        } else {
-            if (cachedInfo.isExpired()) {
-                // The contact info is no longer up to date, we should request it. However, we
-                // do not need to request them immediately.
-                enqueueRequest(number, countryIso, cachedContactInfo, false);
-            } else  if (!callLogInfoMatches(cachedContactInfo, info)) {
-                // The call log information does not match the one we have, look it up again.
-                // We could simply update the call log directly, but that needs to be done in a
-                // background thread, so it is easier to simply request a new lookup, which will, as
-                // a side-effect, update the call log.
-                enqueueRequest(number, countryIso, cachedContactInfo, false);
-            }
-
-            if (info == ContactInfo.EMPTY) {
-                // Use the cached contact info from the call log.
-                info = cachedContactInfo;
-            }
+        ContactInfo info = ContactInfo.EMPTY;
+        if (PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation)
+                && !isVoicemailNumber) {
+            // Lookup contacts with this number
+            info = mContactInfoCache.getValue(number, countryIso, cachedContactInfo);
         }
 
         final Uri lookupUri = info.lookupUri;
@@ -760,7 +368,7 @@
         final long photoId = info.photoId;
         final Uri photoUri = info.photoUri;
         CharSequence formattedNumber = info.formattedNumber == null
-                ? null : PhoneNumberUtils.ttsSpanAsPhoneNumber(info.formattedNumber);
+                ? null : PhoneNumberUtils.getPhoneTtsSpannable(info.formattedNumber);
         final int[] callTypes = getCallTypes(c, count);
         final String geocode = c.getString(CallLogQuery.GEOCODED_LOCATION);
         final int sourceType = info.sourceType;
@@ -773,7 +381,7 @@
 
         final PhoneCallDetails details;
 
-        views.reported = info.isBadData;
+        views.info = info;
 
         // The entry can only be reported as invalid if it has a valid ID and the source of the
         // entry supports marking entries as invalid.
@@ -782,7 +390,7 @@
 
         // Restore expansion state of the row on rebind.  Inflate the actions ViewStub if required,
         // and set its visibility state accordingly.
-        expandOrCollapseActions(callLogItemView, isExpanded(rowId));
+        views.showActions(isExpanded(rowId), mOnReportButtonClickListener);
 
         if (TextUtils.isEmpty(name)) {
             details = new PhoneCallDetails(number, numberPresentation, formattedNumber, countryIso,
@@ -796,17 +404,6 @@
 
         mCallLogViewsHelper.setPhoneCallDetails(mContext, views, details);
 
-        int contactType = ContactPhotoManager.TYPE_DEFAULT;
-
-        if (isVoicemailNumber) {
-            contactType = ContactPhotoManager.TYPE_VOICEMAIL;
-        } else if (mContactInfoHelper.isBusiness(info.sourceType)) {
-            contactType = ContactPhotoManager.TYPE_BUSINESS;
-        }
-
-        String lookupKey = lookupUri == null ? null
-                : ContactInfoHelper.getLookupKeyFromUri(lookupUri);
-
         String nameForDefaultImage = null;
         if (TextUtils.isEmpty(name)) {
             nameForDefaultImage = mPhoneNumberHelper.getDisplayNumber(details.accountHandle,
@@ -815,19 +412,33 @@
             nameForDefaultImage = name;
         }
 
-        if (photoId == 0 && photoUri != null) {
-            setPhoto(views, photoUri, lookupUri, nameForDefaultImage, lookupKey, contactType);
-        } else {
-            setPhoto(views, photoId, lookupUri, nameForDefaultImage, lookupKey, contactType);
-        }
+        views.setPhoto(photoId, photoUri, lookupUri, nameForDefaultImage, isVoicemailNumber,
+                mContactInfoHelper.isBusiness(info.sourceType));
+
+        views.updateCallButton();
 
         // Listen for the first draw
         if (mViewTreeObserver == null) {
-            mViewTreeObserver = callLogItemView.getViewTreeObserver();
+            mViewTreeObserver = views.rootView.getViewTreeObserver();
             mViewTreeObserver.addOnPreDrawListener(this);
         }
+    }
 
-        bindBadge(callLogItemView, info, details, callType);
+    @Override
+    public int getItemCount() {
+        return super.getItemCount() + (isShowingRecentsTab() ? 1 : 0);
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        if (position == getItemCount() - 1 && isShowingRecentsTab()) {
+            return VIEW_TYPE_SHOW_CALL_HISTORY_LIST_ITEM;
+        }
+        return super.getItemViewType(position);
+    }
+
+    protected boolean isShowingRecentsTab() {
+        return mIsShowingRecentsTab;
     }
 
     /**
@@ -862,6 +473,7 @@
         }
         return CallLogGroupBuilder.DAY_GROUP_NONE;
     }
+
     /**
      * Determines if a call log row with the given Id is expanded.
      * @param rowId The row Id of the call.
@@ -882,342 +494,16 @@
     private boolean toggleExpansion(long rowId) {
         if (rowId == mCurrentlyExpanded) {
             // Collapsing currently expanded row.
-            mPreviouslyExpanded = NONE_EXPANDED;
             mCurrentlyExpanded = NONE_EXPANDED;
-
             return false;
         } else {
             // Expanding a row (collapsing current expanded one).
-
-            mPreviouslyExpanded = mCurrentlyExpanded;
             mCurrentlyExpanded = rowId;
             return true;
         }
     }
 
     /**
-     * Expands or collapses the view containing the CALLBACK/REDIAL, VOICEMAIL and DETAILS action
-     * buttons.
-     *
-     * @param callLogItem The call log entry parent view.
-     * @param isExpanded The new expansion state of the view.
-     */
-    private void expandOrCollapseActions(View callLogItem, boolean isExpanded) {
-        final CallLogListItemViews views = (CallLogListItemViews)callLogItem.getTag();
-
-        expandVoicemailTranscriptionView(views, isExpanded);
-        if (isExpanded) {
-            // Inflate the view stub if necessary, and wire up the event handlers.
-            inflateActionViewStub(callLogItem);
-
-            views.actionsView.setVisibility(View.VISIBLE);
-            views.actionsView.setAlpha(1.0f);
-            views.callLogEntryView.setBackgroundColor(mExpandedBackgroundColor);
-            views.callLogEntryView.setTranslationZ(mExpandedTranslationZ);
-            callLogItem.setTranslationZ(mExpandedTranslationZ); // WAR
-        } else {
-            // When recycling a view, it is possible the actionsView ViewStub was previously
-            // inflated so we should hide it in this case.
-            if (views.actionsView != null) {
-                views.actionsView.setVisibility(View.GONE);
-            }
-
-            views.callLogEntryView.setBackgroundColor(mCallLogBackgroundColor);
-            views.callLogEntryView.setTranslationZ(0);
-            callLogItem.setTranslationZ(0); // WAR
-        }
-    }
-
-    public static void expandVoicemailTranscriptionView(CallLogListItemViews views,
-            boolean isExpanded) {
-        if (views.callType != Calls.VOICEMAIL_TYPE) {
-            return;
-        }
-
-        final TextView view = views.phoneCallDetailsViews.voicemailTranscriptionView;
-        if (TextUtils.isEmpty(view.getText())) {
-            return;
-        }
-        view.setMaxLines(isExpanded ? VOICEMAIL_TRANSCRIPTION_MAX_LINES : 1);
-        view.setSingleLine(!isExpanded);
-    }
-
-    /**
-     * Configures the action buttons in the expandable actions ViewStub.  The ViewStub is not
-     * inflated during initial binding, so click handlers, tags and accessibility text must be set
-     * here, if necessary.
-     *
-     * @param callLogItem The call log list item view.
-     */
-    private void inflateActionViewStub(final View callLogItem) {
-        final CallLogListItemViews views = (CallLogListItemViews)callLogItem.getTag();
-
-        ViewStub stub = (ViewStub)callLogItem.findViewById(R.id.call_log_entry_actions_stub);
-        if (stub != null) {
-            views.actionsView = (ViewGroup) stub.inflate();
-        }
-
-        if (views.callBackButtonView == null) {
-            views.callBackButtonView = (TextView)views.actionsView.findViewById(
-                    R.id.call_back_action);
-        }
-
-        if (views.videoCallButtonView == null) {
-            views.videoCallButtonView = (TextView)views.actionsView.findViewById(
-                    R.id.video_call_action);
-        }
-
-        if (views.voicemailButtonView == null) {
-            views.voicemailButtonView = (TextView)views.actionsView.findViewById(
-                    R.id.voicemail_action);
-        }
-
-        if (views.detailsButtonView == null) {
-            views.detailsButtonView = (TextView)views.actionsView.findViewById(R.id.details_action);
-        }
-
-        if (views.reportButtonView == null) {
-            views.reportButtonView = (TextView)views.actionsView.findViewById(R.id.report_action);
-            views.reportButtonView.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    if (mOnReportButtonClickListener != null) {
-                        mOnReportButtonClickListener.onReportButtonClick(views.number);
-                    }
-                }
-            });
-        }
-
-        bindActionButtons(views);
-    }
-
-    /***
-     * Binds text titles, click handlers and intents to the voicemail, details and callback action
-     * buttons.
-     *
-     * @param views  The call log item views.
-     */
-    private void bindActionButtons(CallLogListItemViews views) {
-        boolean canPlaceCallToNumber =
-                PhoneNumberUtilsWrapper.canPlaceCallsTo(views.number, views.numberPresentation);
-        // Set return call intent, otherwise null.
-        if (canPlaceCallToNumber) {
-            boolean isVoicemailNumber =
-                    mPhoneNumberUtilsWrapper.isVoicemailNumber(views.accountHandle, views.number);
-            if (isVoicemailNumber) {
-                // Make a general call to voicemail to ensure that if there are multiple accounts
-                // it does not call the voicemail number of a specific phone account.
-                views.callBackButtonView.setTag(
-                        IntentProvider.getReturnVoicemailCallIntentProvider());
-            } else {
-                // Sets the primary action to call the number.
-                views.callBackButtonView.setTag(
-                        IntentProvider.getReturnCallIntentProvider(views.number));
-            }
-            views.callBackButtonView.setVisibility(View.VISIBLE);
-            views.callBackButtonView.setOnClickListener(mActionListener);
-
-            final int titleId;
-            if (views.callType == Calls.VOICEMAIL_TYPE || views.callType == Calls.OUTGOING_TYPE) {
-                titleId = R.string.call_log_action_redial;
-            } else {
-                titleId = R.string.call_log_action_call_back;
-            }
-            views.callBackButtonView.setText(mContext.getString(titleId));
-        } else {
-            // Number is not callable, so hide button.
-            views.callBackButtonView.setTag(null);
-            views.callBackButtonView.setVisibility(View.GONE);
-        }
-
-        // If one of the calls had video capabilities, show the video call button.
-        if (CallUtil.isVideoEnabled(mContext) && canPlaceCallToNumber &&
-                views.phoneCallDetailsViews.callTypeIcons.isVideoShown()) {
-            views.videoCallButtonView.setTag(
-                    IntentProvider.getReturnVideoCallIntentProvider(views.number));
-            views.videoCallButtonView.setVisibility(View.VISIBLE);
-            views.videoCallButtonView.setOnClickListener(mActionListener);
-        } else {
-            views.videoCallButtonView.setTag(null);
-            views.videoCallButtonView.setVisibility(View.GONE);
-        }
-
-        // For voicemail calls, show the "VOICEMAIL" action button; hide otherwise.
-        if (views.callType == Calls.VOICEMAIL_TYPE) {
-            views.voicemailButtonView.setOnClickListener(mActionListener);
-            views.voicemailButtonView.setTag(
-                    IntentProvider.getPlayVoicemailIntentProvider(
-                            views.rowId, views.voicemailUri));
-            views.voicemailButtonView.setVisibility(View.VISIBLE);
-
-            views.detailsButtonView.setVisibility(View.GONE);
-        } else {
-            views.voicemailButtonView.setTag(null);
-            views.voicemailButtonView.setVisibility(View.GONE);
-
-            views.detailsButtonView.setOnClickListener(mActionListener);
-            views.detailsButtonView.setTag(
-                    IntentProvider.getCallDetailIntentProvider(
-                            views.rowId, views.callIds, null)
-            );
-
-            if (views.canBeReportedAsInvalid && !views.reported) {
-                views.reportButtonView.setVisibility(View.VISIBLE);
-            } else {
-                views.reportButtonView.setVisibility(View.GONE);
-            }
-        }
-
-        mCallLogViewsHelper.setActionContentDescriptions(views);
-    }
-
-    protected void bindBadge(
-            View view, final ContactInfo info, final PhoneCallDetails details, int callType) {
-        // Do not show badge in call log.
-        if (!mIsCallLog) {
-            final ViewStub stub = (ViewStub) view.findViewById(R.id.link_stub);
-            if (UriUtils.isEncodedContactUri(info.lookupUri)) {
-                if (stub != null) {
-                    mBadgeContainer = stub.inflate();
-                } else {
-                    mBadgeContainer = view.findViewById(R.id.badge_container);
-                }
-
-                mBadgeContainer.setVisibility(View.VISIBLE);
-                mBadgeImageView = (ImageView) mBadgeContainer.findViewById(R.id.badge_image);
-                mBadgeText = (TextView) mBadgeContainer.findViewById(R.id.badge_text);
-
-                final View clickableArea = mBadgeContainer.findViewById(R.id.badge_link_container);
-                if (clickableArea != null) {
-                    clickableArea.setOnClickListener(new View.OnClickListener() {
-                        @Override
-                        public void onClick(View v) {
-                            // If no lookup uri is provided, we need to rely on what information
-                            // we have available; namely the phone number and name.
-                            if (info.lookupUri == null) {
-                                final Intent intent =
-                                        DialtactsActivity.getAddToContactIntent(details.name,
-                                                details.number,
-                                                details.numberType);
-                                DialerUtils.startActivityWithErrorToast(mContext, intent,
-                                        R.string.add_contact_not_available);
-                            } else {
-                                addContactFromLookupUri(info.lookupUri);
-                            }
-                        }
-                    });
-                }
-                mBadgeImageView.setImageResource(R.drawable.ic_person_add_24dp);
-                mBadgeText.setText(R.string.recentCalls_addToContact);
-            } else {
-                // Hide badge if it was previously shown.
-                mBadgeContainer = view.findViewById(R.id.badge_container);
-                if (mBadgeContainer != null) {
-                    mBadgeContainer.setVisibility(View.GONE);
-                }
-            }
-        }
-    }
-
-    /** Checks whether the contact info from the call log matches the one from the contacts db. */
-    private boolean callLogInfoMatches(ContactInfo callLogInfo, ContactInfo info) {
-        // The call log only contains a subset of the fields in the contacts db.
-        // Only check those.
-        return TextUtils.equals(callLogInfo.name, info.name)
-                && callLogInfo.type == info.type
-                && TextUtils.equals(callLogInfo.label, info.label);
-    }
-
-    /** Stores the updated contact info in the call log if it is different from the current one. */
-    private void updateCallLogContactInfoCache(String number, String countryIso,
-            ContactInfo updatedInfo, ContactInfo callLogInfo) {
-        final ContentValues values = new ContentValues();
-        boolean needsUpdate = false;
-
-        if (callLogInfo != null) {
-            if (!TextUtils.equals(updatedInfo.name, callLogInfo.name)) {
-                values.put(Calls.CACHED_NAME, updatedInfo.name);
-                needsUpdate = true;
-            }
-
-            if (updatedInfo.type != callLogInfo.type) {
-                values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
-                needsUpdate = true;
-            }
-
-            if (!TextUtils.equals(updatedInfo.label, callLogInfo.label)) {
-                values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
-                needsUpdate = true;
-            }
-            if (!UriUtils.areEqual(updatedInfo.lookupUri, callLogInfo.lookupUri)) {
-                values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
-                needsUpdate = true;
-            }
-            // Only replace the normalized number if the new updated normalized number isn't empty.
-            if (!TextUtils.isEmpty(updatedInfo.normalizedNumber) &&
-                    !TextUtils.equals(updatedInfo.normalizedNumber, callLogInfo.normalizedNumber)) {
-                values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
-                needsUpdate = true;
-            }
-            if (!TextUtils.equals(updatedInfo.number, callLogInfo.number)) {
-                values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
-                needsUpdate = true;
-            }
-            if (updatedInfo.photoId != callLogInfo.photoId) {
-                values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
-                needsUpdate = true;
-            }
-            if (!TextUtils.equals(updatedInfo.formattedNumber, callLogInfo.formattedNumber)) {
-                values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
-                needsUpdate = true;
-            }
-        } else {
-            // No previous values, store all of them.
-            values.put(Calls.CACHED_NAME, updatedInfo.name);
-            values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
-            values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
-            values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
-            values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
-            values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
-            values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
-            values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
-            needsUpdate = true;
-        }
-
-        if (!needsUpdate) return;
-
-        try {
-            if (countryIso == null) {
-                mContext.getContentResolver().update(Calls.CONTENT_URI_WITH_VOICEMAIL, values,
-                        Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " IS NULL",
-                        new String[]{ number });
-            } else {
-                mContext.getContentResolver().update(Calls.CONTENT_URI_WITH_VOICEMAIL, values,
-                        Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " = ?",
-                        new String[]{ number, countryIso });
-            }
-        } catch (SQLiteFullException e) {
-            Log.e(TAG, "Unable to update contact info in call log db", e);
-        }
-    }
-
-    /** Returns the contact information as stored in the call log. */
-    private ContactInfo getContactInfoFromCallLog(Cursor c) {
-        ContactInfo info = new ContactInfo();
-        info.lookupUri = UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_LOOKUP_URI));
-        info.name = c.getString(CallLogQuery.CACHED_NAME);
-        info.type = c.getInt(CallLogQuery.CACHED_NUMBER_TYPE);
-        info.label = c.getString(CallLogQuery.CACHED_NUMBER_LABEL);
-        String matchedNumber = c.getString(CallLogQuery.CACHED_MATCHED_NUMBER);
-        info.number = matchedNumber == null ? c.getString(CallLogQuery.NUMBER) : matchedNumber;
-        info.normalizedNumber = c.getString(CallLogQuery.CACHED_NORMALIZED_NUMBER);
-        info.photoId = c.getLong(CallLogQuery.CACHED_PHOTO_ID);
-        info.photoUri = null;  // We do not cache the photo URI.
-        info.formattedNumber = c.getString(CallLogQuery.CACHED_FORMATTED_NUMBER);
-        return info;
-    }
-
-    /**
      * Returns the call types for the given number of items in the cursor.
      * <p>
      * It uses the next {@code count} rows in the cursor to extract the types.
@@ -1254,55 +540,22 @@
         return features;
     }
 
-    private void setPhoto(CallLogListItemViews views, long photoId, Uri contactUri,
-            String displayName, String identifier, int contactType) {
-        views.quickContactView.assignContactUri(contactUri);
-        views.quickContactView.setOverlay(null);
-        DefaultImageRequest request = new DefaultImageRequest(displayName, identifier,
-                contactType, true /* isCircular */);
-        mContactPhotoManager.loadThumbnail(views.quickContactView, photoId, false /* darkTheme */,
-                true /* isCircular */, request);
-    }
-
-    private void setPhoto(CallLogListItemViews views, Uri photoUri, Uri contactUri,
-            String displayName, String identifier, int contactType) {
-        views.quickContactView.assignContactUri(contactUri);
-        views.quickContactView.setOverlay(null);
-        DefaultImageRequest request = new DefaultImageRequest(displayName, identifier,
-                contactType, true /* isCircular */);
-        mContactPhotoManager.loadPhoto(views.quickContactView, photoUri, mPhotoSize,
-                false /* darkTheme */, true /* isCircular */, request);
-    }
-
-    /**
-     * Bind a call log entry view for testing purposes.  Also inflates the action view stub so
-     * unit tests can access the buttons contained within.
-     *
-     * @param view The current call log row.
-     * @param context The current context.
-     * @param cursor The cursor to bind from.
-     */
-    @VisibleForTesting
-    void bindViewForTest(View view, Context context, Cursor cursor) {
-        bindStandAloneView(view, context, cursor);
-        inflateActionViewStub(view);
-    }
-
     /**
      * Sets whether processing of requests for contact details should be enabled.
-     * <p>
+     *
      * This method should be called in tests to disable such processing of requests when not
      * needed.
      */
     @VisibleForTesting
     void disableRequestProcessingForTest() {
-        mRequestProcessingDisabled = true;
+        // TODO: Remove this and test the cache directly.
+        mContactInfoCache.disableRequestProcessingForTest();
     }
 
     @VisibleForTesting
     void injectContactInfoForTest(String number, String countryIso, ContactInfo contactInfo) {
-        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
-        mContactInfoCache.put(numberCountryIso, contactInfo);
+        // TODO: Remove this and test the cache directly.
+        mContactInfoCache.injectContactInfoForTest(number, countryIso, contactInfo);
     }
 
     @Override
@@ -1331,48 +584,6 @@
         mDayGroups.clear();
     }
 
-    /*
-     * Get the number from the Contacts, if available, since sometimes
-     * the number provided by caller id may not be formatted properly
-     * depending on the carrier (roaming) in use at the time of the
-     * incoming call.
-     * Logic : If the caller-id number starts with a "+", use it
-     *         Else if the number in the contacts starts with a "+", use that one
-     *         Else if the number in the contacts is longer, use that one
-     */
-    public String getBetterNumberFromContacts(String number, String countryIso) {
-        String matchingNumber = null;
-        // Look in the cache first. If it's not found then query the Phones db
-        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
-        ContactInfo ci = mContactInfoCache.getPossiblyExpired(numberCountryIso);
-        if (ci != null && ci != ContactInfo.EMPTY) {
-            matchingNumber = ci.number;
-        } else {
-            try {
-                Cursor phonesCursor = mContext.getContentResolver().query(
-                        Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, number),
-                        PhoneQuery._PROJECTION, null, null, null);
-                if (phonesCursor != null) {
-                    try {
-                        if (phonesCursor.moveToFirst()) {
-                            matchingNumber = phonesCursor.getString(PhoneQuery.MATCHED_NUMBER);
-                        }
-                    } finally {
-                        phonesCursor.close();
-                    }
-                }
-            } catch (Exception e) {
-                // Use the number from the call log
-            }
-        }
-        if (!TextUtils.isEmpty(matchingNumber) &&
-                (matchingNumber.startsWith("+")
-                        || matchingNumber.length() > number.length())) {
-            number = matchingNumber;
-        }
-        return number;
-    }
-
     /**
      * Retrieves the call Ids represented by the current call log row.
      *
@@ -1409,100 +620,21 @@
        }
     }
 
-    public void onBadDataReported(String number) {
-        mContactInfoCache.expireAll();
-        mReportedToast.show();
-    }
-
     /**
      * Manages the state changes for the UI interaction where a call log row is expanded.
      *
      * @param view The view that was tapped
-     * @param animate Whether or not to animate the expansion/collapse
      * @param forceExpand Whether or not to force the call log row into an expanded state regardless
      *        of its previous state
      */
-    private void handleRowExpanded(View view, boolean animate, boolean forceExpand) {
-        final CallLogListItemViews views = (CallLogListItemViews) view.getTag();
+    private void handleRowExpanded(View view, boolean forceExpand) {
+        final CallLogListItemViewHolder views = (CallLogListItemViewHolder) view.getTag();
 
-        if (forceExpand && isExpanded(views.rowId)) {
+        if (views == null || (forceExpand && isExpanded(views.rowId))) {
             return;
         }
 
-        // Hide or show the actions view.
         boolean expanded = toggleExpansion(views.rowId);
-
-        // Trigger loading of the viewstub and visual expand or collapse.
-        expandOrCollapseActions(view, expanded);
-
-        // Animate the expansion or collapse.
-        if (mCallItemExpandedListener != null) {
-            if (animate) {
-                mCallItemExpandedListener.onItemExpanded(view);
-            }
-
-            // Animate the collapse of the previous item if it is still visible on screen.
-            if (mPreviouslyExpanded != NONE_EXPANDED) {
-                View previousItem = mCallItemExpandedListener.getViewForCallId(
-                        mPreviouslyExpanded);
-
-                if (previousItem != null) {
-                    expandOrCollapseActions(previousItem, false);
-                    if (animate) {
-                        mCallItemExpandedListener.onItemExpanded(previousItem);
-                    }
-                }
-                mPreviouslyExpanded = NONE_EXPANDED;
-            }
-        }
-    }
-
-    /**
-     * Invokes the "add contact" activity given the expanded contact information stored in a
-     * lookup URI.  This can include, for example, address and website information.
-     *
-     * @param lookupUri The lookup URI.
-     */
-    private void addContactFromLookupUri(Uri lookupUri) {
-        Contact contactToSave = ContactLoader.parseEncodedContactEntity(lookupUri);
-        if (contactToSave == null) {
-            return;
-        }
-
-        // Note: This code mirrors code in Contacts/QuickContactsActivity.
-        final Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
-        intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
-
-        ArrayList<ContentValues> values = contactToSave.getContentValues();
-        // Only pre-fill the name field if the provided display name is an nickname
-        // or better (e.g. structured name, nickname)
-        if (contactToSave.getDisplayNameSource()
-                >= ContactsContract.DisplayNameSources.NICKNAME) {
-            intent.putExtra(ContactsContract.Intents.Insert.NAME,
-                    contactToSave.getDisplayName());
-        } else if (contactToSave.getDisplayNameSource()
-                == ContactsContract.DisplayNameSources.ORGANIZATION) {
-            // This is probably an organization. Instead of copying the organization
-            // name into a name entry, copy it into the organization entry. This
-            // way we will still consider the contact an organization.
-            final ContentValues organization = new ContentValues();
-            organization.put(ContactsContract.CommonDataKinds.Organization.COMPANY,
-                    contactToSave.getDisplayName());
-            organization.put(ContactsContract.Data.MIMETYPE,
-                    ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
-            values.add(organization);
-        }
-
-        // Last time used and times used are aggregated values from the usage stat
-        // table. They need to be removed from data values so the SQL table can insert
-        // properly
-        for (ContentValues value : values) {
-            value.remove(ContactsContract.Data.LAST_TIME_USED);
-            value.remove(ContactsContract.Data.TIMES_USED);
-        }
-        intent.putExtra(ContactsContract.Intents.Insert.DATA, values);
-
-        DialerUtils.startActivityWithErrorToast(mContext, intent,
-                R.string.add_contact_not_available);
+        views.showActions(expanded, mOnReportButtonClickListener);
     }
 }
diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java
index 9c95d3e..4948176 100644
--- a/src/com/android/dialer/calllog/CallLogFragment.java
+++ b/src/com/android/dialer/calllog/CallLogFragment.java
@@ -21,8 +21,9 @@
 import android.animation.ValueAnimator;
 import android.app.Activity;
 import android.app.DialogFragment;
+import android.app.Fragment;
 import android.app.KeyguardManager;
-import android.app.ListFragment;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.database.ContentObserver;
@@ -34,10 +35,11 @@
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract;
 import android.provider.VoicemailContract.Status;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.LinearLayoutManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.ViewTreeObserver;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup.LayoutParams;
 import android.widget.ListView;
@@ -60,15 +62,12 @@
  * Displays a list of call log entries. To filter for a particular kind of call
  * (all, missed or voicemails), specify it in the constructor.
  */
-public class CallLogFragment extends ListFragment
+public class CallLogFragment extends Fragment
         implements CallLogQueryHandler.Listener, CallLogAdapter.OnReportButtonClickListener,
-        CallLogAdapter.CallFetcher,
-        CallLogAdapter.CallItemExpandedListener {
+        CallLogAdapter.CallFetcher {
     private static final String TAG = "CallLogFragment";
 
     private static final String REPORT_DIALOG_TAG = "report_dialog";
-    private String mReportDialogNumber;
-    private boolean mIsReportDialogShowing;
 
     /**
      * ID of the empty loader to defer other fragments.
@@ -78,10 +77,14 @@
     private static final String KEY_FILTER_TYPE = "filter_type";
     private static final String KEY_LOG_LIMIT = "log_limit";
     private static final String KEY_DATE_LIMIT = "date_limit";
-    private static final String KEY_SHOW_FOOTER = "show_footer";
-    private static final String KEY_IS_REPORT_DIALOG_SHOWING = "is_report_dialog_showing";
-    private static final String KEY_REPORT_DIALOG_NUMBER = "report_dialog_number";
 
+    // No limit specified for the number of logs to show; use the CallLogQueryHandler's default.
+    private static final int NO_LOG_LIMIT = -1;
+    // No date-based filtering.
+    private static final int NO_DATE_LIMIT = 0;
+
+    private RecyclerView mRecyclerView;
+    private LinearLayoutManager mLayoutManager;
     private CallLogAdapter mAdapter;
     private CallLogQueryHandler mCallLogQueryHandler;
     private boolean mScrollToTop;
@@ -91,21 +94,15 @@
 
     private VoicemailStatusHelper mVoicemailStatusHelper;
     private View mStatusMessageView;
+    private View mEmptyListView;
     private TextView mStatusMessageText;
     private TextView mStatusMessageAction;
     private KeyguardManager mKeyguardManager;
-    private View mFooterView;
 
     private boolean mEmptyLoaderRunning;
     private boolean mCallLogFetched;
     private boolean mVoicemailStatusFetched;
 
-    private float mExpandedItemTranslationZ;
-    private int mFadeInDuration;
-    private int mFadeInStartDelay;
-    private int mFadeOutDuration;
-    private int mExpandCollapseDuration;
-
     private final Handler mHandler = new Handler();
 
     private class CustomContentObserver extends ContentObserver {
@@ -132,21 +129,18 @@
 
     // Log limit - if no limit is specified, then the default in {@link CallLogQueryHandler}
     // will be used.
-    private int mLogLimit = -1;
+    private int mLogLimit = NO_LOG_LIMIT;
 
     // Date limit (in millis since epoch) - when non-zero, only calls which occurred on or after
     // the date filter are included.  If zero, no date-based filtering occurs.
-    private long mDateLimit = 0;
-
-    // Whether or not to show the Show call history footer view
-    private boolean mHasFooterView = false;
+    private long mDateLimit = NO_DATE_LIMIT;
 
     public CallLogFragment() {
-        this(CallLogQueryHandler.CALL_TYPE_ALL, -1);
+        this(CallLogQueryHandler.CALL_TYPE_ALL, NO_LOG_LIMIT);
     }
 
     public CallLogFragment(int filterType) {
-        this(filterType, -1);
+        this(filterType, NO_LOG_LIMIT);
     }
 
     public CallLogFragment(int filterType, int logLimit) {
@@ -162,7 +156,7 @@
      * @param dateLimit limits results to calls occurring on or after the specified date.
      */
     public CallLogFragment(int filterType, long dateLimit) {
-        this(filterType, -1, dateLimit);
+        this(filterType, NO_LOG_LIMIT, dateLimit);
     }
 
     /**
@@ -184,44 +178,20 @@
             mCallTypeFilter = state.getInt(KEY_FILTER_TYPE, mCallTypeFilter);
             mLogLimit = state.getInt(KEY_LOG_LIMIT, mLogLimit);
             mDateLimit = state.getLong(KEY_DATE_LIMIT, mDateLimit);
-            mHasFooterView = state.getBoolean(KEY_SHOW_FOOTER, mHasFooterView);
-            mIsReportDialogShowing = state.getBoolean(KEY_IS_REPORT_DIALOG_SHOWING,
-                    mIsReportDialogShowing);
-            mReportDialogNumber = state.getString(KEY_REPORT_DIALOG_NUMBER, mReportDialogNumber);
         }
 
-        String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
-        mAdapter = ObjectFactory.newCallLogAdapter(getActivity(), this,
-                new ContactInfoHelper(getActivity(), currentCountryIso), this, this, true);
-        setListAdapter(mAdapter);
-        mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(),
-                this, mLogLimit);
+        final Activity activity = getActivity();
+        final ContentResolver resolver = activity.getContentResolver();
+        String currentCountryIso = GeoUtil.getCurrentCountryIso(activity);
+        mCallLogQueryHandler = new CallLogQueryHandler(activity, resolver, this, mLogLimit);
         mKeyguardManager =
-                (KeyguardManager) getActivity().getSystemService(Context.KEYGUARD_SERVICE);
-        getActivity().getContentResolver().registerContentObserver(CallLog.CONTENT_URI, true,
-                mCallLogObserver);
-        getActivity().getContentResolver().registerContentObserver(
-                ContactsContract.Contacts.CONTENT_URI, true, mContactsObserver);
-        getActivity().getContentResolver().registerContentObserver(
-                Status.CONTENT_URI, true, mVoicemailStatusObserver);
+                (KeyguardManager) activity.getSystemService(Context.KEYGUARD_SERVICE);
+        resolver.registerContentObserver(CallLog.CONTENT_URI, true, mCallLogObserver);
+        resolver.registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true,
+                mContactsObserver);
+        resolver.registerContentObserver(Status.CONTENT_URI, true, mVoicemailStatusObserver);
         setHasOptionsMenu(true);
-        updateCallList(mCallTypeFilter, mDateLimit);
-
-        mExpandedItemTranslationZ =
-                getResources().getDimension(R.dimen.call_log_expanded_translation_z);
-        mFadeInDuration = getResources().getInteger(R.integer.call_log_actions_fade_in_duration);
-        mFadeInStartDelay = getResources().getInteger(R.integer.call_log_actions_fade_start);
-        mFadeOutDuration = getResources().getInteger(R.integer.call_log_actions_fade_out_duration);
-        mExpandCollapseDuration = getResources().getInteger(
-                R.integer.call_log_expand_collapse_duration);
-
-        if (mIsReportDialogShowing) {
-            DialogFragment df = ObjectFactory.getReportDialogFragment(mReportDialogNumber);
-            if (df != null) {
-                df.setTargetFragment(this, 0);
-                df.show(getActivity().getFragmentManager(), REPORT_DIALOG_TAG);
-            }
-        }
+        fetchCalls();
     }
 
     /** Called by the CallLogQueryHandler when the list of calls has been fetched or updated. */
@@ -235,16 +205,21 @@
         mAdapter.changeCursor(cursor);
         // This will update the state of the "Clear call log" menu item.
         getActivity().invalidateOptionsMenu();
+
+        boolean showListView = cursor.getCount() > 0;
+        mRecyclerView.setVisibility(showListView ? View.VISIBLE : View.GONE);
+        mEmptyListView.setVisibility(!showListView ? View.VISIBLE : View.GONE);
+
         if (mScrollToTop) {
-            final ListView listView = getListView();
             // The smooth-scroll animation happens over a fixed time period.
             // As a result, if it scrolls through a large portion of the list,
             // each frame will jump so far from the previous one that the user
             // will not experience the illusion of downward motion.  Instead,
             // if we're not already near the top of the list, we instantly jump
             // near the top, and animate from there.
-            if (listView.getFirstVisiblePosition() > 5) {
-                listView.setSelection(5);
+            if (mLayoutManager.findFirstVisibleItemPosition() > 5) {
+                // TODO: Jump to near the top, then begin smooth scroll.
+                mRecyclerView.smoothScrollToPosition(0);
             }
             // Workaround for framework issue: the smooth-scroll doesn't
             // occur if setSelection() is called immediately before.
@@ -254,7 +229,7 @@
                    if (getActivity() == null || getActivity().isFinishing()) {
                        return;
                    }
-                   listView.smoothScrollToPosition(0);
+                   mRecyclerView.smoothScrollToPosition(0);
                }
             });
 
@@ -270,13 +245,21 @@
      */
     @Override
     public void onVoicemailStatusFetched(Cursor statusCursor) {
-        if (getActivity() == null || getActivity().isFinishing()) {
+        Activity activity = getActivity();
+        if (activity == null || activity.isFinishing()) {
             return;
         }
         updateVoicemailStatusMessage(statusCursor);
 
-        int activeSources = mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor);
-        setVoicemailSourcesAvailable(activeSources != 0);
+        // If there are any changes to the presence of active voicemail services, invalidate the
+        // options menu so that it will be updated.
+        boolean hasActiveVoicemailSources =
+                mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) != 0;
+        if (mVoicemailSourcesAvailable != hasActiveVoicemailSources) {
+            mVoicemailSourcesAvailable = hasActiveVoicemailSources;
+            activity.invalidateOptionsMenu();
+        }
+
         mVoicemailStatusFetched = true;
         destroyEmptyLoaderIfAllDataFetched();
     }
@@ -288,21 +271,25 @@
         }
     }
 
-    /** Sets whether there are any voicemail sources available in the platform. */
-    private void setVoicemailSourcesAvailable(boolean voicemailSourcesAvailable) {
-        if (mVoicemailSourcesAvailable == voicemailSourcesAvailable) return;
-        mVoicemailSourcesAvailable = voicemailSourcesAvailable;
-
-        Activity activity = getActivity();
-        if (activity != null) {
-            // This is so that the options menu content is updated.
-            activity.invalidateOptionsMenu();
-        }
-    }
-
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
         View view = inflater.inflate(R.layout.call_log_fragment, container, false);
+
+        mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
+        mRecyclerView.setHasFixedSize(true);
+        mLayoutManager = new LinearLayoutManager(getActivity());
+        mRecyclerView.setLayoutManager(mLayoutManager);
+
+        String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
+        boolean isShowingRecentsTab = mLogLimit != NO_LOG_LIMIT || mDateLimit != NO_DATE_LIMIT;
+        mAdapter = ObjectFactory.newCallLogAdapter(
+                getActivity(),
+                this,
+                new ContactInfoHelper(getActivity(), currentCountryIso),
+                isShowingRecentsTab,
+                this);
+        mRecyclerView.setAdapter(mAdapter);
+
         mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
         mStatusMessageView = view.findViewById(R.id.voicemail_status);
         mStatusMessageText = (TextView) view.findViewById(R.id.voicemail_status_message);
@@ -313,9 +300,7 @@
     @Override
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
-        getListView().setEmptyView(view.findViewById(R.id.empty_list_view));
-        getListView().setItemsCanFocus(true);
-        maybeAddFooterView();
+        mEmptyListView = view.findViewById(R.id.empty_list_view);
 
         updateEmptyMessage(mCallTypeFilter);
     }
@@ -382,20 +367,20 @@
     @Override
     public void onPause() {
         super.onPause();
-        // Kill the requests thread
-        mAdapter.stopRequestProcessing();
+        mAdapter.pauseCache();
     }
 
     @Override
     public void onStop() {
         super.onStop();
-        updateOnExit();
+
+        updateOnTransition(false /* onEntry */);
     }
 
     @Override
     public void onDestroy() {
         super.onDestroy();
-        mAdapter.stopRequestProcessing();
+        mAdapter.pauseCache();
         mAdapter.changeCursor(null);
         getActivity().getContentResolver().unregisterContentObserver(mCallLogObserver);
         getActivity().getContentResolver().unregisterContentObserver(mContactsObserver);
@@ -408,9 +393,6 @@
         outState.putInt(KEY_FILTER_TYPE, mCallTypeFilter);
         outState.putInt(KEY_LOG_LIMIT, mLogLimit);
         outState.putLong(KEY_DATE_LIMIT, mDateLimit);
-        outState.putBoolean(KEY_SHOW_FOOTER, mHasFooterView);
-        outState.putBoolean(KEY_IS_REPORT_DIALOG_SHOWING, mIsReportDialogShowing);
-        outState.putString(KEY_REPORT_DIALOG_NUMBER, mReportDialogNumber);
     }
 
     @Override
@@ -418,19 +400,6 @@
         mCallLogQueryHandler.fetchCalls(mCallTypeFilter, mDateLimit);
     }
 
-    public void startCallsQuery() {
-        mAdapter.setLoading(true);
-        mCallLogQueryHandler.fetchCalls(mCallTypeFilter, mDateLimit);
-    }
-
-    private void startVoicemailStatusQuery() {
-        mCallLogQueryHandler.fetchVoicemailStatus();
-    }
-
-    private void updateCallList(int filterType, long dateLimit) {
-        mCallLogQueryHandler.fetchCalls(filterType, dateLimit);
-    }
-
     private void updateEmptyMessage(int filterType) {
         final int messageId;
         switch (filterType) {
@@ -448,7 +417,7 @@
                         + filterType);
         }
         DialerUtils.configureEmptyListView(
-                getListView().getEmptyView(), R.drawable.empty_call_log, messageId, getResources());
+                mEmptyListView, R.drawable.empty_call_log, messageId, getResources());
     }
 
     CallLogAdapter getAdapter() {
@@ -461,7 +430,7 @@
         if (mMenuVisible != menuVisible) {
             mMenuVisible = menuVisible;
             if (!menuVisible) {
-                updateOnExit();
+                updateOnTransition(false /* onEntry */);
             } else if (isResumed()) {
                 refreshData();
             }
@@ -475,24 +444,26 @@
             // Mark all entries in the contact info cache as out of date, so they will be looked up
             // again once being shown.
             mAdapter.invalidateCache();
-            startCallsQuery();
-            startVoicemailStatusQuery();
-            updateOnEntry();
+            mAdapter.setLoading(true);
+
+            fetchCalls();
+            mCallLogQueryHandler.fetchVoicemailStatus();
+
+            updateOnTransition(true /* onEntry */);
             mRefreshDataRequired = false;
+        } else {
+            // Refresh the display of the existing data to update the timestamp text descriptions.
+            mAdapter.notifyDataSetChanged();
         }
     }
 
-    /** Updates call data and notification state while leaving the call log tab. */
-    private void updateOnExit() {
-        updateOnTransition(false);
-    }
-
-    /** Updates call data and notification state while entering the call log tab. */
-    private void updateOnEntry() {
-        updateOnTransition(true);
-    }
-
-    // TODO: Move to CallLogActivity
+    /**
+     * Updates the call data and notification state on entering or leaving the call log tab.
+     *
+     * If we are leaving the call log tab, mark all the missed calls as read.
+     *
+     * TODO: Move to CallLogActivity
+     */
     private void updateOnTransition(boolean onEntry) {
         // We don't want to update any call data when keyguard is on because the user has likely not
         // seen the new calls yet.
@@ -509,184 +480,11 @@
         }
     }
 
-    /**
-     * Enables/disables the showing of the view full call history footer
-     *
-     * @param hasFooterView Whether or not to show the footer
-     */
-    public void setHasFooterView(boolean hasFooterView) {
-        mHasFooterView = hasFooterView;
-        maybeAddFooterView();
-    }
-
-    /**
-     * Determine whether or not the footer view should be added to the listview. If getView()
-     * is null, which means onCreateView hasn't been called yet, defer the addition of the footer
-     * until onViewCreated has been called.
-     */
-    private void maybeAddFooterView() {
-        if (!mHasFooterView || getView() == null) {
-            return;
-        }
-
-        if (mFooterView == null) {
-            mFooterView = getActivity().getLayoutInflater().inflate(
-                    R.layout.recents_list_footer, getListView(), false);
-            mFooterView.setOnClickListener(new OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    ((HostInterface) getActivity()).showCallHistory();
-                }
-            });
-        }
-
-        final ListView listView = getListView();
-        listView.removeFooterView(mFooterView);
-        listView.addFooterView(mFooterView);
-
-        ViewUtil.addBottomPaddingToListViewForFab(listView, getResources());
-    }
-
-    @Override
-    public void onItemExpanded(final View view) {
-        final int startingHeight = view.getHeight();
-        final CallLogListItemViews viewHolder = (CallLogListItemViews) view.getTag();
-        final ViewTreeObserver observer = getListView().getViewTreeObserver();
-        observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
-            @Override
-            public boolean onPreDraw() {
-                // We don't want to continue getting called for every draw.
-                if (observer.isAlive()) {
-                    observer.removeOnPreDrawListener(this);
-                }
-                // Calculate some values to help with the animation.
-                final int endingHeight = view.getHeight();
-                final int distance = Math.abs(endingHeight - startingHeight);
-                final int baseHeight = Math.min(endingHeight, startingHeight);
-                final boolean isExpand = endingHeight > startingHeight;
-
-                // Set the views back to the start state of the animation
-                view.getLayoutParams().height = startingHeight;
-                if (!isExpand) {
-                    viewHolder.actionsView.setVisibility(View.VISIBLE);
-                }
-                CallLogAdapter.expandVoicemailTranscriptionView(viewHolder, !isExpand);
-
-                // Set up the fade effect for the action buttons.
-                if (isExpand) {
-                    // Start the fade in after the expansion has partly completed, otherwise it
-                    // will be mostly over before the expansion completes.
-                    viewHolder.actionsView.setAlpha(0f);
-                    viewHolder.actionsView.animate()
-                            .alpha(1f)
-                            .setStartDelay(mFadeInStartDelay)
-                            .setDuration(mFadeInDuration)
-                            .start();
-                } else {
-                    viewHolder.actionsView.setAlpha(1f);
-                    viewHolder.actionsView.animate()
-                            .alpha(0f)
-                            .setDuration(mFadeOutDuration)
-                            .start();
-                }
-                view.requestLayout();
-
-                // Set up the animator to animate the expansion and shadow depth.
-                ValueAnimator animator = isExpand ? ValueAnimator.ofFloat(0f, 1f)
-                        : ValueAnimator.ofFloat(1f, 0f);
-
-                // Figure out how much scrolling is needed to make the view fully visible.
-                final Rect localVisibleRect = new Rect();
-                view.getLocalVisibleRect(localVisibleRect);
-                final int scrollingNeeded = localVisibleRect.top > 0 ? -localVisibleRect.top
-                        : view.getMeasuredHeight() - localVisibleRect.height();
-                final ListView listView = getListView();
-                animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
-
-                    private int mCurrentScroll = 0;
-
-                    @Override
-                    public void onAnimationUpdate(ValueAnimator animator) {
-                        Float value = (Float) animator.getAnimatedValue();
-
-                        // For each value from 0 to 1, animate the various parts of the layout.
-                        view.getLayoutParams().height = (int) (value * distance + baseHeight);
-                        float z = mExpandedItemTranslationZ * value;
-                        viewHolder.callLogEntryView.setTranslationZ(z);
-                        view.setTranslationZ(z); // WAR
-                        view.requestLayout();
-
-                        if (isExpand) {
-                            if (listView != null) {
-                                int scrollBy = (int) (value * scrollingNeeded) - mCurrentScroll;
-                                listView.smoothScrollBy(scrollBy, /* duration = */ 0);
-                                mCurrentScroll += scrollBy;
-                            }
-                        }
-                    }
-                });
-                // Set everything to their final values when the animation's done.
-                animator.addListener(new AnimatorListenerAdapter() {
-                    @Override
-                    public void onAnimationEnd(Animator animation) {
-                        view.getLayoutParams().height = LayoutParams.WRAP_CONTENT;
-
-                        if (!isExpand) {
-                            viewHolder.actionsView.setVisibility(View.GONE);
-                        } else {
-                            // This seems like it should be unnecessary, but without this, after
-                            // navigating out of the activity and then back, the action view alpha
-                            // is defaulting to the value (0) at the start of the expand animation.
-                            viewHolder.actionsView.setAlpha(1);
-                        }
-                        CallLogAdapter.expandVoicemailTranscriptionView(viewHolder, isExpand);
-                    }
-                });
-
-                animator.setDuration(mExpandCollapseDuration);
-                animator.start();
-
-                // Return false so this draw does not occur to prevent the final frame from
-                // being drawn for the single frame before the animations start.
-                return false;
-            }
-        });
-    }
-
-    /**
-     * Retrieves the call log view for the specified call Id.  If the view is not currently
-     * visible, returns null.
-     *
-     * @param callId The call Id.
-     * @return The call log view.
-     */
-    @Override
-    public View getViewForCallId(long callId) {
-        ListView listView = getListView();
-
-        int firstPosition = listView.getFirstVisiblePosition();
-        int lastPosition = listView.getLastVisiblePosition();
-
-        for (int position = 0; position <= lastPosition - firstPosition; position++) {
-            View view = listView.getChildAt(position);
-
-            if (view != null) {
-                final CallLogListItemViews viewHolder = (CallLogListItemViews) view.getTag();
-                if (viewHolder != null && viewHolder.rowId == callId) {
-                    return view;
-                }
-            }
-        }
-
-        return null;
-    }
-
     public void onBadDataReported(String number) {
-        mIsReportDialogShowing = false;
         if (number == null) {
             return;
         }
-        mAdapter.onBadDataReported(number);
+        mAdapter.invalidateCache();
         mAdapter.notifyDataSetChanged();
     }
 
@@ -695,8 +493,6 @@
         if (df != null) {
             df.setTargetFragment(this, 0);
             df.show(getActivity().getFragmentManager(), REPORT_DIALOG_TAG);
-            mReportDialogNumber = number;
-            mIsReportDialogShowing = true;
         }
     }
 }
diff --git a/src/com/android/dialer/calllog/CallLogGroupBuilder.java b/src/com/android/dialer/calllog/CallLogGroupBuilder.java
index 1f11e1e..0826aeb 100644
--- a/src/com/android/dialer/calllog/CallLogGroupBuilder.java
+++ b/src/com/android/dialer/calllog/CallLogGroupBuilder.java
@@ -21,7 +21,6 @@
 import android.telephony.PhoneNumberUtils;
 import android.text.format.Time;
 
-import com.android.common.widget.GroupingListAdapter;
 import com.android.contacts.common.util.DateUtils;
 import com.android.contacts.common.util.PhoneNumberHelper;
 
diff --git a/src/com/android/dialer/calllog/CallLogListItemHelper.java b/src/com/android/dialer/calllog/CallLogListItemHelper.java
index 77ad333..7ec6752 100644
--- a/src/com/android/dialer/calllog/CallLogListItemHelper.java
+++ b/src/com/android/dialer/calllog/CallLogListItemHelper.java
@@ -62,7 +62,7 @@
      * @param details the details of a phone call needed to fill in the data
      */
     public void setPhoneCallDetails(
-            Context context, CallLogListItemViews views, PhoneCallDetails details) {
+            Context context, CallLogListItemViewHolder views, PhoneCallDetails details) {
         mPhoneCallDetailsHelper.setPhoneCallDetails(views.phoneCallDetailsViews, details);
 
         // Set the accessibility text for the contact badge
@@ -81,7 +81,7 @@
      *
      * @param views The views associated with the current call log entry.
      */
-    public void setActionContentDescriptions(CallLogListItemViews views) {
+    public void setActionContentDescriptions(CallLogListItemViewHolder views) {
         if (views.nameOrNumber == null) {
             Log.e(TAG, "setActionContentDescriptions; name or number is null.");
         }
@@ -90,10 +90,6 @@
         // Although we don't expect a null name or number, it is best to protect against it.
         CharSequence nameOrNumber = views.nameOrNumber == null ? "" : views.nameOrNumber;
 
-        views.callBackButtonView.setContentDescription(
-                TextUtils.expandTemplate(
-                        mResources.getString(R.string.description_call_back_action), nameOrNumber));
-
         views.videoCallButtonView.setContentDescription(
                 TextUtils.expandTemplate(
                         mResources.getString(R.string.description_video_call_action),
@@ -103,9 +99,23 @@
                 TextUtils.expandTemplate(
                         mResources.getString(R.string.description_voicemail_action), nameOrNumber));
 
+        views.createNewContactButtonView.setContentDescription(
+                TextUtils.expandTemplate(
+                        mResources.getString(R.string.description_create_new_contact_action),
+                        nameOrNumber));
+
+        views.addToExistingContactButtonView.setContentDescription(
+                TextUtils.expandTemplate(
+                        mResources.getString(R.string.description_add_to_existing_contact_action),
+                        nameOrNumber));
+
         views.detailsButtonView.setContentDescription(
                 TextUtils.expandTemplate(
                         mResources.getString(R.string.description_details_action), nameOrNumber));
+
+        views.reportButtonView.setContentDescription(
+                TextUtils.expandTemplate(
+                        mResources.getString(R.string.description_report_action), nameOrNumber));
     }
 
     /**
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
new file mode 100644
index 0000000..4fa6561
--- /dev/null
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -0,0 +1,445 @@
+/*
+ * Copyright (C) 2011 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.dialer.calllog;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.Intent;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.support.v7.widget.CardView;
+import android.support.v7.widget.RecyclerView;
+import android.telecom.PhoneAccountHandle;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewStub;
+import android.view.ViewTreeObserver;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+
+import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.ContactPhotoManager;
+import com.android.contacts.common.ContactPhotoManager.DefaultImageRequest;
+import com.android.contacts.common.testing.NeededForTesting;
+import com.android.contacts.common.util.UriUtils;
+import com.android.dialer.PhoneCallDetailsHelper;
+import com.android.dialer.PhoneCallDetailsViews;
+import com.android.dialer.R;
+
+/**
+ * This is an object containing references to views contained by the call log list item. This
+ * improves performance by reducing the frequency with which we need to find views by IDs.
+ *
+ * This object also contains UI logic pertaining to the view, to isolate it from the CallLogAdapter.
+ */
+public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder {
+
+    /** The root view of the call log list item */
+    public final View rootView;
+    /** The quick contact badge for the contact. */
+    public final QuickContactBadge quickContactView;
+    /** The primary action view of the entry. */
+    public final View primaryActionView;
+    /** The details of the phone call. */
+    public final PhoneCallDetailsViews phoneCallDetailsViews;
+    /** The text of the header for a day grouping. */
+    public final TextView dayGroupHeader;
+    /** The view containing the details for the call log row, including the action buttons. */
+    public final CardView callLogEntryView;
+    /** The actionable view which places a call to the number corresponding to the call log row. */
+    public final View callActionView;
+
+    /** The view containing call log item actions.  Null until the ViewStub is inflated. */
+    public View actionsView;
+    /** The button views below are assigned only when the action section is expanded. */
+    public View videoCallButtonView;
+    public View voicemailButtonView;
+    public View createNewContactButtonView;
+    public View addToExistingContactButtonView;
+    public View detailsButtonView;
+    public View reportButtonView;
+
+    /**
+     * The row Id for the first call associated with the call log entry.  Used as a key for the
+     * map used to track which call log entries have the action button section expanded.
+     */
+    public long rowId;
+
+    /**
+     * The call Ids for the calls represented by the current call log entry.  Used when the user
+     * deletes a call log entry.
+     */
+    public long[] callIds;
+
+    /**
+     * The callable phone number for the current call log entry.  Cached here as the call back
+     * intent is set only when the actions ViewStub is inflated.
+     */
+    public String number;
+
+    /**
+     * The phone number presentation for the current call log entry.  Cached here as the call back
+     * intent is set only when the actions ViewStub is inflated.
+     */
+    public int numberPresentation;
+
+    /**
+     * The type of call for the current call log entry.  Cached here as the call back
+     * intent is set only when the actions ViewStub is inflated.
+     */
+    public int callType;
+
+    /**
+     * The account for the current call log entry.  Cached here as the call back
+     * intent is set only when the actions ViewStub is inflated.
+     */
+    public PhoneAccountHandle accountHandle;
+
+    /**
+     * If the call has an associated voicemail message, the URI of the voicemail message for
+     * playback.  Cached here as the voicemail intent is only set when the actions ViewStub is
+     * inflated.
+     */
+    public String voicemailUri;
+
+    /**
+     * The name or number associated with the call.  Cached here for use when setting content
+     * descriptions on buttons in the actions ViewStub when it is inflated.
+     */
+    public CharSequence nameOrNumber;
+
+    /**
+     * Whether or not the contact info can be marked as invalid from the source where
+     * it was obtained.
+     */
+    public boolean canBeReportedAsInvalid;
+
+    /**
+     * The contact info for the contact displayed in this list item.
+     */
+    public ContactInfo info;
+
+    private static final int VOICEMAIL_TRANSCRIPTION_MAX_LINES = 10;
+
+    private final Context mContext;
+    private final View.OnClickListener mActionListener;
+    private final PhoneNumberUtilsWrapper mPhoneNumberUtilsWrapper;
+    private final CallLogListItemHelper mCallLogListItemHelper;
+
+    private final int mPhotoSize;
+
+    private CallLogListItemViewHolder(
+            Context context,
+            View.OnClickListener actionListener,
+            PhoneNumberUtilsWrapper phoneNumberUtilsWrapper,
+            CallLogListItemHelper callLogListItemHelper,
+            View rootView,
+            QuickContactBadge quickContactView,
+            View primaryActionView,
+            PhoneCallDetailsViews phoneCallDetailsViews,
+            CardView callLogEntryView,
+            TextView dayGroupHeader,
+            View callActionView) {
+        super(rootView);
+
+        mContext = context;
+        mActionListener = actionListener;
+        mPhoneNumberUtilsWrapper = phoneNumberUtilsWrapper;
+        mCallLogListItemHelper = callLogListItemHelper;
+
+        this.rootView = rootView;
+        this.quickContactView = quickContactView;
+        this.primaryActionView = primaryActionView;
+        this.phoneCallDetailsViews = phoneCallDetailsViews;
+        this.callLogEntryView = callLogEntryView;
+        this.dayGroupHeader = dayGroupHeader;
+        this.callActionView = callActionView;
+
+        Resources resources = mContext.getResources();
+        mPhotoSize = mContext.getResources().getDimensionPixelSize(R.dimen.contact_photo_size);
+
+        // Set text height to false on the TextViews so they don't have extra padding.
+        phoneCallDetailsViews.nameView.setElegantTextHeight(false);
+        phoneCallDetailsViews.callLocationAndDate.setElegantTextHeight(false);
+
+        quickContactView.setPrioritizedMimeType(Phone.CONTENT_ITEM_TYPE);
+
+        if (callActionView != null) {
+            callActionView.setOnClickListener(mActionListener);
+        }
+    }
+
+    public static CallLogListItemViewHolder create(
+            View view,
+            Context context,
+            View.OnClickListener actionListener,
+            PhoneNumberUtilsWrapper phoneNumberUtilsWrapper,
+            CallLogListItemHelper callLogListItemHelper) {
+
+        return new CallLogListItemViewHolder(
+                context,
+                actionListener,
+                phoneNumberUtilsWrapper,
+                callLogListItemHelper,
+                view,
+                (QuickContactBadge) view.findViewById(R.id.quick_contact_photo),
+                view.findViewById(R.id.primary_action_view),
+                PhoneCallDetailsViews.fromView(view),
+                (CardView) view.findViewById(R.id.call_log_row),
+                (TextView) view.findViewById(R.id.call_log_day_group_label),
+                view.findViewById(R.id.call_icon));
+    }
+
+    /**
+     * Configures the action buttons in the expandable actions ViewStub. The ViewStub is not
+     * inflated during initial binding, so click handlers, tags and accessibility text must be set
+     * here, if necessary.
+     *
+     * @param callLogItem The call log list item view.
+     */
+    public void inflateActionViewStub(
+            final CallLogAdapter.OnReportButtonClickListener onReportButtonClickListener) {
+        ViewStub stub = (ViewStub) rootView.findViewById(R.id.call_log_entry_actions_stub);
+        if (stub != null) {
+            actionsView = (ViewGroup) stub.inflate();
+        }
+
+        if (videoCallButtonView == null) {
+            videoCallButtonView = actionsView.findViewById(R.id.video_call_action);
+            videoCallButtonView.setOnClickListener(mActionListener);
+        }
+
+        if (voicemailButtonView == null) {
+            voicemailButtonView = actionsView.findViewById(R.id.voicemail_action);
+            voicemailButtonView.setOnClickListener(mActionListener);
+        }
+
+        if (createNewContactButtonView == null) {
+            createNewContactButtonView = actionsView.findViewById(R.id.create_new_contact_action);
+            createNewContactButtonView.setOnClickListener(mActionListener);
+        }
+
+        if (addToExistingContactButtonView == null) {
+            addToExistingContactButtonView =
+                    actionsView.findViewById(R.id.add_to_existing_contact_action);
+            addToExistingContactButtonView.setOnClickListener(mActionListener);
+        }
+
+        if (detailsButtonView == null) {
+            detailsButtonView = actionsView.findViewById(R.id.details_action);
+            detailsButtonView.setOnClickListener(mActionListener);
+        }
+
+        if (reportButtonView == null) {
+            reportButtonView = actionsView.findViewById(R.id.report_action);
+            reportButtonView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (onReportButtonClickListener != null) {
+                        onReportButtonClickListener.onReportButtonClick(number);
+                    }
+                }
+            });
+        }
+
+        bindActionButtons();
+    }
+
+    public void updateCallButton() {
+        boolean canPlaceCallToNumber =
+                PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation);
+
+        if (canPlaceCallToNumber) {
+            boolean isVoicemailNumber =
+                    mPhoneNumberUtilsWrapper.isVoicemailNumber(accountHandle, number);
+            if (isVoicemailNumber) {
+                // Make a general call to voicemail to ensure that if there are multiple accounts
+                // it does not call the voicemail number of a specific phone account.
+                callActionView.setTag(IntentProvider.getReturnVoicemailCallIntentProvider());
+            } else {
+                callActionView.setTag(IntentProvider.getReturnCallIntentProvider(number));
+            }
+
+            if (nameOrNumber != null) {
+                callActionView.setContentDescription(TextUtils.expandTemplate(
+                        mContext.getString(R.string.description_call_action),
+                        nameOrNumber));
+            } else {
+                callActionView.setContentDescription(
+                        mContext.getString(R.string.description_call_log_call_action));
+            }
+
+            callActionView.setVisibility(View.VISIBLE);
+        } else {
+            callActionView.setTag(null);
+            callActionView.setVisibility(View.GONE);
+        }
+    }
+
+    /**
+     * Binds text titles, click handlers and intents to the voicemail, details and callback action
+     * buttons.
+     */
+    private void bindActionButtons() {
+        boolean canPlaceCallToNumber =
+                PhoneNumberUtilsWrapper.canPlaceCallsTo(number, numberPresentation);
+
+        // If one of the calls had video capabilities, show the video call button.
+        if (CallUtil.isVideoEnabled(mContext) && canPlaceCallToNumber &&
+                phoneCallDetailsViews.callTypeIcons.isVideoShown()) {
+            videoCallButtonView.setTag(IntentProvider.getReturnVideoCallIntentProvider(number));
+            videoCallButtonView.setVisibility(View.VISIBLE);
+        } else {
+            videoCallButtonView.setTag(null);
+            videoCallButtonView.setVisibility(View.GONE);
+        }
+
+        // For voicemail calls, show the "VOICEMAIL" action button; hide otherwise.
+        if (callType == Calls.VOICEMAIL_TYPE) {
+            voicemailButtonView.setTag(
+                    IntentProvider.getPlayVoicemailIntentProvider(rowId, voicemailUri));
+            voicemailButtonView.setVisibility(View.VISIBLE);
+
+            detailsButtonView.setVisibility(View.GONE);
+        } else {
+            voicemailButtonView.setTag(null);
+            voicemailButtonView.setVisibility(View.GONE);
+
+            detailsButtonView.setTag(
+                    IntentProvider.getCallDetailIntentProvider(rowId, callIds, null));
+        }
+
+        if (canBeReportedAsInvalid && !info.isBadData) {
+            reportButtonView.setVisibility(View.VISIBLE);
+        } else {
+            reportButtonView.setVisibility(View.GONE);
+        }
+
+        if (UriUtils.isEncodedContactUri(info.lookupUri)) {
+            createNewContactButtonView.setTag(IntentProvider.getAddContactIntentProvider(
+                    info.lookupUri, info.name, info.number, info.type, true /* isNewContact */));
+            createNewContactButtonView.setVisibility(View.VISIBLE);
+
+            addToExistingContactButtonView.setTag(IntentProvider.getAddContactIntentProvider(
+                    info.lookupUri, info.name, info.number, info.type, false /* isNewContact */));
+            addToExistingContactButtonView.setVisibility(View.VISIBLE);
+        } else {
+            createNewContactButtonView.setVisibility(View.GONE);
+            addToExistingContactButtonView.setVisibility(View.GONE);
+        }
+
+        mCallLogListItemHelper.setActionContentDescriptions(this);
+    }
+
+    /**
+     * Show or hide the action views, such as voicemail, details, and add contact.
+     *
+     * If the action views have never been shown yet for this view, inflate the view stub.
+     */
+    public void showActions(boolean show,
+            final CallLogAdapter.OnReportButtonClickListener onReportButtonClickListener) {
+        expandVoicemailTranscriptionView(show);
+
+        if (show) {
+            // Inflate the view stub if necessary, and wire up the event handlers.
+            inflateActionViewStub(onReportButtonClickListener);
+
+            actionsView.setVisibility(View.VISIBLE);
+            actionsView.setAlpha(1.0f);
+        } else {
+            // When recycling a view, it is possible the actionsView ViewStub was previously
+            // inflated so we should hide it in this case.
+            if (actionsView != null) {
+                actionsView.setVisibility(View.GONE);
+            }
+        }
+    }
+
+    public void expandVoicemailTranscriptionView(boolean isExpanded) {
+        if (callType != Calls.VOICEMAIL_TYPE) {
+            return;
+        }
+
+        final TextView view = phoneCallDetailsViews.voicemailTranscriptionView;
+        if (TextUtils.isEmpty(view.getText())) {
+            return;
+        }
+        view.setMaxLines(isExpanded ? VOICEMAIL_TRANSCRIPTION_MAX_LINES : 1);
+        view.setSingleLine(!isExpanded);
+    }
+
+    public void setPhoto(long photoId, Uri photoUri, Uri contactUri, String displayName,
+            boolean isVoicemail, boolean isBusiness) {
+        quickContactView.assignContactUri(contactUri);
+        quickContactView.setOverlay(null);
+
+        int contactType = ContactPhotoManager.TYPE_DEFAULT;
+        if (isVoicemail) {
+            contactType = ContactPhotoManager.TYPE_VOICEMAIL;
+        } else if (isBusiness) {
+            contactType = ContactPhotoManager.TYPE_BUSINESS;
+        }
+
+        String lookupKey = null;
+        if (contactUri != null) {
+            lookupKey = ContactInfoHelper.getLookupKeyFromUri(contactUri);
+        }
+
+        DefaultImageRequest request = new DefaultImageRequest(
+                displayName, lookupKey, contactType, true /* isCircular */);
+
+        if (photoId == 0 && photoUri != null) {
+            ContactPhotoManager.getInstance(mContext).loadPhoto(quickContactView, photoUri,
+                    mPhotoSize, false /* darkTheme */, true /* isCircular */, request);
+        } else {
+            ContactPhotoManager.getInstance(mContext).loadThumbnail(quickContactView, photoId,
+                    false /* darkTheme */, true /* isCircular */, request);
+        }
+    }
+
+    @NeededForTesting
+    public static CallLogListItemViewHolder createForTest(Context context) {
+        Resources resources = context.getResources();
+        PhoneNumberDisplayHelper phoneNumberHelper =
+                new PhoneNumberDisplayHelper(context, resources);
+        PhoneNumberUtilsWrapper phoneNumberUtilsWrapper = new PhoneNumberUtilsWrapper(context);
+        PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
+                context, resources, phoneNumberUtilsWrapper);
+
+        CallLogListItemViewHolder viewHolder = new CallLogListItemViewHolder(
+                context,
+                null /* actionListener */,
+                phoneNumberUtilsWrapper,
+                new CallLogListItemHelper(
+                        phoneCallDetailsHelper, phoneNumberHelper, resources),
+                new View(context),
+                new QuickContactBadge(context),
+                new View(context),
+                PhoneCallDetailsViews.createForTest(context),
+                new CardView(context),
+                new TextView(context),
+                new View(context));
+        viewHolder.voicemailButtonView = new TextView(context);
+        viewHolder.detailsButtonView = new TextView(context);
+        viewHolder.reportButtonView = new TextView(context);
+        viewHolder.actionsView = new View(context);
+
+        return viewHolder;
+    }
+}
diff --git a/src/com/android/dialer/calllog/CallLogListItemViews.java b/src/com/android/dialer/calllog/CallLogListItemViews.java
deleted file mode 100644
index 0ccdf00..0000000
--- a/src/com/android/dialer/calllog/CallLogListItemViews.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2011 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.dialer.calllog;
-
-import android.content.Context;
-import android.telecom.PhoneAccountHandle;
-import android.view.View;
-import android.widget.QuickContactBadge;
-import android.widget.TextView;
-
-import com.android.contacts.common.testing.NeededForTesting;
-import com.android.dialer.PhoneCallDetailsViews;
-import com.android.dialer.R;
-
-/**
- * Simple value object containing the various views within a call log entry.
- */
-public final class CallLogListItemViews {
-    /** The quick contact badge for the contact. */
-    public final QuickContactBadge quickContactView;
-    /** The primary action view of the entry. */
-    public final View primaryActionView;
-    /** The details of the phone call. */
-    public final PhoneCallDetailsViews phoneCallDetailsViews;
-    /** The text of the header for a day grouping. */
-    public final TextView dayGroupHeader;
-    /** The view containing the details for the call log row, including the action buttons. */
-    public final View callLogEntryView;
-    /** The view containing call log item actions.  Null until the ViewStub is inflated. */
-    public View actionsView;
-    /** The "call back" action button - assigned only when the action section is expanded. */
-    public TextView callBackButtonView;
-    /** The "video call" action button - assigned only when the action section is expanded. */
-    public TextView videoCallButtonView;
-    /** The "voicemail" action button - assigned only when the action section is expanded. */
-    public TextView voicemailButtonView;
-    /** The "details" action button - assigned only when the action section is expanded. */
-    public TextView detailsButtonView;
-    /** The "report" action button. */
-    public TextView reportButtonView;
-
-    /**
-     * The row Id for the first call associated with the call log entry.  Used as a key for the
-     * map used to track which call log entries have the action button section expanded.
-     */
-    public long rowId;
-
-    /**
-     * The call Ids for the calls represented by the current call log entry.  Used when the user
-     * deletes a call log entry.
-     */
-    public long[] callIds;
-
-    /**
-     * The callable phone number for the current call log entry.  Cached here as the call back
-     * intent is set only when the actions ViewStub is inflated.
-     */
-    public String number;
-
-    /**
-     * The phone number presentation for the current call log entry.  Cached here as the call back
-     * intent is set only when the actions ViewStub is inflated.
-     */
-    public int numberPresentation;
-
-    /**
-     * The type of call for the current call log entry.  Cached here as the call back
-     * intent is set only when the actions ViewStub is inflated.
-     */
-    public int callType;
-
-    /**
-     * The account for the current call log entry.  Cached here as the call back
-     * intent is set only when the actions ViewStub is inflated.
-     */
-    public PhoneAccountHandle accountHandle;
-
-    /**
-     * If the call has an associated voicemail message, the URI of the voicemail message for
-     * playback.  Cached here as the voicemail intent is only set when the actions ViewStub is
-     * inflated.
-     */
-    public String voicemailUri;
-
-    /**
-     * The name or number associated with the call.  Cached here for use when setting content
-     * descriptions on buttons in the actions ViewStub when it is inflated.
-     */
-    public CharSequence nameOrNumber;
-
-    /**
-     * Whether or not the item has been reported by user as incorrect.
-     */
-    public boolean reported;
-
-    /**
-     * Whether or not the contact info can be marked as invalid from the source where
-     * it was obtained.
-     */
-    public boolean canBeReportedAsInvalid;
-
-    private CallLogListItemViews(QuickContactBadge quickContactView, View primaryActionView,
-            PhoneCallDetailsViews phoneCallDetailsViews, View callLogEntryView,
-            TextView dayGroupHeader) {
-        this.quickContactView = quickContactView;
-        this.primaryActionView = primaryActionView;
-        this.phoneCallDetailsViews = phoneCallDetailsViews;
-        this.callLogEntryView = callLogEntryView;
-        this.dayGroupHeader = dayGroupHeader;
-    }
-
-    public static CallLogListItemViews fromView(View view) {
-        return new CallLogListItemViews(
-                (QuickContactBadge) view.findViewById(R.id.quick_contact_photo),
-                view.findViewById(R.id.primary_action_view),
-                PhoneCallDetailsViews.fromView(view),
-                view.findViewById(R.id.call_log_row),
-                (TextView) view.findViewById(R.id.call_log_day_group_label));
-    }
-
-    @NeededForTesting
-    public static CallLogListItemViews createForTest(Context context) {
-        CallLogListItemViews views = new CallLogListItemViews(
-                new QuickContactBadge(context),
-                new View(context),
-                PhoneCallDetailsViews.createForTest(context),
-                new View(context),
-                new TextView(context));
-        views.callBackButtonView = new TextView(context);
-        views.voicemailButtonView = new TextView(context);
-        views.detailsButtonView = new TextView(context);
-        views.reportButtonView = new TextView(context);
-        views.actionsView = new View(context);
-        return views;
-    }
-}
diff --git a/src/com/android/dialer/calllog/CallLogNotificationsHelper.java b/src/com/android/dialer/calllog/CallLogNotificationsHelper.java
index f6ee896..367cb78 100644
--- a/src/com/android/dialer/calllog/CallLogNotificationsHelper.java
+++ b/src/com/android/dialer/calllog/CallLogNotificationsHelper.java
@@ -17,8 +17,8 @@
 package com.android.dialer.calllog;
 
 import android.content.Context;
-import android.content.Intent;
-import android.telecom.TelecomManager;
+
+import com.android.dialer.util.TelecomUtil;
 
 /**
  * Helper class operating on call log notifications.
@@ -26,15 +26,11 @@
 public class CallLogNotificationsHelper {
     /** Removes the missed call notifications. */
     public static void removeMissedCallNotifications(Context context) {
-        TelecomManager telecomManager = (TelecomManager)
-                context.getSystemService(Context.TELECOM_SERVICE);
-        telecomManager.cancelMissedCallsNotification();
+        TelecomUtil.cancelMissedCallsNotification(context);
     }
 
     /** Update the voice mail notifications. */
     public static void updateVoicemailNotifications(Context context) {
-        Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
-        serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_NOTIFICATIONS);
-        context.startService(serviceIntent);
+        CallLogNotificationsService.updateVoicemailNotifications(context, null);
     }
 }
diff --git a/src/com/android/dialer/calllog/CallLogNotificationsService.java b/src/com/android/dialer/calllog/CallLogNotificationsService.java
index ccd9335..22809db 100644
--- a/src/com/android/dialer/calllog/CallLogNotificationsService.java
+++ b/src/com/android/dialer/calllog/CallLogNotificationsService.java
@@ -17,10 +17,13 @@
 package com.android.dialer.calllog;
 
 import android.app.IntentService;
+import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.util.Log;
 
+import com.android.dialer.util.TelecomUtil;
+
 /**
  * Provides operations for managing notifications.
  * <p>
@@ -56,7 +59,7 @@
      */
     public static final String EXTRA_NEW_VOICEMAIL_URI = "NEW_VOICEMAIL_URI";
 
-    private CallLogQueryHandler mCallLogQueryHandler;
+    private VoicemailQueryHandler mVoicemailQueryHandler;
 
     public CallLogNotificationsService() {
         super("CallLogNotificationsService");
@@ -65,7 +68,7 @@
     @Override
     public void onCreate() {
         super.onCreate();
-        mCallLogQueryHandler = new CallLogQueryHandler(getContentResolver(), null /*listener*/);
+        mVoicemailQueryHandler = new VoicemailQueryHandler(this, getContentResolver());
     }
 
     @Override
@@ -74,8 +77,9 @@
             Log.d(TAG, "onHandleIntent: could not handle null intent");
             return;
         }
+
         if (ACTION_MARK_NEW_VOICEMAILS_AS_OLD.equals(intent.getAction())) {
-            mCallLogQueryHandler.markNewVoicemailsAsOld();
+            mVoicemailQueryHandler.markNewVoicemailsAsOld();
         } else if (ACTION_UPDATE_NOTIFICATIONS.equals(intent.getAction())) {
             Uri voicemailUri = (Uri) intent.getParcelableExtra(EXTRA_NEW_VOICEMAIL_URI);
             DefaultVoicemailNotifier.getInstance(this).updateNotification(voicemailUri);
@@ -83,4 +87,24 @@
             Log.d(TAG, "onHandleIntent: could not handle: " + intent);
         }
     }
+
+    /**
+     * Updates notifications for any new voicemails.
+     *
+     * @param context a valid context.
+     * @param voicemailUri The uri pointing to the voicemail to update the notification for. If
+     *         {@code null}, then notifications for all new voicemails will be updated.
+     */
+    public static void updateVoicemailNotifications(Context context, Uri voicemailUri) {
+        if (TelecomUtil.hasReadWriteVoicemailPermissions(context)) {
+            Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
+            serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_NOTIFICATIONS);
+            // If voicemailUri is null, then notifications for all voicemails will be updated.
+            if (voicemailUri != null) {
+                serviceIntent.putExtra(
+                        CallLogNotificationsService.EXTRA_NEW_VOICEMAIL_URI, voicemailUri);
+            }
+            context.startService(serviceIntent);
+        }
+    }
 }
diff --git a/src/com/android/dialer/calllog/CallLogQuery.java b/src/com/android/dialer/calllog/CallLogQuery.java
index 0ae4cda..2b43c28 100644
--- a/src/com/android/dialer/calllog/CallLogQuery.java
+++ b/src/com/android/dialer/calllog/CallLogQuery.java
@@ -45,7 +45,8 @@
             Calls.PHONE_ACCOUNT_ID,             // 19
             Calls.FEATURES,                     // 20
             Calls.DATA_USAGE,                   // 21
-            Calls.TRANSCRIPTION                 // 22
+            Calls.TRANSCRIPTION,                // 22
+            Calls.CACHED_PHOTO_URI              // 23
     };
 
     public static final int ID = 0;
@@ -71,4 +72,5 @@
     public static final int FEATURES = 20;
     public static final int DATA_USAGE = 21;
     public static final int TRANSCRIPTION = 22;
+    public static final int CACHED_PHOTO_URI = 23;
 }
diff --git a/src/com/android/dialer/calllog/CallLogQueryHandler.java b/src/com/android/dialer/calllog/CallLogQueryHandler.java
index dfc9c78..49d6a41 100644
--- a/src/com/android/dialer/calllog/CallLogQueryHandler.java
+++ b/src/com/android/dialer/calllog/CallLogQueryHandler.java
@@ -19,9 +19,8 @@
 import android.content.AsyncQueryHandler;
 import android.content.ContentResolver;
 import android.content.ContentValues;
+import android.content.Context;
 import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.database.MergeCursor;
 import android.database.sqlite.SQLiteDatabaseCorruptException;
 import android.database.sqlite.SQLiteDiskIOException;
 import android.database.sqlite.SQLiteException;
@@ -32,11 +31,13 @@
 import android.os.Message;
 import android.provider.CallLog.Calls;
 import android.provider.VoicemailContract.Status;
+import android.provider.VoicemailContract.Voicemails;
 import android.util.Log;
 
-import com.android.common.io.MoreCloseables;
 import com.android.contacts.common.database.NoNullCursorAsyncQueryHandler;
+import com.android.dialer.util.TelecomUtil;
 import com.android.dialer.voicemail.VoicemailStatusHelperImpl;
+
 import com.google.common.collect.Lists;
 
 import java.lang.ref.WeakReference;
@@ -53,12 +54,10 @@
     private static final int QUERY_CALLLOG_TOKEN = 54;
     /** The token for the query to mark all missed calls as old after seeing the call log. */
     private static final int UPDATE_MARK_AS_OLD_TOKEN = 55;
-    /** The token for the query to mark all new voicemails as old. */
-    private static final int UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN = 56;
     /** The token for the query to mark all missed calls as read after seeing the call log. */
-    private static final int UPDATE_MARK_MISSED_CALL_AS_READ_TOKEN = 57;
+    private static final int UPDATE_MARK_MISSED_CALL_AS_READ_TOKEN = 56;
     /** The token for the query to fetch voicemail status messages. */
-    private static final int QUERY_VOICEMAIL_STATUS_TOKEN = 58;
+    private static final int QUERY_VOICEMAIL_STATUS_TOKEN = 57;
 
     private final int mLogLimit;
 
@@ -70,6 +69,8 @@
 
     private final WeakReference<Listener> mListener;
 
+    private final Context mContext;
+
     /**
      * Simple handler that wraps background calls to catch
      * {@link SQLiteException}, such as when the disk is full.
@@ -102,12 +103,15 @@
         return new CatchingWorkerHandler(looper);
     }
 
-    public CallLogQueryHandler(ContentResolver contentResolver, Listener listener) {
-        this(contentResolver, listener, -1);
+    public CallLogQueryHandler(Context context, ContentResolver contentResolver,
+            Listener listener) {
+        this(context, contentResolver, listener, -1);
     }
 
-    public CallLogQueryHandler(ContentResolver contentResolver, Listener listener, int limit) {
+    public CallLogQueryHandler(Context context, ContentResolver contentResolver, Listener listener,
+            int limit) {
         super(contentResolver);
+        mContext = context.getApplicationContext();
         mListener = new WeakReference<Listener>(listener);
         mLogLimit = limit;
     }
@@ -128,8 +132,10 @@
     }
 
     public void fetchVoicemailStatus() {
-        startQuery(QUERY_VOICEMAIL_STATUS_TOKEN, null, Status.CONTENT_URI,
-                VoicemailStatusHelperImpl.PROJECTION, null, null, null);
+        if (TelecomUtil.hasReadWriteVoicemailPermissions(mContext)) {
+            startQuery(QUERY_VOICEMAIL_STATUS_TOKEN, null, Status.CONTENT_URI,
+                    VoicemailStatusHelperImpl.PROJECTION, null, null, null);
+        }
     }
 
     /** Fetches the list of calls in the call log. */
@@ -140,15 +146,18 @@
         StringBuilder where = new StringBuilder();
         List<String> selectionArgs = Lists.newArrayList();
 
+        // Ignore voicemails marked as deleted
+        where.append(Voicemails.DELETED);
+        where.append(" = 0");
+
         if (newOnly) {
+            where.append(" AND ");
             where.append(Calls.NEW);
             where.append(" = 1");
         }
 
         if (callType > CALL_TYPE_ALL) {
-            if (where.length() > 0) {
-                where.append(" AND ");
-            }
+            where.append(" AND ");
             // Add a clause to fetch only items of type voicemail.
             where.append(String.format("(%s = ?)", Calls.TYPE));
             // Add a clause to fetch only items newer than the requested date
@@ -156,16 +165,14 @@
         }
 
         if (newerThan > 0) {
-            if (where.length() > 0) {
-                where.append(" AND ");
-            }
+            where.append(" AND ");
             where.append(String.format("(%s > ?)", Calls.DATE));
             selectionArgs.add(Long.toString(newerThan));
         }
 
         final int limit = (mLogLimit == -1) ? NUM_LOGS_TO_DISPLAY : mLogLimit;
         final String selection = where.length() > 0 ? where.toString() : null;
-        Uri uri = Calls.CONTENT_URI_WITH_VOICEMAIL.buildUpon()
+        Uri uri = TelecomUtil.getCallLogUri(mContext).buildUpon()
                 .appendQueryParameter(Calls.LIMIT_PARAM_KEY, Integer.toString(limit))
                 .build();
         startQuery(token, null, uri,
@@ -188,26 +195,10 @@
         ContentValues values = new ContentValues(1);
         values.put(Calls.NEW, "0");
 
-        startUpdate(UPDATE_MARK_AS_OLD_TOKEN, null, Calls.CONTENT_URI_WITH_VOICEMAIL,
+        startUpdate(UPDATE_MARK_AS_OLD_TOKEN, null, TelecomUtil.getCallLogUri(mContext),
                 values, where.toString(), null);
     }
 
-    /** Updates all new voicemails to mark them as old. */
-    public void markNewVoicemailsAsOld() {
-        // Mark all "new" voicemails as not new anymore.
-        StringBuilder where = new StringBuilder();
-        where.append(Calls.NEW);
-        where.append(" = 1 AND ");
-        where.append(Calls.TYPE);
-        where.append(" = ?");
-
-        ContentValues values = new ContentValues(1);
-        values.put(Calls.NEW, "0");
-
-        startUpdate(UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN, null, Calls.CONTENT_URI_WITH_VOICEMAIL,
-                values, where.toString(), new String[]{ Integer.toString(Calls.VOICEMAIL_TYPE) });
-    }
-
     /** Updates all missed calls to mark them as read. */
     public void markMissedCallsAsRead() {
         // Mark all "new" calls as not new anymore.
@@ -224,7 +215,8 @@
     }
 
     @Override
-    protected synchronized void onNotNullableQueryComplete(int token, Object cookie, Cursor cursor) {
+    protected synchronized void onNotNullableQueryComplete(int token, Object cookie,
+            Cursor cursor) {
         if (cursor == null) {
             return;
         }
@@ -271,7 +263,7 @@
         void onVoicemailStatusFetched(Cursor statusCursor);
 
         /**
-         * Called when {@link CallLogQueryHandler#fetchCalls(int)}complete.
+         * Called when {@link CallLogQueryHandler#fetchCalls(int)} complete.
          * Returns true if takes ownership of cursor.
          */
         boolean onCallsFetched(Cursor combinedCursor);
diff --git a/src/com/android/dialer/calllog/CallLogReceiver.java b/src/com/android/dialer/calllog/CallLogReceiver.java
index 97d2951..fef7608 100644
--- a/src/com/android/dialer/calllog/CallLogReceiver.java
+++ b/src/com/android/dialer/calllog/CallLogReceiver.java
@@ -34,15 +34,9 @@
     @Override
     public void onReceive(Context context, Intent intent) {
         if (VoicemailContract.ACTION_NEW_VOICEMAIL.equals(intent.getAction())) {
-            Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
-            serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_NOTIFICATIONS);
-            serviceIntent.putExtra(
-                    CallLogNotificationsService.EXTRA_NEW_VOICEMAIL_URI, intent.getData());
-            context.startService(serviceIntent);
+            CallLogNotificationsService.updateVoicemailNotifications(context, intent.getData());
         } else if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
-            Intent serviceIntent = new Intent(context, CallLogNotificationsService.class);
-            serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_NOTIFICATIONS);
-            context.startService(serviceIntent);
+            CallLogNotificationsService.updateVoicemailNotifications(context, null);
         } else {
             Log.w(TAG, "onReceive: could not handle: " + intent);
         }
diff --git a/src/com/android/dialer/calllog/CallTypeIconsView.java b/src/com/android/dialer/calllog/CallTypeIconsView.java
index ef729ae..31d4f4b 100644
--- a/src/com/android/dialer/calllog/CallTypeIconsView.java
+++ b/src/com/android/dialer/calllog/CallTypeIconsView.java
@@ -208,7 +208,7 @@
             // We want the video call icon to be the same height as the call arrows, while keeping
             // the same width aspect ratio.
             Bitmap videoIcon = BitmapFactory.decodeResource(context.getResources(),
-                    R.drawable.ic_videocam_wht_24dp);
+                    R.drawable.ic_videocam_24dp);
             int scaledHeight = missed.getIntrinsicHeight();
             int scaledWidth = (int) ((float) videoIcon.getWidth() *
                     ((float) missed.getIntrinsicHeight() /
diff --git a/src/com/android/dialer/calllog/ContactInfo.java b/src/com/android/dialer/calllog/ContactInfo.java
index 7b6014d..effe142 100644
--- a/src/com/android/dialer/calllog/ContactInfo.java
+++ b/src/com/android/dialer/calllog/ContactInfo.java
@@ -27,6 +27,11 @@
  */
 public class ContactInfo {
     public Uri lookupUri;
+
+    /**
+     * Contact lookup key.  Note this may be a lookup key for a corp contact, in which case
+     * "lookup by lookup key" doesn't work on the personal profile.
+     */
     public String lookupKey;
     public String name;
     public int type;
diff --git a/src/com/android/dialer/calllog/ContactInfoHelper.java b/src/com/android/dialer/calllog/ContactInfoHelper.java
index 01749fc..38c9bba 100644
--- a/src/com/android/dialer/calllog/ContactInfoHelper.java
+++ b/src/com/android/dialer/calllog/ContactInfoHelper.java
@@ -14,9 +14,12 @@
 
 package com.android.dialer.calllog;
 
+import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
+import android.database.sqlite.SQLiteFullException;
 import android.net.Uri;
+import android.provider.CallLog.Calls;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
@@ -24,12 +27,14 @@
 import android.provider.ContactsContract.PhoneLookup;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+import android.util.Log;
 
 import com.android.contacts.common.util.Constants;
 import com.android.contacts.common.util.PhoneNumberHelper;
 import com.android.contacts.common.util.UriUtils;
 import com.android.dialer.service.CachedNumberLookupService;
 import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
+import com.android.dialer.util.TelecomUtil;
 import com.android.dialerbind.ObjectFactory;
 
 import org.json.JSONException;
@@ -41,6 +46,8 @@
  * Utility class to look up the contact information for a given number.
  */
 public class ContactInfoHelper {
+    private static final String TAG = ContactInfoHelper.class.getSimpleName();
+
     private final Context mContext;
     private final String mCurrentCountryIso;
 
@@ -64,6 +71,9 @@
      * @param countryIso the country associated with this number
      */
     public ContactInfo lookupNumber(String number, String countryIso) {
+        if (TextUtils.isEmpty(number)) {
+            return null;
+        }
         final ContactInfo info;
 
         // Determine the contact info.
@@ -149,6 +159,9 @@
      * value.
      */
     private ContactInfo lookupContactFromUri(Uri uri) {
+        if (uri == null) {
+            return null;
+        }
         final ContactInfo info;
         Cursor phonesCursor =
                 mContext.getContentResolver().query(uri, PhoneQuery._PROJECTION, null, null, null);
@@ -193,10 +206,13 @@
      * If the lookup fails for some other reason, it returns null.
      */
     private ContactInfo queryContactInfoForSipAddress(String sipAddress) {
+        if (TextUtils.isEmpty(sipAddress)) {
+            return null;
+        }
         final ContactInfo info;
 
         // "contactNumber" is a SIP address, so use the PhoneLookup table with the SIP parameter.
-        Uri.Builder uriBuilder = PhoneLookup.CONTENT_FILTER_URI.buildUpon();
+        Uri.Builder uriBuilder = PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI.buildUpon();
         uriBuilder.appendPath(Uri.encode(sipAddress));
         uriBuilder.appendQueryParameter(PhoneLookup.QUERY_PARAMETER_SIP_ADDRESS, "1");
         return lookupContactFromUri(uriBuilder.build());
@@ -212,6 +228,9 @@
      * If the lookup fails for some other reason, it returns null.
      */
     private ContactInfo queryContactInfoForPhoneNumber(String number, String countryIso) {
+        if (TextUtils.isEmpty(number)) {
+            return null;
+        }
         String contactNumber = number;
         if (!TextUtils.isEmpty(countryIso)) {
             // Normalize the number: this is needed because the PhoneLookup query below does not
@@ -224,7 +243,8 @@
         }
 
         // The "contactNumber" is a regular phone number, so use the PhoneLookup table.
-        Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(contactNumber));
+        Uri uri = Uri.withAppendedPath(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI,
+                Uri.encode(contactNumber));
         ContactInfo info = lookupContactFromUri(uri);
         if (info != null && info != ContactInfo.EMPTY) {
             info.formattedNumber = formatPhoneNumber(number, null, countryIso);
@@ -265,6 +285,107 @@
     }
 
     /**
+     * Stores differences between the updated contact info and the current call log contact info.
+     *
+     * @param number The number of the contact.
+     * @param countryIso The country associated with this number.
+     * @param updatedInfo The updated contact info.
+     * @param callLogInfo The call log entry's current contact info.
+     */
+    public void updateCallLogContactInfo(String number, String countryIso, ContactInfo updatedInfo,
+            ContactInfo callLogInfo) {
+        final ContentValues values = new ContentValues();
+        boolean needsUpdate = false;
+
+        if (callLogInfo != null) {
+            if (!TextUtils.equals(updatedInfo.name, callLogInfo.name)) {
+                values.put(Calls.CACHED_NAME, updatedInfo.name);
+                needsUpdate = true;
+            }
+
+            if (updatedInfo.type != callLogInfo.type) {
+                values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
+                needsUpdate = true;
+            }
+
+            if (!TextUtils.equals(updatedInfo.label, callLogInfo.label)) {
+                values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
+                needsUpdate = true;
+            }
+
+            if (!UriUtils.areEqual(updatedInfo.lookupUri, callLogInfo.lookupUri)) {
+                values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
+                needsUpdate = true;
+            }
+
+            // Only replace the normalized number if the new updated normalized number isn't empty.
+            if (!TextUtils.isEmpty(updatedInfo.normalizedNumber) &&
+                    !TextUtils.equals(updatedInfo.normalizedNumber, callLogInfo.normalizedNumber)) {
+                values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
+                needsUpdate = true;
+            }
+
+            if (!TextUtils.equals(updatedInfo.number, callLogInfo.number)) {
+                values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
+                needsUpdate = true;
+            }
+
+            if (updatedInfo.photoId != callLogInfo.photoId) {
+                values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
+                needsUpdate = true;
+            }
+
+            final Uri updatedPhotoUriContactsOnly =
+                    UriUtils.nullForNonContactsUri(updatedInfo.photoUri);
+            if (!UriUtils.areEqual(updatedPhotoUriContactsOnly, callLogInfo.photoUri)) {
+                values.put(Calls.CACHED_PHOTO_URI,
+                        UriUtils.uriToString(updatedPhotoUriContactsOnly));
+                needsUpdate = true;
+            }
+
+            if (!TextUtils.equals(updatedInfo.formattedNumber, callLogInfo.formattedNumber)) {
+                values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
+                needsUpdate = true;
+            }
+        } else {
+            // No previous values, store all of them.
+            values.put(Calls.CACHED_NAME, updatedInfo.name);
+            values.put(Calls.CACHED_NUMBER_TYPE, updatedInfo.type);
+            values.put(Calls.CACHED_NUMBER_LABEL, updatedInfo.label);
+            values.put(Calls.CACHED_LOOKUP_URI, UriUtils.uriToString(updatedInfo.lookupUri));
+            values.put(Calls.CACHED_MATCHED_NUMBER, updatedInfo.number);
+            values.put(Calls.CACHED_NORMALIZED_NUMBER, updatedInfo.normalizedNumber);
+            values.put(Calls.CACHED_PHOTO_ID, updatedInfo.photoId);
+            values.put(Calls.CACHED_PHOTO_URI, UriUtils.uriToString(
+                    UriUtils.nullForNonContactsUri(updatedInfo.photoUri)));
+            values.put(Calls.CACHED_FORMATTED_NUMBER, updatedInfo.formattedNumber);
+            needsUpdate = true;
+        }
+
+        if (!needsUpdate) {
+            return;
+        }
+
+        try {
+            if (countryIso == null) {
+                mContext.getContentResolver().update(
+                        TelecomUtil.getCallLogUri(mContext),
+                        values,
+                        Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " IS NULL",
+                        new String[]{ number });
+            } else {
+                mContext.getContentResolver().update(
+                        TelecomUtil.getCallLogUri(mContext),
+                        values,
+                        Calls.NUMBER + " = ? AND " + Calls.COUNTRY_ISO + " = ?",
+                        new String[]{ number, countryIso });
+            }
+        } catch (SQLiteFullException e) {
+            Log.e(TAG, "Unable to update contact info in call log db", e);
+        }
+    }
+
+    /**
      * Parses the given URI to determine the original lookup key of the contact.
      */
     public static String getLookupKeyFromUri(Uri lookupUri) {
@@ -283,6 +404,29 @@
     }
 
     /**
+     * Returns the contact information stored in an entry of the call log.
+     *
+     * @param c A cursor pointing to an entry in the call log.
+     */
+    public static ContactInfo getContactInfo(Cursor c) {
+        ContactInfo info = new ContactInfo();
+
+        info.lookupUri = UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_LOOKUP_URI));
+        info.name = c.getString(CallLogQuery.CACHED_NAME);
+        info.type = c.getInt(CallLogQuery.CACHED_NUMBER_TYPE);
+        info.label = c.getString(CallLogQuery.CACHED_NUMBER_LABEL);
+        String matchedNumber = c.getString(CallLogQuery.CACHED_MATCHED_NUMBER);
+        info.number = matchedNumber == null ? c.getString(CallLogQuery.NUMBER) : matchedNumber;
+        info.normalizedNumber = c.getString(CallLogQuery.CACHED_NORMALIZED_NUMBER);
+        info.photoId = c.getLong(CallLogQuery.CACHED_PHOTO_ID);
+        info.photoUri = UriUtils.nullForNonContactsUri(
+                UriUtils.parseUriOrNull(c.getString(CallLogQuery.CACHED_PHOTO_URI)));
+        info.formattedNumber = c.getString(CallLogQuery.CACHED_FORMATTED_NUMBER);
+
+        return info;
+    }
+
+    /**
      * Given a contact's sourceType, return true if the contact is a business
      *
      * @param sourceType sourceType of the contact. This is usually populated by
diff --git a/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
index 970cad6..8241811 100644
--- a/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
+++ b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java
@@ -143,7 +143,8 @@
                 }
             }
             // Check if this is the new call we need to notify about.
-            if (newCallUri != null && newCallUri.equals(newCall.voicemailUri)) {
+            if (newCallUri != null && newCall.voicemailUri != null &&
+                    ContentUris.parseId(newCallUri) == ContentUris.parseId(newCall.voicemailUri)) {
                 callToNotify = newCall;
             }
         }
diff --git a/src/com/android/dialer/calllog/GroupingListAdapter.java b/src/com/android/dialer/calllog/GroupingListAdapter.java
new file mode 100644
index 0000000..501e88d
--- /dev/null
+++ b/src/com/android/dialer/calllog/GroupingListAdapter.java
@@ -0,0 +1,449 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog;
+
+import android.content.Context;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.database.DataSetObserver;
+import android.os.Handler;
+import android.support.v7.widget.RecyclerView;
+import android.util.Log;
+import android.util.SparseIntArray;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+
+import com.android.contacts.common.testing.NeededForTesting;
+
+/**
+ * Maintains a list that groups adjacent items sharing the same value of a "group-by" field.
+ *
+ * The list has three types of elements: stand-alone, group header and group child. Groups are
+ * collapsible and collapsed by default. This is used by the call log to group related entries.
+ */
+abstract class GroupingListAdapter extends RecyclerView.Adapter {
+
+    private static final int GROUP_METADATA_ARRAY_INITIAL_SIZE = 16;
+    private static final int GROUP_METADATA_ARRAY_INCREMENT = 128;
+    private static final long GROUP_OFFSET_MASK    = 0x00000000FFFFFFFFL;
+    private static final long GROUP_SIZE_MASK     = 0x7FFFFFFF00000000L;
+    private static final long EXPANDED_GROUP_MASK = 0x8000000000000000L;
+
+    public static final int ITEM_TYPE_STANDALONE = 0;
+    public static final int ITEM_TYPE_GROUP_HEADER = 1;
+    public static final int ITEM_TYPE_IN_GROUP = 2;
+
+    /**
+     * Information about a specific list item: is it a group, if so is it expanded.
+     * Otherwise, is it a stand-alone item or a group member.
+     */
+    protected static class PositionMetadata {
+        int itemType;
+        boolean isExpanded;
+        int cursorPosition;
+        int childCount;
+        private int groupPosition;
+        private int listPosition = -1;
+    }
+
+    private Context mContext;
+    private Cursor mCursor;
+
+    /**
+     * Count of list items.
+     */
+    private int mCount;
+
+    private int mRowIdColumnIndex;
+
+    /**
+     * Count of groups in the list.
+     */
+    private int mGroupCount;
+
+    /**
+     * Information about where these groups are located in the list, how large they are
+     * and whether they are expanded.
+     */
+    private long[] mGroupMetadata;
+
+    private SparseIntArray mPositionCache = new SparseIntArray();
+    private int mLastCachedListPosition;
+    private int mLastCachedCursorPosition;
+    private int mLastCachedGroup;
+
+    /**
+     * A reusable temporary instance of PositionMetadata
+     */
+    private PositionMetadata mPositionMetadata = new PositionMetadata();
+
+    protected ContentObserver mChangeObserver = new ContentObserver(new Handler()) {
+
+        @Override
+        public boolean deliverSelfNotifications() {
+            return true;
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            onContentChanged();
+        }
+    };
+
+    protected DataSetObserver mDataSetObserver = new DataSetObserver() {
+
+        @Override
+        public void onChanged() {
+            notifyDataSetChanged();
+        }
+    };
+
+    public GroupingListAdapter(Context context) {
+        mContext = context;
+        resetCache();
+    }
+
+    /**
+     * Finds all groups of adjacent items in the cursor and calls {@link #addGroup} for
+     * each of them.
+     */
+    protected abstract void addGroups(Cursor cursor);
+
+    protected abstract void onContentChanged();
+
+    /**
+     * Cache should be reset whenever the cursor changes or groups are expanded or collapsed.
+     */
+    private void resetCache() {
+        mCount = -1;
+        mLastCachedListPosition = -1;
+        mLastCachedCursorPosition = -1;
+        mLastCachedGroup = -1;
+        mPositionMetadata.listPosition = -1;
+        mPositionCache.clear();
+    }
+
+    public void changeCursor(Cursor cursor) {
+        if (cursor == mCursor) {
+            return;
+        }
+
+        if (mCursor != null) {
+            mCursor.unregisterContentObserver(mChangeObserver);
+            mCursor.unregisterDataSetObserver(mDataSetObserver);
+            mCursor.close();
+        }
+        mCursor = cursor;
+        resetCache();
+        findGroups();
+
+        if (cursor != null) {
+            cursor.registerContentObserver(mChangeObserver);
+            cursor.registerDataSetObserver(mDataSetObserver);
+            mRowIdColumnIndex = cursor.getColumnIndexOrThrow("_id");
+            notifyDataSetChanged();
+        }
+    }
+
+    @NeededForTesting
+    public Cursor getCursor() {
+        return mCursor;
+    }
+
+    /**
+     * Scans over the entire cursor looking for duplicate phone numbers that need
+     * to be collapsed.
+     */
+    private void findGroups() {
+        mGroupCount = 0;
+        mGroupMetadata = new long[GROUP_METADATA_ARRAY_INITIAL_SIZE];
+
+        if (mCursor == null) {
+            return;
+        }
+
+        addGroups(mCursor);
+    }
+
+    /**
+     * Records information about grouping in the list.  Should be called by the overridden
+     * {@link #addGroups} method.
+     */
+    protected void addGroup(int cursorPosition, int size, boolean expanded) {
+        if (mGroupCount >= mGroupMetadata.length) {
+            int newSize = idealLongArraySize(
+                    mGroupMetadata.length + GROUP_METADATA_ARRAY_INCREMENT);
+            long[] array = new long[newSize];
+            System.arraycopy(mGroupMetadata, 0, array, 0, mGroupCount);
+            mGroupMetadata = array;
+        }
+
+        long metadata = ((long)size << 32) | cursorPosition;
+        if (expanded) {
+            metadata |= EXPANDED_GROUP_MASK;
+        }
+        mGroupMetadata[mGroupCount++] = metadata;
+    }
+
+    // Copy/paste from ArrayUtils
+    private int idealLongArraySize(int need) {
+        return idealByteArraySize(need * 8) / 8;
+    }
+
+    // Copy/paste from ArrayUtils
+    private int idealByteArraySize(int need) {
+        for (int i = 4; i < 32; i++)
+            if (need <= (1 << i) - 12)
+                return (1 << i) - 12;
+
+        return need;
+    }
+
+    @Override
+    public int getItemCount() {
+        if (mCursor == null) {
+            return 0;
+        }
+
+        if (mCount != -1) {
+            return mCount;
+        }
+
+        int cursorPosition = 0;
+        int count = 0;
+        for (int i = 0; i < mGroupCount; i++) {
+            long metadata = mGroupMetadata[i];
+            int offset = (int)(metadata & GROUP_OFFSET_MASK);
+            boolean expanded = (metadata & EXPANDED_GROUP_MASK) != 0;
+            int size = (int)((metadata & GROUP_SIZE_MASK) >> 32);
+
+            count += (offset - cursorPosition);
+
+            if (expanded) {
+                count += size + 1;
+            } else {
+                count++;
+            }
+
+            cursorPosition = offset + size;
+        }
+
+        mCount = count + mCursor.getCount() - cursorPosition;
+        return mCount;
+    }
+
+    /**
+     * Figures out whether the item at the specified position represents a
+     * stand-alone element, a group or a group child. Also computes the
+     * corresponding cursor position.
+     */
+    public void obtainPositionMetadata(PositionMetadata metadata, int position) {
+
+        // If the description object already contains requested information, just return
+        if (metadata.listPosition == position) {
+            return;
+        }
+
+        int listPosition = 0;
+        int cursorPosition = 0;
+        int firstGroupToCheck = 0;
+
+        // Check cache for the supplied position.  What we are looking for is
+        // the group descriptor immediately preceding the supplied position.
+        // Once we have that, we will be able to tell whether the position
+        // is the header of the group, a member of the group or a standalone item.
+        if (mLastCachedListPosition != -1) {
+            if (position <= mLastCachedListPosition) {
+
+                // Have SparceIntArray do a binary search for us.
+                int index = mPositionCache.indexOfKey(position);
+
+                // If we get back a positive number, the position corresponds to
+                // a group header.
+                if (index < 0) {
+
+                    // We had a cache miss, but we did obtain valuable information anyway.
+                    // The negative number will allow us to compute the location of
+                    // the group header immediately preceding the supplied position.
+                    index = ~index - 1;
+
+                    if (index >= mPositionCache.size()) {
+                        index--;
+                    }
+                }
+
+                // A non-negative index gives us the position of the group header
+                // corresponding or preceding the position, so we can
+                // search for the group information at the supplied position
+                // starting with the cached group we just found
+                if (index >= 0) {
+                    listPosition = mPositionCache.keyAt(index);
+                    firstGroupToCheck = mPositionCache.valueAt(index);
+                    long descriptor = mGroupMetadata[firstGroupToCheck];
+                    cursorPosition = (int)(descriptor & GROUP_OFFSET_MASK);
+                }
+            } else {
+
+                // If we haven't examined groups beyond the supplied position,
+                // we will start where we left off previously
+                firstGroupToCheck = mLastCachedGroup;
+                listPosition = mLastCachedListPosition;
+                cursorPosition = mLastCachedCursorPosition;
+            }
+        }
+
+        for (int i = firstGroupToCheck; i < mGroupCount; i++) {
+            long group = mGroupMetadata[i];
+            int offset = (int)(group & GROUP_OFFSET_MASK);
+
+            // Move pointers to the beginning of the group
+            listPosition += (offset - cursorPosition);
+            cursorPosition = offset;
+
+            if (i > mLastCachedGroup) {
+                mPositionCache.append(listPosition, i);
+                mLastCachedListPosition = listPosition;
+                mLastCachedCursorPosition = cursorPosition;
+                mLastCachedGroup = i;
+            }
+
+            // Now we have several possibilities:
+            // A) The requested position precedes the group
+            if (position < listPosition) {
+                metadata.itemType = ITEM_TYPE_STANDALONE;
+                metadata.cursorPosition = cursorPosition - (listPosition - position);
+                metadata.childCount = 1;
+                return;
+            }
+
+            boolean expanded = (group & EXPANDED_GROUP_MASK) != 0;
+            int size = (int) ((group & GROUP_SIZE_MASK) >> 32);
+
+            // B) The requested position is a group header
+            if (position == listPosition) {
+                metadata.itemType = ITEM_TYPE_GROUP_HEADER;
+                metadata.groupPosition = i;
+                metadata.isExpanded = expanded;
+                metadata.childCount = size;
+                metadata.cursorPosition = offset;
+                return;
+            }
+
+            if (expanded) {
+                // C) The requested position is an element in the expanded group
+                if (position < listPosition + size + 1) {
+                    metadata.itemType = ITEM_TYPE_IN_GROUP;
+                    metadata.cursorPosition = cursorPosition + (position - listPosition) - 1;
+                    return;
+                }
+
+                // D) The element is past the expanded group
+                listPosition += size + 1;
+            } else {
+
+                // E) The element is past the collapsed group
+                listPosition++;
+            }
+
+            // Move cursor past the group
+            cursorPosition += size;
+        }
+
+        // The required item is past the last group
+        metadata.itemType = ITEM_TYPE_STANDALONE;
+        metadata.cursorPosition = cursorPosition + (position - listPosition);
+        metadata.childCount = 1;
+    }
+
+    /**
+     * Returns true if the specified position in the list corresponds to a
+     * group header.
+     */
+    public boolean isGroupHeader(int position) {
+        obtainPositionMetadata(mPositionMetadata, position);
+        return mPositionMetadata.itemType == ITEM_TYPE_GROUP_HEADER;
+    }
+
+    /**
+     * Given a position of a groups header in the list, returns the size of
+     * the corresponding group.
+     */
+    public int getGroupSize(int position) {
+        obtainPositionMetadata(mPositionMetadata, position);
+        return mPositionMetadata.childCount;
+    }
+
+    /**
+     * Mark group as expanded if it is collapsed and vice versa.
+     */
+    @NeededForTesting
+    public void toggleGroup(int position) {
+        obtainPositionMetadata(mPositionMetadata, position);
+        if (mPositionMetadata.itemType != ITEM_TYPE_GROUP_HEADER) {
+            throw new IllegalArgumentException("Not a group at position " + position);
+        }
+
+        if (mPositionMetadata.isExpanded) {
+            mGroupMetadata[mPositionMetadata.groupPosition] &= ~EXPANDED_GROUP_MASK;
+        } else {
+            mGroupMetadata[mPositionMetadata.groupPosition] |= EXPANDED_GROUP_MASK;
+        }
+        resetCache();
+        notifyDataSetChanged();
+    }
+
+    public int getItemViewType(int position) {
+        obtainPositionMetadata(mPositionMetadata, position);
+        return mPositionMetadata.itemType;
+    }
+
+    public Object getItem(int position) {
+        if (mCursor == null) {
+            return null;
+        }
+
+        obtainPositionMetadata(mPositionMetadata, position);
+        if (mCursor.moveToPosition(mPositionMetadata.cursorPosition)) {
+            return mCursor;
+        } else {
+            return null;
+        }
+    }
+
+    public long getItemId(int position) {
+        Object item = getItem(position);
+        if (item != null) {
+            return mCursor.getLong(mRowIdColumnIndex);
+        } else {
+            return -1;
+        }
+    }
+
+    /**
+     * Used for setting the cursor without triggering a UI thread update.
+     */
+    @NeededForTesting
+    public void setCursorForTesting(Cursor cursor) {
+        if (cursor != null) {
+            mCursor = cursor;
+            cursor.registerContentObserver(mChangeObserver);
+            cursor.registerDataSetObserver(mDataSetObserver);
+            mRowIdColumnIndex = cursor.getColumnIndexOrThrow("_id");
+        }
+    }
+}
diff --git a/src/com/android/dialer/calllog/IntentProvider.java b/src/com/android/dialer/calllog/IntentProvider.java
index 3084e24..9f5150a 100644
--- a/src/com/android/dialer/calllog/IntentProvider.java
+++ b/src/com/android/dialer/calllog/IntentProvider.java
@@ -16,15 +16,24 @@
 
 package com.android.dialer.calllog;
 
+import android.content.ContentValues;
 import android.content.ContentUris;
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.provider.CallLog.Calls;
+import android.provider.ContactsContract;
 import android.telecom.PhoneAccountHandle;
 
-import com.android.contacts.common.CallUtil;
+import com.android.contacts.common.model.Contact;
+import com.android.contacts.common.model.ContactLoader;
 import com.android.dialer.CallDetailActivity;
+import com.android.dialer.DialtactsActivity;
+import com.android.dialer.PhoneCallDetails;
+import com.android.dialer.util.CallIntentUtil;
+import com.android.dialer.util.TelecomUtil;
+
+import java.util.ArrayList;
 
 /**
  * Used to create an intent to attach to an action in the call log.
@@ -46,7 +55,7 @@
         return new IntentProvider() {
             @Override
             public Intent getIntent(Context context) {
-                return CallUtil.getCallIntent(number, accountHandle);
+                return CallIntentUtil.getCallIntent(number, accountHandle);
             }
         };
     }
@@ -60,7 +69,7 @@
         return new IntentProvider() {
             @Override
             public Intent getIntent(Context context) {
-                return CallUtil.getVideoCallIntent(number, accountHandle);
+                return CallIntentUtil.getVideoCallIntent(number, accountHandle);
             }
         };
     }
@@ -69,7 +78,7 @@
         return new IntentProvider() {
             @Override
             public Intent getIntent(Context context) {
-                return CallUtil.getVoicemailIntent();
+                return CallIntentUtil.getVoicemailIntent();
             }
         };
     }
@@ -117,11 +126,89 @@
                     intent.putExtra(CallDetailActivity.EXTRA_CALL_LOG_IDS, extraIds);
                 } else {
                     // If there is a single item, use the direct URI for it.
-                    intent.setData(ContentUris.withAppendedId(
-                            Calls.CONTENT_URI_WITH_VOICEMAIL, id));
+                    intent.setData(ContentUris.withAppendedId(TelecomUtil.getCallLogUri(context),
+                            id));
                 }
                 return intent;
             }
         };
     }
+
+    /**
+     * Retrieves an add contact intent for the given contact and phone call details.
+     */
+    public static IntentProvider getAddContactIntentProvider(
+            final Uri lookupUri,
+            final CharSequence name,
+            final CharSequence number,
+            final int numberType,
+            final boolean isNewContact) {
+        return new IntentProvider() {
+            @Override
+            public Intent getIntent(Context context) {
+                Contact contactToSave = null;
+
+                if (lookupUri != null) {
+                    contactToSave = ContactLoader.parseEncodedContactEntity(lookupUri);
+                }
+
+                if (contactToSave != null) {
+                    // Populate the intent with contact information stored in the lookup URI.
+                    // Note: This code mirrors code in Contacts/QuickContactsActivity.
+                    final Intent intent;
+                    if (isNewContact) {
+                        intent = new Intent(
+                                Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
+                    } else {
+                        intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
+                        intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
+                    }
+
+                    ArrayList<ContentValues> values = contactToSave.getContentValues();
+                    // Only pre-fill the name field if the provided display name is an nickname
+                    // or better (e.g. structured name, nickname)
+                    if (contactToSave.getDisplayNameSource()
+                            >= ContactsContract.DisplayNameSources.NICKNAME) {
+                        intent.putExtra(ContactsContract.Intents.Insert.NAME,
+                                contactToSave.getDisplayName());
+                    } else if (contactToSave.getDisplayNameSource()
+                            == ContactsContract.DisplayNameSources.ORGANIZATION) {
+                        // This is probably an organization. Instead of copying the organization
+                        // name into a name entry, copy it into the organization entry. This
+                        // way we will still consider the contact an organization.
+                        final ContentValues organization = new ContentValues();
+                        organization.put(ContactsContract.CommonDataKinds.Organization.COMPANY,
+                                contactToSave.getDisplayName());
+                        organization.put(ContactsContract.Data.MIMETYPE,
+                                ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
+                        values.add(organization);
+                    }
+
+                    // Last time used and times used are aggregated values from the usage stat
+                    // table. They need to be removed from data values so the SQL table can insert
+                    // properly
+                    for (ContentValues value : values) {
+                        value.remove(ContactsContract.Data.LAST_TIME_USED);
+                        value.remove(ContactsContract.Data.TIMES_USED);
+                    }
+
+                    intent.putExtra(ContactsContract.Intents.Insert.DATA, values);
+
+                    return intent;
+                } else {
+                    // If no lookup uri is provided, rely on the available phone number and name.
+                    if (isNewContact) {
+                        return DialtactsActivity.getAddToContactIntent(name, number, numberType);
+                    } else {
+                        Intent intent = new Intent(
+                                Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
+                        intent.putExtra(ContactsContract.Intents.Insert.NAME, name);
+                        intent.putExtra(ContactsContract.Intents.Insert.PHONE, number);
+                        intent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, numberType);
+                        return intent;
+                    }
+                }
+            }
+        };
+    }
 }
diff --git a/src/com/android/dialer/calllog/PhoneAccountUtils.java b/src/com/android/dialer/calllog/PhoneAccountUtils.java
index f80ffd0..d63b940 100644
--- a/src/com/android/dialer/calllog/PhoneAccountUtils.java
+++ b/src/com/android/dialer/calllog/PhoneAccountUtils.java
@@ -92,7 +92,7 @@
         TelecomManager telecomManager =
                 (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
         final PhoneAccount account = telecomManager.getPhoneAccount(accountHandle);
-        if (!telecomManager.hasMultipleCallCapableAccounts()) {
+        if (telecomManager.getCallCapablePhoneAccounts().size() <= 1) {
             return null;
         }
         return account;
diff --git a/src/com/android/dialer/calllog/PhoneNumberDisplayHelper.java b/src/com/android/dialer/calllog/PhoneNumberDisplayHelper.java
index 0dffd86..c1a5abf 100644
--- a/src/com/android/dialer/calllog/PhoneNumberDisplayHelper.java
+++ b/src/com/android/dialer/calllog/PhoneNumberDisplayHelper.java
@@ -75,7 +75,6 @@
      */
     public CharSequence getDisplayNumber(PhoneAccountHandle accountHandle, CharSequence number,
             int presentation, CharSequence formattedNumber) {
-
         final CharSequence displayName = getDisplayName(accountHandle, number, presentation);
         if (!TextUtils.isEmpty(displayName)) {
             return displayName;
diff --git a/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java b/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java
index 11f4a67..6fa8143 100644
--- a/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java
+++ b/src/com/android/dialer/calllog/PhoneNumberUtilsWrapper.java
@@ -20,13 +20,15 @@
 import android.provider.CallLog;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
-import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
+import android.util.Log;
+import android.util.Pair;
 
 import com.android.contacts.common.util.PhoneNumberHelper;
-
 import com.google.common.collect.Sets;
 
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 
 /**
@@ -34,8 +36,20 @@
  */
 public class PhoneNumberUtilsWrapper {
     private static final Set<String> LEGACY_UNKNOWN_NUMBERS = Sets.newHashSet("-1", "-2", "-3");
+    private static final long MAX_VOICEMAIL_CACHE_AGE_IN_MS = 60 * 1000;  // 60 seconds
     private final Context mContext;
 
+    // Keeps a cache of recently-made voicemail queries.  The entire point of this cache is to
+    // reduce the number of cross-process requests to TelecomManager.
+    // Maps from a phone-account/number pair to a boolean because multiple numbers could return true
+    // for the voicemail number if those numbers are not pre-normalized.
+    //
+    // TODO: Dialer should be fixed so as not to check isVoicemail() so often but at the time of
+    // this writing, that was a much larger undertaking than creating this cache.
+    private final Map<Pair<PhoneAccountHandle, CharSequence>, Boolean> mVoicemailQueryCache =
+            new HashMap<>();
+    private long mVoicemailCacheTimestamp = 0;
+
     public PhoneNumberUtilsWrapper(Context context) {
         mContext = context;
     }
@@ -50,11 +64,34 @@
      * Returns true if the given number is the number of the configured voicemail. To be able to
      * mock-out this, it is not a static method.
      */
-    public boolean isVoicemailNumber(PhoneAccountHandle accountHandle,
-            CharSequence number) {
-        final TelecomManager telecomManager =
-                (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
-        return number!= null && telecomManager.isVoiceMailNumber(accountHandle, number.toString());
+    public boolean isVoicemailNumber(PhoneAccountHandle accountHandle, CharSequence number) {
+        if (TextUtils.isEmpty(number)) {
+            return false;
+        }
+
+        long currentTime = System.currentTimeMillis();
+        // check the age of the voicemail cache first.
+        if (currentTime - mVoicemailCacheTimestamp > MAX_VOICEMAIL_CACHE_AGE_IN_MS) {
+            mVoicemailQueryCache.clear();
+
+            // We set the timestamp of the voicemail cache to the point where the cache is recreated
+            // instead of when an item is added.
+            // 1) This is easier to write
+            // 2) Ensures that the oldest entry is never older than MAX_VOICEMAIL_CACHE_AGE
+            mVoicemailCacheTimestamp = currentTime;
+        }
+
+        Pair<PhoneAccountHandle, CharSequence> key = new Pair<>(accountHandle, number);
+        if (mVoicemailQueryCache.containsKey(key)) {
+            return mVoicemailQueryCache.get(key);
+        } else {
+            final TelecomManager telecomManager =
+                    (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
+            Boolean isVoicemail =
+                    telecomManager.isVoiceMailNumber(accountHandle, number.toString());
+            mVoicemailQueryCache.put(key, isVoicemail);
+            return isVoicemail;
+        }
     }
 
     /**
diff --git a/src/com/android/dialer/calllog/ShowCallHistoryViewHolder.java b/src/com/android/dialer/calllog/ShowCallHistoryViewHolder.java
new file mode 100644
index 0000000..af36a4d
--- /dev/null
+++ b/src/com/android/dialer/calllog/ShowCallHistoryViewHolder.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.dialer.R;
+
+public final class ShowCallHistoryViewHolder extends RecyclerView.ViewHolder {
+
+    private ShowCallHistoryViewHolder(final Context context, View view) {
+        super(view);
+        view.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                final Intent intent = new Intent(context, CallLogActivity.class);
+                context.startActivity(intent);
+            }
+        });
+    }
+
+    public static ShowCallHistoryViewHolder create(Context context, ViewGroup parent) {
+        LayoutInflater inflater = LayoutInflater.from(context);
+        View view = inflater.inflate(R.layout.show_call_history_list_item, parent, false);
+        return new ShowCallHistoryViewHolder(context, view);
+    }
+}
diff --git a/src/com/android/dialer/calllog/VoicemailQueryHandler.java b/src/com/android/dialer/calllog/VoicemailQueryHandler.java
new file mode 100644
index 0000000..26f9bd1
--- /dev/null
+++ b/src/com/android/dialer/calllog/VoicemailQueryHandler.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2011 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.dialer.calllog;
+
+import android.content.AsyncQueryHandler;
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.CallLog.Calls;
+import android.util.Log;
+
+/**
+ * Handles asynchronous queries to the call log for voicemail.
+ */
+public class VoicemailQueryHandler extends AsyncQueryHandler {
+    private static final String TAG = "VoicemailQueryHandler";
+
+    /** The token for the query to mark all new voicemails as old. */
+    private static final int UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN = 50;
+    private Context mContext;
+
+    public VoicemailQueryHandler(Context context, ContentResolver contentResolver) {
+        super(contentResolver);
+        mContext = context;
+    }
+
+    /** Updates all new voicemails to mark them as old. */
+    public void markNewVoicemailsAsOld() {
+        // Mark all "new" voicemails as not new anymore.
+        StringBuilder where = new StringBuilder();
+        where.append(Calls.NEW);
+        where.append(" = 1 AND ");
+        where.append(Calls.TYPE);
+        where.append(" = ?");
+
+        ContentValues values = new ContentValues(1);
+        values.put(Calls.NEW, "0");
+
+        startUpdate(UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN, null, Calls.CONTENT_URI_WITH_VOICEMAIL,
+                values, where.toString(), new String[]{ Integer.toString(Calls.VOICEMAIL_TYPE) });
+    }
+
+    @Override
+    protected void onUpdateComplete(int token, Object cookie, int result) {
+        if (token == UPDATE_MARK_VOICEMAILS_AS_OLD_TOKEN) {
+            if (mContext != null) {
+                Intent serviceIntent = new Intent(mContext, CallLogNotificationsService.class);
+                serviceIntent.setAction(CallLogNotificationsService.ACTION_UPDATE_NOTIFICATIONS);
+                mContext.startService(serviceIntent);
+            } else {
+                Log.w(TAG, "Unknown update completed: ignoring: " + token);
+            }
+        }
+    }
+}
diff --git a/src/com/android/dialer/contactinfo/ContactInfoCache.java b/src/com/android/dialer/contactinfo/ContactInfoCache.java
new file mode 100644
index 0000000..2bb0f1e
--- /dev/null
+++ b/src/com/android/dialer/contactinfo/ContactInfoCache.java
@@ -0,0 +1,342 @@
+/*
+ * Copyright (C) 2015 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.dialer.contactinfo;
+
+import android.os.Handler;
+import android.os.Message;
+import android.text.TextUtils;
+
+import com.android.dialer.calllog.ContactInfo;
+import com.android.dialer.calllog.ContactInfoHelper;
+import com.android.dialer.util.ExpirableCache;
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.LinkedList;
+
+/**
+ * This is a cache of contact details for the phone numbers in the c all log. The key is the
+ * phone number with the country in which teh call was placed or received. The content of the
+ * cache is expired (but not purged) whenever the application comes to the foreground.
+ *
+ * This cache queues request for information and queries for information on a background thread,
+ * so {@code start()} and {@code stop()} must be called to initiate or halt that thread's exeuction
+ * as needed.
+ *
+ * TODO: Explore whether there is a pattern to remove external dependencies for starting and
+ * stopping the query thread.
+ */
+public class ContactInfoCache {
+    public interface OnContactInfoChangedListener {
+        public void onContactInfoChanged();
+    }
+
+    /*
+     * Handles requests for contact name and number type.
+     */
+    private class QueryThread extends Thread {
+        private volatile boolean mDone = false;
+
+        public QueryThread() {
+            super("CallLogAdapter.QueryThread");
+        }
+
+        public void stopProcessing() {
+            mDone = true;
+        }
+
+        @Override
+        public void run() {
+            boolean needRedraw = false;
+            while (true) {
+                // Check if thread is finished, and if so return immediately.
+                if (mDone) return;
+
+                // Obtain next request, if any is available.
+                // Keep synchronized section small.
+                ContactInfoRequest req = null;
+                synchronized (mRequests) {
+                    if (!mRequests.isEmpty()) {
+                        req = mRequests.removeFirst();
+                    }
+                }
+
+                if (req != null) {
+                    // Process the request. If the lookup succeeds, schedule a redraw.
+                    needRedraw |= queryContactInfo(req.number, req.countryIso, req.callLogInfo);
+                } else {
+                    // Throttle redraw rate by only sending them when there are
+                    // more requests.
+                    if (needRedraw) {
+                        needRedraw = false;
+                        mHandler.sendEmptyMessage(REDRAW);
+                    }
+
+                    // Wait until another request is available, or until this
+                    // thread is no longer needed (as indicated by being
+                    // interrupted).
+                    try {
+                        synchronized (mRequests) {
+                            mRequests.wait(1000);
+                        }
+                    } catch (InterruptedException ie) {
+                        // Ignore, and attempt to continue processing requests.
+                    }
+                }
+            }
+        }
+    }
+
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case REDRAW:
+                    mOnContactInfoChangedListener.onContactInfoChanged();
+                    break;
+                case START_THREAD:
+                    startRequestProcessing();
+                    break;
+            }
+        }
+    };
+
+    private static final int REDRAW = 1;
+    private static final int START_THREAD = 2;
+
+    private static final int CONTACT_INFO_CACHE_SIZE = 100;
+    private static final int START_PROCESSING_REQUESTS_DELAY_MS = 1000;
+
+
+    /**
+     * List of requests to update contact details. Each request contains a phone number to look up,
+     * and the contact info currently stored in the call log for this number.
+     *
+     * The requests are added when displaying contacts and are processed by a background thread.
+     */
+    private final LinkedList<ContactInfoRequest> mRequests;
+
+    private ExpirableCache<NumberWithCountryIso, ContactInfo> mCache;
+
+    private ContactInfoHelper mContactInfoHelper;
+    private QueryThread mContactInfoQueryThread;
+    private OnContactInfoChangedListener mOnContactInfoChangedListener;
+
+    public ContactInfoCache(ContactInfoHelper contactInfoHelper,
+            OnContactInfoChangedListener onContactInfoChangedListener) {
+        mContactInfoHelper = contactInfoHelper;
+        mOnContactInfoChangedListener = onContactInfoChangedListener;
+
+        mRequests = new LinkedList<ContactInfoRequest>();
+        mCache = ExpirableCache.create(CONTACT_INFO_CACHE_SIZE);
+    }
+
+    public ContactInfo getValue(String number, String countryIso, ContactInfo cachedContactInfo) {
+        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
+        ExpirableCache.CachedValue<ContactInfo> cachedInfo =
+                mCache.getCachedValue(numberCountryIso);
+        ContactInfo info = cachedInfo == null ? null : cachedInfo.getValue();
+        if (cachedInfo == null) {
+            mCache.put(numberCountryIso, ContactInfo.EMPTY);
+            // Use the cached contact info from the call log.
+            info = cachedContactInfo;
+            // The db request should happen on a non-UI thread.
+            // Request the contact details immediately since they are currently missing.
+            enqueueRequest(number, countryIso, cachedContactInfo, true);
+            // We will format the phone number when we make the background request.
+        } else {
+            if (cachedInfo.isExpired()) {
+                // The contact info is no longer up to date, we should request it. However, we
+                // do not need to request them immediately.
+                enqueueRequest(number, countryIso, cachedContactInfo, false);
+            } else  if (!callLogInfoMatches(cachedContactInfo, info)) {
+                // The call log information does not match the one we have, look it up again.
+                // We could simply update the call log directly, but that needs to be done in a
+                // background thread, so it is easier to simply request a new lookup, which will, as
+                // a side-effect, update the call log.
+                enqueueRequest(number, countryIso, cachedContactInfo, false);
+            }
+
+            if (info == ContactInfo.EMPTY) {
+                // Use the cached contact info from the call log.
+                info = cachedContactInfo;
+            }
+        }
+        return info;
+    }
+
+    /**
+     * Queries the appropriate content provider for the contact associated with the number.
+     *
+     * Upon completion it also updates the cache in the call log, if it is different from
+     * {@code callLogInfo}.
+     *
+     * The number might be either a SIP address or a phone number.
+     *
+     * It returns true if it updated the content of the cache and we should therefore tell the
+     * view to update its content.
+     */
+    private boolean queryContactInfo(String number, String countryIso, ContactInfo callLogInfo) {
+        final ContactInfo info = mContactInfoHelper.lookupNumber(number, countryIso);
+
+        if (info == null) {
+            // The lookup failed, just return without requesting to update the view.
+            return false;
+        }
+
+        // Check the existing entry in the cache: only if it has changed we should update the
+        // view.
+        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
+        ContactInfo existingInfo = mCache.getPossiblyExpired(numberCountryIso);
+
+        final boolean isRemoteSource = info.sourceType != 0;
+
+        // Don't force redraw if existing info in the cache is equal to {@link ContactInfo#EMPTY}
+        // to avoid updating the data set for every new row that is scrolled into view.
+        // see (https://googleplex-android-review.git.corp.google.com/#/c/166680/)
+
+        // Exception: Photo uris for contacts from remote sources are not cached in the call log
+        // cache, so we have to force a redraw for these contacts regardless.
+        boolean updated = (existingInfo != ContactInfo.EMPTY || isRemoteSource) &&
+                !info.equals(existingInfo);
+
+        // Store the data in the cache so that the UI thread can use to display it. Store it
+        // even if it has not changed so that it is marked as not expired.
+        mCache.put(numberCountryIso, info);
+
+        // Update the call log even if the cache it is up-to-date: it is possible that the cache
+        // contains the value from a different call log entry.
+        mContactInfoHelper.updateCallLogContactInfo(number, countryIso, info, callLogInfo);
+        return updated;
+    }
+
+    /**
+     * After a delay, start the thread to begin processing requests. We perform lookups on a
+     * background thread, but this must be called to indicate the thread should be running.
+     */
+    public void start() {
+        // Schedule a thread-creation message if the thread hasn't been created yet, as an
+        // optimization to queue fewer messages.
+        if (mContactInfoQueryThread == null) {
+            // TODO: Check whether this delay before starting to process is necessary.
+            mHandler.sendEmptyMessageDelayed(START_THREAD, START_PROCESSING_REQUESTS_DELAY_MS);
+        }
+    }
+
+    /**
+     * Stops the thread and clears the queue of messages to process. This cleans up the thread
+     * for lookups so that it is not perpetually running.
+     */
+    public void stop() {
+        stopRequestProcessing();
+    }
+
+    /**
+     * Starts a background thread to process contact-lookup requests, unless one
+     * has already been started.
+     */
+    private synchronized void startRequestProcessing() {
+        // For unit-testing.
+        if (mRequestProcessingDisabled) return;
+
+        // If a thread is already started, don't start another.
+        if (mContactInfoQueryThread != null) {
+            return;
+        }
+
+        mContactInfoQueryThread = new QueryThread();
+        mContactInfoQueryThread.setPriority(Thread.MIN_PRIORITY);
+        mContactInfoQueryThread.start();
+    }
+
+    public void invalidate() {
+        mCache.expireAll();
+        stopRequestProcessing();
+    }
+
+    /**
+     * Stops the background thread that processes updates and cancels any
+     * pending requests to start it.
+     */
+    private synchronized void stopRequestProcessing() {
+        // Remove any pending requests to start the processing thread.
+        mHandler.removeMessages(START_THREAD);
+        if (mContactInfoQueryThread != null) {
+            // Stop the thread; we are finished with it.
+            mContactInfoQueryThread.stopProcessing();
+            mContactInfoQueryThread.interrupt();
+            mContactInfoQueryThread = null;
+        }
+    }
+
+    /**
+     * Enqueues a request to look up the contact details for the given phone number.
+     * <p>
+     * It also provides the current contact info stored in the call log for this number.
+     * <p>
+     * If the {@code immediate} parameter is true, it will start immediately the thread that looks
+     * up the contact information (if it has not been already started). Otherwise, it will be
+     * started with a delay. See {@link #START_PROCESSING_REQUESTS_DELAY_MILLIS}.
+     */
+    protected void enqueueRequest(String number, String countryIso, ContactInfo callLogInfo,
+            boolean immediate) {
+        ContactInfoRequest request = new ContactInfoRequest(number, countryIso, callLogInfo);
+        synchronized (mRequests) {
+            if (!mRequests.contains(request)) {
+                mRequests.add(request);
+                mRequests.notifyAll();
+            }
+        }
+        if (immediate) {
+            startRequestProcessing();
+        }
+    }
+
+    /**
+     * Checks whether the contact info from the call log matches the one from the contacts db.
+     */
+    private boolean callLogInfoMatches(ContactInfo callLogInfo, ContactInfo info) {
+        // The call log only contains a subset of the fields in the contacts db.
+        // Only check those.
+        return TextUtils.equals(callLogInfo.name, info.name)
+                && callLogInfo.type == info.type
+                && TextUtils.equals(callLogInfo.label, info.label);
+    }
+
+    /**
+     * Can be set to true by tests to disable processing of requests.
+     */
+    @VisibleForTesting
+    private volatile boolean mRequestProcessingDisabled = false;
+
+    /**
+     * Sets whether processing of requests for contact details should be enabled.
+     *
+     * This method should be called in tests to disable such processing of requests when not
+     * needed.
+     */
+    @VisibleForTesting
+    public void disableRequestProcessingForTest() {
+        mRequestProcessingDisabled = true;
+    }
+
+    @VisibleForTesting
+    public void injectContactInfoForTest(
+            String number, String countryIso, ContactInfo contactInfo) {
+        NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
+        mCache.put(numberCountryIso, contactInfo);
+    }
+}
diff --git a/src/com/android/dialer/contactinfo/ContactInfoRequest.java b/src/com/android/dialer/contactinfo/ContactInfoRequest.java
new file mode 100644
index 0000000..ec5c119
--- /dev/null
+++ b/src/com/android/dialer/contactinfo/ContactInfoRequest.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2015 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.dialer.contactinfo;
+
+import android.text.TextUtils;
+
+import com.android.dialer.calllog.ContactInfo;
+import com.google.common.base.Objects;
+
+/**
+ * A request for contact details for the given number, used by the ContactInfoCache.
+ */
+public final class ContactInfoRequest {
+    /** The number to look-up. */
+    public final String number;
+    /** The country in which a call to or from this number was placed or received. */
+    public final String countryIso;
+    /** The cached contact information stored in the call log. */
+    public final ContactInfo callLogInfo;
+
+    public ContactInfoRequest(String number, String countryIso, ContactInfo callLogInfo) {
+        this.number = number;
+        this.countryIso = countryIso;
+        this.callLogInfo = callLogInfo;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null) return false;
+        if (!(obj instanceof ContactInfoRequest)) return false;
+
+        ContactInfoRequest other = (ContactInfoRequest) obj;
+
+        if (!TextUtils.equals(number, other.number)) return false;
+        if (!TextUtils.equals(countryIso, other.countryIso)) return false;
+        if (!Objects.equal(callLogInfo, other.callLogInfo)) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((callLogInfo == null) ? 0 : callLogInfo.hashCode());
+        result = prime * result + ((countryIso == null) ? 0 : countryIso.hashCode());
+        result = prime * result + ((number == null) ? 0 : number.hashCode());
+        return result;
+    }
+}
diff --git a/src/com/android/dialer/contactinfo/NumberWithCountryIso.java b/src/com/android/dialer/contactinfo/NumberWithCountryIso.java
new file mode 100644
index 0000000..1383fb7
--- /dev/null
+++ b/src/com/android/dialer/contactinfo/NumberWithCountryIso.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2015 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.dialer.contactinfo;
+
+import android.text.TextUtils;
+
+/**
+ * Stores a phone number of a call with the country code where it originally occurred. This object
+ * is used as a key in the {@code ContactInfoCache}.
+ *
+ * The country does not necessarily specify the country of the phone number itself, but rather
+ * it is the country in which the user was in when the call was placed or received.
+ */
+public final class NumberWithCountryIso {
+    public final String number;
+    public final String countryIso;
+
+    public NumberWithCountryIso(String number, String countryIso) {
+        this.number = number;
+        this.countryIso = countryIso;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o == null) return false;
+        if (!(o instanceof NumberWithCountryIso)) return false;
+        NumberWithCountryIso other = (NumberWithCountryIso) o;
+        return TextUtils.equals(number, other.number)
+                && TextUtils.equals(countryIso, other.countryIso);
+    }
+
+    @Override
+    public int hashCode() {
+        int numberHashCode = number == null ? 0 : number.hashCode();
+        int countryHashCode = countryIso == null ? 0 : countryIso.hashCode();
+
+        return numberHashCode ^ countryHashCode;
+    }
+}
diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java
index 511c2a7..2177878 100644
--- a/src/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/src/com/android/dialer/database/DialerDatabaseHelper.java
@@ -93,6 +93,9 @@
         static final String PROPERTIES = "properties";
     }
 
+    public static final Uri SMART_DIAL_UPDATED_URI =
+            Uri.parse("content://com.android.dialer/smart_dial_updated");
+
     public interface SmartDialDbColumns {
         static final String _ID = "id";
         static final String DATA_ID = "data_id";
@@ -893,6 +896,9 @@
             final SharedPreferences.Editor editor = databaseLastUpdateSharedPref.edit();
             editor.putLong(LAST_UPDATED_MILLIS, currentMillis);
             editor.commit();
+
+            // Notify content observers that smart dial database has been updated.
+            mContext.getContentResolver().notifyChange(SMART_DIAL_UPDATED_URI, null, false);
         }
     }
 
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index f1112f1..6a66eb3 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -36,6 +36,7 @@
 import android.media.ToneGenerator;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Trace;
 import android.provider.Contacts.People;
 import android.provider.Contacts.Phones;
 import android.provider.Contacts.PhonesColumns;
@@ -44,13 +45,10 @@
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 import android.telephony.PhoneNumberUtils;
-import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
 import android.text.Editable;
-import android.text.SpannableString;
 import android.text.TextUtils;
 import android.text.TextWatcher;
-import android.text.style.RelativeSizeSpan;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.KeyEvent;
@@ -70,7 +68,6 @@
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-import com.android.contacts.common.CallUtil;
 import com.android.contacts.common.ContactsUtils;
 import com.android.contacts.common.GeoUtil;
 import com.android.contacts.common.util.PhoneNumberFormatter;
@@ -81,6 +78,7 @@
 import com.android.dialer.R;
 import com.android.dialer.SpecialCharSequenceMgr;
 import com.android.dialer.calllog.PhoneAccountUtils;
+import com.android.dialer.util.CallIntentUtil;
 import com.android.dialer.util.DialerUtils;
 import com.android.phone.common.CallLogAsync;
 import com.android.phone.common.HapticFeedback;
@@ -102,7 +100,7 @@
         AdapterView.OnItemClickListener, TextWatcher,
         PopupMenu.OnMenuItemClickListener,
         DialpadKeyButton.OnPressedListener {
-    private static final String TAG = DialpadFragment.class.getSimpleName();
+    private static final String TAG = "DialpadFragment";
 
     /**
      * LinearLayout with getter and setter methods for the translationY property using floats,
@@ -260,8 +258,6 @@
     private boolean mFirstLaunch = false;
     private boolean mAnimate = false;
 
-    private ComponentName mSmsPackageComponentName;
-
     private static final String PREF_DIGITS_FILLED_BY_INTENT = "pref_digits_filled_by_intent";
 
     private TelephonyManager getTelephonyManager() {
@@ -315,8 +311,11 @@
 
     @Override
     public void onCreate(Bundle state) {
+        Trace.beginSection(TAG + " onCreate");
         super.onCreate(state);
-        mFirstLaunch = true;
+
+        mFirstLaunch = state == null;
+
         mCurrentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
 
         try {
@@ -341,15 +340,21 @@
             mCallStateReceiver = new CallStateReceiver();
             ((Context) getActivity()).registerReceiver(mCallStateReceiver, callStateIntentFilter);
         }
+        Trace.endSection();
     }
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
+        Trace.beginSection(TAG + " onCreateView");
+        Trace.beginSection(TAG + " inflate view");
         final View fragmentView = inflater.inflate(R.layout.dialpad_fragment, container,
                 false);
+        Trace.endSection();
+        Trace.beginSection(TAG + " buildLayer");
         fragmentView.buildLayer();
+        Trace.endSection();
 
-        Resources r = getResources();
+        Trace.beginSection(TAG + " setup views");
 
         mDialpadView = (DialpadView) fragmentView.findViewById(R.id.dialpad_view);
         mDialpadView.setCanDigitsBeEdited(true);
@@ -394,12 +399,13 @@
 
         final View floatingActionButtonContainer =
                 fragmentView.findViewById(R.id.dialpad_floating_action_button_container);
-        final View floatingActionButton =
+        final ImageButton floatingActionButton =
                 (ImageButton) fragmentView.findViewById(R.id.dialpad_floating_action_button);
         floatingActionButton.setOnClickListener(this);
         mFloatingActionButtonController = new FloatingActionButtonController(getActivity(),
                 floatingActionButtonContainer, floatingActionButton);
-
+        Trace.endSection();
+        Trace.endSection();
         return fragmentView;
     }
 
@@ -582,6 +588,7 @@
 
     @Override
     public void onStart() {
+        Trace.beginSection(TAG + " onStart");
         super.onStart();
         // if the mToneGenerator creation fails, just continue without it.  It is
         // a local audio signal, and is not as important as the dtmf tone itself.
@@ -600,10 +607,12 @@
         if (total > 50) {
             Log.i(TAG, "Time for ToneGenerator creation: " + total);
         }
+        Trace.endSection();
     };
 
     @Override
     public void onResume() {
+        Trace.beginSection(TAG + " onResume");
         super.onResume();
 
         final DialtactsActivity activity = (DialtactsActivity) getActivity();
@@ -641,8 +650,6 @@
             showDialpadChooser(false);
         }
 
-        mFirstLaunch = false;
-
         stopWatch.lap("hnt");
 
         updateDeleteButtonEnabledState();
@@ -651,8 +658,6 @@
 
         stopWatch.stopAndLog(TAG, 50);
 
-        mSmsPackageComponentName = DialerUtils.getSmsComponent(activity);
-
         // Populate the overflow menu in onResume instead of onCreate, so that if the SMS activity
         // is disabled while Dialer is paused, the "Send a text message" option can be correctly
         // removed when resumed.
@@ -661,6 +666,15 @@
         mOverflowMenuButton.setOnTouchListener(mOverflowPopupMenu.getDragToOpenListener());
         mOverflowMenuButton.setOnClickListener(this);
         mOverflowMenuButton.setVisibility(isDigitsEmpty() ? View.INVISIBLE : View.VISIBLE);
+
+        if (mFirstLaunch) {
+            // The onHiddenChanged callback does not get called the first time the fragment is
+            // attached, so call it ourselves here.
+            onHiddenChanged(false);
+        }
+
+        mFirstLaunch = false;
+        Trace.endSection();
     }
 
     @Override
@@ -860,8 +874,6 @@
             @Override
             public void show() {
                 final Menu menu = getMenu();
-                final MenuItem sendMessage = menu.findItem(R.id.menu_send_message);
-                sendMessage.setVisible(mSmsPackageComponentName != null);
 
                 boolean enable = !isDigitsEmpty();
                 for (int i = 0; i < menu.size(); i++) {
@@ -923,7 +935,8 @@
                     List<PhoneAccountHandle> subscriptionAccountHandles =
                             PhoneAccountUtils.getSubscriptionPhoneAccounts(getActivity());
                     boolean hasUserSelectedDefault = subscriptionAccountHandles.contains(
-                            getTelecomManager().getUserSelectedOutgoingPhoneAccount());
+                            getTelecomManager().getDefaultOutgoingPhoneAccount(
+                                    PhoneAccount.SCHEME_VOICEMAIL));
                     boolean needsAccountDisambiguation = subscriptionAccountHandles.size() > 1
                             && !hasUserSelectedDefault;
 
@@ -988,7 +1001,8 @@
     }
 
     public void callVoicemail() {
-        DialerUtils.startActivityWithErrorToast(getActivity(), CallUtil.getVoicemailIntent());
+        DialerUtils.startActivityWithErrorToast(getActivity(), CallIntentUtil
+                .getVoicemailIntent());
         hideAndClearDialpad(false);
     }
 
@@ -1084,7 +1098,7 @@
                 // Clear the digits just in case.
                 clearDialpad();
             } else {
-                final Intent intent = CallUtil.getCallIntent(number,
+                final Intent intent = CallIntentUtil.getCallIntent(number,
                         (getActivity() instanceof DialtactsActivity ?
                                 ((DialtactsActivity) getActivity()).getCallOrigin() : null));
                 DialerUtils.startActivityWithErrorToast(getActivity(), intent);
@@ -1430,26 +1444,12 @@
     @Override
     public boolean onMenuItemClick(MenuItem item) {
         switch (item.getItemId()) {
-            case R.id.menu_add_contact: {
-                final CharSequence digits = mDigits.getText();
-                DialerUtils.startActivityWithErrorToast(getActivity(),
-                        DialtactsActivity.getAddNumberToContactIntent(digits));
-                return true;
-            }
             case R.id.menu_2s_pause:
                 updateDialString(PAUSE);
                 return true;
             case R.id.menu_add_wait:
                 updateDialString(WAIT);
                 return true;
-            case R.id.menu_send_message: {
-                final CharSequence digits = mDigits.getText();
-                final Intent smsIntent = new Intent(Intent.ACTION_SENDTO,
-                        Uri.fromParts(ContactsUtils.SCHEME_SMSTO, digits.toString(), null));
-                smsIntent.setComponent(mSmsPackageComponentName);
-                DialerUtils.startActivityWithErrorToast(getActivity(), smsIntent);
-                return true;
-            }
             default:
                 return false;
         }
@@ -1522,18 +1522,20 @@
      *
      * @return true if voicemail is enabled and accessible. Note that this can be false
      * "temporarily" after the app boot.
-     * @see TelecomManager#hasVoiceMailNumber(PhoneAccountHandle)
+     * @see TelecomManager#getVoiceMailNumber(PhoneAccountHandle)
      */
     private boolean isVoicemailAvailable() {
         try {
             PhoneAccountHandle defaultUserSelectedAccount =
-                    getTelecomManager().getUserSelectedOutgoingPhoneAccount();
+                    getTelecomManager().getDefaultOutgoingPhoneAccount(
+                            PhoneAccount.SCHEME_VOICEMAIL);
             if (defaultUserSelectedAccount == null) {
                 // In a single-SIM phone, there is no default outgoing phone account selected by
                 // the user, so just call TelephonyManager#getVoicemailNumber directly.
-                return getTelephonyManager().getVoiceMailNumber() != null;
+                return !TextUtils.isEmpty(getTelephonyManager().getVoiceMailNumber());
             } else {
-                return getTelecomManager().hasVoiceMailNumber(defaultUserSelectedAccount);
+                return !TextUtils.isEmpty(
+                        getTelecomManager().getVoiceMailNumber(defaultUserSelectedAccount));
             }
         } catch (SecurityException se) {
             // Possibly no READ_PHONE_STATE privilege.
@@ -1614,7 +1616,7 @@
     }
 
     private Intent newFlashIntent() {
-        final Intent intent = CallUtil.getCallIntent(EMPTY_NUMBER);
+        final Intent intent = CallIntentUtil.getCallIntent(EMPTY_NUMBER);
         intent.putExtra(EXTRA_SEND_EMPTY_FLASH, true);
         return intent;
     }
diff --git a/src/com/android/dialer/dialpad/SmartDialCursorLoader.java b/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
index d01776c..372692e 100644
--- a/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
+++ b/src/com/android/dialer/dialpad/SmartDialCursorLoader.java
@@ -18,8 +18,10 @@
 
 import android.content.AsyncTaskLoader;
 import android.content.Context;
+import android.content.Loader.ForceLoadContentObserver;
 import android.database.Cursor;
 import android.database.MatrixCursor;
+import android.net.Uri;
 import android.util.Log;
 
 import com.android.contacts.common.list.PhoneNumberListAdapter.PhoneQuery;
@@ -44,6 +46,8 @@
     private String mQuery;
     private SmartDialNameMatcher mNameMatcher;
 
+    private ForceLoadContentObserver mObserver;
+
     public SmartDialCursorLoader(Context context) {
         super(context);
         mContext = context;
@@ -110,6 +114,12 @@
         Cursor oldCursor = mCursor;
         mCursor = cursor;
 
+        if (mObserver == null) {
+            mObserver = new ForceLoadContentObserver();
+            mContext.getContentResolver().registerContentObserver(
+                    DialerDatabaseHelper.SMART_DIAL_UPDATED_URI, true, mObserver);
+        }
+
         if (isStarted()) {
             /** If the Loader is in a started state, deliver the results to the client. */
             super.deliverResult(cursor);
@@ -144,6 +154,11 @@
         /** Ensure the loader has been stopped. */
         onStopLoading();
 
+        if (mObserver != null) {
+            mContext.getContentResolver().unregisterContentObserver(mObserver);
+            mObserver = null;
+        }
+
         /** Release all previously saved query results. */
         if (mCursor != null) {
             releaseResources(mCursor);
@@ -155,6 +170,11 @@
     public void onCanceled(Cursor cursor) {
         super.onCanceled(cursor);
 
+        if (mObserver != null) {
+            mContext.getContentResolver().unregisterContentObserver(mObserver);
+            mObserver = null;
+        }
+
         /** The load has been canceled, so we should release the resources associated with 'data'.*/
         releaseResources(cursor);
     }
diff --git a/src/com/android/dialer/interactions/PhoneNumberInteraction.java b/src/com/android/dialer/interactions/PhoneNumberInteraction.java
index de217ce..8d6de71 100644
--- a/src/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/src/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -45,7 +45,6 @@
 import android.widget.ListAdapter;
 import android.widget.TextView;
 
-import com.android.contacts.common.CallUtil;
 import com.android.contacts.common.Collapser;
 import com.android.contacts.common.Collapser.Collapsible;
 import com.android.contacts.common.MoreContactUtils;
@@ -53,6 +52,7 @@
 import com.android.contacts.common.util.ContactDisplayUtils;
 import com.android.dialer.R;
 import com.android.dialer.contact.ContactUpdateService;
+import com.android.dialer.util.CallIntentUtil;
 import com.android.dialer.util.DialerUtils;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -322,7 +322,7 @@
                         Intent.ACTION_SENDTO, Uri.fromParts("sms", phoneNumber, null));
                 break;
             default:
-                intent = CallUtil.getCallIntent(phoneNumber, callOrigin);
+                intent = CallIntentUtil.getCallIntent(phoneNumber, callOrigin);
                 break;
         }
         DialerUtils.startActivityWithErrorToast(context, intent);
diff --git a/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java b/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
index 6d74cd0..960a31b 100644
--- a/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
+++ b/src/com/android/dialer/interactions/UndemoteOutgoingCallReceiver.java
@@ -30,6 +30,8 @@
 /**
  * This broadcast receiver is used to listen to outgoing calls and undemote formerly demoted
  * contacts if a phone call is made to a phone number belonging to that contact.
+ *
+ * NOTE This doesn't work for corp contacts.
  */
 public class UndemoteOutgoingCallReceiver extends BroadcastReceiver {
 
diff --git a/src/com/android/dialer/list/AllContactsFragment.java b/src/com/android/dialer/list/AllContactsFragment.java
index deabb80..94efc48 100644
--- a/src/com/android/dialer/list/AllContactsFragment.java
+++ b/src/com/android/dialer/list/AllContactsFragment.java
@@ -18,6 +18,7 @@
 
 import android.database.Cursor;
 import android.net.Uri;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.QuickContact;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -83,7 +84,8 @@
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
         final Uri uri = (Uri) view.getTag();
         if (uri != null) {
-            QuickContact.showQuickContact(getActivity(), view, uri, QuickContact.MODE_LARGE, null);
+            QuickContact.showQuickContact(getContext(), view, uri, null,
+                    Phone.CONTENT_ITEM_TYPE);
         }
     }
 
diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
index da4f4a4..82daab5 100644
--- a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
+++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java
@@ -27,10 +27,12 @@
 
     public final static int SHORTCUT_INVALID = -1;
     public final static int SHORTCUT_DIRECT_CALL = 0;
-    public final static int SHORTCUT_ADD_NUMBER_TO_CONTACTS = 1;
-    public final static int SHORTCUT_MAKE_VIDEO_CALL = 2;
+    public final static int SHORTCUT_CREATE_NEW_CONTACT = 1;
+    public final static int SHORTCUT_ADD_TO_EXISTING_CONTACT = 2;
+    public final static int SHORTCUT_SEND_SMS_MESSAGE = 3;
+    public final static int SHORTCUT_MAKE_VIDEO_CALL = 4;
 
-    public final static int SHORTCUT_COUNT = 3;
+    public final static int SHORTCUT_COUNT = 5;
 
     private final boolean[] mShortcutEnabled = new boolean[SHORTCUT_COUNT];
 
@@ -142,10 +144,18 @@
                 text = resources.getString(R.string.search_shortcut_call_number, number);
                 drawableId = R.drawable.ic_search_phone;
                 break;
-            case SHORTCUT_ADD_NUMBER_TO_CONTACTS:
-                text = resources.getString(R.string.search_shortcut_add_to_contacts);
+            case SHORTCUT_CREATE_NEW_CONTACT:
+                text = resources.getString(R.string.search_shortcut_create_new_contact);
                 drawableId = R.drawable.ic_search_add_contact;
                 break;
+            case SHORTCUT_ADD_TO_EXISTING_CONTACT:
+                text = resources.getString(R.string.search_shortcut_add_to_existing_contact);
+                drawableId = R.drawable.ic_person_24dp;
+                break;
+            case SHORTCUT_SEND_SMS_MESSAGE:
+                text = resources.getString(R.string.search_shortcut_send_sms_message);
+                drawableId = R.drawable.ic_textsms_24dp;
+                break;
             case SHORTCUT_MAKE_VIDEO_CALL:
                 text = resources.getString(R.string.search_shortcut_make_video_call);
                 drawableId = R.drawable.ic_videocam;
@@ -153,7 +163,7 @@
             default:
                 throw new IllegalArgumentException("Invalid shortcut type");
         }
-        v.setDrawableResource(R.drawable.search_shortcut_background, drawableId);
+        v.setDrawableResource(drawableId);
         v.setDisplayName(text);
         v.setPhotoPosition(super.getPhotoPosition());
         v.setAdjustSelectionBoundsEnabled(false);
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index af82e40..6e30af2 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -8,6 +8,7 @@
 import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.os.Bundle;
+import android.os.Trace;
 import android.support.v13.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.support.v4.view.ViewPager.OnPageChangeListener;
@@ -23,16 +24,11 @@
 import com.android.contacts.commonbind.analytics.AnalyticsUtil;
 import com.android.dialer.DialtactsActivity;
 import com.android.dialer.R;
-import com.android.dialer.calllog.CallLogAdapter;
 import com.android.dialer.calllog.CallLogFragment;
-import com.android.dialer.calllog.CallLogQuery;
 import com.android.dialer.calllog.CallLogQueryHandler;
 import com.android.dialer.calllog.ContactInfoHelper;
-import com.android.dialer.list.ShortcutCardsAdapter.SwipeableShortcutCard;
 import com.android.dialer.util.DialerUtils;
 import com.android.dialer.widget.ActionBarController;
-import com.android.dialer.widget.OverlappingPaneLayout;
-import com.android.dialer.widget.OverlappingPaneLayout.PanelSlideCallbacks;
 import com.android.dialerbind.ObjectFactory;
 
 import java.util.ArrayList;
@@ -42,11 +38,10 @@
  *
  * Contains a ViewPager that contains various contact lists like the Speed Dial list and the
  * All Contacts list. This will also eventually contain the logic that allows sliding the
- * ViewPager containing the lists up above the shortcut cards and pin it against the top of the
+ * ViewPager containing the lists up above the search bar and pin it against the top of the
  * screen.
  */
-public class ListsFragment extends Fragment implements CallLogQueryHandler.Listener,
-        CallLogAdapter.CallFetcher, ViewPager.OnPageChangeListener {
+public class ListsFragment extends Fragment implements ViewPager.OnPageChangeListener {
 
     private static final boolean DEBUG = DialtactsActivity.DEBUG;
     private static final String TAG = "ListsFragment";
@@ -64,11 +59,7 @@
     private static final String KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE =
             "key_last_dismissed_call_shortcut_date";
 
-    public static final float REMOVE_VIEW_SHOWN_ALPHA = 0.5f;
-    public static final float REMOVE_VIEW_HIDDEN_ALPHA = 1;
-
     public interface HostInterface {
-        public void showCallHistory();
         public ActionBarController getActionBarController();
     }
 
@@ -76,7 +67,6 @@
     private ViewPager mViewPager;
     private ViewPagerTabs mViewPagerTabs;
     private ViewPagerAdapter mViewPagerAdapter;
-    private ListView mShortcutCardsListView;
     private RemoveView mRemoveView;
     private View mRemoveViewContent;
     private SpeedDialFragment mSpeedDialFragment;
@@ -86,13 +76,12 @@
             new ArrayList<OnPageChangeListener>();
 
     private String[] mTabTitles;
+    private int[] mTabIcons;
 
-    private ShortcutCardsAdapter mMergedAdapter;
-    private CallLogAdapter mCallLogAdapter;
-    private CallLogQueryHandler mCallLogQueryHandler;
-    private OverlappingPaneLayout mOverlappingPaneLayout;
-
-    private boolean mIsPanelOpen = true;
+    /**
+     * The position of the currently selected tab.
+     */
+    private int mTabPosition = TAB_INDEX_SPEED_DIAL;
 
     /**
      * Call shortcuts older than this date (persisted in shared preferences) will not show up in
@@ -105,80 +94,6 @@
      */
     private long mCurrentCallShortcutDate = 0;
 
-    private PanelSlideCallbacks mPanelSlideCallbacks = new PanelSlideCallbacks() {
-        @Override
-        public void onPanelSlide(View panel, float slideOffset) {
-            // For every 1 percent that the panel is slid upwards, clip 1 percent off the top
-            // edge of the shortcut card, to achieve the animated effect of the shortcut card
-            // being pushed out of view when the panel is slid upwards. slideOffset is 1 when
-            // the shortcut card is fully exposed, and 0 when completely hidden.
-            float ratioCardHidden = (1 - slideOffset);
-            if (mShortcutCardsListView.getChildCount() > 0) {
-                final SwipeableShortcutCard v =
-                        (SwipeableShortcutCard) mShortcutCardsListView.getChildAt(0);
-                v.clipCard(ratioCardHidden);
-            }
-
-            if (mActionBar != null) {
-                // Amount of available space that is not being hidden by the bottom pane
-                final int topPaneHeight = (int) (slideOffset * mShortcutCardsListView.getHeight());
-
-                final int availableActionBarHeight =
-                        Math.min(mActionBar.getHeight(), topPaneHeight);
-                final ActionBarController controller =
-                        ((HostInterface) getActivity()).getActionBarController();
-                controller.setHideOffset(mActionBar.getHeight() - availableActionBarHeight);
-
-                if (!mActionBar.isShowing()) {
-                    mActionBar.show();
-                }
-            }
-        }
-
-        @Override
-        public void onPanelOpened(View panel) {
-            if (DEBUG) {
-                Log.d(TAG, "onPanelOpened");
-            }
-            mIsPanelOpen = true;
-        }
-
-        @Override
-        public void onPanelClosed(View panel) {
-            if (DEBUG) {
-                Log.d(TAG, "onPanelClosed");
-            }
-            mIsPanelOpen = false;
-        }
-
-        @Override
-        public void onPanelFlingReachesEdge(int velocityY) {
-            if (getCurrentListView() != null) {
-                getCurrentListView().fling(velocityY);
-            }
-        }
-
-        @Override
-        public boolean isScrollableChildUnscrolled() {
-            final AbsListView listView = getCurrentListView();
-            return listView != null && (listView.getChildCount() == 0
-                    || listView.getChildAt(0).getTop() == listView.getPaddingTop());
-        }
-    };
-
-    private AbsListView getCurrentListView() {
-        final int position = mViewPager.getCurrentItem();
-        switch (getRtlPosition(position)) {
-            case TAB_INDEX_SPEED_DIAL:
-                return mSpeedDialFragment == null ? null : mSpeedDialFragment.getListView();
-            case TAB_INDEX_RECENTS:
-                return mRecentsFragment == null ? null : mRecentsFragment.getListView();
-            case TAB_INDEX_ALL_CONTACTS:
-                return mAllContactsFragment == null ? null : mAllContactsFragment.getListView();
-        }
-        throw new IllegalStateException("No fragment at position " + position);
-    }
-
     public class ViewPagerAdapter extends FragmentPagerAdapter {
         public ViewPagerAdapter(FragmentManager fm) {
             super(fm);
@@ -198,7 +113,6 @@
                 case TAB_INDEX_RECENTS:
                     mRecentsFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL,
                             MAX_RECENTS_ENTRIES, System.currentTimeMillis() - OLDEST_RECENTS_DATE);
-                    mRecentsFragment.setHasFooterView(true);
                     return mRecentsFragment;
                 case TAB_INDEX_ALL_CONTACTS:
                     mAllContactsFragment = new AllContactsFragment();
@@ -237,49 +151,38 @@
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
+        Trace.beginSection(TAG + " onCreate");
         super.onCreate(savedInstanceState);
 
-        mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(),
-                this, 1);
+        Trace.beginSection(TAG + " getCurrentCountryIso");
         final String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
-        mCallLogAdapter = ObjectFactory.newCallLogAdapter(getActivity(), this,
-                new ContactInfoHelper(getActivity(), currentCountryIso), null, null, false);
+        Trace.endSection();
 
-        mMergedAdapter = new ShortcutCardsAdapter(getActivity(), this, mCallLogAdapter);
+        Trace.endSection();
     }
 
     @Override
     public void onResume() {
+        Trace.beginSection(TAG + " onResume");
         super.onResume();
         final SharedPreferences prefs = getActivity().getSharedPreferences(
                 DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
         mLastCallShortcutDate = prefs.getLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, 0);
         mActionBar = getActivity().getActionBar();
-        fetchCalls();
-        mCallLogAdapter.setLoading(true);
         if (getUserVisibleHint()) {
             sendScreenViewForPosition(mViewPager.getCurrentItem());
         }
-    }
-
-    @Override
-    public void onPause() {
-        // Wipe the cache to refresh the call shortcut item. This is not that expensive because
-        // it only contains one item.
-        mCallLogAdapter.invalidateCache();
-        super.onPause();
-    }
-
-    @Override
-    public void onDestroy() {
-        mCallLogAdapter.stopRequestProcessing();
-        super.onDestroy();
+        Trace.endSection();
     }
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
+        Trace.beginSection(TAG + " onCreateView");
+        Trace.beginSection(TAG + " inflate view");
         final View parentView = inflater.inflate(R.layout.lists_fragment, container, false);
+        Trace.endSection();
+        Trace.beginSection(TAG + " setup views");
         mViewPager = (ViewPager) parentView.findViewById(R.id.lists_pager);
         mViewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());
         mViewPager.setAdapter(mViewPagerAdapter);
@@ -292,61 +195,24 @@
         mTabTitles[TAB_INDEX_RECENTS] = getResources().getString(R.string.tab_recents);
         mTabTitles[TAB_INDEX_ALL_CONTACTS] = getResources().getString(R.string.tab_all_contacts);
 
+        mTabIcons = new int[TAB_INDEX_COUNT];
+        mTabIcons[TAB_INDEX_SPEED_DIAL] = R.drawable.tab_speed_dial;
+        mTabIcons[TAB_INDEX_RECENTS] = R.drawable.tab_recents;
+        mTabIcons[TAB_INDEX_ALL_CONTACTS] = R.drawable.tab_contacts;
+
         mViewPagerTabs = (ViewPagerTabs) parentView.findViewById(R.id.lists_pager_header);
+        mViewPagerTabs.setTabIcons(mTabIcons);
         mViewPagerTabs.setViewPager(mViewPager);
         addOnPageChangeListener(mViewPagerTabs);
 
-        mShortcutCardsListView = (ListView) parentView.findViewById(R.id.shortcut_card_list);
-        mShortcutCardsListView.setAdapter(mMergedAdapter);
-
         mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view);
         mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
 
-        setupPaneLayout((OverlappingPaneLayout) parentView);
-        mOverlappingPaneLayout = (OverlappingPaneLayout) parentView;
-
+        Trace.endSection();
+        Trace.endSection();
         return parentView;
     }
 
-    @Override
-    public void onVoicemailStatusFetched(Cursor statusCursor) {
-        // no-op
-    }
-
-    @Override
-    public boolean onCallsFetched(Cursor cursor) {
-        mCallLogAdapter.setLoading(false);
-
-        // Save the date of the most recent call log item
-        if (cursor != null && cursor.moveToFirst()) {
-            mCurrentCallShortcutDate = cursor.getLong(CallLogQuery.DATE);
-        }
-
-        mCallLogAdapter.changeCursor(cursor);
-        mMergedAdapter.notifyDataSetChanged();
-
-        // Refresh the overlapping pane to ensure that any changes in the shortcut card height
-        // are appropriately reflected in the overlap position.
-        mOverlappingPaneLayout.refresh();
-
-        // Return true; took ownership of cursor
-        return true;
-    }
-
-    @Override
-    public void fetchCalls() {
-        mCallLogQueryHandler.fetchCalls(CallLogQueryHandler.CALL_TYPE_ALL, mLastCallShortcutDate);
-    }
-
-    public void dismissShortcut(View view) {
-        mLastCallShortcutDate = mCurrentCallShortcutDate;
-        final SharedPreferences prefs = view.getContext().getSharedPreferences(
-                DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE);
-        prefs.edit().putLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, mLastCallShortcutDate)
-                .apply();
-        fetchCalls();
-    }
-
     public void addOnPageChangeListener(OnPageChangeListener onPageChangeListener) {
         if (!mOnPageChangeListeners.contains(onPageChangeListener)) {
             mOnPageChangeListeners.add(onPageChangeListener);
@@ -364,6 +230,8 @@
 
     @Override
     public void onPageSelected(int position) {
+        mTabPosition = getRtlPosition(position);
+
         final int count = mOnPageChangeListeners.size();
         for (int i = 0; i < count; i++) {
             mOnPageChangeListeners.get(i).onPageSelected(position);
@@ -379,40 +247,19 @@
         }
     }
 
+    public int getTabPosition() {
+        return mTabPosition;
+    }
+
     public void showRemoveView(boolean show) {
         mRemoveViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
         mRemoveView.setAlpha(show ? 0 : 1);
         mRemoveView.animate().alpha(show ? 1 : 0).start();
-
-        if (mShortcutCardsListView.getChildCount() > 0) {
-            View v = mShortcutCardsListView.getChildAt(0);
-            v.animate().withLayer()
-                    .alpha(show ? REMOVE_VIEW_SHOWN_ALPHA : REMOVE_VIEW_HIDDEN_ALPHA)
-                    .start();
-        }
     }
 
     public boolean shouldShowActionBar() {
-        return mIsPanelOpen && mActionBar != null;
-    }
-
-    public boolean isPaneOpen() {
-        return mIsPanelOpen;
-    }
-
-    private void setupPaneLayout(OverlappingPaneLayout paneLayout) {
-        // TODO: Remove the notion of a capturable view. The entire view be slideable, once
-        // the framework better supports nested scrolling.
-        paneLayout.setCapturableView(mViewPagerTabs);
-        paneLayout.openPane();
-        paneLayout.setPanelSlideCallbacks(mPanelSlideCallbacks);
-        paneLayout.setIntermediatePinnedOffset(
-                ((HostInterface) getActivity()).getActionBarController().getActionBarHeight());
-
-        LayoutTransition transition = paneLayout.getLayoutTransition();
-        // Turns on animations for all types of layout changes so that they occur for
-        // height changes.
-        transition.enableTransitionType(LayoutTransition.CHANGING);
+        // TODO: Update this based on scroll state.
+        return mActionBar != null;
     }
 
     public SpeedDialFragment getSpeedDialFragment() {
diff --git a/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java b/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
index 5f88776..05780c6 100644
--- a/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
+++ b/src/com/android/dialer/list/PhoneFavoriteSquareTileView.java
@@ -17,6 +17,7 @@
 package com.android.dialer.list;
 
 import android.content.Context;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.QuickContact;
 import android.util.AttributeSet;
 import android.view.View;
@@ -63,7 +64,7 @@
 
     private void launchQuickContact() {
         QuickContact.showQuickContact(getContext(), PhoneFavoriteSquareTileView.this,
-                getLookupUri(), QuickContact.MODE_LARGE, null);
+                getLookupUri(), null, Phone.CONTENT_ITEM_TYPE);
     }
 
     @Override
diff --git a/src/com/android/dialer/list/RegularSearchListAdapter.java b/src/com/android/dialer/list/RegularSearchListAdapter.java
index f1f2ae0..6c70458 100644
--- a/src/com/android/dialer/list/RegularSearchListAdapter.java
+++ b/src/com/android/dialer/list/RegularSearchListAdapter.java
@@ -18,12 +18,10 @@
 import android.content.Context;
 import android.database.Cursor;
 import android.net.Uri;
-import android.provider.ContactsContract;
 import android.text.TextUtils;
 
 import com.android.contacts.common.CallUtil;
 import com.android.contacts.common.list.DirectoryPartition;
-import com.android.contacts.common.list.PhoneNumberListAdapter;
 import com.android.dialer.calllog.ContactInfo;
 import com.android.dialer.service.CachedNumberLookupService;
 import com.android.dialer.service.CachedNumberLookupService.CachedContactInfo;
@@ -35,6 +33,8 @@
 
     public RegularSearchListAdapter(Context context) {
         super(context);
+        setShortcutEnabled(SHORTCUT_CREATE_NEW_CONTACT, false);
+        setShortcutEnabled(SHORTCUT_ADD_TO_EXISTING_CONTACT, false);
     }
 
     public CachedContactInfo getContactInfo(
@@ -68,13 +68,12 @@
 
     @Override
     public void setQueryString(String queryString) {
-        final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString());
+        // Don't show actions if the query string contains a letter.
+        final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString())
+                && hasDigitsInQueryString();
         boolean changed = false;
         changed |= setShortcutEnabled(SHORTCUT_DIRECT_CALL, showNumberShortcuts);
-        // Either one of the add contacts options should be enabled. If the user entered
-        // a dialable number, then clicking add to contact should add it as a number.
-        // Otherwise, it should add it to a new contact as a name.
-        changed |= setShortcutEnabled(SHORTCUT_ADD_NUMBER_TO_CONTACTS, showNumberShortcuts);
+        changed |= setShortcutEnabled(SHORTCUT_SEND_SMS_MESSAGE, showNumberShortcuts);
         changed |= setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL,
                 showNumberShortcuts && CallUtil.isVideoEnabled(getContext()));
         if (changed) {
@@ -82,4 +81,18 @@
         }
         super.setQueryString(queryString);
     }
+
+    /**
+     * Whether there is at least one digit in the query string.
+     */
+    private boolean hasDigitsInQueryString() {
+        String queryString = getQueryString();
+        int length = queryString.length();
+        for (int i = 0; i < length; i++) {
+            if (Character.isDigit(queryString.charAt(i))) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java
index e50d0d8..73127a2 100644
--- a/src/com/android/dialer/list/SearchFragment.java
+++ b/src/com/android/dialer/list/SearchFragment.java
@@ -15,11 +15,18 @@
  */
 package com.android.dialer.list;
 
+import android.animation.Animator;
+import android.animation.AnimatorInflater;
+import android.animation.AnimatorListenerAdapter;
 import android.app.Activity;
+import android.app.DialogFragment;
 import android.content.Intent;
 import android.content.res.Resources;
+import android.net.Uri;
 import android.os.Bundle;
+import android.provider.ContactsContract;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.View;
 import android.view.animation.Interpolator;
 import android.widget.AbsListView;
@@ -32,12 +39,15 @@
 import com.android.contacts.common.list.PhoneNumberPickerFragment;
 import com.android.contacts.common.util.ViewUtil;
 import com.android.contacts.commonbind.analytics.AnalyticsUtil;
+import com.android.dialer.dialpad.DialpadFragment.ErrorDialogFragment;
 import com.android.dialer.DialtactsActivity;
 import com.android.dialer.R;
 import com.android.dialer.util.DialerUtils;
 import com.android.phone.common.animation.AnimUtils;
 
 public class SearchFragment extends PhoneNumberPickerFragment {
+    private static final String TAG  = SearchFragment.class.getSimpleName();
+    private static final String SMS_URI_PREFIX = "sms:";
 
     private OnListFragmentScrolledListener mActivityScrollListener;
 
@@ -124,6 +134,26 @@
     }
 
     @Override
+    public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
+        Animator animator = null;
+        if (nextAnim != 0) {
+            animator = AnimatorInflater.loadAnimator(getActivity(), nextAnim);
+        }
+        if (animator != null) {
+            final View view = getView();
+            final int oldLayerType = view.getLayerType();
+            view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+            animator.addListener(new AnimatorListenerAdapter() {
+                @Override
+                public void onAnimationEnd(Animator animation) {
+                    view.setLayerType(oldLayerType, null);
+                }
+            });
+        }
+        return animator;
+    }
+
+    @Override
     protected void setSearchMode(boolean flag) {
         super.setSearchMode(flag);
         // This hides the "All contacts with phone numbers" header in the search fragment
@@ -137,6 +167,32 @@
         mAddToContactNumber = addToContactNumber;
     }
 
+    /**
+     * Return true if phone number is prohibited by a value -
+     * (R.string.config_prohibited_phone_number_regexp) in the config files. False otherwise.
+     */
+    public boolean checkForProhibitedPhoneNumber(String number) {
+        // Regular expression prohibiting manual phone call. Can be empty i.e. "no rule".
+        String prohibitedPhoneNumberRegexp = getResources().getString(
+            R.string.config_prohibited_phone_number_regexp);
+
+        // "persist.radio.otaspdial" is a temporary hack needed for one carrier's automated
+        // test equipment.
+        if (number != null
+                && !TextUtils.isEmpty(prohibitedPhoneNumberRegexp)
+                && number.matches(prohibitedPhoneNumberRegexp)) {
+            Log.d(TAG, "The phone number is prohibited explicitly by a rule.");
+            if (getActivity() != null) {
+                DialogFragment dialogFragment = ErrorDialogFragment.newInstance(
+                        R.string.dialog_phone_call_prohibited_message);
+                dialogFragment.show(getFragmentManager(), "phone_prohibited_dialog");
+            }
+
+            return true;
+        }
+        return false;
+    }
+
     @Override
     protected ContactEntryListAdapter createListAdapter() {
         DialerPhoneNumberListAdapter adapter = new DialerPhoneNumberListAdapter(getActivity());
@@ -150,28 +206,48 @@
         final DialerPhoneNumberListAdapter adapter = (DialerPhoneNumberListAdapter) getAdapter();
         final int shortcutType = adapter.getShortcutTypeFromPosition(position);
         final OnPhoneNumberPickerActionListener listener;
+        final Intent intent;
+        final String number;
+
+        Log.i(TAG, "onItemClick: shortcutType=" + shortcutType);
 
         switch (shortcutType) {
             case DialerPhoneNumberListAdapter.SHORTCUT_INVALID:
                 super.onItemClick(position, id);
                 break;
             case DialerPhoneNumberListAdapter.SHORTCUT_DIRECT_CALL:
+                number = adapter.getQueryString(); 
                 listener = getOnPhoneNumberPickerListener();
-                if (listener != null) {
-                    listener.onCallNumberDirectly(getQueryString());
+                if (listener != null && !checkForProhibitedPhoneNumber(number)) {
+                    listener.onCallNumberDirectly(number);
                 }
                 break;
-            case DialerPhoneNumberListAdapter.SHORTCUT_ADD_NUMBER_TO_CONTACTS:
-                final String number = TextUtils.isEmpty(mAddToContactNumber) ?
+            case DialerPhoneNumberListAdapter.SHORTCUT_CREATE_NEW_CONTACT:
+                number = TextUtils.isEmpty(mAddToContactNumber) ?
                         adapter.getFormattedQueryString() : mAddToContactNumber;
-                final Intent intent = DialtactsActivity.getAddNumberToContactIntent(number);
+                intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
+                intent.putExtra(ContactsContract.Intents.Insert.PHONE, number);
+                intent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE,
+                        ContactsContract.CommonDataKinds.Phone.TYPE_MAIN);
+                DialerUtils.startActivityWithErrorToast(getActivity(), intent);
+                break;
+            case DialerPhoneNumberListAdapter.SHORTCUT_ADD_TO_EXISTING_CONTACT:
+                number = TextUtils.isEmpty(mAddToContactNumber) ?
+                        adapter.getFormattedQueryString() : mAddToContactNumber;
+                intent = DialtactsActivity.getAddNumberToContactIntent(number);
                 DialerUtils.startActivityWithErrorToast(getActivity(), intent,
                         R.string.add_contact_not_available);
                 break;
+            case DialerPhoneNumberListAdapter.SHORTCUT_SEND_SMS_MESSAGE:
+                intent = new Intent(
+                        Intent.ACTION_VIEW, Uri.parse(SMS_URI_PREFIX + getQueryString()));
+                DialerUtils.startActivityWithErrorToast(getActivity(), intent);
+                break;
             case DialerPhoneNumberListAdapter.SHORTCUT_MAKE_VIDEO_CALL:
+                number = adapter.getQueryString(); 
                 listener = getOnPhoneNumberPickerListener();
-                if (listener != null) {
-                    listener.onCallNumberDirectly(getQueryString(), true /* isVideoCall */);
+                if (listener != null && !checkForProhibitedPhoneNumber(number)) {
+                    listener.onCallNumberDirectly(number, true /* isVideoCall */);
                 }
                 break;
         }
diff --git a/src/com/android/dialer/list/ShortcutCardsAdapter.java b/src/com/android/dialer/list/ShortcutCardsAdapter.java
deleted file mode 100644
index 6410eab..0000000
--- a/src/com/android/dialer/list/ShortcutCardsAdapter.java
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc.
- * Licensed to 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.dialer.list;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.database.DataSetObserver;
-import android.graphics.Rect;
-import android.text.TextUtils;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.android.dialer.R;
-import com.android.dialer.calllog.CallLogAdapter;
-import com.android.dialer.calllog.CallLogNotificationsHelper;
-import com.android.dialer.calllog.CallLogQueryHandler;
-import com.android.dialer.list.SwipeHelper.OnItemGestureListener;
-import com.android.dialer.list.SwipeHelper.SwipeHelperCallback;
-
-/**
- * An adapter that displays call shortcuts from {@link com.android.dialer.calllog.CallLogAdapter}
- * in the form of cards.
- */
-public class ShortcutCardsAdapter extends BaseAdapter {
-
-    private class CustomDataSetObserver extends DataSetObserver {
-        @Override
-        public void onChanged() {
-            notifyDataSetChanged();
-        }
-    }
-
-    private static final String TAG = ShortcutCardsAdapter.class.getSimpleName();
-    private static final float CLIP_CARD_BARELY_HIDDEN_RATIO = 0.001f;
-    private static final float CLIP_CARD_MOSTLY_HIDDEN_RATIO = 0.9f;
-    // Fade out 5x faster than the hidden ratio.
-    private static final float CLIP_CARD_OPACITY_RATIO = 5f;
-
-    private final CallLogAdapter mCallLogAdapter;
-
-    private final ListsFragment mFragment;
-
-    private final int mCallLogMarginHorizontal;
-    private final int mCallLogMarginTop;
-    private final int mCallLogMarginBottom;
-    private final int mCallLogPaddingStart;
-    private final int mCallLogPaddingTop;
-    private final int mCallLogPaddingBottom;
-    private final int mCardMaxHorizontalClip;
-    private final int mShortCardBackgroundColor;
-
-    private final Context mContext;
-
-    private final DataSetObserver mObserver;
-
-    private final CallLogQueryHandler mCallLogQueryHandler;
-
-    private final OnItemGestureListener mCallLogOnItemSwipeListener =
-            new OnItemGestureListener() {
-        @Override
-        public void onSwipe(View view) {
-            mCallLogQueryHandler.markNewCallsAsOld();
-            mCallLogQueryHandler.markNewVoicemailsAsOld();
-            CallLogNotificationsHelper.removeMissedCallNotifications(mContext);
-            CallLogNotificationsHelper.updateVoicemailNotifications(mContext);
-            mFragment.dismissShortcut(view);
-        }
-
-        @Override
-        public void onTouch() {}
-
-        @Override
-        public boolean isSwipeEnabled() {
-            return true;
-        }
-    };
-
-    private final CallLogQueryHandler.Listener mCallLogQueryHandlerListener =
-            new CallLogQueryHandler.Listener() {
-        @Override
-        public void onVoicemailStatusFetched(Cursor statusCursor) {}
-
-        @Override
-        public boolean onCallsFetched(Cursor combinedCursor) {
-            mCallLogAdapter.invalidateCache();
-            mCallLogAdapter.changeCursor(combinedCursor);
-            mCallLogAdapter.notifyDataSetChanged();
-            // Return true; took ownership of cursor
-            return true;
-        }
-    };
-
-    public ShortcutCardsAdapter(Context context,
-            ListsFragment fragment,
-            CallLogAdapter callLogAdapter) {
-        final Resources resources = context.getResources();
-        mContext = context;
-        mFragment = fragment;
-        mCardMaxHorizontalClip =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_horizontal_clip_limit);
-        mCallLogMarginHorizontal =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_horizontal);
-        mCallLogMarginTop =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_top);
-        mCallLogMarginBottom =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_margin_bottom);
-        mCallLogPaddingStart =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_start);
-        mCallLogPaddingTop =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_top);
-        mCallLogPaddingBottom =
-                resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding_bottom);
-        mShortCardBackgroundColor = resources.getColor(R.color.call_log_expanded_background_color);
-
-
-        mCallLogAdapter = callLogAdapter;
-        mObserver = new CustomDataSetObserver();
-        mCallLogAdapter.registerDataSetObserver(mObserver);
-        mCallLogQueryHandler = new CallLogQueryHandler(mContext.getContentResolver(),
-                mCallLogQueryHandlerListener);
-    }
-
-    /**
-     * Determines the number of items in the adapter.
-     * mCallLogAdapter contains the item for the most recent caller.
-     * mContactTileAdapter contains the starred contacts.
-     * The +1 is to account for the presence of the favorites menu.
-     *
-     * @return Number of items in the adapter.
-     */
-    @Override
-    public int getCount() {
-        return mCallLogAdapter.getCount();
-    }
-
-    @Override
-    public Object getItem(int position) {
-        return mCallLogAdapter.getItem(position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public boolean hasStableIds() {
-        return true;
-    }
-
-    /**
-     * Determine the number of view types present.
-     */
-    @Override
-    public int getViewTypeCount() {
-        return mCallLogAdapter.getViewTypeCount();
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return mCallLogAdapter.getItemViewType(position);
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        final SwipeableShortcutCard wrapper;
-        if (convertView == null) {
-            wrapper = new SwipeableShortcutCard(mContext);
-            wrapper.setOnItemSwipeListener(mCallLogOnItemSwipeListener);
-        } else {
-            wrapper = (SwipeableShortcutCard) convertView;
-        }
-
-        // Special case wrapper view for the most recent call log item. This allows
-        // us to create a card-like effect for the more recent call log item in
-        // the PhoneFavoriteMergedAdapter, but keep the original look of the item in
-        // the CallLogAdapter.
-        final View view = mCallLogAdapter.getView(position, convertView == null ?
-                null : wrapper.getChildAt(0), parent
-        );
-        wrapper.removeAllViews();
-        wrapper.prepareChildView(view);
-        wrapper.addView(view);
-        wrapper.setVisibility(View.VISIBLE);
-        return wrapper;
-    }
-
-    @Override
-    public boolean areAllItemsEnabled() {
-        return mCallLogAdapter.areAllItemsEnabled();
-    }
-
-    @Override
-    public boolean isEnabled(int position) {
-        return mCallLogAdapter.isEnabled(position);
-    }
-
-    /**
-     * The swipeable call log row.
-     */
-    class SwipeableShortcutCard extends FrameLayout implements SwipeHelperCallback {
-        private SwipeHelper mSwipeHelper;
-        private OnItemGestureListener mOnItemSwipeListener;
-
-        private float mPreviousTranslationZ = 0;
-        private Rect mClipRect = new Rect();
-
-        public SwipeableShortcutCard(Context context) {
-            super(context);
-            final float densityScale = getResources().getDisplayMetrics().density;
-            final float pagingTouchSlop = ViewConfiguration.get(context)
-                    .getScaledPagingTouchSlop();
-            mSwipeHelper = new SwipeHelper(context, SwipeHelper.X, this,
-                    densityScale, pagingTouchSlop);
-        }
-
-        private void prepareChildView(View view) {
-            // Override CallLogAdapter's accessibility behavior; don't expand the shortcut card.
-            view.setAccessibilityDelegate(null);
-            view.setBackgroundResource(R.drawable.rounded_corner_bg);
-
-            final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
-                    FrameLayout.LayoutParams.MATCH_PARENT,
-                    FrameLayout.LayoutParams.WRAP_CONTENT);
-            params.setMargins(
-                    mCallLogMarginHorizontal,
-                    mCallLogMarginTop,
-                    mCallLogMarginHorizontal,
-                    mCallLogMarginBottom);
-            view.setLayoutParams(params);
-
-            LinearLayout actionView =
-                    (LinearLayout) view.findViewById(R.id.primary_action_view);
-            actionView.setPaddingRelative(
-                    mCallLogPaddingStart,
-                    mCallLogPaddingTop,
-                    actionView.getPaddingEnd(),
-                    mCallLogPaddingBottom);
-
-            // TODO: Set content description including type/location and time information.
-            TextView nameView = (TextView) actionView.findViewById(R.id.name);
-
-            actionView.setContentDescription(
-                    TextUtils.expandTemplate(
-                            getResources().getString(R.string.description_call_back_action),
-                            nameView.getText()));
-
-            mPreviousTranslationZ = getResources().getDimensionPixelSize(
-                    R.dimen.recent_call_log_item_translation_z);
-            view.setTranslationZ(mPreviousTranslationZ);
-
-            final ViewGroup callLogItem = (ViewGroup) view.findViewById(R.id.call_log_list_item);
-            // Reset the internal call log item view if it is being recycled
-            callLogItem.setTranslationX(0);
-            callLogItem.setTranslationY(0);
-            callLogItem.setAlpha(1);
-            callLogItem.setClipBounds(null);
-            setChildrenOpacity(callLogItem, 1.0f);
-
-            callLogItem.findViewById(R.id.call_log_row)
-                    .setBackgroundColor(mShortCardBackgroundColor);
-
-            callLogItem.findViewById(R.id.call_indicator_icon).setVisibility(View.VISIBLE);
-        }
-
-        @Override
-        public View getChildAtPosition(MotionEvent ev) {
-            return getChildCount() > 0 ? getChildAt(0) : null;
-        }
-
-        @Override
-        public View getChildContentView(View v) {
-            return v.findViewById(R.id.call_log_list_item);
-        }
-
-        @Override
-        public void onScroll() {}
-
-        @Override
-        public boolean canChildBeDismissed(View v) {
-            return true;
-        }
-
-        @Override
-        public void onBeginDrag(View v) {
-            // We do this so the underlying ScrollView knows that it won't get
-            // the chance to intercept events anymore
-            requestDisallowInterceptTouchEvent(true);
-        }
-
-        @Override
-        public void onChildDismissed(View v) {
-            if (v != null && mOnItemSwipeListener != null) {
-                mOnItemSwipeListener.onSwipe(v);
-            }
-        }
-
-        @Override
-        public void onDragCancelled(View v) {}
-
-        @Override
-        public boolean onInterceptTouchEvent(MotionEvent ev) {
-            if (mSwipeHelper != null) {
-                return mSwipeHelper.onInterceptTouchEvent(ev) || super.onInterceptTouchEvent(ev);
-            } else {
-                return super.onInterceptTouchEvent(ev);
-            }
-        }
-
-        @Override
-        public boolean onTouchEvent(MotionEvent ev) {
-            if (mSwipeHelper != null) {
-                return mSwipeHelper.onTouchEvent(ev) || super.onTouchEvent(ev);
-            } else {
-                return super.onTouchEvent(ev);
-            }
-        }
-
-        public void setOnItemSwipeListener(OnItemGestureListener listener) {
-            mOnItemSwipeListener = listener;
-        }
-
-        /**
-         * Clips the card by a specified amount.
-         *
-         * @param ratioHidden A float indicating how much of each edge of the card should be
-         *         clipped. If 0, the entire card is displayed. If 0.5f, each edge is hidden
-         *         entirely, thus obscuring the entire card.
-         */
-        public void clipCard(float ratioHidden) {
-            final View viewToClip = getChildAt(0);
-            if (viewToClip == null) {
-                return;
-            }
-            int width = viewToClip.getWidth();
-            int height = viewToClip.getHeight();
-
-            if (ratioHidden <= CLIP_CARD_BARELY_HIDDEN_RATIO) {
-                viewToClip.setTranslationZ(mPreviousTranslationZ);
-            } else if (viewToClip.getTranslationZ() != 0){
-                mPreviousTranslationZ = viewToClip.getTranslationZ();
-                viewToClip.setTranslationZ(0);
-            }
-
-            if (ratioHidden > CLIP_CARD_MOSTLY_HIDDEN_RATIO) {
-                mClipRect.set(0, 0 , 0, 0);
-                setVisibility(View.INVISIBLE);
-            } else {
-                setVisibility(View.VISIBLE);
-                int newTop = (int) (ratioHidden * height);
-                mClipRect.set(0, newTop, width, height);
-
-                // Since the pane will be overlapping with the action bar, apply a vertical offset
-                // to top align the clipped card in the viewable area;
-                viewToClip.setTranslationY(-newTop);
-            }
-            viewToClip.setClipBounds(mClipRect);
-
-            // If the view has any children, fade them out of view.
-            final ViewGroup viewGroup = (ViewGroup) viewToClip;
-            setChildrenOpacity(
-                    viewGroup, Math.max(0, 1 - (CLIP_CARD_OPACITY_RATIO  * ratioHidden)));
-        }
-
-        private void setChildrenOpacity(ViewGroup viewGroup, float alpha) {
-            final int count = viewGroup.getChildCount();
-            for (int i = 0; i < count; i++) {
-                viewGroup.getChildAt(i).setAlpha(alpha);
-            }
-        }
-    }
-}
diff --git a/src/com/android/dialer/list/SmartDialNumberListAdapter.java b/src/com/android/dialer/list/SmartDialNumberListAdapter.java
index 04c0d62..fe27a25 100644
--- a/src/com/android/dialer/list/SmartDialNumberListAdapter.java
+++ b/src/com/android/dialer/list/SmartDialNumberListAdapter.java
@@ -20,15 +20,12 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Callable;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.contacts.common.CallUtil;
 import com.android.contacts.common.list.ContactListItemView;
-import com.android.contacts.common.list.PhoneNumberListAdapter;
-import com.android.contacts.common.list.PhoneNumberListAdapter.PhoneQuery;
 import com.android.dialer.dialpad.SmartDialCursorLoader;
 import com.android.dialer.dialpad.SmartDialNameMatcher;
 import com.android.dialer.dialpad.SmartDialPrefix;
@@ -49,6 +46,7 @@
     public SmartDialNumberListAdapter(Context context) {
         super(context);
         mNameMatcher = new SmartDialNameMatcher("", SmartDialPrefix.getMap());
+        setShortcutEnabled(SmartDialNumberListAdapter.SHORTCUT_DIRECT_CALL, false);
 
         if (DEBUG) {
             Log.v(TAG, "Constructing List Adapter");
@@ -119,7 +117,9 @@
     public void setQueryString(String queryString) {
         final boolean showNumberShortcuts = !TextUtils.isEmpty(getFormattedQueryString());
         boolean changed = false;
-        changed |= setShortcutEnabled(SHORTCUT_ADD_NUMBER_TO_CONTACTS, showNumberShortcuts);
+        changed |= setShortcutEnabled(SHORTCUT_CREATE_NEW_CONTACT, showNumberShortcuts);
+        changed |= setShortcutEnabled(SHORTCUT_ADD_TO_EXISTING_CONTACT, showNumberShortcuts);
+        changed |= setShortcutEnabled(SHORTCUT_SEND_SMS_MESSAGE, showNumberShortcuts);
         changed |= setShortcutEnabled(SHORTCUT_MAKE_VIDEO_CALL,
                 showNumberShortcuts && CallUtil.isVideoEnabled(getContext()));
         if (changed) {
diff --git a/src/com/android/dialer/list/SmartDialSearchFragment.java b/src/com/android/dialer/list/SmartDialSearchFragment.java
index 4f0ce72..082bc43 100644
--- a/src/com/android/dialer/list/SmartDialSearchFragment.java
+++ b/src/com/android/dialer/list/SmartDialSearchFragment.java
@@ -38,11 +38,8 @@
         SmartDialNumberListAdapter adapter = new SmartDialNumberListAdapter(getActivity());
         adapter.setUseCallableUri(super.usesCallableUri());
         adapter.setQuickContactEnabled(true);
-        // Disable the direct call shortcut for the smart dial fragment, since the call button
-        // will already be showing anyway.
-        adapter.setShortcutEnabled(SmartDialNumberListAdapter.SHORTCUT_DIRECT_CALL, false);
-        adapter.setShortcutEnabled(SmartDialNumberListAdapter.SHORTCUT_ADD_NUMBER_TO_CONTACTS,
-                false);
+        // Set adapter's query string to restore previous instance state.
+        adapter.setQueryString(getQueryString());
         return adapter;
     }
 
diff --git a/src/com/android/dialer/list/SpeedDialFragment.java b/src/com/android/dialer/list/SpeedDialFragment.java
index 63f1f34..e72b250 100644
--- a/src/com/android/dialer/list/SpeedDialFragment.java
+++ b/src/com/android/dialer/list/SpeedDialFragment.java
@@ -28,6 +28,7 @@
 import android.graphics.Rect;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Trace;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -38,10 +39,11 @@
 import android.widget.AbsListView;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
+import android.widget.FrameLayout;
+import android.widget.FrameLayout.LayoutParams;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.RelativeLayout;
-import android.widget.RelativeLayout.LayoutParams;
 
 import com.android.contacts.common.ContactPhotoManager;
 import com.android.contacts.common.ContactTileLoaderFactory;
@@ -68,7 +70,7 @@
      */
     private static final long KEY_REMOVED_ITEM_HEIGHT = Long.MAX_VALUE;
 
-    private static final String TAG = SpeedDialFragment.class.getSimpleName();
+    private static final String TAG = "SpeedDialFragment";
     private static final boolean DEBUG = false;
 
     private int mAnimationDuration;
@@ -180,21 +182,26 @@
     @Override
     public void onCreate(Bundle savedState) {
         if (DEBUG) Log.d(TAG, "onCreate()");
+        Trace.beginSection(TAG + " onCreate");
         super.onCreate(savedState);
 
         mAnimationDuration = getResources().getInteger(R.integer.fade_duration);
+        Trace.endSection();
     }
 
     @Override
     public void onResume() {
+        Trace.beginSection(TAG + " onResume");
         super.onResume();
 
         getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad();
+        Trace.endSection();
     }
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
+        Trace.beginSection(TAG + " onCreateView");
         mParentView = inflater.inflate(R.layout.speed_dial_fragment, container, false);
 
         mListView = (PhoneFavoriteListView) mParentView.findViewById(R.id.contact_tile_list);
@@ -208,7 +215,6 @@
                 (ImageView) getActivity().findViewById(R.id.contact_tile_drag_shadow_overlay);
         mListView.setDragShadowOverlay(dragShadowOverlay);
 
-        final Resources resources = getResources();
         mEmptyView = mParentView.findViewById(R.id.empty_list_view);
         DialerUtils.configureEmptyListView(
                 mEmptyView, R.drawable.empty_speed_dial, R.string.speed_dial_empty, getResources());
@@ -224,7 +230,7 @@
         mListView.setOnScrollListener(mScrollListener);
         mListView.setFastScrollEnabled(false);
         mListView.setFastScrollAlwaysVisible(false);
-
+        Trace.endSection();
         return mParentView;
     }
 
@@ -239,7 +245,7 @@
         final int listViewVisibility = visible ? View.GONE : View.VISIBLE;
 
         if (previousVisibility != emptyViewVisibility) {
-            final RelativeLayout.LayoutParams params = (LayoutParams) mContactTileFrame
+            final FrameLayout.LayoutParams params = (LayoutParams) mContactTileFrame
                     .getLayoutParams();
             params.height = visible ? LayoutParams.WRAP_CONTENT : LayoutParams.MATCH_PARENT;
             mContactTileFrame.setLayoutParams(params);
diff --git a/src/com/android/dialer/list/SwipeHelper.java b/src/com/android/dialer/list/SwipeHelper.java
deleted file mode 100644
index 03300df4..0000000
--- a/src/com/android/dialer/list/SwipeHelper.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc.
- * Licensed to 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.dialer.list;
-
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.ObjectAnimator;
-import android.animation.ValueAnimator;
-import android.animation.ValueAnimator.AnimatorUpdateListener;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.RectF;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.VelocityTracker;
-import android.view.View;
-import android.view.animation.LinearInterpolator;
-
-import com.android.dialer.R;
-
-/**
- * Copy of packages/apps/UnifiedEmail - com.android.mail.ui.SwipeHelper with changes.
- */
-public class SwipeHelper {
-    static final String TAG = SwipeHelper.class.getSimpleName();
-    private static final boolean DEBUG_INVALIDATE = false;
-    private static final boolean CONSTRAIN_SWIPE = true;
-    private static final boolean FADE_OUT_DURING_SWIPE = true;
-    private static final boolean DISMISS_IF_SWIPED_FAR_ENOUGH = true;
-    private static final boolean LOG_SWIPE_DISMISS_VELOCITY = false; // STOPSHIP - DEBUG ONLY
-
-    public static final int IS_SWIPEABLE_TAG = R.id.is_swipeable_tag;
-    public static final Object IS_SWIPEABLE = new Object();
-
-    public static final int X = 0;
-    public static final int Y = 1;
-
-    private static LinearInterpolator sLinearInterpolator = new LinearInterpolator();
-
-    private static int SWIPE_ESCAPE_VELOCITY = -1;
-    private static int DEFAULT_ESCAPE_ANIMATION_DURATION;
-    private static int MAX_ESCAPE_ANIMATION_DURATION;
-    private static int MAX_DISMISS_VELOCITY;
-    private static int SNAP_ANIM_LEN;
-    private static int SWIPE_SCROLL_SLOP;
-    private static float MIN_SWIPE;
-    private static float MIN_VERT;
-    private static float MIN_LOCK;
-
-    public static float ALPHA_FADE_START = 0f; // fraction of thumbnail width
-                                               // where fade starts
-    static final float ALPHA_FADE_END = 0.7f; // fraction of thumbnail width
-                                              // beyond which alpha->0
-    private static final float FACTOR = 1.2f;
-
-    private static final int PROTECTION_PADDING = 50;
-
-    private float mMinAlpha = 0.3f;
-
-    private float mPagingTouchSlop;
-    private final SwipeHelperCallback mCallback;
-    private final int mSwipeDirection;
-    private final VelocityTracker mVelocityTracker;
-
-    private float mInitialTouchPosX;
-    private boolean mDragging;
-    private View mCurrView;
-    private View mCurrAnimView;
-    private boolean mCanCurrViewBeDimissed;
-    private float mDensityScale;
-    private float mLastY;
-    private float mInitialTouchPosY;
-
-    private float mStartAlpha;
-    private boolean mProtected = false;
-
-    private float mChildSwipedFarEnoughFactor = 0.4f;
-    private float mChildSwipedFastEnoughFactor = 0.05f;
-
-    public SwipeHelper(Context context, int swipeDirection, SwipeHelperCallback callback, float densityScale,
-            float pagingTouchSlop) {
-        mCallback = callback;
-        mSwipeDirection = swipeDirection;
-        mVelocityTracker = VelocityTracker.obtain();
-        mDensityScale = densityScale;
-        mPagingTouchSlop = pagingTouchSlop;
-        if (SWIPE_ESCAPE_VELOCITY == -1) {
-            Resources res = context.getResources();
-            SWIPE_ESCAPE_VELOCITY = res.getInteger(R.integer.swipe_escape_velocity);
-            DEFAULT_ESCAPE_ANIMATION_DURATION = res.getInteger(R.integer.escape_animation_duration);
-            MAX_ESCAPE_ANIMATION_DURATION = res.getInteger(R.integer.max_escape_animation_duration);
-            MAX_DISMISS_VELOCITY = res.getInteger(R.integer.max_dismiss_velocity);
-            SNAP_ANIM_LEN = res.getInteger(R.integer.snap_animation_duration);
-            SWIPE_SCROLL_SLOP = res.getInteger(R.integer.swipe_scroll_slop);
-            MIN_SWIPE = res.getDimension(R.dimen.min_swipe);
-            MIN_VERT = res.getDimension(R.dimen.min_vert);
-            MIN_LOCK = res.getDimension(R.dimen.min_lock);
-        }
-    }
-
-    public void setDensityScale(float densityScale) {
-        mDensityScale = densityScale;
-    }
-
-    public void setPagingTouchSlop(float pagingTouchSlop) {
-        mPagingTouchSlop = pagingTouchSlop;
-    }
-
-    public void setChildSwipedFarEnoughFactor(float factor) {
-        mChildSwipedFarEnoughFactor = factor;
-    }
-
-    public void setChildSwipedFastEnoughFactor(float factor) {
-        mChildSwipedFastEnoughFactor = factor;
-    }
-
-    private float getVelocity(VelocityTracker vt) {
-        return mSwipeDirection == X ? vt.getXVelocity() :
-                vt.getYVelocity();
-    }
-
-    private ObjectAnimator createTranslationAnimation(View v, float newPos) {
-        ObjectAnimator anim = ObjectAnimator.ofFloat(v,
-                mSwipeDirection == X ? "translationX" : "translationY", newPos);
-        return anim;
-    }
-
-    private ObjectAnimator createDismissAnimation(View v, float newPos, int duration) {
-        ObjectAnimator anim = createTranslationAnimation(v, newPos);
-        anim.setInterpolator(sLinearInterpolator);
-        anim.setDuration(duration);
-        return anim;
-    }
-
-    private float getPerpendicularVelocity(VelocityTracker vt) {
-        return mSwipeDirection == X ? vt.getYVelocity() :
-                vt.getXVelocity();
-    }
-
-    private void setTranslation(View v, float translate) {
-        if (mSwipeDirection == X) {
-            v.setTranslationX(translate);
-        } else {
-            v.setTranslationY(translate);
-        }
-    }
-
-    private float getSize(View v) {
-        return mSwipeDirection == X ? v.getMeasuredWidth() :
-                v.getMeasuredHeight();
-    }
-
-    public void setMinAlpha(float minAlpha) {
-        mMinAlpha = minAlpha;
-    }
-
-    private float getAlphaForOffset(View view) {
-        float viewSize = getSize(view);
-        final float fadeSize = ALPHA_FADE_END * viewSize;
-        float result = mStartAlpha;
-        float pos = view.getTranslationX();
-        if (pos >= viewSize * ALPHA_FADE_START) {
-            result = mStartAlpha - (pos - viewSize * ALPHA_FADE_START) / fadeSize;
-        } else if (pos < viewSize * (mStartAlpha - ALPHA_FADE_START)) {
-            result = mStartAlpha + (viewSize * ALPHA_FADE_START + pos) / fadeSize;
-        }
-        return Math.max(mMinAlpha, result);
-    }
-
-    // invalidate the view's own bounds all the way up the view hierarchy
-    public static void invalidateGlobalRegion(View view) {
-        invalidateGlobalRegion(
-                view,
-                new RectF(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()));
-    }
-
-    // invalidate a rectangle relative to the view's coordinate system all the way up the view
-    // hierarchy
-    public static void invalidateGlobalRegion(View view, RectF childBounds) {
-        // childBounds.offset(view.getTranslationX(), view.getTranslationY());
-        if (DEBUG_INVALIDATE)
-            Log.v(TAG, "-------------");
-        while (view.getParent() != null && view.getParent() instanceof View) {
-            view = (View) view.getParent();
-            view.getMatrix().mapRect(childBounds);
-            view.invalidate((int) Math.floor(childBounds.left),
-                    (int) Math.floor(childBounds.top),
-                    (int) Math.ceil(childBounds.right),
-                    (int) Math.ceil(childBounds.bottom));
-            if (DEBUG_INVALIDATE) {
-                Log.v(TAG, "INVALIDATE(" + (int) Math.floor(childBounds.left)
-                        + "," + (int) Math.floor(childBounds.top)
-                        + "," + (int) Math.ceil(childBounds.right)
-                        + "," + (int) Math.ceil(childBounds.bottom));
-            }
-        }
-    }
-
-    public boolean onInterceptTouchEvent(MotionEvent ev) {
-        final int action = ev.getAction();
-        switch (action) {
-            case MotionEvent.ACTION_DOWN:
-                mLastY = ev.getY();
-                mDragging = false;
-                mCurrView = mCallback.getChildAtPosition(ev);
-                mVelocityTracker.clear();
-                if (mCurrView != null) {
-                    mCurrAnimView = mCallback.getChildContentView(mCurrView);
-                    mStartAlpha = mCurrAnimView.getAlpha();
-                    mCanCurrViewBeDimissed = mCallback.canChildBeDismissed(mCurrView);
-                    mVelocityTracker.addMovement(ev);
-                    mInitialTouchPosX = ev.getX();
-                    mInitialTouchPosY = ev.getY();
-                }
-                break;
-            case MotionEvent.ACTION_MOVE:
-                if (mCurrView != null) {
-                    // Check the movement direction.
-                    if (mLastY >= 0 && !mDragging) {
-                        float currY = ev.getY();
-                        float currX = ev.getX();
-                        float deltaY = Math.abs(currY - mInitialTouchPosY);
-                        float deltaX = Math.abs(currX - mInitialTouchPosX);
-                        if (deltaY > SWIPE_SCROLL_SLOP && deltaY > (FACTOR * deltaX)) {
-                            mLastY = ev.getY();
-                            mCallback.onScroll();
-                            return false;
-                        }
-                    }
-                    mVelocityTracker.addMovement(ev);
-                    float pos = ev.getX();
-                    float delta = pos - mInitialTouchPosX;
-                    if (Math.abs(delta) > mPagingTouchSlop) {
-                        mCallback.onBeginDrag(mCallback.getChildContentView(mCurrView));
-                        mDragging = true;
-                        mInitialTouchPosX = ev.getX() - mCurrAnimView.getTranslationX();
-                        mInitialTouchPosY = ev.getY();
-                    }
-                }
-                mLastY = ev.getY();
-                break;
-            case MotionEvent.ACTION_UP:
-            case MotionEvent.ACTION_CANCEL:
-                mDragging = false;
-                mCurrView = null;
-                mCurrAnimView = null;
-                mLastY = -1;
-                break;
-        }
-        return mDragging;
-    }
-
-    /**
-     * @param view The view to be dismissed
-     * @param velocity The desired pixels/second speed at which the view should
-     *            move
-     */
-    private void dismissChild(final View view, float velocity) {
-        final View animView = mCallback.getChildContentView(view);
-        final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(view);
-        float newPos = determinePos(animView, velocity);
-        int duration = determineDuration(animView, newPos, velocity);
-
-        animView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
-        ObjectAnimator anim = createDismissAnimation(animView, newPos, duration);
-        anim.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                mCallback.onChildDismissed(view);
-                animView.setLayerType(View.LAYER_TYPE_NONE, null);
-            }
-        });
-        anim.addUpdateListener(new AnimatorUpdateListener() {
-            @Override
-            public void onAnimationUpdate(ValueAnimator animation) {
-                if (FADE_OUT_DURING_SWIPE && canAnimViewBeDismissed) {
-                    animView.setAlpha(getAlphaForOffset(animView));
-                }
-                invalidateGlobalRegion(animView);
-            }
-        });
-        anim.start();
-    }
-
-    private int determineDuration(View animView, float newPos, float velocity) {
-        int duration = MAX_ESCAPE_ANIMATION_DURATION;
-        if (velocity != 0) {
-            duration = Math
-                    .min(duration,
-                            (int) (Math.abs(newPos - animView.getTranslationX()) * 1000f / Math
-                                    .abs(velocity)));
-        } else {
-            duration = DEFAULT_ESCAPE_ANIMATION_DURATION;
-        }
-        return duration;
-    }
-
-    private float determinePos(View animView, float velocity) {
-        float newPos = 0;
-        if (velocity < 0 || (velocity == 0 && animView.getTranslationX() < 0)
-                // if we use the Menu to dismiss an item in landscape, animate up
-                || (velocity == 0 && animView.getTranslationX() == 0 && mSwipeDirection == Y)) {
-            newPos = -getSize(animView);
-        } else {
-            newPos = getSize(animView);
-        }
-        return newPos;
-    }
-
-    public void snapChild(final View view, float velocity) {
-        final View animView = mCallback.getChildContentView(view);
-        final boolean canAnimViewBeDismissed = mCallback.canChildBeDismissed(view);
-        ObjectAnimator anim = createTranslationAnimation(animView, 0);
-        int duration = SNAP_ANIM_LEN;
-        anim.setDuration(duration);
-        anim.addUpdateListener(new AnimatorUpdateListener() {
-            @Override
-            public void onAnimationUpdate(ValueAnimator animation) {
-                if (FADE_OUT_DURING_SWIPE && canAnimViewBeDismissed) {
-                    animView.setAlpha(getAlphaForOffset(animView));
-                }
-                invalidateGlobalRegion(animView);
-            }
-        });
-        anim.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                animView.setAlpha(mStartAlpha);
-                mCallback.onDragCancelled(mCurrView);
-            }
-        });
-        anim.start();
-    }
-
-    public boolean onTouchEvent(MotionEvent ev) {
-        if (!mDragging || mProtected) {
-            return false;
-        }
-        mVelocityTracker.addMovement(ev);
-        final int action = ev.getAction();
-        switch (action) {
-            case MotionEvent.ACTION_OUTSIDE:
-            case MotionEvent.ACTION_MOVE:
-                if (mCurrView != null) {
-                    float deltaX = ev.getX() - mInitialTouchPosX;
-                    float deltaY = Math.abs(ev.getY() - mInitialTouchPosY);
-                    // If the user has gone vertical and not gone horizontalish AT
-                    // LEAST minBeforeLock, switch to scroll. Otherwise, cancel
-                    // the swipe.
-                    if (!mDragging && deltaY > MIN_VERT && (Math.abs(deltaX)) < MIN_LOCK
-                            && deltaY > (FACTOR * Math.abs(deltaX))) {
-                        mCallback.onScroll();
-                        return false;
-                    }
-                    float minDistance = MIN_SWIPE;
-                    if (Math.abs(deltaX) < minDistance) {
-                        // Don't start the drag until at least X distance has
-                        // occurred.
-                        return true;
-                    }
-                    // don't let items that can't be dismissed be dragged more
-                    // than maxScrollDistance
-                    if (CONSTRAIN_SWIPE && !mCallback.canChildBeDismissed(mCurrView)) {
-                        float size = getSize(mCurrAnimView);
-                        float maxScrollDistance = 0.15f * size;
-                        if (Math.abs(deltaX) >= size) {
-                            deltaX = deltaX > 0 ? maxScrollDistance : -maxScrollDistance;
-                        } else {
-                            deltaX = maxScrollDistance
-                                    * (float) Math.sin((deltaX / size) * (Math.PI / 2));
-                        }
-                    }
-                    setTranslation(mCurrAnimView, deltaX);
-                    if (FADE_OUT_DURING_SWIPE && mCanCurrViewBeDimissed) {
-                        mCurrAnimView.setAlpha(getAlphaForOffset(mCurrAnimView));
-                    }
-                    invalidateGlobalRegion(mCallback.getChildContentView(mCurrView));
-                }
-                break;
-            case MotionEvent.ACTION_UP:
-            case MotionEvent.ACTION_CANCEL:
-                if (mCurrView != null) {
-                    float maxVelocity = MAX_DISMISS_VELOCITY * mDensityScale;
-                    mVelocityTracker.computeCurrentVelocity(1000 /* px/sec */, maxVelocity);
-                    float escapeVelocity = SWIPE_ESCAPE_VELOCITY * mDensityScale;
-                    float velocity = getVelocity(mVelocityTracker);
-                    float perpendicularVelocity = getPerpendicularVelocity(mVelocityTracker);
-
-                    // Decide whether to dismiss the current view
-                    // Tweak constants below as required to prevent erroneous
-                    // swipe/dismiss
-                    float translation = Math.abs(mCurrAnimView.getTranslationX());
-                    float currAnimViewSize = getSize(mCurrAnimView);
-                    // Long swipe = translation of {@link #mChildSwipedFarEnoughFactor} * width
-                    boolean childSwipedFarEnough = DISMISS_IF_SWIPED_FAR_ENOUGH
-                            && translation > mChildSwipedFarEnoughFactor * currAnimViewSize;
-                    // Fast swipe = > escapeVelocity and translation of
-                    // {@link #mChildSwipedFastEnoughFactor} * width
-                    boolean childSwipedFastEnough = (Math.abs(velocity) > escapeVelocity)
-                            && (Math.abs(velocity) > Math.abs(perpendicularVelocity))
-                            && (velocity > 0) == (mCurrAnimView.getTranslationX() > 0)
-                            && translation > mChildSwipedFastEnoughFactor * currAnimViewSize;
-                    if (LOG_SWIPE_DISMISS_VELOCITY) {
-                        Log.v(TAG, "Swipe/Dismiss: " + velocity + "/" + escapeVelocity + "/"
-                                + perpendicularVelocity + ", x: " + translation + "/"
-                                + currAnimViewSize);
-                    }
-
-                    boolean dismissChild = mCallback.canChildBeDismissed(mCurrView)
-                            && (childSwipedFastEnough || childSwipedFarEnough);
-
-                    if (dismissChild) {
-                        dismissChild(mCurrView, childSwipedFastEnough ? velocity : 0f);
-                    } else {
-                        snapChild(mCurrView, velocity);
-                    }
-                }
-                break;
-        }
-        return true;
-    }
-
-    public static void setSwipeable(View view, boolean swipeable) {
-        view.setTag(IS_SWIPEABLE_TAG, swipeable ? IS_SWIPEABLE : null);
-    }
-
-    public static boolean isSwipeable(View view) {
-        return IS_SWIPEABLE == view.getTag(IS_SWIPEABLE_TAG);
-    }
-
-    public interface SwipeHelperCallback {
-        View getChildAtPosition(MotionEvent ev);
-
-        View getChildContentView(View v);
-
-        void onScroll();
-
-        boolean canChildBeDismissed(View v);
-
-        void onBeginDrag(View v);
-
-        void onChildDismissed(View v);
-
-        void onDragCancelled(View v);
-
-    }
-
-    public interface OnItemGestureListener {
-        public void onSwipe(View view);
-
-        public void onTouch();
-
-        public boolean isSwipeEnabled();
-    }
-}
diff --git a/src/com/android/dialer/service/CachedNumberLookupService.java b/src/com/android/dialer/service/CachedNumberLookupService.java
index a3782f1..e91d458 100644
--- a/src/com/android/dialer/service/CachedNumberLookupService.java
+++ b/src/com/android/dialer/service/CachedNumberLookupService.java
@@ -1,6 +1,5 @@
 package com.android.dialer.service;
 
-import android.content.ContentValues;
 import android.content.Context;
 
 import com.android.dialer.calllog.ContactInfo;
@@ -8,8 +7,15 @@
 public interface CachedNumberLookupService {
 
     public interface CachedContactInfo {
+        public static final int SOURCE_TYPE_DIRECTORY = 1;
+        public static final int SOURCE_TYPE_EXTENDED = 2;
+        public static final int SOURCE_TYPE_PLACES = 3;
+        public static final int SOURCE_TYPE_PROFILE = 4;
+        public static final int SOURCE_TYPE_CNAP = 5;
+
         public ContactInfo getContactInfo();
 
+        public void setSource(int sourceType, String name, long directoryId);
         public void setDirectorySource(String name, long directoryId);
         public void setExtendedSource(String name, long directoryId);
         public void setLookupKey(String lookupKey);
diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java
index de07128..d54053b 100644
--- a/src/com/android/dialer/settings/DialerSettingsActivity.java
+++ b/src/com/android/dialer/settings/DialerSettingsActivity.java
@@ -2,6 +2,7 @@
 
 import com.google.common.collect.Lists;
 
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -14,13 +15,7 @@
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
-import android.view.LayoutInflater;
 import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.ListAdapter;
-import android.widget.TextView;
 
 import com.android.dialer.DialtactsActivity;
 import com.android.dialer.R;
@@ -30,7 +25,6 @@
 public class DialerSettingsActivity extends PreferenceActivity {
 
     protected SharedPreferences mPreferences;
-    private HeaderAdapter mHeaderAdapter;
 
     private static final int OWNER_HANDLE_ID = 0;
 
@@ -42,18 +36,31 @@
 
     @Override
     public void onBuildHeaders(List<Header> target) {
-        final Header generalSettingsHeader = new Header();
-        generalSettingsHeader.titleRes = R.string.general_settings_label;
-        generalSettingsHeader.fragment = GeneralSettingsFragment.class.getName();
-        target.add(generalSettingsHeader);
+        Header displayOptionsHeader = new Header();
+        displayOptionsHeader.titleRes = R.string.display_options_title;
+        displayOptionsHeader.fragment = DisplayOptionsSettingsFragment.class.getName();
+        target.add(displayOptionsHeader);
+
+        Header soundSettingsHeader = new Header();
+        soundSettingsHeader.titleRes = R.string.sounds_and_vibration_title;
+        soundSettingsHeader.fragment = SoundSettingsFragment.class.getName();
+        target.add(soundSettingsHeader);
+
+        Header quickResponseSettingsHeader = new Header();
+        Intent quickResponseSettingsIntent =
+                new Intent(TelecomManager.ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS);
+        quickResponseSettingsHeader.titleRes = R.string.respond_via_sms_setting_title;
+        quickResponseSettingsHeader.intent = quickResponseSettingsIntent;
+        target.add(quickResponseSettingsHeader);
+
+        TelephonyManager telephonyManager =
+                (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
 
         // Only show call setting menus if the current user is the primary/owner user.
         if (isPrimaryUser()) {
-            final TelephonyManager telephonyManager =
-                    (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
             // Show "Call Settings" if there is one SIM and "Phone Accounts" if there are more.
             if (telephonyManager.getPhoneCount() <= 1) {
-                final Header callSettingsHeader = new Header();
+                Header callSettingsHeader = new Header();
                 Intent callSettingsIntent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
                 callSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
@@ -61,7 +68,7 @@
                 callSettingsHeader.intent = callSettingsIntent;
                 target.add(callSettingsHeader);
             } else {
-                final Header phoneAccountSettingsHeader = new Header();
+                Header phoneAccountSettingsHeader = new Header();
                 Intent phoneAccountSettingsIntent =
                         new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
                 phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
@@ -70,6 +77,16 @@
                 phoneAccountSettingsHeader.intent = phoneAccountSettingsIntent;
                 target.add(phoneAccountSettingsHeader);
             }
+
+            if (telephonyManager.isTtyModeSupported()
+                    || telephonyManager.isHearingAidCompatibilitySupported()) {
+                Header accessibilitySettingsHeader = new Header();
+                Intent accessibilitySettingsIntent =
+                        new Intent(TelecomManager.ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS);
+                accessibilitySettingsHeader.titleRes = R.string.accessibility_settings_title;
+                accessibilitySettingsHeader.intent = accessibilitySettingsIntent;
+                target.add(accessibilitySettingsHeader);
+            }
         }
     }
 
@@ -87,84 +104,11 @@
         return true;
     }
 
-    @Override
-    public void setListAdapter(ListAdapter adapter) {
-        if (adapter == null) {
-            super.setListAdapter(null);
-        } else {
-            // We don't have access to the hidden getHeaders() method, so grab the headers from
-            // the intended adapter and then replace it with our own.
-            int headerCount = adapter.getCount();
-            List<Header> headers = Lists.newArrayList();
-            for (int i = 0; i < headerCount; i++) {
-                headers.add((Header) adapter.getItem(i));
-            }
-            mHeaderAdapter = new HeaderAdapter(this, headers);
-            super.setListAdapter(mHeaderAdapter);
-        }
-    }
-
     /**
-     * Whether a user handle associated with the current user is that of the primary owner. That is,
-     * whether there is a user handle which has an id which matches the owner's handle.
      * @return Whether the current user is the primary user.
      */
     private boolean isPrimaryUser() {
-        UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE);
-        List<UserHandle> userHandles = userManager.getUserProfiles();
-        for (int i = 0; i < userHandles.size(); i++){
-            if (userHandles.get(i).myUserId() == OWNER_HANDLE_ID) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * This custom {@code ArrayAdapter} is mostly identical to the equivalent one in
-     * {@code PreferenceActivity}, except with a local layout resource.
-     */
-    private static class HeaderAdapter extends ArrayAdapter<Header> {
-        static class HeaderViewHolder {
-            TextView title;
-            TextView summary;
-        }
-
-        private LayoutInflater mInflater;
-
-        public HeaderAdapter(Context context, List<Header> objects) {
-            super(context, 0, objects);
-            mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            HeaderViewHolder holder;
-            View view;
-
-            if (convertView == null) {
-                view = mInflater.inflate(R.layout.dialer_preferences, parent, false);
-                holder = new HeaderViewHolder();
-                holder.title = (TextView) view.findViewById(R.id.title);
-                holder.summary = (TextView) view.findViewById(R.id.summary);
-                view.setTag(holder);
-            } else {
-                view = convertView;
-                holder = (HeaderViewHolder) view.getTag();
-            }
-
-            // All view fields must be updated every time, because the view may be recycled
-            Header header = getItem(position);
-            holder.title.setText(header.getTitle(getContext().getResources()));
-            CharSequence summary = header.getSummary(getContext().getResources());
-            if (!TextUtils.isEmpty(summary)) {
-                holder.summary.setVisibility(View.VISIBLE);
-                holder.summary.setText(summary);
-            } else {
-                holder.summary.setVisibility(View.GONE);
-            }
-            return view;
-        }
+        final UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE);
+        return userManager.isSystemUser();
     }
 }
diff --git a/src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java b/src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java
new file mode 100644
index 0000000..4b2c8f6
--- /dev/null
+++ b/src/com/android/dialer/settings/DisplayOptionsSettingsFragment.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2015 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.dialer.settings;
+
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+
+import com.android.dialer.R;
+
+public class DisplayOptionsSettingsFragment extends PreferenceFragment {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        addPreferencesFromResource(R.xml.display_options_settings);
+    }
+}
diff --git a/src/com/android/dialer/settings/GeneralSettingsFragment.java b/src/com/android/dialer/settings/GeneralSettingsFragment.java
deleted file mode 100644
index 578ff33..0000000
--- a/src/com/android/dialer/settings/GeneralSettingsFragment.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2014 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.dialer.settings;
-
-import android.content.Context;
-import android.media.RingtoneManager;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.Vibrator;
-import android.preference.CheckBoxPreference;
-import android.preference.Preference;
-import android.preference.PreferenceCategory;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
-import android.provider.Settings;
-
-import com.android.dialer.R;
-import com.android.phone.common.util.SettingsUtil;
-
-import java.lang.Boolean;
-import java.lang.CharSequence;
-import java.lang.Object;
-import java.lang.Override;
-import java.lang.Runnable;
-import java.lang.String;
-import java.lang.Thread;
-
-public class GeneralSettingsFragment extends PreferenceFragment
-        implements Preference.OnPreferenceChangeListener {
-    private static final String CATEGORY_SOUNDS_KEY    = "dialer_general_sounds_category_key";
-    private static final String BUTTON_RINGTONE_KEY    = "button_ringtone_key";
-    private static final String BUTTON_VIBRATE_ON_RING = "button_vibrate_on_ring";
-    private static final String BUTTON_PLAY_DTMF_TONE  = "button_play_dtmf_tone";
-    private static final String BUTTON_RESPOND_VIA_SMS_KEY = "button_respond_via_sms_key";
-
-    private static final int MSG_UPDATE_RINGTONE_SUMMARY = 1;
-
-    private Context mContext;
-
-    private Preference mRingtonePreference;
-    private CheckBoxPreference mVibrateWhenRinging;
-    private CheckBoxPreference mPlayDtmfTone;
-    private Preference mRespondViaSms;
-
-    private Runnable mRingtoneLookupRunnable;
-    private final Handler mRingtoneLookupComplete = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            switch (msg.what) {
-                case MSG_UPDATE_RINGTONE_SUMMARY:
-                    mRingtonePreference.setSummary((CharSequence) msg.obj);
-                    break;
-            }
-        }
-    };
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mContext = getActivity().getApplicationContext();
-
-        addPreferencesFromResource(R.xml.general_settings);
-
-        mRingtonePreference = findPreference(BUTTON_RINGTONE_KEY);
-        mVibrateWhenRinging = (CheckBoxPreference) findPreference(BUTTON_VIBRATE_ON_RING);
-        mPlayDtmfTone = (CheckBoxPreference) findPreference(BUTTON_PLAY_DTMF_TONE);
-        mRespondViaSms = findPreference(BUTTON_RESPOND_VIA_SMS_KEY);
-
-        PreferenceCategory soundCategory = (PreferenceCategory) findPreference(CATEGORY_SOUNDS_KEY);
-        if (mVibrateWhenRinging != null) {
-            Vibrator vibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
-            if (vibrator != null && vibrator.hasVibrator()) {
-                mVibrateWhenRinging.setOnPreferenceChangeListener(this);
-            } else {
-                soundCategory.removePreference(mVibrateWhenRinging);
-                mVibrateWhenRinging = null;
-            }
-        }
-
-        if (mPlayDtmfTone != null) {
-            mPlayDtmfTone.setOnPreferenceChangeListener(this);
-            mPlayDtmfTone.setChecked(Settings.System.getInt(mContext.getContentResolver(),
-                    Settings.System.DTMF_TONE_WHEN_DIALING, 1) != 0);
-        }
-
-        mRingtoneLookupRunnable = new Runnable() {
-            @Override
-            public void run() {
-                if (mRingtonePreference != null) {
-                    SettingsUtil.updateRingtoneName(
-                            mContext,
-                            mRingtoneLookupComplete,
-                            RingtoneManager.TYPE_RINGTONE,
-                            mRingtonePreference.getKey(),
-                            MSG_UPDATE_RINGTONE_SUMMARY);
-                }
-            }
-        };
-    }
-
-    /**
-     * Supports onPreferenceChangeListener to look for preference changes.
-     *
-     * @param preference The preference to be changed
-     * @param objValue The value of the selection, NOT its localized display value.
-     */
-    @Override
-    public boolean onPreferenceChange(Preference preference, Object objValue) {
-        if (preference == mVibrateWhenRinging) {
-            boolean doVibrate = (Boolean) objValue;
-            Settings.System.putInt(mContext.getContentResolver(),
-                    Settings.System.VIBRATE_WHEN_RINGING, doVibrate ? 1 : 0);
-        }
-        return true;
-    }
-
-    /**
-     * Click listener for toggle events.
-     */
-    @Override
-    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-        if (preference == mPlayDtmfTone) {
-            Settings.System.putInt(mContext.getContentResolver(),
-                    Settings.System.DTMF_TONE_WHEN_DIALING, mPlayDtmfTone.isChecked() ? 1 : 0);
-        } else if (preference == mRespondViaSms) {
-            // Needs to return false for the intent to launch.
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-
-        if (mVibrateWhenRinging != null) {
-            mVibrateWhenRinging.setChecked(SettingsUtil.getVibrateWhenRingingSetting(mContext));
-        }
-
-        // Lookup the ringtone name asynchronously.
-        new Thread(mRingtoneLookupRunnable).start();
-    }
-}
diff --git a/src/com/android/dialer/settings/SoundSettingsFragment.java b/src/com/android/dialer/settings/SoundSettingsFragment.java
new file mode 100644
index 0000000..43297b5
--- /dev/null
+++ b/src/com/android/dialer/settings/SoundSettingsFragment.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2014 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.dialer.settings;
+
+import android.content.Context;
+import android.media.RingtoneManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.Vibrator;
+import android.preference.CheckBoxPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.telephony.TelephonyManager;
+
+import com.android.dialer.R;
+import com.android.phone.common.util.SettingsUtil;
+
+import java.lang.Boolean;
+import java.lang.CharSequence;
+import java.lang.Object;
+import java.lang.Override;
+import java.lang.Runnable;
+import java.lang.String;
+import java.lang.Thread;
+
+public class SoundSettingsFragment extends PreferenceFragment
+        implements Preference.OnPreferenceChangeListener {
+
+    private static final int NO_DTMF_TONE = 0;
+    private static final int PLAY_DTMF_TONE = 1;
+
+    private static final int NO_VIBRATION_FOR_CALLS = 0;
+    private static final int DO_VIBRATION_FOR_CALLS = 1;
+
+    private static final int SHOW_CARRIER_SETTINGS = 0;
+    private static final int HIDE_CARRIER_SETTINGS = 1;
+
+    private static final int MSG_UPDATE_RINGTONE_SUMMARY = 1;
+
+    private Preference mRingtonePreference;
+    private CheckBoxPreference mVibrateWhenRinging;
+    private CheckBoxPreference mPlayDtmfTone;
+    private ListPreference mDtmfToneLength;
+
+    private final Runnable mRingtoneLookupRunnable = new Runnable() {
+        @Override
+        public void run() {
+            updateRingtonePreferenceSummary();
+        }
+    };
+
+    private final Handler mRingtoneLookupComplete = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_UPDATE_RINGTONE_SUMMARY:
+                    mRingtonePreference.setSummary((CharSequence) msg.obj);
+                    break;
+            }
+        }
+    };
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        addPreferencesFromResource(R.xml.sound_settings);
+
+        Context context = getActivity();
+
+        mRingtonePreference = findPreference(context.getString(R.string.ringtone_preference_key));
+        mVibrateWhenRinging = (CheckBoxPreference) findPreference(
+                context.getString(R.string.vibrate_on_preference_key));
+        mPlayDtmfTone = (CheckBoxPreference) findPreference(
+                context.getString(R.string.play_dtmf_preference_key));
+        mDtmfToneLength = (ListPreference) findPreference(
+                context.getString(R.string.dtmf_tone_length_preference_key));
+
+        if (hasVibrator()) {
+            mVibrateWhenRinging.setOnPreferenceChangeListener(this);
+        } else {
+            getPreferenceScreen().removePreference(mVibrateWhenRinging);
+            mVibrateWhenRinging = null;
+        }
+
+        mPlayDtmfTone.setOnPreferenceChangeListener(this);
+        mPlayDtmfTone.setChecked(shouldPlayDtmfTone());
+
+        TelephonyManager telephonyManager =
+                (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
+        if (telephonyManager.canChangeDtmfToneLength()
+                && (telephonyManager.isWorldPhone() || !shouldHideCarrierSettings())) {
+            mDtmfToneLength.setOnPreferenceChangeListener(this);
+            mDtmfToneLength.setValueIndex(
+                    Settings.System.getInt(context.getContentResolver(),
+                        Settings.System.DTMF_TONE_WHEN_DIALING, PLAY_DTMF_TONE));
+        } else {
+            getPreferenceScreen().removePreference(mDtmfToneLength);
+            mDtmfToneLength = null;
+        }
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        if (mVibrateWhenRinging != null) {
+            mVibrateWhenRinging.setChecked(shouldVibrateWhenRinging());
+        }
+
+        // Lookup the ringtone name asynchronously.
+        new Thread(mRingtoneLookupRunnable).start();
+    }
+
+    /**
+     * Supports onPreferenceChangeListener to look for preference changes.
+     *
+     * @param preference The preference to be changed
+     * @param objValue The value of the selection, NOT its localized display value.
+     */
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object objValue) {
+        if (preference == mVibrateWhenRinging) {
+            boolean doVibrate = (Boolean) objValue;
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.VIBRATE_WHEN_RINGING,
+                    doVibrate ? DO_VIBRATION_FOR_CALLS : NO_VIBRATION_FOR_CALLS);
+        } else if (preference == mDtmfToneLength) {
+            int index = mDtmfToneLength.findIndexOfValue((String) objValue);
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, index);
+        }
+        return true;
+    }
+
+    /**
+     * Click listener for toggle events.
+     */
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
+        if (preference == mPlayDtmfTone) {
+            Settings.System.putInt(getActivity().getContentResolver(),
+                    Settings.System.DTMF_TONE_WHEN_DIALING,
+                    mPlayDtmfTone.isChecked() ? PLAY_DTMF_TONE : NO_DTMF_TONE);
+        }
+        return true;
+    }
+
+    /**
+     * Updates the summary text on the ringtone preference with the name of the ringtone.
+     */
+    private void updateRingtonePreferenceSummary() {
+        SettingsUtil.updateRingtoneName(
+                getActivity(),
+                mRingtoneLookupComplete,
+                RingtoneManager.TYPE_RINGTONE,
+                mRingtonePreference.getKey(),
+                MSG_UPDATE_RINGTONE_SUMMARY);
+    }
+
+    /**
+     * Obtain the value for "vibrate when ringing" setting. The default value is false.
+     *
+     * Watch out: if the setting is missing in the device, this will try obtaining the old
+     * "vibrate on ring" setting from AudioManager, and save the previous setting to the new one.
+     */
+    private boolean shouldVibrateWhenRinging() {
+        int vibrateWhenRingingSetting = Settings.System.getInt(getActivity().getContentResolver(),
+                Settings.System.VIBRATE_WHEN_RINGING,
+                NO_VIBRATION_FOR_CALLS);
+        return hasVibrator() && (vibrateWhenRingingSetting == DO_VIBRATION_FOR_CALLS);
+    }
+
+    /**
+     * Obtains the value for dialpad/DTMF tones. The default value is true.
+     */
+    private boolean shouldPlayDtmfTone() {
+        int dtmfToneSetting = Settings.System.getInt(getActivity().getContentResolver(),
+                Settings.System.DTMF_TONE_WHEN_DIALING,
+                PLAY_DTMF_TONE);
+        return dtmfToneSetting == PLAY_DTMF_TONE;
+    }
+
+    /**
+     * Whether the device hardware has a vibrator.
+     */
+    private boolean hasVibrator() {
+        Vibrator vibrator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
+        return vibrator != null && vibrator.hasVibrator();
+    }
+
+    private boolean shouldHideCarrierSettings() {
+        int hideCarrierNetworkSetting = Settings.Global.getInt(getActivity().getContentResolver(),
+                Settings.Global.HIDE_CARRIER_NETWORK_SETTINGS, SHOW_CARRIER_SETTINGS);
+        return hideCarrierNetworkSetting == HIDE_CARRIER_SETTINGS;
+    }
+}
diff --git a/src/com/android/dialer/util/CallIntentUtil.java b/src/com/android/dialer/util/CallIntentUtil.java
new file mode 100644
index 0000000..fac26f7
--- /dev/null
+++ b/src/com/android/dialer/util/CallIntentUtil.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2012 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.dialer.util;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telecom.VideoProfile;
+
+import com.android.contacts.common.CallUtil;
+import com.android.phone.common.PhoneConstants;
+
+/**
+ * Utilities for creation of {@link Intent#ACTION_CALL} intents.
+ */
+public class CallIntentUtil {
+
+    public static final String CALL_ACTION = Intent.ACTION_CALL;
+
+    /**
+     * Return an Intent for making a phone call. Scheme (e.g. tel, sip) will be determined
+     * automatically.
+     */
+    public static Intent getCallIntent(String number) {
+        return getCallIntent(number, null, null);
+    }
+
+    /**
+     * Return an Intent for making a phone call. A given Uri will be used as is (without any
+     * sanity check).
+     */
+    public static Intent getCallIntent(Uri uri) {
+        return getCallIntent(uri, null, null);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(String)} but also accept a call origin.
+     * For more information about call origin, see comments in Phone package (PhoneApp).
+     */
+    public static Intent getCallIntent(String number, String callOrigin) {
+        return getCallIntent(CallUtil.getCallUri(number), callOrigin, null);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(String)} but also include {@code Account}.
+     */
+    public static Intent getCallIntent(String number, PhoneAccountHandle accountHandle) {
+        return getCallIntent(number, null, accountHandle);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(android.net.Uri)} but also include {@code Account}.
+     */
+    public static Intent getCallIntent(Uri uri, PhoneAccountHandle accountHandle) {
+        return getCallIntent(uri, null, accountHandle);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(String, String)} but also include {@code Account}.
+     */
+    public static Intent getCallIntent(
+            String number, String callOrigin, PhoneAccountHandle accountHandle) {
+        return getCallIntent(CallUtil.getCallUri(number), callOrigin, accountHandle);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(android.net.Uri)} but also accept a call
+     * origin and {@code Account}.
+     * For more information about call origin, see comments in Phone package (PhoneApp).
+     */
+    public static Intent getCallIntent(
+            Uri uri, String callOrigin, PhoneAccountHandle accountHandle) {
+        return getCallIntent(uri, callOrigin, accountHandle,
+                VideoProfile.STATE_AUDIO_ONLY);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(String, String)} for starting a video call.
+     */
+    public static Intent getVideoCallIntent(String number, String callOrigin) {
+        return getCallIntent(CallUtil.getCallUri(number), callOrigin, null,
+                VideoProfile.STATE_BIDIRECTIONAL);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(String, String, android.telecom.PhoneAccountHandle)} for
+     * starting a video call.
+     */
+    public static Intent getVideoCallIntent(
+            String number, String callOrigin, PhoneAccountHandle accountHandle) {
+        return getCallIntent(CallUtil.getCallUri(number), callOrigin, accountHandle,
+                VideoProfile.STATE_BIDIRECTIONAL);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(String, String, android.telecom.PhoneAccountHandle)} for
+     * starting a video call.
+     */
+    public static Intent getVideoCallIntent(String number, PhoneAccountHandle accountHandle) {
+        return getVideoCallIntent(number, null, accountHandle);
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(android.net.Uri)} for calling Voicemail.
+     */
+    public static Intent getVoicemailIntent() {
+        return getCallIntent(Uri.fromParts(PhoneAccount.SCHEME_VOICEMAIL, "", null));
+    }
+
+    /**
+     * A variant of {@link #getCallIntent(android.net.Uri)} but also accept a call
+     * origin and {@code Account} and {@code VideoCallProfile} state.
+     * For more information about call origin, see comments in Phone package (PhoneApp).
+     */
+    public static Intent getCallIntent(
+            Uri uri, String callOrigin, PhoneAccountHandle accountHandle, int videoState) {
+        final Intent intent = new Intent(CALL_ACTION, uri);
+        intent.putExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, videoState);
+        if (callOrigin != null) {
+            intent.putExtra(PhoneConstants.EXTRA_CALL_ORIGIN, callOrigin);
+        }
+        if (accountHandle != null) {
+            intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, accountHandle);
+        }
+
+        return intent;
+    }
+}
diff --git a/src/com/android/dialer/util/DialerUtils.java b/src/com/android/dialer/util/DialerUtils.java
index d59deb4..3899b37 100644
--- a/src/com/android/dialer/util/DialerUtils.java
+++ b/src/com/android/dialer/util/DialerUtils.java
@@ -71,9 +71,8 @@
      */
     public static void startActivityWithErrorToast(Context context, Intent intent, int msgId) {
         try {
-            if ((Intent.ACTION_CALL.equals(intent.getAction())
-                    || Intent.ACTION_CALL_PRIVILEGED.equals(intent.getAction()))
-                            && context instanceof Activity) {
+            if ((CallIntentUtil.CALL_ACTION.equals(intent.getAction())
+                            && context instanceof Activity)) {
                 // All dialer-initiated calls should pass the touch point to the InCallUI
                 Point touchPoint = TouchPointManager.getInstance().getPoint();
                 if (touchPoint.x != 0 || touchPoint.y != 0) {
@@ -81,8 +80,9 @@
                     extras.putParcelable(TouchPointManager.TOUCH_POINT, touchPoint);
                     intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, extras);
                 }
-
-                ((Activity) context).startActivityForResult(intent, 0);
+                final TelecomManager tm =
+                        (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
+                tm.placeCall(intent.getData(), intent.getExtras());
             } else {
                 context.startActivity(intent);
             }
diff --git a/src/com/android/dialer/util/TelecomUtil.java b/src/com/android/dialer/util/TelecomUtil.java
new file mode 100644
index 0000000..1cd270c
--- /dev/null
+++ b/src/com/android/dialer/util/TelecomUtil.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2015 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.dialer.util;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+public class TelecomUtil {
+    private static final String TAG = "TelecomUtil";
+    private static boolean sWarningLogged = false;
+
+    public static void silenceRinger(Context context) {
+        if (hasModifyPhoneStatePermission(context)) {
+            try {
+                getTelecomManager(context).silenceRinger();
+            } catch (SecurityException e) {
+                // Just in case
+                Log.w(TAG, "TelecomManager.silenceRinger called without permission.");
+            }
+        }
+    }
+
+    public static void cancelMissedCallsNotification(Context context) {
+        if (hasModifyPhoneStatePermission(context)) {
+            try {
+                getTelecomManager(context).cancelMissedCallsNotification();
+            } catch (SecurityException e) {
+                Log.w(TAG, "TelecomManager.cancelMissedCalls called without permission.");
+            }
+        }
+    }
+
+    public static Uri getAdnUriForPhoneAccount(Context context, PhoneAccountHandle handle) {
+        if (hasModifyPhoneStatePermission(context)) {
+            try {
+                return getTelecomManager(context).getAdnUriForPhoneAccount(handle);
+            } catch (SecurityException e) {
+                Log.w(TAG, "TelecomManager.getAdnUriForPhoneAccount called without permission.");
+            }
+        }
+        return null;
+    }
+
+    public static boolean handleMmi(Context context, String dialString,
+            PhoneAccountHandle handle) {
+        if (hasModifyPhoneStatePermission(context)) {
+            try {
+                if (handle == null) {
+                    return getTelecomManager(context).handleMmi(dialString);
+                } else {
+                    return getTelecomManager(context).handleMmi(dialString, handle);
+                }
+            } catch (SecurityException e) {
+                Log.w(TAG, "TelecomManager.handleMmi called without permission.");
+            }
+        }
+        return false;
+    }
+
+    public static Uri getCallLogUri(Context context) {
+        return hasReadWriteVoicemailPermissions(context) ? Calls.CONTENT_URI_WITH_VOICEMAIL
+                : Calls.CONTENT_URI;
+    }
+
+    public static boolean hasReadWriteVoicemailPermissions(Context context) {
+        return isDefaultDialer(context)
+                || (hasPermission(context, Manifest.permission.READ_VOICEMAIL)
+                        && hasPermission(context, Manifest.permission.WRITE_VOICEMAIL));
+    }
+
+    public static boolean hasModifyPhoneStatePermission(Context context) {
+        return isDefaultDialer(context)
+                || hasPermission(context, Manifest.permission.MODIFY_PHONE_STATE);
+    }
+
+    private static boolean hasPermission(Context context, String permission) {
+        return context.checkSelfPermission(permission)
+                == PackageManager.PERMISSION_GRANTED;
+    }
+
+    public static boolean isDefaultDialer(Context context) {
+        final boolean result = TextUtils.equals(context.getPackageName(),
+                getTelecomManager(context).getDefaultDialerPackage());
+        if (result) {
+            sWarningLogged = false;
+        } else {
+            if (!sWarningLogged) {
+                // Log only once to prevent spam.
+                Log.w(TAG, "Dialer is not currently set to be default dialer");
+                sWarningLogged = true;
+            }
+        }
+        return result;
+    }
+
+    private static TelecomManager getTelecomManager(Context context) {
+        return (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
+    }
+}
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
index 31db177..0d5c3de 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackFragment.java
@@ -120,6 +120,12 @@
     }
 
     @Override
+    public void onViewStateRestored(Bundle savedInstanceState) {
+        mPresenter.onRestoreInstanceState(savedInstanceState);
+        super.onViewStateRestored(savedInstanceState);
+    }
+
+    @Override
     public void onDestroy() {
         shutdownMediaPlayer();
         mPresenter.onDestroy();
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index cb246f4..6a10411 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.database.ContentObserver;
 import android.media.AudioManager;
+import android.media.AudioManager.OnAudioFocusChangeListener;
 import android.media.MediaPlayer;
 import android.net.Uri;
 import android.os.AsyncTask;
@@ -32,6 +33,7 @@
 import com.android.dialer.util.AsyncTaskExecutor;
 import com.android.ex.variablespeed.MediaPlayerProxy;
 import com.android.ex.variablespeed.SingleThreadedMediaPlayerProxy;
+
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 
@@ -58,7 +60,7 @@
  */
 @NotThreadSafe
 @VisibleForTesting
-public class VoicemailPlaybackPresenter {
+public class VoicemailPlaybackPresenter implements OnAudioFocusChangeListener {
     /** The stream used to playback voicemail. */
     private static final int PLAYBACK_STREAM = AudioManager.STREAM_VOICE_CALL;
 
@@ -110,8 +112,8 @@
      * If present in the saved instance bundle, we should not resume playback on
      * create.
      */
-    private static final String PAUSED_STATE_KEY = VoicemailPlaybackPresenter.class.getName()
-            + ".PAUSED_STATE_KEY";
+    private static final String IS_PLAYING_STATE_KEY = VoicemailPlaybackPresenter.class.getName()
+            + ".IS_PLAYING_STATE_KEY";
     /**
      * If present in the saved instance bundle, indicates where to set the
      * playback slider.
@@ -169,6 +171,9 @@
     private FetchResultHandler mFetchResultHandler;
     private PowerManager.WakeLock mWakeLock;
     private AsyncTask<Void, ?, ?> mPrepareTask;
+    private int mPosition;
+    private boolean mPlaying;
+    private AudioManager mAudioManager;
 
     public VoicemailPlaybackPresenter(PlaybackView view, MediaPlayerProxy player,
             Uri voicemailUri, ScheduledExecutorService executorService,
@@ -346,22 +351,34 @@
         mView.setSpeakerPhoneOn(mView.isSpeakerPhoneOn());
         mView.setRateDecreaseButtonListener(createRateDecreaseListener());
         mView.setRateIncreaseButtonListener(createRateIncreaseListener());
-        mView.setClipPosition(0, mDuration.get());
-        mView.playbackStopped();
-        // Always disable on stop.
-        mView.disableProximitySensor();
-        if (mStartPlayingImmediately) {
-            resetPrepareStartPlaying(0);
+        if (mPlaying) {
+           resetPrepareStartPlaying(mPosition);
+        } else {
+           stopPlaybackAtPosition(mPosition, mDuration.get());
+           if ((mPosition == 0) && (mStartPlayingImmediately)) {
+               resetPrepareStartPlaying(0);
+           }
         }
-        // TODO: Now I'm ignoring the bundle, when previously I was checking for contains against
-        // the PAUSED_STATE_KEY, and CLIP_POSITION_KEY.
     }
 
     public void onSaveInstanceState(Bundle outState) {
         outState.putInt(CLIP_POSITION_KEY, mView.getDesiredClipPosition());
-        if (!mPlayer.isPlaying()) {
-            outState.putBoolean(PAUSED_STATE_KEY, true);
+        outState.putBoolean(IS_PLAYING_STATE_KEY, mPlaying);
+    }
+
+    public void onRestoreInstanceState(Bundle inState) {
+        int position = 0;
+        boolean isPlaying = false;
+        if (inState != null) {
+            position = inState.getInt(CLIP_POSITION_KEY, 0);
+            isPlaying = inState.getBoolean(IS_PLAYING_STATE_KEY, false);
         }
+        setPositionAndPlayingStatus(position, isPlaying) ;
+    }
+
+    private void setPositionAndPlayingStatus(int position, boolean isPlaying) {
+       mPosition = position;
+       mPlaying = isPlaying;
     }
 
     public void onDestroy() {
@@ -467,8 +484,18 @@
                 mPlayer.seekTo(startPosition);
                 mView.setClipPosition(startPosition, duration);
                 try {
+                    // Grab audio focus here
+                    int result = getAudioManager().requestAudioFocus(
+                            VoicemailPlaybackPresenter.this,
+                            PLAYBACK_STREAM,
+                            AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+
+                    if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
+                        throw new RejectedExecutionException("Could not capture audio focus.");
+                    }
                     // Can throw RejectedExecutionException
                     mPlayer.start();
+                    setPositionAndPlayingStatus(mPlayer.getCurrentPosition(), true);
                     mView.playbackStarted();
                     if (!mWakeLock.isHeld()) {
                         mWakeLock.acquire();
@@ -488,6 +515,29 @@
         }
     }
 
+    private AudioManager getAudioManager() {
+        if (mAudioManager == null) {
+            mAudioManager = (AudioManager)
+                    mView.getDataSourceContext().getSystemService(Context.AUDIO_SERVICE);
+        }
+        return mAudioManager;
+    }
+
+    @Override
+    public void onAudioFocusChange(int focusChange) {
+        boolean lostFocus = focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
+                focusChange == AudioManager.AUDIOFOCUS_LOSS;
+        // Note: the below logic is the same as in {@code StartStopButtonListener}.
+        if (mPlayer.isPlaying() && lostFocus) {
+            setPositionAndPlayingStatus(mPlayer.getCurrentPosition(), false);
+            stopPlaybackAtPosition(mPlayer.getCurrentPosition(), mDuration.get());
+        } else if (!mPlayer.isPlaying() && focusChange == AudioManager.AUDIOFOCUS_GAIN) {
+            setPositionAndPlayingStatus(mPosition, true);
+            postSuccessfullyFetchedContent();
+        }
+    }
+
+
     private void resetPrepareStartPlaying(final int clipPositionInMillis) {
         if (mPrepareTask != null) {
             mPrepareTask.cancel(false);
@@ -501,6 +551,7 @@
         mView.playbackError(e);
         mPositionUpdater.stopUpdating();
         mPlayer.release();
+        setPositionAndPlayingStatus(0, false);
     }
 
     public void handleCompletion(MediaPlayer mediaPlayer) {
@@ -508,6 +559,7 @@
     }
 
     private void stopPlaybackAtPosition(int clipPosition, int duration) {
+        getAudioManager().abandonAudioFocus(this);
         mPositionUpdater.stopUpdating();
         mView.playbackStopped();
         if (mWakeLock.isHeld()) {
@@ -537,10 +589,15 @@
         @Override
         public void onStopTrackingTouch(SeekBar arg0) {
             if (mPlayer.isPlaying()) {
+                setPositionAndPlayingStatus(mPlayer.getCurrentPosition(), false);
                 stopPlaybackAtPosition(mPlayer.getCurrentPosition(), mDuration.get());
+            } else {
+                setPositionAndPlayingStatus(mView.getDesiredClipPosition(),
+                        mShouldResumePlaybackAfterSeeking);
             }
+
             if (mShouldResumePlaybackAfterSeeking) {
-                resetPrepareStartPlaying(mView.getDesiredClipPosition());
+                postSuccessfullyFetchedContent();
             }
         }
 
@@ -575,9 +632,11 @@
         @Override
         public void onClick(View arg0) {
             if (mPlayer.isPlaying()) {
+                setPositionAndPlayingStatus(mPlayer.getCurrentPosition(), false);
                 stopPlaybackAtPosition(mPlayer.getCurrentPosition(), mDuration.get());
             } else {
-                resetPrepareStartPlaying(mView.getDesiredClipPosition());
+                setPositionAndPlayingStatus(mPosition, true);
+                postSuccessfullyFetchedContent();
             }
         }
     }
diff --git a/src/com/android/dialer/widget/OverlappingPaneLayout.java b/src/com/android/dialer/widget/OverlappingPaneLayout.java
deleted file mode 100644
index 167b849..0000000
--- a/src/com/android/dialer/widget/OverlappingPaneLayout.java
+++ /dev/null
@@ -1,1358 +0,0 @@
-/*
- * Copyright (C) 2012 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.dialer.widget;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.PixelFormat;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.v4.view.AccessibilityDelegateCompat;
-import android.support.v4.view.MotionEventCompat;
-import android.support.v4.view.ViewCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.view.ViewParent;
-import android.view.accessibility.AccessibilityEvent;
-
-/**
- * A custom layout that aligns its child views vertically as two panes, and allows for the bottom
- * pane to be dragged upwards to overlap and hide the top pane. This layout is adapted from
- * {@link android.support.v4.widget.SlidingPaneLayout}.
- */
-public class OverlappingPaneLayout extends ViewGroup {
-    private static final String TAG = "SlidingPaneLayout";
-    private static final boolean DEBUG = false;
-
-    /**
-     * Default size of the overhang for a pane in the open state.
-     * At least this much of a sliding pane will remain visible.
-     * This indicates that there is more content available and provides
-     * a "physical" edge to grab to pull it closed.
-     */
-    private static final int DEFAULT_OVERHANG_SIZE = 32; // dp;
-
-    /**
-     * If no fade color is given by default it will fade to 80% gray.
-     */
-    private static final int DEFAULT_FADE_COLOR = 0xcccccccc;
-
-    /**
-     * Minimum velocity that will be detected as a fling
-     */
-    private static final int MIN_FLING_VELOCITY = 400; // dips per second
-
-    /**
-     * The size of the overhang in pixels.
-     * This is the minimum section of the sliding panel that will
-     * be visible in the open state to allow for a closing drag.
-     */
-    private final int mOverhangSize;
-
-    /**
-     * True if a panel can slide with the current measurements
-     */
-    private boolean mCanSlide;
-
-    /**
-     * The child view that can slide, if any.
-     */
-    private View mSlideableView;
-
-    /**
-     * The view that can be used to start the drag with.
-     */
-    private View mCapturableView;
-
-    /**
-     * How far the panel is offset from its closed position.
-     * range [0, 1] where 0 = closed, 1 = open.
-     */
-    private float mSlideOffset;
-
-    /**
-     * How far the panel is offset from its closed position, in pixels.
-     * range [0, {@link #mSlideRange}] where 0 is completely closed.
-     */
-    private int mSlideOffsetPx;
-
-    /**
-     * How far in pixels the slideable panel may move.
-     */
-    private int mSlideRange;
-
-    /**
-     * A panel view is locked into internal scrolling or another condition that
-     * is preventing a drag.
-     */
-    private boolean mIsUnableToDrag;
-
-    /**
-     * Tracks whether or not a child view is in the process of a nested scroll.
-     */
-    private boolean mIsInNestedScroll;
-
-    /**
-     * Indicates that the layout is currently in the process of a nested pre-scroll operation where
-     * the child scrolling view is being dragged downwards.
-     */
-    private boolean mInNestedPreScrollDownwards;
-
-    /**
-     * Indicates that the layout is currently in the process of a nested pre-scroll operation where
-     * the child scrolling view is being dragged upwards.
-     */
-    private boolean mInNestedPreScrollUpwards;
-
-    /**
-     * Indicates that the layout is currently in the process of a fling initiated by a pre-fling
-     * from the child scrolling view.
-     */
-    private boolean mIsInNestedFling;
-
-    /**
-     * Indicates the direction of the pre fling. We need to store this information since
-     * OverScoller doesn't expose the direction of its velocity.
-     */
-    private boolean mInUpwardsPreFling;
-
-    /**
-     * Stores an offset used to represent a point somewhere in between the panel's fully closed
-     * state and fully opened state where the panel can be temporarily pinned or opened up to
-     * during scrolling.
-     */
-    private int mIntermediateOffset = 0;
-
-    private float mInitialMotionX;
-    private float mInitialMotionY;
-
-    private PanelSlideCallbacks mPanelSlideCallbacks;
-
-    private final ViewDragHelper mDragHelper;
-
-    /**
-     * Stores whether or not the pane was open the last time it was slideable.
-     * If open/close operations are invoked this state is modified. Used by
-     * instance state save/restore.
-     */
-    private boolean mPreservedOpenState;
-    private boolean mFirstLayout = true;
-
-    private final Rect mTmpRect = new Rect();
-
-    /**
-     * How many dips we need to scroll past a position before we can snap to the next position
-     * on release. Using this prevents accidentally snapping to positions.
-     *
-     * This is needed since vertical nested scrolling can be passed to this class even if the
-     * vertical scroll is less than the the nested list's touch slop.
-     */
-    private final int mReleaseScrollSlop;
-
-    /**
-     * Callbacks for interacting with sliding panes.
-     */
-    public interface PanelSlideCallbacks {
-        /**
-         * Called when a sliding pane's position changes.
-         * @param panel The child view that was moved
-         * @param slideOffset The new offset of this sliding pane within its range, from 0-1
-         */
-        public void onPanelSlide(View panel, float slideOffset);
-        /**
-         * Called when a sliding pane becomes slid completely open. The pane may or may not
-         * be interactive at this point depending on how much of the pane is visible.
-         * @param panel The child view that was slid to an open position, revealing other panes
-         */
-        public void onPanelOpened(View panel);
-
-        /**
-         * Called when a sliding pane becomes slid completely closed. The pane is now guaranteed
-         * to be interactive. It may now obscure other views in the layout.
-         * @param panel The child view that was slid to a closed position
-         */
-        public void onPanelClosed(View panel);
-
-        /**
-         * Called when a sliding pane is flung as far open/closed as it can be.
-         * @param velocityY Velocity of the panel once its fling goes as far as it can.
-         */
-        public void onPanelFlingReachesEdge(int velocityY);
-
-        /**
-         * Returns true if the second panel's contents haven't been scrolled at all. This value is
-         * used to determine whether or not we can fully expand the header on downwards scrolls.
-         *
-         * Instead of using this callback, it would be preferable to instead fully expand the header
-         * on a View#onNestedFlingOver() callback. The behavior would be nicer. Unfortunately,
-         * no such callback exists yet (b/17547693).
-         */
-        public boolean isScrollableChildUnscrolled();
-    }
-
-    public OverlappingPaneLayout(Context context) {
-        this(context, null);
-    }
-
-    public OverlappingPaneLayout(Context context, AttributeSet attrs) {
-        this(context, attrs, 0);
-    }
-
-    public OverlappingPaneLayout(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-
-        final float density = context.getResources().getDisplayMetrics().density;
-        mOverhangSize = (int) (DEFAULT_OVERHANG_SIZE * density + 0.5f);
-
-        setWillNotDraw(false);
-
-        ViewCompat.setAccessibilityDelegate(this, new AccessibilityDelegate());
-
-        mDragHelper = ViewDragHelper.create(this, 0.5f, new DragHelperCallback());
-        mDragHelper.setMinVelocity(MIN_FLING_VELOCITY * density);
-
-        mReleaseScrollSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();
-    }
-
-    /**
-     * Set an offset, somewhere in between the panel's fully closed state and fully opened state,
-     * where the panel can be temporarily pinned or opened up to.
-     *
-     * @param offset Offset in pixels
-     */
-    public void setIntermediatePinnedOffset(int offset) {
-        mIntermediateOffset = offset;
-    }
-
-    /**
-     * Set the view that can be used to start dragging the sliding pane.
-     */
-    public void setCapturableView(View capturableView) {
-        mCapturableView = capturableView;
-    }
-
-    public void setPanelSlideCallbacks(PanelSlideCallbacks listener) {
-        mPanelSlideCallbacks = listener;
-    }
-
-    void dispatchOnPanelSlide(View panel) {
-        mPanelSlideCallbacks.onPanelSlide(panel, mSlideOffset);
-    }
-
-    void dispatchOnPanelOpened(View panel) {
-        mPanelSlideCallbacks.onPanelOpened(panel);
-        sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
-    }
-
-    void dispatchOnPanelClosed(View panel) {
-        mPanelSlideCallbacks.onPanelClosed(panel);
-        sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
-    }
-
-    void updateObscuredViewsVisibility(View panel) {
-        final int startBound = getPaddingTop();
-        final int endBound = getHeight() - getPaddingBottom();
-
-        final int leftBound = getPaddingLeft();
-        final int rightBound = getWidth() - getPaddingRight();
-        final int left;
-        final int right;
-        final int top;
-        final int bottom;
-        if (panel != null && viewIsOpaque(panel)) {
-            left = panel.getLeft();
-            right = panel.getRight();
-            top = panel.getTop();
-            bottom = panel.getBottom();
-        } else {
-            left = right = top = bottom = 0;
-        }
-
-        for (int i = 0, childCount = getChildCount(); i < childCount; i++) {
-            final View child = getChildAt(i);
-
-            if (child == panel) {
-                // There are still more children above the panel but they won't be affected.
-                break;
-            }
-
-            final int clampedChildLeft = Math.max(leftBound, child.getLeft());
-            final int clampedChildRight = Math.min(rightBound, child.getRight());
-            final int clampedChildTop = Math.max(startBound, child.getTop());
-            final int clampedChildBottom = Math.min(endBound, child.getBottom());
-
-            final int vis;
-            if (clampedChildLeft >= left && clampedChildTop >= top &&
-                    clampedChildRight <= right && clampedChildBottom <= bottom) {
-                vis = INVISIBLE;
-            } else {
-                vis = VISIBLE;
-            }
-            child.setVisibility(vis);
-        }
-    }
-
-    void setAllChildrenVisible() {
-        for (int i = 0, childCount = getChildCount(); i < childCount; i++) {
-            final View child = getChildAt(i);
-            if (child.getVisibility() == INVISIBLE) {
-                child.setVisibility(VISIBLE);
-            }
-        }
-    }
-
-    private static boolean viewIsOpaque(View v) {
-        if (ViewCompat.isOpaque(v)) return true;
-
-        final Drawable bg = v.getBackground();
-        if (bg != null) {
-            return bg.getOpacity() == PixelFormat.OPAQUE;
-        }
-        return false;
-    }
-
-    @Override
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        mFirstLayout = true;
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-        mFirstLayout = true;
-    }
-
-    @Override
-    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-
-        int widthMode = MeasureSpec.getMode(widthMeasureSpec);
-        int widthSize = MeasureSpec.getSize(widthMeasureSpec);
-        int heightMode = MeasureSpec.getMode(heightMeasureSpec);
-        int heightSize = MeasureSpec.getSize(heightMeasureSpec);
-
-        if (widthMode != MeasureSpec.EXACTLY) {
-            if (isInEditMode()) {
-                // Don't crash the layout editor. Consume all of the space if specified
-                // or pick a magic number from thin air otherwise.
-                // TODO Better communication with tools of this bogus state.
-                // It will crash on a real device.
-                if (widthMode == MeasureSpec.AT_MOST) {
-                    widthMode = MeasureSpec.EXACTLY;
-                } else if (widthMode == MeasureSpec.UNSPECIFIED) {
-                    widthMode = MeasureSpec.EXACTLY;
-                    widthSize = 300;
-                }
-            } else {
-                throw new IllegalStateException("Width must have an exact value or MATCH_PARENT");
-            }
-        } else if (heightMode == MeasureSpec.UNSPECIFIED) {
-            if (isInEditMode()) {
-                // Don't crash the layout editor. Pick a magic number from thin air instead.
-                // TODO Better communication with tools of this bogus state.
-                // It will crash on a real device.
-                if (heightMode == MeasureSpec.UNSPECIFIED) {
-                    heightMode = MeasureSpec.AT_MOST;
-                    heightSize = 300;
-                }
-            } else {
-                throw new IllegalStateException("Height must not be UNSPECIFIED");
-            }
-        }
-
-        int layoutWidth = 0;
-        int maxLayoutWidth = -1;
-        switch (widthMode) {
-            case MeasureSpec.EXACTLY:
-                layoutWidth = maxLayoutWidth = widthSize - getPaddingLeft() - getPaddingRight();
-                break;
-            case MeasureSpec.AT_MOST:
-                maxLayoutWidth = widthSize - getPaddingLeft() - getPaddingRight();
-                break;
-        }
-
-        float weightSum = 0;
-        boolean canSlide = false;
-        final int heightAvailable = heightSize - getPaddingTop() - getPaddingBottom();
-        int heightRemaining = heightAvailable;
-        final int childCount = getChildCount();
-
-        if (childCount > 2) {
-            Log.e(TAG, "onMeasure: More than two child views are not supported.");
-        }
-
-        // We'll find the current one below.
-        mSlideableView = null;
-
-        // First pass. Measure based on child LayoutParams width/height.
-        // Weight will incur a second pass.
-        for (int i = 0; i < childCount; i++) {
-            final View child = getChildAt(i);
-            final LayoutParams lp = (LayoutParams) child.getLayoutParams();
-
-            if (child.getVisibility() == GONE) {
-                continue;
-            }
-
-            if (lp.weight > 0) {
-                weightSum += lp.weight;
-
-                // If we have no height, weight is the only contributor to the final size.
-                // Measure this view on the weight pass only.
-                if (lp.height == 0) continue;
-            }
-
-            int childHeightSpec;
-            final int verticalMargin = lp.topMargin + lp.bottomMargin;
-            if (lp.height == LayoutParams.WRAP_CONTENT) {
-                childHeightSpec = MeasureSpec.makeMeasureSpec(heightAvailable - verticalMargin,
-                        MeasureSpec.AT_MOST);
-            } else if (lp.height == LayoutParams.MATCH_PARENT) {
-                childHeightSpec = MeasureSpec.makeMeasureSpec(heightAvailable - verticalMargin,
-                        MeasureSpec.EXACTLY);
-            } else {
-                childHeightSpec = MeasureSpec.makeMeasureSpec(lp.height, MeasureSpec.EXACTLY);
-            }
-
-            int childWidthSpec;
-            if (lp.width == LayoutParams.WRAP_CONTENT) {
-                childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth, MeasureSpec.AT_MOST);
-            } else if (lp.width == LayoutParams.MATCH_PARENT) {
-                childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth, MeasureSpec.EXACTLY);
-            } else {
-                childWidthSpec = MeasureSpec.makeMeasureSpec(lp.width, MeasureSpec.EXACTLY);
-            }
-
-            child.measure(childWidthSpec, childHeightSpec);
-            final int childWidth = child.getMeasuredWidth();
-            final int childHeight = child.getMeasuredHeight();
-
-            if (widthMode == MeasureSpec.AT_MOST && childWidth > layoutWidth) {
-                layoutWidth = Math.min(childWidth, maxLayoutWidth);
-            }
-
-            heightRemaining -= childHeight;
-            canSlide |= lp.slideable = heightRemaining < 0;
-            if (lp.slideable) {
-                mSlideableView = child;
-            }
-        }
-
-        // Resolve weight and make sure non-sliding panels are smaller than the full screen.
-        if (canSlide || weightSum > 0) {
-            final int fixedPanelHeightLimit = heightAvailable - mOverhangSize;
-
-            for (int i = 0; i < childCount; i++) {
-                final View child = getChildAt(i);
-
-                if (child.getVisibility() == GONE) {
-                    continue;
-                }
-
-                final LayoutParams lp = (LayoutParams) child.getLayoutParams();
-
-                if (child.getVisibility() == GONE) {
-                    continue;
-                }
-
-                final boolean skippedFirstPass = lp.height == 0 && lp.weight > 0;
-                final int measuredHeight = skippedFirstPass ? 0 : child.getMeasuredHeight();
-                if (canSlide && child != mSlideableView) {
-                    if (lp.height < 0 && (measuredHeight > fixedPanelHeightLimit || lp.weight > 0)) {
-                        // Fixed panels in a sliding configuration should
-                        // be clamped to the fixed panel limit.
-                        final int childWidthSpec;
-                        if (skippedFirstPass) {
-                            // Do initial width measurement if we skipped measuring this view
-                            // the first time around.
-                            if (lp.width == LayoutParams.WRAP_CONTENT) {
-                                childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth,
-                                        MeasureSpec.AT_MOST);
-                            } else if (lp.height == LayoutParams.MATCH_PARENT) {
-                                childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth,
-                                        MeasureSpec.EXACTLY);
-                            } else {
-                                childWidthSpec = MeasureSpec.makeMeasureSpec(lp.width,
-                                        MeasureSpec.EXACTLY);
-                            }
-                        } else {
-                            childWidthSpec = MeasureSpec.makeMeasureSpec(
-                                    child.getMeasuredWidth(), MeasureSpec.EXACTLY);
-                        }
-                        final int childHeightSpec = MeasureSpec.makeMeasureSpec(
-                                fixedPanelHeightLimit, MeasureSpec.EXACTLY);
-                        child.measure(childWidthSpec, childHeightSpec);
-                    }
-                } else if (lp.weight > 0) {
-                    int childWidthSpec;
-                    if (lp.height == 0) {
-                        // This was skipped the first time; figure out a real width spec.
-                        if (lp.width == LayoutParams.WRAP_CONTENT) {
-                            childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth,
-                                    MeasureSpec.AT_MOST);
-                        } else if (lp.width == LayoutParams.MATCH_PARENT) {
-                            childWidthSpec = MeasureSpec.makeMeasureSpec(maxLayoutWidth,
-                                    MeasureSpec.EXACTLY);
-                        } else {
-                            childWidthSpec = MeasureSpec.makeMeasureSpec(lp.width,
-                                    MeasureSpec.EXACTLY);
-                        }
-                    } else {
-                        childWidthSpec = MeasureSpec.makeMeasureSpec(
-                                child.getMeasuredWidth(), MeasureSpec.EXACTLY);
-                    }
-
-                    if (canSlide) {
-                        // Consume available space
-                        final int verticalMargin = lp.topMargin + lp.bottomMargin;
-                        final int newHeight = heightAvailable - verticalMargin;
-                        final int childHeightSpec = MeasureSpec.makeMeasureSpec(
-                                newHeight, MeasureSpec.EXACTLY);
-                        if (measuredHeight != newHeight) {
-                            child.measure(childWidthSpec, childHeightSpec);
-                        }
-                    } else {
-                        // Distribute the extra width proportionally similar to LinearLayout
-                        final int heightToDistribute = Math.max(0, heightRemaining);
-                        final int addedHeight = (int) (lp.weight * heightToDistribute / weightSum);
-                        final int childHeightSpec = MeasureSpec.makeMeasureSpec(
-                                measuredHeight + addedHeight, MeasureSpec.EXACTLY);
-                        child.measure(childWidthSpec, childHeightSpec);
-                    }
-                }
-            }
-        }
-
-        final int measuredHeight = heightSize;
-        final int measuredWidth = layoutWidth + getPaddingLeft() + getPaddingRight();
-
-        setMeasuredDimension(measuredWidth, measuredHeight);
-        mCanSlide = canSlide;
-
-        if (mDragHelper.getViewDragState() != ViewDragHelper.STATE_IDLE && !canSlide) {
-            // Cancel scrolling in progress, it's no longer relevant.
-            mDragHelper.abort();
-        }
-    }
-
-    @Override
-    protected void onLayout(boolean changed, int l, int t, int r, int b) {
-        mDragHelper.setEdgeTrackingEnabled(ViewDragHelper.EDGE_TOP);
-
-        final int height = b - t;
-        final int paddingTop = getPaddingTop();
-        final int paddingBottom = getPaddingBottom();
-        final int paddingLeft = getPaddingLeft();
-
-        final int childCount = getChildCount();
-        int yStart = paddingTop;
-        int nextYStart = yStart;
-
-        if (mFirstLayout) {
-            mSlideOffset = mCanSlide && mPreservedOpenState ? 1.f : 0.f;
-        }
-
-        for (int i = 0; i < childCount; i++) {
-            final View child = getChildAt(i);
-
-            if (child.getVisibility() == GONE) {
-                continue;
-            }
-
-            final LayoutParams lp = (LayoutParams) child.getLayoutParams();
-
-            final int childHeight = child.getMeasuredHeight();
-
-            if (lp.slideable) {
-                final int margin = lp.topMargin + lp.bottomMargin;
-                final int range = Math.min(nextYStart,
-                        height - paddingBottom - mOverhangSize) - yStart - margin;
-                mSlideRange = range;
-                final int lpMargin = lp.topMargin;
-                final int pos = (int) (range * mSlideOffset);
-                yStart += pos + lpMargin;
-                updateSlideOffset(pos);
-            } else {
-                yStart = nextYStart;
-            }
-
-            final int childTop = yStart;
-            final int childBottom = childTop + childHeight;
-            final int childLeft = paddingLeft;
-            final int childRight = childLeft + child.getMeasuredWidth();
-
-            child.layout(childLeft, childTop, childRight, childBottom);
-
-            nextYStart += child.getHeight();
-        }
-
-        if (mFirstLayout) {
-            updateObscuredViewsVisibility(mSlideableView);
-        }
-
-        mFirstLayout = false;
-    }
-
-    @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        super.onSizeChanged(w, h, oldw, oldh);
-        // Recalculate sliding panes and their details
-        if (h != oldh) {
-            mFirstLayout = true;
-        }
-    }
-
-    @Override
-    public void requestChildFocus(View child, View focused) {
-        super.requestChildFocus(child, focused);
-        if (!isInTouchMode() && !mCanSlide) {
-            mPreservedOpenState = child == mSlideableView;
-        }
-    }
-
-    @Override
-    public boolean onInterceptTouchEvent(MotionEvent ev) {
-        final int action = MotionEventCompat.getActionMasked(ev);
-
-        // Preserve the open state based on the last view that was touched.
-        if (!mCanSlide && action == MotionEvent.ACTION_DOWN && getChildCount() > 1) {
-            // After the first things will be slideable.
-            final View secondChild = getChildAt(1);
-            if (secondChild != null) {
-                mPreservedOpenState = !mDragHelper.isViewUnder(secondChild,
-                        (int) ev.getX(), (int) ev.getY());
-            }
-        }
-
-        if (!mCanSlide || (mIsUnableToDrag && action != MotionEvent.ACTION_DOWN)) {
-            if (!mIsInNestedScroll) {
-                mDragHelper.cancel();
-            }
-            return super.onInterceptTouchEvent(ev);
-        }
-
-        if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) {
-            if (!mIsInNestedScroll) {
-                mDragHelper.cancel();
-            }
-            return false;
-        }
-
-        switch (action) {
-            case MotionEvent.ACTION_DOWN: {
-                mIsUnableToDrag = false;
-                final float x = ev.getX();
-                final float y = ev.getY();
-                mInitialMotionX = x;
-                mInitialMotionY = y;
-
-                break;
-            }
-
-            case MotionEvent.ACTION_MOVE: {
-                final float x = ev.getX();
-                final float y = ev.getY();
-                final float adx = Math.abs(x - mInitialMotionX);
-                final float ady = Math.abs(y - mInitialMotionY);
-                final int slop = mDragHelper.getTouchSlop();
-                if (ady > slop && adx > ady || !isCapturableViewUnder((int) x, (int) y)) {
-                    if (!mIsInNestedScroll) {
-                        mDragHelper.cancel();
-                    }
-                    mIsUnableToDrag = true;
-                    return false;
-                }
-            }
-        }
-
-        final boolean interceptForDrag = mDragHelper.shouldInterceptTouchEvent(ev);
-
-        return interceptForDrag;
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev) {
-        if (!mCanSlide) {
-            return super.onTouchEvent(ev);
-        }
-
-        mDragHelper.processTouchEvent(ev);
-
-        final int action = ev.getAction();
-        boolean wantTouchEvents = true;
-
-        switch (action & MotionEventCompat.ACTION_MASK) {
-            case MotionEvent.ACTION_DOWN: {
-                final float x = ev.getX();
-                final float y = ev.getY();
-                mInitialMotionX = x;
-                mInitialMotionY = y;
-                break;
-            }
-        }
-
-        return wantTouchEvents;
-    }
-
-    /**
-     * Refreshes the {@link OverlappingPaneLayout} be attempting to re-open or re-close the pane.
-     * This ensures that the overlapping pane is repositioned based on any changes to the view
-     * which is being overlapped.
-     * <p>
-     * The {@link #openPane()} and {@link #closePane()} methods do not perform any animation if the
-     * pane has already been positioned appropriately.
-     */
-    public void refresh() {
-        if (isOpen()) {
-            openPane();
-        } else {
-            closePane();
-        }
-    }
-
-    private boolean closePane(View pane, int initialVelocity) {
-        if (mFirstLayout || smoothSlideTo(0.f, initialVelocity)) {
-            mPreservedOpenState = false;
-            return true;
-        }
-        return false;
-    }
-
-    private boolean openPane(View pane, int initialVelocity) {
-        if (mFirstLayout || smoothSlideTo(1.f, initialVelocity)) {
-            mPreservedOpenState = true;
-            return true;
-        }
-        return false;
-    }
-
-    private void updateSlideOffset(int offsetPx) {
-        mSlideOffsetPx = offsetPx;
-        mSlideOffset = (float) mSlideOffsetPx / mSlideRange;
-    }
-
-    /**
-     * Open the sliding pane if it is currently slideable. If first layout
-     * has already completed this will animate.
-     *
-     * @return true if the pane was slideable and is now open/in the process of opening
-     */
-    public boolean openPane() {
-        return openPane(mSlideableView, 0);
-    }
-
-    /**
-     * Close the sliding pane if it is currently slideable. If first layout
-     * has already completed this will animate.
-     *
-     * @return true if the pane was slideable and is now closed/in the process of closing
-     */
-    public boolean closePane() {
-        return closePane(mSlideableView, 0);
-    }
-
-    /**
-     * Check if the layout is open. It can be open either because the slider
-     * itself is open revealing the left pane, or if all content fits without sliding.
-     *
-     * @return true if sliding panels are open
-     */
-    public boolean isOpen() {
-        return !mCanSlide || mSlideOffset > 0;
-    }
-
-    /**
-     * Check if the content in this layout cannot fully fit side by side and therefore
-     * the content pane can be slid back and forth.
-     *
-     * @return true if content in this layout can be slid open and closed
-     */
-    public boolean isSlideable() {
-        return mCanSlide;
-    }
-
-    private void onPanelDragged(int newTop) {
-        if (mSlideableView == null) {
-            // This can happen if we're aborting motion during layout because everything now fits.
-            mSlideOffset = 0;
-            return;
-        }
-        final LayoutParams lp = (LayoutParams) mSlideableView.getLayoutParams();
-
-        final int lpMargin = lp.topMargin;
-        final int topBound = getPaddingTop() + lpMargin;
-
-        updateSlideOffset(newTop - topBound);
-
-        dispatchOnPanelSlide(mSlideableView);
-    }
-
-    @Override
-    protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
-        final LayoutParams lp = (LayoutParams) child.getLayoutParams();
-        boolean result;
-        final int save = canvas.save(Canvas.CLIP_SAVE_FLAG);
-
-        if (mCanSlide && !lp.slideable && mSlideableView != null) {
-            // Clip against the slider; no sense drawing what will immediately be covered.
-            canvas.getClipBounds(mTmpRect);
-
-            mTmpRect.bottom = Math.min(mTmpRect.bottom, mSlideableView.getTop());
-            canvas.clipRect(mTmpRect);
-        }
-
-        if (Build.VERSION.SDK_INT >= 11) { // HC
-            result = super.drawChild(canvas, child, drawingTime);
-        } else {
-            if (child.isDrawingCacheEnabled()) {
-                child.setDrawingCacheEnabled(false);
-            }
-            result = super.drawChild(canvas, child, drawingTime);
-        }
-
-        canvas.restoreToCount(save);
-
-        return result;
-    }
-
-    /**
-     * Smoothly animate mDraggingPane to the target X position within its range.
-     *
-     * @param slideOffset position to animate to
-     * @param velocity initial velocity in case of fling, or 0.
-     */
-    boolean smoothSlideTo(float slideOffset, int velocity) {
-        if (!mCanSlide) {
-            // Nothing to do.
-            return false;
-        }
-
-        final LayoutParams lp = (LayoutParams) mSlideableView.getLayoutParams();
-
-        int y;
-        int topBound = getPaddingTop() + lp.topMargin;
-        y = (int) (topBound + slideOffset * mSlideRange);
-
-        if (mDragHelper.smoothSlideViewTo(mSlideableView, mSlideableView.getLeft(), y)) {
-            setAllChildrenVisible();
-            ViewCompat.postInvalidateOnAnimation(this);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public void computeScroll() {
-        if (mDragHelper.continueSettling(/* deferCallbacks = */ false)) {
-            if (!mCanSlide) {
-                mDragHelper.abort();
-                return;
-            }
-
-            ViewCompat.postInvalidateOnAnimation(this);
-        }
-    }
-
-    private boolean isCapturableViewUnder(int x, int y) {
-        View capturableView = mCapturableView != null ? mCapturableView : mSlideableView;
-        if (capturableView == null) {
-            return false;
-        }
-        int[] viewLocation = new int[2];
-        capturableView.getLocationOnScreen(viewLocation);
-        int[] parentLocation = new int[2];
-        this.getLocationOnScreen(parentLocation);
-        int screenX = parentLocation[0] + x;
-        int screenY = parentLocation[1] + y;
-        return screenX >= viewLocation[0]
-                && screenX < viewLocation[0] + capturableView.getWidth()
-                && screenY >= viewLocation[1]
-                && screenY < viewLocation[1] + capturableView.getHeight();
-    }
-
-    @Override
-    protected ViewGroup.LayoutParams generateDefaultLayoutParams() {
-        return new LayoutParams();
-    }
-
-    @Override
-    protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) {
-        return p instanceof MarginLayoutParams
-                ? new LayoutParams((MarginLayoutParams) p)
-                : new LayoutParams(p);
-    }
-
-    @Override
-    protected boolean checkLayoutParams(ViewGroup.LayoutParams p) {
-        return p instanceof LayoutParams && super.checkLayoutParams(p);
-    }
-
-    @Override
-    public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs) {
-        return new LayoutParams(getContext(), attrs);
-    }
-
-    @Override
-    protected Parcelable onSaveInstanceState() {
-        Parcelable superState = super.onSaveInstanceState();
-
-        SavedState ss = new SavedState(superState);
-        ss.isOpen = isSlideable() ? isOpen() : mPreservedOpenState;
-
-        return ss;
-    }
-
-    @Override
-    protected void onRestoreInstanceState(Parcelable state) {
-        SavedState ss = (SavedState) state;
-        super.onRestoreInstanceState(ss.getSuperState());
-
-        if (ss.isOpen) {
-            openPane();
-        } else {
-            closePane();
-        }
-        mPreservedOpenState = ss.isOpen;
-    }
-
-    @Override
-    public boolean onStartNestedScroll(View child, View target, int nestedScrollAxes) {
-        final boolean startNestedScroll = (nestedScrollAxes & SCROLL_AXIS_VERTICAL) != 0;
-        if (startNestedScroll) {
-            mIsInNestedScroll = true;
-            mDragHelper.startNestedScroll(mSlideableView);
-        }
-        if (DEBUG) {
-            Log.d(TAG, "onStartNestedScroll: " + startNestedScroll);
-        }
-        return startNestedScroll;
-    }
-
-    @Override
-    public void onNestedPreScroll(View target, int dx, int dy, int[] consumed) {
-        if (dy == 0) {
-            // Nothing to do
-            return;
-        }
-        if (DEBUG) {
-            Log.d(TAG, "onNestedPreScroll: " + dy);
-        }
-
-        mInNestedPreScrollDownwards = dy < 0;
-        mInNestedPreScrollUpwards = dy > 0;
-        mIsInNestedFling = false;
-        mDragHelper.processNestedScroll(mSlideableView, 0, -dy, consumed);
-    }
-
-    @Override
-    public boolean onNestedPreFling(View target, float velocityX, float velocityY) {
-        if (!(velocityY > 0 && mSlideOffsetPx != 0
-                || velocityY < 0 && mSlideOffsetPx < mIntermediateOffset
-                || velocityY < 0 && mSlideOffsetPx < mSlideRange
-                && mPanelSlideCallbacks.isScrollableChildUnscrolled())) {
-            // No need to consume the fling if the fling won't collapse or expand the header.
-            // How far we are willing to expand the header depends on isScrollableChildUnscrolled().
-            return false;
-        }
-
-        if (DEBUG) {
-            Log.d(TAG, "onNestedPreFling: " + velocityY);
-        }
-        mInUpwardsPreFling = velocityY > 0;
-        mIsInNestedFling = true;
-        mIsInNestedScroll = false;
-        mDragHelper.processNestedFling(mSlideableView, (int) -velocityY);
-        return true;
-    }
-
-    @Override
-    public void onNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed,
-            int dyUnconsumed) {
-        if (DEBUG) {
-            Log.d(TAG, "onNestedScroll: " + dyUnconsumed);
-        }
-        mIsInNestedFling = false;
-        mDragHelper.processNestedScroll(mSlideableView, 0, -dyUnconsumed, null);
-    }
-
-    @Override
-    public void onStopNestedScroll(View child) {
-        if (DEBUG) {
-            Log.d(TAG, "onStopNestedScroll");
-        }
-        if (mIsInNestedScroll && !mIsInNestedFling) {
-            mDragHelper.stopNestedScroll(mSlideableView);
-            mInNestedPreScrollDownwards = false;
-            mInNestedPreScrollUpwards = false;
-            mIsInNestedScroll = false;
-        }
-    }
-
-    private class DragHelperCallback extends ViewDragHelper.Callback {
-
-        @Override
-        public boolean tryCaptureView(View child, int pointerId) {
-            if (mIsUnableToDrag) {
-                return false;
-            }
-
-            return ((LayoutParams) child.getLayoutParams()).slideable;
-        }
-
-        @Override
-        public void onViewDragStateChanged(int state) {
-            if (DEBUG) {
-                Log.d(TAG, "onViewDragStateChanged: " + state);
-            }
-
-            if (mDragHelper.getViewDragState() == ViewDragHelper.STATE_IDLE) {
-                if (mSlideOffset == 0) {
-                    updateObscuredViewsVisibility(mSlideableView);
-                    dispatchOnPanelClosed(mSlideableView);
-                    mPreservedOpenState = false;
-                } else {
-                    dispatchOnPanelOpened(mSlideableView);
-                    mPreservedOpenState = true;
-                }
-            }
-
-            if (state == ViewDragHelper.STATE_IDLE
-                    && mDragHelper.getVelocityMagnitude() > 0
-                    && mIsInNestedFling) {
-                mIsInNestedFling = false;
-                final int flingVelocity = !mInUpwardsPreFling ?
-                        -mDragHelper.getVelocityMagnitude() : mDragHelper.getVelocityMagnitude();
-                mPanelSlideCallbacks.onPanelFlingReachesEdge(flingVelocity);
-            }
-        }
-
-        @Override
-        public void onViewCaptured(View capturedChild, int activePointerId) {
-            // Make all child views visible in preparation for sliding things around
-            setAllChildrenVisible();
-        }
-
-        @Override
-        public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) {
-            onPanelDragged(top);
-            invalidate();
-        }
-
-        @Override
-        public void onViewFling(View releasedChild, float xVelocity, float yVelocity) {
-            if (releasedChild == null) {
-                return;
-            }
-            if (DEBUG) {
-                Log.d(TAG, "onViewFling: " + yVelocity);
-            }
-
-            // Flings won't always fully expand or collapse the header. Instead of performing the
-            // fling and then waiting for the fling to end before snapping into place, we
-            // immediately snap into place if we predict the fling won't fully expand or collapse
-            // the header.
-            int yOffsetPx = mDragHelper.predictFlingYOffset((int) yVelocity);
-            if (yVelocity < 0) {
-                // Only perform a fling if we know the fling will fully compress the header.
-                if (-yOffsetPx > mSlideOffsetPx) {
-                    mDragHelper.flingCapturedView(releasedChild.getLeft(), /* minTop = */ 0,
-                            mSlideRange, Integer.MAX_VALUE, (int) yVelocity);
-                } else {
-                    mIsInNestedFling = false;
-                    onViewReleased(releasedChild, xVelocity, yVelocity);
-                }
-            } else {
-                // Only perform a fling if we know the fling will expand the header as far
-                // as it can possible be expanded, given the isScrollableChildUnscrolled() value.
-                if (yOffsetPx + mSlideOffsetPx >= mSlideRange
-                        && mPanelSlideCallbacks.isScrollableChildUnscrolled()) {
-                    mDragHelper.flingCapturedView(releasedChild.getLeft(), /* minTop = */ 0,
-                            Integer.MAX_VALUE, mSlideRange, (int) yVelocity);
-                } else if (yOffsetPx + mSlideOffsetPx >= mIntermediateOffset
-                        && mSlideOffsetPx <= mIntermediateOffset
-                        && !mPanelSlideCallbacks.isScrollableChildUnscrolled()) {
-                    mDragHelper.flingCapturedView(releasedChild.getLeft(), /* minTop = */ 0,
-                            Integer.MAX_VALUE, mIntermediateOffset, (int) yVelocity);
-                } else {
-                    mIsInNestedFling = false;
-                    onViewReleased(releasedChild, xVelocity, yVelocity);
-                }
-            }
-
-            mInNestedPreScrollDownwards = false;
-            mInNestedPreScrollUpwards = false;
-
-            // Without this invalidate, some calls to flingCapturedView can have no affect.
-            invalidate();
-        }
-
-        @Override
-        public void onViewReleased(View releasedChild, float xvel, float yvel) {
-            if (DEBUG) {
-                Log.d(TAG, "onViewReleased: "
-                        + " mIsInNestedFling=" + mIsInNestedFling
-                        + " unscrolled=" + mPanelSlideCallbacks.isScrollableChildUnscrolled()
-                        + ", mInNestedPreScrollDownwards = " + mInNestedPreScrollDownwards
-                        + ", mInNestedPreScrollUpwards = " + mInNestedPreScrollUpwards
-                        + ", yvel=" + yvel);
-            }
-            if (releasedChild == null) {
-                return;
-            }
-
-            final LayoutParams lp = (LayoutParams) releasedChild.getLayoutParams();
-            int top = getPaddingTop() + lp.topMargin;
-
-            // Decide where to snap to according to the current direction of motion and the current
-            // position. The velocity's magnitude has no bearing on this.
-            if (mInNestedPreScrollDownwards || yvel > 0) {
-                // Scrolling downwards
-                if (mSlideOffsetPx > mIntermediateOffset + mReleaseScrollSlop) {
-                    top += mSlideRange;
-                } else if (mSlideOffsetPx > mReleaseScrollSlop) {
-                    top += mIntermediateOffset;
-                } else {
-                    // Offset is very close to 0
-                }
-            } else if (mInNestedPreScrollUpwards || yvel < 0) {
-                // Scrolling upwards
-                if (mSlideOffsetPx > mSlideRange - mReleaseScrollSlop) {
-                    // Offset is very close to mSlideRange
-                    top += mSlideRange;
-                } else if (mSlideOffsetPx > mIntermediateOffset - mReleaseScrollSlop) {
-                    // Offset is between mIntermediateOffset and mSlideRange.
-                    top += mIntermediateOffset;
-                } else {
-                    // Offset is between 0 and mIntermediateOffset.
-                }
-            } else {
-                // Not moving upwards or downwards. This case can only be triggered when directly
-                // dragging the tabs. We don't bother to remember previous scroll direction
-                // when directly dragging the tabs.
-                if (0 <= mSlideOffsetPx && mSlideOffsetPx <= mIntermediateOffset / 2) {
-                    // Offset is between 0 and mIntermediateOffset, but closer to 0
-                    // Leave top unchanged
-                } else if (mIntermediateOffset / 2 <= mSlideOffsetPx
-                        && mSlideOffsetPx <= (mIntermediateOffset + mSlideRange) / 2) {
-                    // Offset is closest to mIntermediateOffset
-                    top += mIntermediateOffset;
-                } else {
-                    // Offset is between mIntermediateOffset and mSlideRange, but closer to
-                    // mSlideRange
-                    top += mSlideRange;
-                }
-            }
-
-            mDragHelper.settleCapturedViewAt(releasedChild.getLeft(), top);
-            invalidate();
-        }
-
-        @Override
-        public int getViewVerticalDragRange(View child) {
-            return mSlideRange;
-        }
-
-        @Override
-        public int clampViewPositionHorizontal(View child, int left, int dx) {
-            // Make sure we never move views horizontally.
-            return child.getLeft();
-        }
-
-        @Override
-        public int clampViewPositionVertical(View child, int top, int dy) {
-            final LayoutParams lp = (LayoutParams) mSlideableView.getLayoutParams();
-
-            final int newTop;
-            int previousTop = top - dy;
-            int topBound = getPaddingTop() + lp.topMargin;
-            int bottomBound = topBound + (mPanelSlideCallbacks.isScrollableChildUnscrolled()
-                    || !mIsInNestedScroll ? mSlideRange : mIntermediateOffset);
-            if (previousTop > bottomBound) {
-                // We were previously below the bottomBound, so loosen the bottomBound so that this
-                // makes sense. This can occur after the view was directly dragged by the tabs.
-                bottomBound = Math.max(bottomBound, mSlideRange);
-            }
-            newTop = Math.min(Math.max(top, topBound), bottomBound);
-
-            return newTop;
-        }
-
-        @Override
-        public void onEdgeDragStarted(int edgeFlags, int pointerId) {
-            mDragHelper.captureChildView(mSlideableView, pointerId);
-        }
-    }
-
-    public static class LayoutParams extends ViewGroup.MarginLayoutParams {
-        private static final int[] ATTRS = new int[] {
-            android.R.attr.layout_weight
-        };
-
-        /**
-         * The weighted proportion of how much of the leftover space
-         * this child should consume after measurement.
-         */
-        public float weight = 0;
-
-        /**
-         * True if this pane is the slideable pane in the layout.
-         */
-        boolean slideable;
-
-        public LayoutParams() {
-            super(FILL_PARENT, FILL_PARENT);
-        }
-
-        public LayoutParams(int width, int height) {
-            super(width, height);
-        }
-
-        public LayoutParams(android.view.ViewGroup.LayoutParams source) {
-            super(source);
-        }
-
-        public LayoutParams(MarginLayoutParams source) {
-            super(source);
-        }
-
-        public LayoutParams(LayoutParams source) {
-            super(source);
-            this.weight = source.weight;
-        }
-
-        public LayoutParams(Context c, AttributeSet attrs) {
-            super(c, attrs);
-
-            final TypedArray a = c.obtainStyledAttributes(attrs, ATTRS);
-            this.weight = a.getFloat(0, 0);
-            a.recycle();
-        }
-
-    }
-
-    static class SavedState extends BaseSavedState {
-        boolean isOpen;
-
-        SavedState(Parcelable superState) {
-            super(superState);
-        }
-
-        private SavedState(Parcel in) {
-            super(in);
-            isOpen = in.readInt() != 0;
-        }
-
-        @Override
-        public void writeToParcel(Parcel out, int flags) {
-            super.writeToParcel(out, flags);
-            out.writeInt(isOpen ? 1 : 0);
-        }
-
-        public static final Parcelable.Creator<SavedState> CREATOR =
-                new Parcelable.Creator<SavedState>() {
-            public SavedState createFromParcel(Parcel in) {
-                return new SavedState(in);
-            }
-
-            public SavedState[] newArray(int size) {
-                return new SavedState[size];
-            }
-        };
-    }
-
-    class AccessibilityDelegate extends AccessibilityDelegateCompat {
-        private final Rect mTmpRect = new Rect();
-
-        @Override
-        public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
-            final AccessibilityNodeInfoCompat superNode = AccessibilityNodeInfoCompat.obtain(info);
-            super.onInitializeAccessibilityNodeInfo(host, superNode);
-            copyNodeInfoNoChildren(info, superNode);
-            superNode.recycle();
-
-            info.setClassName(OverlappingPaneLayout.class.getName());
-            info.setSource(host);
-
-            final ViewParent parent = ViewCompat.getParentForAccessibility(host);
-            if (parent instanceof View) {
-                info.setParent((View) parent);
-            }
-
-            // This is a best-approximation of addChildrenForAccessibility()
-            // that accounts for filtering.
-            final int childCount = getChildCount();
-            for (int i = 0; i < childCount; i++) {
-                final View child = getChildAt(i);
-                if (child.getVisibility() == View.VISIBLE) {
-                    // Force importance to "yes" since we can't read the value.
-                    ViewCompat.setImportantForAccessibility(
-                            child, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES);
-                    info.addChild(child);
-                }
-            }
-        }
-
-        @Override
-        public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
-            super.onInitializeAccessibilityEvent(host, event);
-
-            event.setClassName(OverlappingPaneLayout.class.getName());
-        }
-
-        /**
-         * This should really be in AccessibilityNodeInfoCompat, but there unfortunately
-         * seem to be a few elements that are not easily cloneable using the underlying API.
-         * Leave it private here as it's not general-purpose useful.
-         */
-        private void copyNodeInfoNoChildren(AccessibilityNodeInfoCompat dest,
-                AccessibilityNodeInfoCompat src) {
-            final Rect rect = mTmpRect;
-
-            src.getBoundsInParent(rect);
-            dest.setBoundsInParent(rect);
-
-            src.getBoundsInScreen(rect);
-            dest.setBoundsInScreen(rect);
-
-            dest.setVisibleToUser(src.isVisibleToUser());
-            dest.setPackageName(src.getPackageName());
-            dest.setClassName(src.getClassName());
-            dest.setContentDescription(src.getContentDescription());
-
-            dest.setEnabled(src.isEnabled());
-            dest.setClickable(src.isClickable());
-            dest.setFocusable(src.isFocusable());
-            dest.setFocused(src.isFocused());
-            dest.setAccessibilityFocused(src.isAccessibilityFocused());
-            dest.setSelected(src.isSelected());
-            dest.setLongClickable(src.isLongClickable());
-
-            dest.addAction(src.getActions());
-
-            dest.setMovementGranularities(src.getMovementGranularities());
-        }
-    }
-}
diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java
index f22a3be..f1fa986 100644
--- a/src/com/android/dialer/widget/SearchEditTextLayout.java
+++ b/src/com/android/dialer/widget/SearchEditTextLayout.java
@@ -20,6 +20,9 @@
 import android.animation.ValueAnimator.AnimatorUpdateListener;
 import android.content.Context;
 import android.util.AttributeSet;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
 import android.view.KeyEvent;
 import android.view.View;
 import android.widget.EditText;
@@ -123,6 +126,21 @@
             }
         });
 
+        mSearchView.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+                mClearButtonView.setVisibility(TextUtils.isEmpty(s) ? View.GONE : View.VISIBLE);
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+            }
+        });
+
         findViewById(R.id.search_close_button).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -177,6 +195,7 @@
             mIsFadedOut = true;
         }
     }
+
     public void expand(boolean animate, boolean requestFocus) {
         updateVisibility(true /* isExpand */);
 
@@ -245,7 +264,11 @@
         // TODO: Prevents keyboard from jumping up in landscape mode after exiting the
         // SearchFragment when the query string is empty. More elegant fix?
         //mExpandedSearchBox.setVisibility(expandedViewVisibility);
-        mClearButtonView.setVisibility(expandedViewVisibility);
+        if (TextUtils.isEmpty(mSearchView.getText())) {
+            mClearButtonView.setVisibility(View.GONE);
+        } else {
+            mClearButtonView.setVisibility(expandedViewVisibility);
+        }
     }
 
     private void prepareAnimator(final boolean expand) {
diff --git a/src/com/android/dialer/widget/ViewDragHelper.java b/src/com/android/dialer/widget/ViewDragHelper.java
deleted file mode 100644
index fe3ab82..0000000
--- a/src/com/android/dialer/widget/ViewDragHelper.java
+++ /dev/null
@@ -1,1574 +0,0 @@
-/*
- * Copyright (C) 2013 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.dialer.widget;
-
-import android.content.Context;
-import android.support.v4.view.MotionEventCompat;
-import android.support.v4.view.VelocityTrackerCompat;
-import android.support.v4.view.ViewCompat;
-import android.util.Log;
-import android.view.MotionEvent;
-import android.view.VelocityTracker;
-import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.widget.Scroller;
-
-import java.util.Arrays;
-
-/**
- * ViewDragHelper is a utility class for writing custom ViewGroups. It offers a number
- * of useful operations and state tracking for allowing a user to drag and reposition
- * views within their parent ViewGroup.
- */
-public class ViewDragHelper {
-    private static final String TAG = "ViewDragHelper";
-
-    /**
-     * A null/invalid pointer ID.
-     */
-    public static final int INVALID_POINTER = -1;
-
-    /**
-     * A view is not currently being dragged or animating as a result of a fling/snap.
-     */
-    public static final int STATE_IDLE = 0;
-
-    /**
-     * A view is currently being dragged. The position is currently changing as a result
-     * of user input or simulated user input.
-     */
-    public static final int STATE_DRAGGING = 1;
-
-    /**
-     * A view is currently settling into place as a result of a fling or
-     * predefined non-interactive motion.
-     */
-    public static final int STATE_SETTLING = 2;
-
-    /**
-     * Edge flag indicating that the left edge should be affected.
-     */
-    public static final int EDGE_LEFT = 1 << 0;
-
-    /**
-     * Edge flag indicating that the right edge should be affected.
-     */
-    public static final int EDGE_RIGHT = 1 << 1;
-
-    /**
-     * Edge flag indicating that the top edge should be affected.
-     */
-    public static final int EDGE_TOP = 1 << 2;
-
-    /**
-     * Edge flag indicating that the bottom edge should be affected.
-     */
-    public static final int EDGE_BOTTOM = 1 << 3;
-
-    /**
-     * Edge flag set indicating all edges should be affected.
-     */
-    public static final int EDGE_ALL = EDGE_LEFT | EDGE_TOP | EDGE_RIGHT | EDGE_BOTTOM;
-
-    /**
-     * Indicates that a check should occur along the horizontal axis
-     */
-    public static final int DIRECTION_HORIZONTAL = 1 << 0;
-
-    /**
-     * Indicates that a check should occur along the vertical axis
-     */
-    public static final int DIRECTION_VERTICAL = 1 << 1;
-
-    /**
-     * Indicates that a check should occur along all axes
-     */
-    public static final int DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;
-
-    private static final int EDGE_SIZE = 20; // dp
-
-    private static final int BASE_SETTLE_DURATION = 256; // ms
-    private static final int MAX_SETTLE_DURATION = 600; // ms
-
-    // Current drag state; idle, dragging or settling
-    private int mDragState;
-
-    // Distance to travel before a drag may begin
-    private int mTouchSlop;
-
-    // Last known position/pointer tracking
-    private int mActivePointerId = INVALID_POINTER;
-    private float[] mInitialMotionX;
-    private float[] mInitialMotionY;
-    private float[] mLastMotionX;
-    private float[] mLastMotionY;
-    private int[] mInitialEdgesTouched;
-    private int[] mEdgeDragsInProgress;
-    private int[] mEdgeDragsLocked;
-    private int mPointersDown;
-
-    private VelocityTracker mVelocityTracker;
-    private float mMaxVelocity;
-    private float mMinVelocity;
-
-    private int mEdgeSize;
-    private int mTrackingEdges;
-
-    // We need to use a Scroller instead of an OverScroller (b/17700698) and as a result, we need
-    // to keep track of the final scroll position ourselves in mFinalScrollY (b/17704016) whenever
-    // we programmatically scroll or fling mScroller.
-    private Scroller mScroller;
-    private int mFinalScrollY;
-
-    private final Callback mCallback;
-
-    private View mCapturedView;
-    private boolean mReleaseInProgress;
-
-    private final ViewGroup mParentView;
-
-    /**
-     * A Callback is used as a communication channel with the ViewDragHelper back to the
-     * parent view using it. <code>on*</code>methods are invoked on siginficant events and several
-     * accessor methods are expected to provide the ViewDragHelper with more information
-     * about the state of the parent view upon request. The callback also makes decisions
-     * governing the range and draggability of child views.
-     */
-    public static abstract class Callback {
-        /**
-         * Called when the drag state changes. See the <code>STATE_*</code> constants
-         * for more information.
-         *
-         * @param state The new drag state
-         *
-         * @see #STATE_IDLE
-         * @see #STATE_DRAGGING
-         * @see #STATE_SETTLING
-         */
-        public void onViewDragStateChanged(int state) {}
-
-        /**
-         * Called when the captured view's position changes as the result of a drag or settle.
-         *
-         * @param changedView View whose position changed
-         * @param left New X coordinate of the left edge of the view
-         * @param top New Y coordinate of the top edge of the view
-         * @param dx Change in X position from the last call
-         * @param dy Change in Y position from the last call
-         */
-        public void onViewPositionChanged(View changedView, int left, int top, int dx, int dy) {}
-
-        /**
-         * Called when a child view is captured for dragging or settling. The ID of the pointer
-         * currently dragging the captured view is supplied. If activePointerId is
-         * identified as {@link #INVALID_POINTER} the capture is programmatic instead of
-         * pointer-initiated.
-         *
-         * @param capturedChild Child view that was captured
-         * @param activePointerId Pointer id tracking the child capture
-         */
-        public void onViewCaptured(View capturedChild, int activePointerId) {}
-
-        /**
-         * Called when the child view is no longer being actively dragged.
-         * The fling velocity is also supplied, if relevant. The velocity values may
-         * be clamped to system minimums or maximums.
-         *
-         * <p>Calling code may decide to fling or otherwise release the view to let it
-         * settle into place. It should do so using {@link #settleCapturedViewAt(int, int)}
-         * or {@link #flingCapturedView(int, int, int, int)}. If the Callback invokes
-         * one of these methods, the ViewDragHelper will enter {@link #STATE_SETTLING}
-         * and the view capture will not fully end until it comes to a complete stop.
-         * If neither of these methods is invoked before <code>onViewReleased</code> returns,
-         * the view will stop in place and the ViewDragHelper will return to
-         * {@link #STATE_IDLE}.</p>
-         *
-         * @param releasedChild The captured child view now being released
-         * @param xvel X velocity of the pointer as it left the screen in pixels per second.
-         * @param yvel Y velocity of the pointer as it left the screen in pixels per second.
-         */
-        public void onViewReleased(View releasedChild, float xvel, float yvel) {}
-
-        /**
-         * Called when the child view has been released with a fling.
-         *
-         * <p>Calling code may decide to fling or otherwise release the view to let it
-         * settle into place.</p>
-         *
-         * @param releasedChild The captured child view now being released
-         * @param xvel X velocity of the fling.
-         * @param yvel Y velocity of the fling.
-         */
-        public void onViewFling(View releasedChild, float xvel, float yvel) {}
-
-        /**
-         * Called when one of the subscribed edges in the parent view has been touched
-         * by the user while no child view is currently captured.
-         *
-         * @param edgeFlags A combination of edge flags describing the edge(s) currently touched
-         * @param pointerId ID of the pointer touching the described edge(s)
-         * @see #EDGE_LEFT
-         * @see #EDGE_TOP
-         * @see #EDGE_RIGHT
-         * @see #EDGE_BOTTOM
-         */
-        public void onEdgeTouched(int edgeFlags, int pointerId) {}
-
-        /**
-         * Called when the given edge may become locked. This can happen if an edge drag
-         * was preliminarily rejected before beginning, but after {@link #onEdgeTouched(int, int)}
-         * was called. This method should return true to lock this edge or false to leave it
-         * unlocked. The default behavior is to leave edges unlocked.
-         *
-         * @param edgeFlags A combination of edge flags describing the edge(s) locked
-         * @return true to lock the edge, false to leave it unlocked
-         */
-        public boolean onEdgeLock(int edgeFlags) {
-            return false;
-        }
-
-        /**
-         * Called when the user has started a deliberate drag away from one
-         * of the subscribed edges in the parent view while no child view is currently captured.
-         *
-         * @param edgeFlags A combination of edge flags describing the edge(s) dragged
-         * @param pointerId ID of the pointer touching the described edge(s)
-         * @see #EDGE_LEFT
-         * @see #EDGE_TOP
-         * @see #EDGE_RIGHT
-         * @see #EDGE_BOTTOM
-         */
-        public void onEdgeDragStarted(int edgeFlags, int pointerId) {}
-
-        /**
-         * Called to determine the Z-order of child views.
-         *
-         * @param index the ordered position to query for
-         * @return index of the view that should be ordered at position <code>index</code>
-         */
-        public int getOrderedChildIndex(int index) {
-            return index;
-        }
-
-        /**
-         * Return the magnitude of a draggable child view's horizontal range of motion in pixels.
-         * This method should return 0 for views that cannot move horizontally.
-         *
-         * @param child Child view to check
-         * @return range of horizontal motion in pixels
-         */
-        public int getViewHorizontalDragRange(View child) {
-            return 0;
-        }
-
-        /**
-         * Return the magnitude of a draggable child view's vertical range of motion in pixels.
-         * This method should return 0 for views that cannot move vertically.
-         *
-         * @param child Child view to check
-         * @return range of vertical motion in pixels
-         */
-        public int getViewVerticalDragRange(View child) {
-            return 0;
-        }
-
-        /**
-         * Called when the user's input indicates that they want to capture the given child view
-         * with the pointer indicated by pointerId. The callback should return true if the user
-         * is permitted to drag the given view with the indicated pointer.
-         *
-         * <p>ViewDragHelper may call this method multiple times for the same view even if
-         * the view is already captured; this indicates that a new pointer is trying to take
-         * control of the view.</p>
-         *
-         * <p>If this method returns true, a call to {@link #onViewCaptured(android.view.View, int)}
-         * will follow if the capture is successful.</p>
-         *
-         * @param child Child the user is attempting to capture
-         * @param pointerId ID of the pointer attempting the capture
-         * @return true if capture should be allowed, false otherwise
-         */
-        public abstract boolean tryCaptureView(View child, int pointerId);
-
-        /**
-         * Restrict the motion of the dragged child view along the horizontal axis.
-         * The default implementation does not allow horizontal motion; the extending
-         * class must override this method and provide the desired clamping.
-         *
-         *
-         * @param child Child view being dragged
-         * @param left Attempted motion along the X axis
-         * @param dx Proposed change in position for left
-         * @return The new clamped position for left
-         */
-        public int clampViewPositionHorizontal(View child, int left, int dx) {
-            return 0;
-        }
-
-        /**
-         * Restrict the motion of the dragged child view along the vertical axis.
-         * The default implementation does not allow vertical motion; the extending
-         * class must override this method and provide the desired clamping.
-         *
-         *
-         * @param child Child view being dragged
-         * @param top Attempted motion along the Y axis
-         * @param dy Proposed change in position for top
-         * @return The new clamped position for top
-         */
-        public int clampViewPositionVertical(View child, int top, int dy) {
-            return 0;
-        }
-    }
-
-    private final Runnable mSetIdleRunnable = new Runnable() {
-        public void run() {
-            setDragState(STATE_IDLE);
-        }
-    };
-
-    /**
-     * Factory method to create a new ViewDragHelper.
-     *
-     * @param forParent Parent view to monitor
-     * @param cb Callback to provide information and receive events
-     * @return a new ViewDragHelper instance
-     */
-    public static ViewDragHelper create(ViewGroup forParent, Callback cb) {
-        return new ViewDragHelper(forParent.getContext(), forParent, cb);
-    }
-
-    /**
-     * Factory method to create a new ViewDragHelper.
-     *
-     * @param forParent Parent view to monitor
-     * @param sensitivity Multiplier for how sensitive the helper should be about detecting
-     *                    the start of a drag. Larger values are more sensitive. 1.0f is normal.
-     * @param cb Callback to provide information and receive events
-     * @return a new ViewDragHelper instance
-     */
-    public static ViewDragHelper create(ViewGroup forParent, float sensitivity, Callback cb) {
-        final ViewDragHelper helper = create(forParent, cb);
-        helper.mTouchSlop = (int) (helper.mTouchSlop * (1 / sensitivity));
-        return helper;
-    }
-
-    /**
-     * Apps should use ViewDragHelper.create() to get a new instance.
-     * This will allow VDH to use internal compatibility implementations for different
-     * platform versions.
-     *
-     * @param context Context to initialize config-dependent params from
-     * @param forParent Parent view to monitor
-     */
-    private ViewDragHelper(Context context, ViewGroup forParent, Callback cb) {
-        if (forParent == null) {
-            throw new IllegalArgumentException("Parent view may not be null");
-        }
-        if (cb == null) {
-            throw new IllegalArgumentException("Callback may not be null");
-        }
-
-        mParentView = forParent;
-        mCallback = cb;
-
-        final ViewConfiguration vc = ViewConfiguration.get(context);
-        final float density = context.getResources().getDisplayMetrics().density;
-        mEdgeSize = (int) (EDGE_SIZE * density + 0.5f);
-
-        mTouchSlop = vc.getScaledTouchSlop();
-        mMaxVelocity = vc.getScaledMaximumFlingVelocity();
-        mMinVelocity = vc.getScaledMinimumFlingVelocity();
-        mScroller = new Scroller(context);
-    }
-
-    /**
-     * Set the minimum velocity that will be detected as having a magnitude greater than zero
-     * in pixels per second. Callback methods accepting a velocity will be clamped appropriately.
-     *
-     * @param minVel Minimum velocity to detect
-     */
-    public void setMinVelocity(float minVel) {
-        mMinVelocity = minVel;
-    }
-
-    /**
-     * Return the currently configured minimum velocity. Any flings with a magnitude less
-     * than this value in pixels per second. Callback methods accepting a velocity will receive
-     * zero as a velocity value if the real detected velocity was below this threshold.
-     *
-     * @return the minimum velocity that will be detected
-     */
-    public float getMinVelocity() {
-        return mMinVelocity;
-    }
-
-    /**
-     * Retrieve the current drag state of this helper. This will return one of
-     * {@link #STATE_IDLE}, {@link #STATE_DRAGGING} or {@link #STATE_SETTLING}.
-     * @return The current drag state
-     */
-    public int getViewDragState() {
-        return mDragState;
-    }
-
-    /**
-     * Enable edge tracking for the selected edges of the parent view.
-     * The callback's {@link Callback#onEdgeTouched(int, int)} and
-     * {@link Callback#onEdgeDragStarted(int, int)} methods will only be invoked
-     * for edges for which edge tracking has been enabled.
-     *
-     * @param edgeFlags Combination of edge flags describing the edges to watch
-     * @see #EDGE_LEFT
-     * @see #EDGE_TOP
-     * @see #EDGE_RIGHT
-     * @see #EDGE_BOTTOM
-     */
-    public void setEdgeTrackingEnabled(int edgeFlags) {
-        mTrackingEdges = edgeFlags;
-    }
-
-    /**
-     * Return the size of an edge. This is the range in pixels along the edges of this view
-     * that will actively detect edge touches or drags if edge tracking is enabled.
-     *
-     * @return The size of an edge in pixels
-     * @see #setEdgeTrackingEnabled(int)
-     */
-    public int getEdgeSize() {
-        return mEdgeSize;
-    }
-
-    /**
-     * Capture a specific child view for dragging within the parent. The callback will be notified
-     * but {@link Callback#tryCaptureView(android.view.View, int)} will not be asked permission to
-     * capture this view.
-     *
-     * @param childView Child view to capture
-     * @param activePointerId ID of the pointer that is dragging the captured child view
-     */
-    public void captureChildView(View childView, int activePointerId) {
-        if (childView.getParent() != mParentView) {
-            throw new IllegalArgumentException("captureChildView: parameter must be a descendant " +
-                    "of the ViewDragHelper's tracked parent view (" + mParentView + ")");
-        }
-
-        mCapturedView = childView;
-        mActivePointerId = activePointerId;
-        mCallback.onViewCaptured(childView, activePointerId);
-        setDragState(STATE_DRAGGING);
-    }
-
-    /**
-     * @return The currently captured view, or null if no view has been captured.
-     */
-    public View getCapturedView() {
-        return mCapturedView;
-    }
-
-    /**
-     * @return The ID of the pointer currently dragging the captured view,
-     *         or {@link #INVALID_POINTER}.
-     */
-    public int getActivePointerId() {
-        return mActivePointerId;
-    }
-
-    /**
-     * @return The minimum distance in pixels that the user must travel to initiate a drag
-     */
-    public int getTouchSlop() {
-        return mTouchSlop;
-    }
-
-    /**
-     * The result of a call to this method is equivalent to
-     * {@link #processTouchEvent(android.view.MotionEvent)} receiving an ACTION_CANCEL event.
-     */
-    public void cancel() {
-        mActivePointerId = INVALID_POINTER;
-        clearMotionHistory();
-
-        if (mVelocityTracker != null) {
-            mVelocityTracker.recycle();
-            mVelocityTracker = null;
-        }
-    }
-
-    /**
-     * {@link #cancel()}, but also abort all motion in progress and snap to the end of any
-     * animation.
-     */
-    public void abort() {
-        cancel();
-        if (mDragState == STATE_SETTLING) {
-            final int oldX = mScroller.getCurrX();
-            final int oldY = mScroller.getCurrY();
-            mScroller.abortAnimation();
-            final int newX = mScroller.getCurrX();
-            final int newY = mScroller.getCurrY();
-            mCallback.onViewPositionChanged(mCapturedView, newX, newY, newX - oldX, newY - oldY);
-        }
-        setDragState(STATE_IDLE);
-    }
-
-    /**
-     * Animate the view <code>child</code> to the given (left, top) position.
-     * If this method returns true, the caller should invoke {@link #continueSettling(boolean)}
-     * on each subsequent frame to continue the motion until it returns false. If this method
-     * returns false there is no further work to do to complete the movement.
-     *
-     * <p>This operation does not count as a capture event, though {@link #getCapturedView()}
-     * will still report the sliding view while the slide is in progress.</p>
-     *
-     * @param child Child view to capture and animate
-     * @param finalLeft Final left position of child
-     * @param finalTop Final top position of child
-     * @return true if animation should continue through {@link #continueSettling(boolean)} calls
-     */
-    public boolean smoothSlideViewTo(View child, int finalLeft, int finalTop) {
-        mCapturedView = child;
-        mActivePointerId = INVALID_POINTER;
-
-        return forceSettleCapturedViewAt(finalLeft, finalTop, 0, 0);
-    }
-
-    /**
-     * Settle the captured view at the given (left, top) position.
-     * The appropriate velocity from prior motion will be taken into account.
-     * If this method returns true, the caller should invoke {@link #continueSettling(boolean)}
-     * on each subsequent frame to continue the motion until it returns false. If this method
-     * returns false there is no further work to do to complete the movement.
-     *
-     * @param finalLeft Settled left edge position for the captured view
-     * @param finalTop Settled top edge position for the captured view
-     * @return true if animation should continue through {@link #continueSettling(boolean)} calls
-     */
-    public boolean settleCapturedViewAt(int finalLeft, int finalTop) {
-        if (!mReleaseInProgress) {
-            throw new IllegalStateException("Cannot settleCapturedViewAt outside of a call to " +
-                    "Callback#onViewReleased");
-        }
-
-        return forceSettleCapturedViewAt(finalLeft, finalTop,
-                (int) VelocityTrackerCompat.getXVelocity(mVelocityTracker, mActivePointerId),
-                (int) VelocityTrackerCompat.getYVelocity(mVelocityTracker, mActivePointerId));
-    }
-
-    /**
-     * Settle the captured view at the given (left, top) position.
-     *
-     * @param finalLeft Target left position for the captured view
-     * @param finalTop Target top position for the captured view
-     * @param xvel Horizontal velocity
-     * @param yvel Vertical velocity
-     * @return true if animation should continue through {@link #continueSettling(boolean)} calls
-     */
-    private boolean forceSettleCapturedViewAt(int finalLeft, int finalTop, int xvel, int yvel) {
-        final int startLeft = mCapturedView.getLeft();
-        final int startTop = mCapturedView.getTop();
-        final int dx = finalLeft - startLeft;
-        final int dy = finalTop - startTop;
-
-        if (dx == 0 && dy == 0) {
-            // Nothing to do. Send callbacks, be done.
-            mScroller.abortAnimation();
-            setDragState(STATE_IDLE);
-            return false;
-        }
-
-        final int duration = computeSettleDuration(mCapturedView, dx, dy, xvel, yvel);
-        mScroller.startScroll(startLeft, startTop, dx, dy, duration);
-        mFinalScrollY = startTop + dy;
-
-        setDragState(STATE_SETTLING);
-        return true;
-    }
-
-    private int computeSettleDuration(View child, int dx, int dy, int xvel, int yvel) {
-        xvel = clampMag(xvel, (int) mMinVelocity, (int) mMaxVelocity);
-        yvel = clampMag(yvel, (int) mMinVelocity, (int) mMaxVelocity);
-        final int absDx = Math.abs(dx);
-        final int absDy = Math.abs(dy);
-        final int absXVel = Math.abs(xvel);
-        final int absYVel = Math.abs(yvel);
-        final int addedVel = absXVel + absYVel;
-        final int addedDistance = absDx + absDy;
-
-        final float xweight = xvel != 0 ? (float) absXVel / addedVel :
-                (float) absDx / addedDistance;
-        final float yweight = yvel != 0 ? (float) absYVel / addedVel :
-                (float) absDy / addedDistance;
-
-        int xduration = computeAxisDuration(dx, xvel, mCallback.getViewHorizontalDragRange(child));
-        int yduration = computeAxisDuration(dy, yvel, mCallback.getViewVerticalDragRange(child));
-
-        return (int) (xduration * xweight + yduration * yweight);
-    }
-
-    private int computeAxisDuration(int delta, int velocity, int motionRange) {
-        if (delta == 0) {
-            return 0;
-        }
-
-        final int width = mParentView.getWidth();
-        final int halfWidth = width / 2;
-        final float distanceRatio = Math.min(1f, (float) Math.abs(delta) / width);
-        final float distance = halfWidth + halfWidth *
-                distanceInfluenceForSnapDuration(distanceRatio);
-
-        int duration;
-        velocity = Math.abs(velocity);
-        if (velocity > 0) {
-            duration = 4 * Math.round(1000 * Math.abs(distance / velocity));
-        } else {
-            final float range = (float) Math.abs(delta) / motionRange;
-            duration = (int) ((range + 1) * BASE_SETTLE_DURATION);
-        }
-        return Math.min(duration, MAX_SETTLE_DURATION);
-    }
-
-    /**
-     * Clamp the magnitude of value for absMin and absMax.
-     * If the value is below the minimum, it will be clamped to zero.
-     * If the value is above the maximum, it will be clamped to the maximum.
-     *
-     * @param value Value to clamp
-     * @param absMin Absolute value of the minimum significant value to return
-     * @param absMax Absolute value of the maximum value to return
-     * @return The clamped value with the same sign as <code>value</code>
-     */
-    private int clampMag(int value, int absMin, int absMax) {
-        final int absValue = Math.abs(value);
-        if (absValue < absMin) return 0;
-        if (absValue > absMax) return value > 0 ? absMax : -absMax;
-        return value;
-    }
-
-    /**
-     * Clamp the magnitude of value for absMin and absMax.
-     * If the value is below the minimum, it will be clamped to zero.
-     * If the value is above the maximum, it will be clamped to the maximum.
-     *
-     * @param value Value to clamp
-     * @param absMin Absolute value of the minimum significant value to return
-     * @param absMax Absolute value of the maximum value to return
-     * @return The clamped value with the same sign as <code>value</code>
-     */
-    private float clampMag(float value, float absMin, float absMax) {
-        final float absValue = Math.abs(value);
-        if (absValue < absMin) return 0;
-        if (absValue > absMax) return value > 0 ? absMax : -absMax;
-        return value;
-    }
-
-    private float distanceInfluenceForSnapDuration(float f) {
-        f -= 0.5f; // center the values about 0.
-        f *= 0.3f * Math.PI / 2.0f;
-        return (float) Math.sin(f);
-    }
-
-    /**
-     * Settle the captured view based on standard free-moving fling behavior.
-     * The caller should invoke {@link #continueSettling(boolean)} on each subsequent frame
-     * to continue the motion until it returns false.
-     *
-     * @param minLeft Minimum X position for the view's left edge
-     * @param minTop Minimum Y position for the view's top edge
-     * @param maxLeft Maximum X position for the view's left edge
-     * @param maxTop Maximum Y position for the view's top edge
-     */
-    public void flingCapturedView(int minLeft, int minTop, int maxLeft, int maxTop) {
-        if (!mReleaseInProgress) {
-            throw new IllegalStateException("Cannot flingCapturedView outside of a call to " +
-                    "Callback#onViewReleased");
-        }
-
-        final int yVelocity = (int) VelocityTrackerCompat
-                .getYVelocity(mVelocityTracker, mActivePointerId);
-        mScroller.fling(mCapturedView.getLeft(), mCapturedView.getTop(),
-                (int) VelocityTrackerCompat.getXVelocity(mVelocityTracker, mActivePointerId),
-                yVelocity, minLeft, maxLeft, minTop, maxTop);
-        mFinalScrollY = yVelocity < 0 ? minTop : maxTop;
-
-        setDragState(STATE_SETTLING);
-    }
-
-    /**
-     * Settle the captured view based on standard free-moving fling behavior.
-     * The caller should invoke {@link #continueSettling(boolean)} on each subsequent frame
-     * to continue the motion until it returns false.
-     *
-     * @param minLeft Minimum X position for the view's left edge
-     * @param minTop Minimum Y position for the view's top edge
-     * @param maxLeft Maximum X position for the view's left edge
-     * @param maxTop Maximum Y position for the view's top edge
-     * @param yvel the Y velocity to fling with
-     */
-    public void flingCapturedView(int minLeft, int minTop, int maxLeft, int maxTop, int yvel) {
-        if (!mReleaseInProgress) {
-            throw new IllegalStateException("Cannot flingCapturedView outside of a call to " +
-                    "Callback#onViewReleased");
-        }
-        mScroller.abortAnimation();
-        mScroller.fling(mCapturedView.getLeft(), mCapturedView.getTop(), 0, yvel,
-                Integer.MIN_VALUE, Integer.MAX_VALUE, Integer.MIN_VALUE, Integer.MAX_VALUE);
-        mFinalScrollY = yvel < 0 ? minTop : maxTop;
-
-        setDragState(STATE_SETTLING);
-    }
-
-    /**
-     * Predict how far a fling with {@param yvel} will cause the view to travel from stand still.
-     * @return predicted y offset
-     */
-    public int predictFlingYOffset(int yvel) {
-        mScroller.abortAnimation();
-        mScroller.fling(0, 0, 0, yvel, Integer.MIN_VALUE, Integer.MAX_VALUE, Integer.MIN_VALUE,
-                Integer.MAX_VALUE);
-        final int finalY = mScroller.getFinalY();
-        mScroller.abortAnimation();
-        return finalY;
-    }
-
-    /**
-     * Move the captured settling view by the appropriate amount for the current time.
-     * If <code>continueSettling</code> returns true, the caller should call it again
-     * on the next frame to continue.
-     *
-     * @param deferCallbacks true if state callbacks should be deferred via posted message.
-     *                       Set this to true if you are calling this method from
-     *                       {@link android.view.View#computeScroll()} or similar methods
-     *                       invoked as part of layout or drawing.
-     * @return true if settle is still in progress
-     */
-    public boolean continueSettling(boolean deferCallbacks) {
-        if (mDragState == STATE_SETTLING) {
-            boolean keepGoing = mScroller.computeScrollOffset();
-            int y = mScroller.getCurrY();
-
-            // Since Scroller's getFinalY() can't be properly set (b/17704016), we need to
-            // perform clamping of mScroller.getCurrY() here.
-            if (y - mCapturedView.getTop() > 0) {
-                y = Math.min(y, mFinalScrollY);
-            } else {
-                y = Math.max(y, mFinalScrollY);
-            }
-            final int dy = y - mCapturedView.getTop();
-
-            if (dy != 0) {
-                mCapturedView.offsetTopAndBottom(dy);
-                mCallback.onViewPositionChanged(mCapturedView, 0, y, 0, dy);
-            }
-
-            if (keepGoing && y == mFinalScrollY) {
-                // Close enough. The interpolator/scroller might think we're still moving
-                // but the user sure doesn't.
-                mScroller.abortAnimation();
-                keepGoing = mScroller.isFinished();
-            }
-
-            if (!keepGoing) {
-                if (deferCallbacks) {
-                    mParentView.post(mSetIdleRunnable);
-                } else {
-                    setDragState(STATE_IDLE);
-                }
-            }
-        }
-
-        return mDragState == STATE_SETTLING;
-    }
-
-    public void processNestedFling(View target, int yvel) {
-        mCapturedView = target;
-        dispatchViewFling(0, yvel);
-    }
-
-    public int getVelocityMagnitude() {
-        // Use Math.abs() to ensure this always returns an absolute value, even if the
-        // ScrollerCompat implementation changes.
-        return (int) Math.abs(mScroller.getCurrVelocity());
-    }
-
-    private void dispatchViewFling(float xvel, float yvel) {
-        mReleaseInProgress = true;
-        mCallback.onViewFling(mCapturedView, xvel, yvel);
-        mReleaseInProgress = false;
-
-        if (mDragState == STATE_DRAGGING) {
-            // onViewReleased didn't call a method that would have changed this. Go idle.
-            setDragState(STATE_IDLE);
-        }
-    }
-
-    /**
-     * Like all callback events this must happen on the UI thread, but release
-     * involves some extra semantics. During a release (mReleaseInProgress)
-     * is the only time it is valid to call {@link #settleCapturedViewAt(int, int)}
-     * or {@link #flingCapturedView(int, int, int, int)}.
-     */
-    private void dispatchViewReleased(float xvel, float yvel) {
-        mReleaseInProgress = true;
-        mCallback.onViewReleased(mCapturedView, xvel, yvel);
-        mReleaseInProgress = false;
-
-        if (mDragState == STATE_DRAGGING) {
-            // onViewReleased didn't call a method that would have changed this. Go idle.
-            setDragState(STATE_IDLE);
-        }
-    }
-
-    private void clearMotionHistory() {
-        if (mInitialMotionX == null) {
-            return;
-        }
-        Arrays.fill(mInitialMotionX, 0);
-        Arrays.fill(mInitialMotionY, 0);
-        Arrays.fill(mLastMotionX, 0);
-        Arrays.fill(mLastMotionY, 0);
-        Arrays.fill(mInitialEdgesTouched, 0);
-        Arrays.fill(mEdgeDragsInProgress, 0);
-        Arrays.fill(mEdgeDragsLocked, 0);
-        mPointersDown = 0;
-    }
-
-    private void clearMotionHistory(int pointerId) {
-        if (mInitialMotionX == null) {
-            return;
-        }
-        mInitialMotionX[pointerId] = 0;
-        mInitialMotionY[pointerId] = 0;
-        mLastMotionX[pointerId] = 0;
-        mLastMotionY[pointerId] = 0;
-        mInitialEdgesTouched[pointerId] = 0;
-        mEdgeDragsInProgress[pointerId] = 0;
-        mEdgeDragsLocked[pointerId] = 0;
-        mPointersDown &= ~(1 << pointerId);
-    }
-
-    private void ensureMotionHistorySizeForId(int pointerId) {
-        if (mInitialMotionX == null || mInitialMotionX.length <= pointerId) {
-            float[] imx = new float[pointerId + 1];
-            float[] imy = new float[pointerId + 1];
-            float[] lmx = new float[pointerId + 1];
-            float[] lmy = new float[pointerId + 1];
-            int[] iit = new int[pointerId + 1];
-            int[] edip = new int[pointerId + 1];
-            int[] edl = new int[pointerId + 1];
-
-            if (mInitialMotionX != null) {
-                System.arraycopy(mInitialMotionX, 0, imx, 0, mInitialMotionX.length);
-                System.arraycopy(mInitialMotionY, 0, imy, 0, mInitialMotionY.length);
-                System.arraycopy(mLastMotionX, 0, lmx, 0, mLastMotionX.length);
-                System.arraycopy(mLastMotionY, 0, lmy, 0, mLastMotionY.length);
-                System.arraycopy(mInitialEdgesTouched, 0, iit, 0, mInitialEdgesTouched.length);
-                System.arraycopy(mEdgeDragsInProgress, 0, edip, 0, mEdgeDragsInProgress.length);
-                System.arraycopy(mEdgeDragsLocked, 0, edl, 0, mEdgeDragsLocked.length);
-            }
-
-            mInitialMotionX = imx;
-            mInitialMotionY = imy;
-            mLastMotionX = lmx;
-            mLastMotionY = lmy;
-            mInitialEdgesTouched = iit;
-            mEdgeDragsInProgress = edip;
-            mEdgeDragsLocked = edl;
-        }
-    }
-
-    private void saveInitialMotion(float x, float y, int pointerId) {
-        ensureMotionHistorySizeForId(pointerId);
-        mInitialMotionX[pointerId] = mLastMotionX[pointerId] = x;
-        mInitialMotionY[pointerId] = mLastMotionY[pointerId] = y;
-        mInitialEdgesTouched[pointerId] = getEdgesTouched((int) x, (int) y);
-        mPointersDown |= 1 << pointerId;
-    }
-
-    private void saveLastMotion(MotionEvent ev) {
-        final int pointerCount = MotionEventCompat.getPointerCount(ev);
-        for (int i = 0; i < pointerCount; i++) {
-            final int pointerId = MotionEventCompat.getPointerId(ev, i);
-            final float x = MotionEventCompat.getX(ev, i);
-            final float y = MotionEventCompat.getY(ev, i);
-            mLastMotionX[pointerId] = x;
-            mLastMotionY[pointerId] = y;
-        }
-    }
-
-    /**
-     * Check if the given pointer ID represents a pointer that is currently down (to the best
-     * of the ViewDragHelper's knowledge).
-     *
-     * <p>The state used to report this information is populated by the methods
-     * {@link #shouldInterceptTouchEvent(android.view.MotionEvent)} or
-     * {@link #processTouchEvent(android.view.MotionEvent)}. If one of these methods has not
-     * been called for all relevant MotionEvents to track, the information reported
-     * by this method may be stale or incorrect.</p>
-     *
-     * @param pointerId pointer ID to check; corresponds to IDs provided by MotionEvent
-     * @return true if the pointer with the given ID is still down
-     */
-    public boolean isPointerDown(int pointerId) {
-        return (mPointersDown & 1 << pointerId) != 0;
-    }
-
-    void setDragState(int state) {
-        if (mDragState != state) {
-            mDragState = state;
-            mCallback.onViewDragStateChanged(state);
-            if (state == STATE_IDLE) {
-                mCapturedView = null;
-            }
-        }
-    }
-
-    /**
-     * Attempt to capture the view with the given pointer ID. The callback will be involved.
-     * This will put us into the "dragging" state. If we've already captured this view with
-     * this pointer this method will immediately return true without consulting the callback.
-     *
-     * @param toCapture View to capture
-     * @param pointerId Pointer to capture with
-     * @return true if capture was successful
-     */
-    boolean tryCaptureViewForDrag(View toCapture, int pointerId) {
-        if (toCapture == mCapturedView && mActivePointerId == pointerId) {
-            // Already done!
-            return true;
-        }
-        if (toCapture != null && mCallback.tryCaptureView(toCapture, pointerId)) {
-            mActivePointerId = pointerId;
-            captureChildView(toCapture, pointerId);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Tests scrollability within child views of v given a delta of dx.
-     *
-     * @param v View to test for horizontal scrollability
-     * @param checkV Whether the view v passed should itself be checked for scrollability (true),
-     *               or just its children (false).
-     * @param dx Delta scrolled in pixels along the X axis
-     * @param dy Delta scrolled in pixels along the Y axis
-     * @param x X coordinate of the active touch point
-     * @param y Y coordinate of the active touch point
-     * @return true if child views of v can be scrolled by delta of dx.
-     */
-    protected boolean canScroll(View v, boolean checkV, int dx, int dy, int x, int y) {
-        if (v instanceof ViewGroup) {
-            final ViewGroup group = (ViewGroup) v;
-            final int scrollX = v.getScrollX();
-            final int scrollY = v.getScrollY();
-            final int count = group.getChildCount();
-            // Count backwards - let topmost views consume scroll distance first.
-            for (int i = count - 1; i >= 0; i--) {
-                // TODO: Add versioned support here for transformed views.
-                // This will not work for transformed views in Honeycomb+
-                final View child = group.getChildAt(i);
-                if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() &&
-                        y + scrollY >= child.getTop() && y + scrollY < child.getBottom() &&
-                        canScroll(child, true, dx, dy, x + scrollX - child.getLeft(),
-                                y + scrollY - child.getTop())) {
-                    return true;
-                }
-            }
-        }
-
-        return checkV && (ViewCompat.canScrollHorizontally(v, -dx) ||
-                ViewCompat.canScrollVertically(v, -dy));
-    }
-
-    /**
-     * Check if this event as provided to the parent view's onInterceptTouchEvent should
-     * cause the parent to intercept the touch event stream.
-     *
-     * @param ev MotionEvent provided to onInterceptTouchEvent
-     * @return true if the parent view should return true from onInterceptTouchEvent
-     */
-    public boolean shouldInterceptTouchEvent(MotionEvent ev) {
-        final int action = MotionEventCompat.getActionMasked(ev);
-        final int actionIndex = MotionEventCompat.getActionIndex(ev);
-
-        if (action == MotionEvent.ACTION_DOWN) {
-            // Reset things for a new event stream, just in case we didn't get
-            // the whole previous stream.
-            cancel();
-        }
-
-        if (mVelocityTracker == null) {
-            mVelocityTracker = VelocityTracker.obtain();
-        }
-        mVelocityTracker.addMovement(ev);
-
-        switch (action) {
-            case MotionEvent.ACTION_DOWN: {
-                final float x = ev.getX();
-                final float y = ev.getY();
-                final int pointerId = MotionEventCompat.getPointerId(ev, 0);
-                saveInitialMotion(x, y, pointerId);
-
-                final View toCapture = findTopChildUnder((int) x, (int) y);
-
-                // Catch a settling view if possible.
-                if (toCapture == mCapturedView && mDragState == STATE_SETTLING) {
-                    tryCaptureViewForDrag(toCapture, pointerId);
-                }
-
-                final int edgesTouched = mInitialEdgesTouched[pointerId];
-                if ((edgesTouched & mTrackingEdges) != 0) {
-                    mCallback.onEdgeTouched(edgesTouched & mTrackingEdges, pointerId);
-                }
-                break;
-            }
-
-            case MotionEventCompat.ACTION_POINTER_DOWN: {
-                final int pointerId = MotionEventCompat.getPointerId(ev, actionIndex);
-                final float x = MotionEventCompat.getX(ev, actionIndex);
-                final float y = MotionEventCompat.getY(ev, actionIndex);
-
-                saveInitialMotion(x, y, pointerId);
-
-                // A ViewDragHelper can only manipulate one view at a time.
-                if (mDragState == STATE_IDLE) {
-                    final int edgesTouched = mInitialEdgesTouched[pointerId];
-                    if ((edgesTouched & mTrackingEdges) != 0) {
-                        mCallback.onEdgeTouched(edgesTouched & mTrackingEdges, pointerId);
-                    }
-                } else if (mDragState == STATE_SETTLING) {
-                    // Catch a settling view if possible.
-                    final View toCapture = findTopChildUnder((int) x, (int) y);
-                    if (toCapture == mCapturedView) {
-                        tryCaptureViewForDrag(toCapture, pointerId);
-                    }
-                }
-                break;
-            }
-
-            case MotionEvent.ACTION_MOVE: {
-                // First to cross a touch slop over a draggable view wins. Also report edge drags.
-                final int pointerCount = MotionEventCompat.getPointerCount(ev);
-                for (int i = 0; i < pointerCount; i++) {
-                    final int pointerId = MotionEventCompat.getPointerId(ev, i);
-                    final float x = MotionEventCompat.getX(ev, i);
-                    final float y = MotionEventCompat.getY(ev, i);
-                    final float dx = x - mInitialMotionX[pointerId];
-                    final float dy = y - mInitialMotionY[pointerId];
-
-                    reportNewEdgeDrags(dx, dy, pointerId);
-                    if (mDragState == STATE_DRAGGING) {
-                        // Callback might have started an edge drag
-                        break;
-                    }
-
-                    final View toCapture = findTopChildUnder((int) x, (int) y);
-                    if (toCapture != null && checkTouchSlop(toCapture, dx, dy) &&
-                            tryCaptureViewForDrag(toCapture, pointerId)) {
-                        break;
-                    }
-                }
-                saveLastMotion(ev);
-                break;
-            }
-
-            case MotionEventCompat.ACTION_POINTER_UP: {
-                final int pointerId = MotionEventCompat.getPointerId(ev, actionIndex);
-                clearMotionHistory(pointerId);
-                break;
-            }
-
-            case MotionEvent.ACTION_UP:
-            case MotionEvent.ACTION_CANCEL: {
-                cancel();
-                break;
-            }
-        }
-
-        return mDragState == STATE_DRAGGING;
-    }
-
-    /**
-     * Process a touch event received by the parent view. This method will dispatch callback events
-     * as needed before returning. The parent view's onTouchEvent implementation should call this.
-     *
-     * @param ev The touch event received by the parent view
-     */
-    public void processTouchEvent(MotionEvent ev) {
-        final int action = MotionEventCompat.getActionMasked(ev);
-        final int actionIndex = MotionEventCompat.getActionIndex(ev);
-
-        if (action == MotionEvent.ACTION_DOWN) {
-            // Reset things for a new event stream, just in case we didn't get
-            // the whole previous stream.
-            cancel();
-        }
-
-        if (mVelocityTracker == null) {
-            mVelocityTracker = VelocityTracker.obtain();
-        }
-        mVelocityTracker.addMovement(ev);
-
-        switch (action) {
-            case MotionEvent.ACTION_DOWN: {
-                final float x = ev.getX();
-                final float y = ev.getY();
-                final int pointerId = MotionEventCompat.getPointerId(ev, 0);
-                final View toCapture = findTopChildUnder((int) x, (int) y);
-
-                saveInitialMotion(x, y, pointerId);
-
-                // Since the parent is already directly processing this touch event,
-                // there is no reason to delay for a slop before dragging.
-                // Start immediately if possible.
-                tryCaptureViewForDrag(toCapture, pointerId);
-
-                final int edgesTouched = mInitialEdgesTouched[pointerId];
-                if ((edgesTouched & mTrackingEdges) != 0) {
-                    mCallback.onEdgeTouched(edgesTouched & mTrackingEdges, pointerId);
-                }
-                break;
-            }
-
-            case MotionEventCompat.ACTION_POINTER_DOWN: {
-                final int pointerId = MotionEventCompat.getPointerId(ev, actionIndex);
-                final float x = MotionEventCompat.getX(ev, actionIndex);
-                final float y = MotionEventCompat.getY(ev, actionIndex);
-
-                saveInitialMotion(x, y, pointerId);
-
-                // A ViewDragHelper can only manipulate one view at a time.
-                if (mDragState == STATE_IDLE) {
-                    // If we're idle we can do anything! Treat it like a normal down event.
-
-                    final View toCapture = findTopChildUnder((int) x, (int) y);
-                    tryCaptureViewForDrag(toCapture, pointerId);
-
-                    final int edgesTouched = mInitialEdgesTouched[pointerId];
-                    if ((edgesTouched & mTrackingEdges) != 0) {
-                        mCallback.onEdgeTouched(edgesTouched & mTrackingEdges, pointerId);
-                    }
-                } else if (isCapturedViewUnder((int) x, (int) y)) {
-                    // We're still tracking a captured view. If the same view is under this
-                    // point, we'll swap to controlling it with this pointer instead.
-                    // (This will still work if we're "catching" a settling view.)
-
-                    tryCaptureViewForDrag(mCapturedView, pointerId);
-                }
-                break;
-            }
-
-            case MotionEvent.ACTION_MOVE: {
-                if (mDragState == STATE_DRAGGING) {
-                    int index = MotionEventCompat.findPointerIndex(ev, mActivePointerId);
-                    if (index < 0) {
-                        Log.e(TAG, "Pointer index for id " + mActivePointerId + " not found."
-                                + " Skipping MotionEvent");
-                        return;
-                    }
-                    final float x = MotionEventCompat.getX(ev, index);
-                    final float y = MotionEventCompat.getY(ev, index);
-                    final int idx = (int) (x - mLastMotionX[mActivePointerId]);
-                    final int idy = (int) (y - mLastMotionY[mActivePointerId]);
-
-                    dragTo(mCapturedView.getLeft() + idx, mCapturedView.getTop() + idy, idx, idy);
-
-                    saveLastMotion(ev);
-                } else {
-                    // Check to see if any pointer is now over a draggable view.
-                    final int pointerCount = MotionEventCompat.getPointerCount(ev);
-                    for (int i = 0; i < pointerCount; i++) {
-                        final int pointerId = MotionEventCompat.getPointerId(ev, i);
-                        final float x = MotionEventCompat.getX(ev, i);
-                        final float y = MotionEventCompat.getY(ev, i);
-                        final float dx = x - mInitialMotionX[pointerId];
-                        final float dy = y - mInitialMotionY[pointerId];
-
-                        reportNewEdgeDrags(dx, dy, pointerId);
-                        if (mDragState == STATE_DRAGGING) {
-                            // Callback might have started an edge drag.
-                            break;
-                        }
-
-                        final View toCapture = findTopChildUnder((int) x, (int) y);
-                        if (checkTouchSlop(toCapture, dx, dy) &&
-                                tryCaptureViewForDrag(toCapture, pointerId)) {
-                            break;
-                        }
-                    }
-                    saveLastMotion(ev);
-                }
-                break;
-            }
-
-            case MotionEventCompat.ACTION_POINTER_UP: {
-                final int pointerId = MotionEventCompat.getPointerId(ev, actionIndex);
-                if (mDragState == STATE_DRAGGING && pointerId == mActivePointerId) {
-                    // Try to find another pointer that's still holding on to the captured view.
-                    int newActivePointer = INVALID_POINTER;
-                    final int pointerCount = MotionEventCompat.getPointerCount(ev);
-                    for (int i = 0; i < pointerCount; i++) {
-                        final int id = MotionEventCompat.getPointerId(ev, i);
-                        if (id == mActivePointerId) {
-                            // This one's going away, skip.
-                            continue;
-                        }
-
-                        final float x = MotionEventCompat.getX(ev, i);
-                        final float y = MotionEventCompat.getY(ev, i);
-                        if (findTopChildUnder((int) x, (int) y) == mCapturedView &&
-                                tryCaptureViewForDrag(mCapturedView, id)) {
-                            newActivePointer = mActivePointerId;
-                            break;
-                        }
-                    }
-
-                    if (newActivePointer == INVALID_POINTER) {
-                        // We didn't find another pointer still touching the view, release it.
-                        releaseViewForPointerUp();
-                    }
-                }
-                clearMotionHistory(pointerId);
-                break;
-            }
-
-            case MotionEvent.ACTION_UP: {
-                if (mDragState == STATE_DRAGGING) {
-                    releaseViewForPointerUp();
-                }
-                cancel();
-                break;
-            }
-
-            case MotionEvent.ACTION_CANCEL: {
-                if (mDragState == STATE_DRAGGING) {
-                    dispatchViewReleased(0, 0);
-                }
-                cancel();
-                break;
-            }
-        }
-    }
-
-    private void reportNewEdgeDrags(float dx, float dy, int pointerId) {
-        int dragsStarted = 0;
-        if (checkNewEdgeDrag(dx, dy, pointerId, EDGE_LEFT)) {
-            dragsStarted |= EDGE_LEFT;
-        }
-        if (checkNewEdgeDrag(dy, dx, pointerId, EDGE_TOP)) {
-            dragsStarted |= EDGE_TOP;
-        }
-        if (checkNewEdgeDrag(dx, dy, pointerId, EDGE_RIGHT)) {
-            dragsStarted |= EDGE_RIGHT;
-        }
-        if (checkNewEdgeDrag(dy, dx, pointerId, EDGE_BOTTOM)) {
-            dragsStarted |= EDGE_BOTTOM;
-        }
-
-        if (dragsStarted != 0) {
-            mEdgeDragsInProgress[pointerId] |= dragsStarted;
-            mCallback.onEdgeDragStarted(dragsStarted, pointerId);
-        }
-    }
-
-    private boolean checkNewEdgeDrag(float delta, float odelta, int pointerId, int edge) {
-        final float absDelta = Math.abs(delta);
-        final float absODelta = Math.abs(odelta);
-
-        if ((mInitialEdgesTouched[pointerId] & edge) != edge  || (mTrackingEdges & edge) == 0 ||
-                (mEdgeDragsLocked[pointerId] & edge) == edge ||
-                (mEdgeDragsInProgress[pointerId] & edge) == edge ||
-                (absDelta <= mTouchSlop && absODelta <= mTouchSlop)) {
-            return false;
-        }
-        if (absDelta < absODelta * 0.5f && mCallback.onEdgeLock(edge)) {
-            mEdgeDragsLocked[pointerId] |= edge;
-            return false;
-        }
-        return (mEdgeDragsInProgress[pointerId] & edge) == 0 && absDelta > mTouchSlop;
-    }
-
-    /**
-     * Check if we've crossed a reasonable touch slop for the given child view.
-     * If the child cannot be dragged along the horizontal or vertical axis, motion
-     * along that axis will not count toward the slop check.
-     *
-     * @param child Child to check
-     * @param dx Motion since initial position along X axis
-     * @param dy Motion since initial position along Y axis
-     * @return true if the touch slop has been crossed
-     */
-    private boolean checkTouchSlop(View child, float dx, float dy) {
-        if (child == null) {
-            return false;
-        }
-        final boolean checkHorizontal = mCallback.getViewHorizontalDragRange(child) > 0;
-        final boolean checkVertical = mCallback.getViewVerticalDragRange(child) > 0;
-
-        if (checkHorizontal && checkVertical) {
-            return dx * dx + dy * dy > mTouchSlop * mTouchSlop;
-        } else if (checkHorizontal) {
-            return Math.abs(dx) > mTouchSlop;
-        } else if (checkVertical) {
-            return Math.abs(dy) > mTouchSlop;
-        }
-        return false;
-    }
-
-    /**
-     * Check if any pointer tracked in the current gesture has crossed
-     * the required slop threshold.
-     *
-     * <p>This depends on internal state populated by
-     * {@link #shouldInterceptTouchEvent(android.view.MotionEvent)} or
-     * {@link #processTouchEvent(android.view.MotionEvent)}. You should only rely on
-     * the results of this method after all currently available touch data
-     * has been provided to one of these two methods.</p>
-     *
-     * @param directions Combination of direction flags, see {@link #DIRECTION_HORIZONTAL},
-     *                   {@link #DIRECTION_VERTICAL}, {@link #DIRECTION_ALL}
-     * @return true if the slop threshold has been crossed, false otherwise
-     */
-    public boolean checkTouchSlop(int directions) {
-        final int count = mInitialMotionX.length;
-        for (int i = 0; i < count; i++) {
-            if (checkTouchSlop(directions, i)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Check if the specified pointer tracked in the current gesture has crossed
-     * the required slop threshold.
-     *
-     * <p>This depends on internal state populated by
-     * {@link #shouldInterceptTouchEvent(android.view.MotionEvent)} or
-     * {@link #processTouchEvent(android.view.MotionEvent)}. You should only rely on
-     * the results of this method after all currently available touch data
-     * has been provided to one of these two methods.</p>
-     *
-     * @param directions Combination of direction flags, see {@link #DIRECTION_HORIZONTAL},
-     *                   {@link #DIRECTION_VERTICAL}, {@link #DIRECTION_ALL}
-     * @param pointerId ID of the pointer to slop check as specified by MotionEvent
-     * @return true if the slop threshold has been crossed, false otherwise
-     */
-    public boolean checkTouchSlop(int directions, int pointerId) {
-        if (!isPointerDown(pointerId)) {
-            return false;
-        }
-
-        final boolean checkHorizontal = (directions & DIRECTION_HORIZONTAL) == DIRECTION_HORIZONTAL;
-        final boolean checkVertical = (directions & DIRECTION_VERTICAL) == DIRECTION_VERTICAL;
-
-        final float dx = mLastMotionX[pointerId] - mInitialMotionX[pointerId];
-        final float dy = mLastMotionY[pointerId] - mInitialMotionY[pointerId];
-
-        if (checkHorizontal && checkVertical) {
-            return dx * dx + dy * dy > mTouchSlop * mTouchSlop;
-        } else if (checkHorizontal) {
-            return Math.abs(dx) > mTouchSlop;
-        } else if (checkVertical) {
-            return Math.abs(dy) > mTouchSlop;
-        }
-        return false;
-    }
-
-    /**
-     * Check if any of the edges specified were initially touched in the currently active gesture.
-     * If there is no currently active gesture this method will return false.
-     *
-     * @param edges Edges to check for an initial edge touch. See {@link #EDGE_LEFT},
-     *              {@link #EDGE_TOP}, {@link #EDGE_RIGHT}, {@link #EDGE_BOTTOM} and
-     *              {@link #EDGE_ALL}
-     * @return true if any of the edges specified were initially touched in the current gesture
-     */
-    public boolean isEdgeTouched(int edges) {
-        final int count = mInitialEdgesTouched.length;
-        for (int i = 0; i < count; i++) {
-            if (isEdgeTouched(edges, i)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Check if any of the edges specified were initially touched by the pointer with
-     * the specified ID. If there is no currently active gesture or if there is no pointer with
-     * the given ID currently down this method will return false.
-     *
-     * @param edges Edges to check for an initial edge touch. See {@link #EDGE_LEFT},
-     *              {@link #EDGE_TOP}, {@link #EDGE_RIGHT}, {@link #EDGE_BOTTOM} and
-     *              {@link #EDGE_ALL}
-     * @return true if any of the edges specified were initially touched in the current gesture
-     */
-    public boolean isEdgeTouched(int edges, int pointerId) {
-        return isPointerDown(pointerId) && (mInitialEdgesTouched[pointerId] & edges) != 0;
-    }
-
-    private void releaseViewForPointerUp() {
-        mVelocityTracker.computeCurrentVelocity(1000, mMaxVelocity);
-        final float xvel = clampMag(
-                VelocityTrackerCompat.getXVelocity(mVelocityTracker, mActivePointerId),
-                mMinVelocity, mMaxVelocity);
-        final float yvel = clampMag(
-                VelocityTrackerCompat.getYVelocity(mVelocityTracker, mActivePointerId),
-                mMinVelocity, mMaxVelocity);
-        dispatchViewReleased(xvel, yvel);
-    }
-
-    private void dragTo(int left, int top, int dx, int dy) {
-        int clampedX = left;
-        int clampedY = top;
-        final int oldLeft = mCapturedView.getLeft();
-        final int oldTop = mCapturedView.getTop();
-        if (dx != 0) {
-            clampedX = mCallback.clampViewPositionHorizontal(mCapturedView, left, dx);
-            mCapturedView.offsetLeftAndRight(clampedX - oldLeft);
-        }
-        if (dy != 0) {
-            clampedY = mCallback.clampViewPositionVertical(mCapturedView, top, dy);
-            mCapturedView.offsetTopAndBottom(clampedY - oldTop);
-        }
-
-        if (dx != 0 || dy != 0) {
-            final int clampedDx = clampedX - oldLeft;
-            final int clampedDy = clampedY - oldTop;
-            mCallback.onViewPositionChanged(mCapturedView, clampedX, clampedY,
-                    clampedDx, clampedDy);
-        }
-    }
-
-    /**
-     * Determine if the currently captured view is under the given point in the
-     * parent view's coordinate system. If there is no captured view this method
-     * will return false.
-     *
-     * @param x X position to test in the parent's coordinate system
-     * @param y Y position to test in the parent's coordinate system
-     * @return true if the captured view is under the given point, false otherwise
-     */
-    public boolean isCapturedViewUnder(int x, int y) {
-        return isViewUnder(mCapturedView, x, y);
-    }
-
-    /**
-     * Determine if the supplied view is under the given point in the
-     * parent view's coordinate system.
-     *
-     * @param view Child view of the parent to hit test
-     * @param x X position to test in the parent's coordinate system
-     * @param y Y position to test in the parent's coordinate system
-     * @return true if the supplied view is under the given point, false otherwise
-     */
-    public boolean isViewUnder(View view, int x, int y) {
-        if (view == null) {
-            return false;
-        }
-        return x >= view.getLeft() &&
-                x < view.getRight() &&
-                y >= view.getTop() &&
-                y < view.getBottom();
-    }
-
-    /**
-     * Find the topmost child under the given point within the parent view's coordinate system.
-     * The child order is determined using {@link Callback#getOrderedChildIndex(int)}.
-     *
-     * @param x X position to test in the parent's coordinate system
-     * @param y Y position to test in the parent's coordinate system
-     * @return The topmost child view under (x, y) or null if none found.
-     */
-    public View findTopChildUnder(int x, int y) {
-        final int childCount = mParentView.getChildCount();
-        for (int i = childCount - 1; i >= 0; i--) {
-            final View child = mParentView.getChildAt(mCallback.getOrderedChildIndex(i));
-            if (x >= child.getLeft() && x < child.getRight() &&
-                    y >= child.getTop() && y < child.getBottom()) {
-                return child;
-            }
-        }
-        return null;
-    }
-
-    private int getEdgesTouched(int x, int y) {
-        int result = 0;
-
-        if (x < mParentView.getLeft() + mEdgeSize) result |= EDGE_LEFT;
-        if (y < mParentView.getTop() + mEdgeSize) result |= EDGE_TOP;
-        if (x > mParentView.getRight() - mEdgeSize) result |= EDGE_RIGHT;
-        if (y > mParentView.getBottom() - mEdgeSize) result |= EDGE_BOTTOM;
-
-        return result;
-    }
-
-    /**
-     * Prepares the {@link ViewDragHelper} for the beginning of a nested scroll.
-     *
-     * @param target The child view that is dispatching the nested scroll.
-     */
-    public void startNestedScroll(View target) {
-        if (mVelocityTracker == null) {
-            mVelocityTracker = VelocityTracker.obtain();
-        }
-        setDragState(STATE_DRAGGING);
-        mCapturedView = target;
-    }
-
-    /**
-     * Informs the {@link ViewDragHelper} that a nested scroll has ended.
-     *
-     * @param target The child view that is dispatching the nested scroll.
-     */
-    public void stopNestedScroll(View target) {
-        mCapturedView = target;
-        dispatchViewReleased(0, 0);
-    }
-
-    /**
-     * Update the {@link ViewDragHelper} with a new nested scrolling event.
-     *
-     * @param target The child view that is dispatching the nested scroll.
-     * @param dx The x distance scrolled on the child, in pixels.
-     * @param dy The y distance scroll on the child, in pixels.
-     * @param consumed An int array for the {@link ViewDragHelper} to report back the scroll
-     *         deltas that it consumed.
-     */
-    public void processNestedScroll(View target, int dx, int dy, int[] consumed) {
-        if (mCapturedView == null) {
-            // This is safe because consumed array is null when called from
-            // onNestedScroll, and pre-initialized to {0, 0} when called from
-            // onNestedPreScroll.
-            return;
-        }
-        final int targetX = mCapturedView.getLeft() + dx;
-        final int targetY = mCapturedView.getTop() + dy;
-        dragTo(targetX, targetY, dx, dy);
-        if (consumed != null) {
-            final int unconsumedX = targetX - mCapturedView.getLeft();
-            final int unconsumedY = targetY - mCapturedView.getTop();
-            consumed[0] = unconsumedX - dx;
-            consumed[1] = unconsumedY - dy;
-        }
-    }
-
-}
diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java
index 54a5821..be4eeec 100644
--- a/src/com/android/dialerbind/ObjectFactory.java
+++ b/src/com/android/dialerbind/ObjectFactory.java
@@ -42,15 +42,20 @@
      * @param context The context to use.
      * @param callFetcher Instance of call fetcher to use.
      * @param contactInfoHelper Instance of contact info helper class to use.
-     * @param isCallLog Is this call log adapter being used on the call log?
      * @return Instance of CallLogAdapter.
      */
-    public static CallLogAdapter newCallLogAdapter(Context context,
-            CallFetcher callFetcher, ContactInfoHelper contactInfoHelper,
-            CallItemExpandedListener callItemExpandedListener,
-            OnReportButtonClickListener onReportButtonClickListener, boolean isCallLog) {
-        return new CallLogAdapter(context, callFetcher, contactInfoHelper,
-                callItemExpandedListener, onReportButtonClickListener, isCallLog);
+    public static CallLogAdapter newCallLogAdapter(
+            Context context,
+            CallFetcher callFetcher,
+            ContactInfoHelper contactInfoHelper,
+            boolean isShowingRecentsTab,
+            OnReportButtonClickListener onReportButtonClickListener) {
+        return new CallLogAdapter(
+                context,
+                callFetcher,
+                contactInfoHelper,
+                isShowingRecentsTab,
+                onReportButtonClickListener);
     }
 
     public static DialogFragment getReportDialogFragment(String number) {
diff --git a/tests/Android.mk b/tests/Android.mk
index d440f6a..30c6286 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -10,7 +10,11 @@
 # Include all test java files.
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
-LOCAL_STATIC_JAVA_LIBRARIES += com.android.contacts.common.test
+src_dirs := src \
+    ../../ContactsCommon/TestCommon/src
+
+# Include all test java files.
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
 
 LOCAL_PACKAGE_NAME := DialerTests
 
diff --git a/tests/res/drawable/default_icon.png b/tests/res/drawable/default_icon.png
deleted file mode 100644
index cea0eb3..0000000
--- a/tests/res/drawable/default_icon.png
+++ /dev/null
Binary files differ
diff --git a/tests/res/xml/iconset.xml b/tests/res/xml/iconset.xml
index ec38945..2f7798d 100644
--- a/tests/res/xml/iconset.xml
+++ b/tests/res/xml/iconset.xml
@@ -17,7 +17,6 @@
 
 <icon-set xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <icon-default android:icon="@drawable/default_icon" />
     <icon android:mimeType="vnd.android.cursor.item/phone"
         android:icon="@drawable/phone_icon" />
 
diff --git a/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java b/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
index 7ae2c22..df4247b 100644
--- a/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
+++ b/tests/src/com/android/dialer/PhoneCallDetailsHelperTest.java
@@ -239,7 +239,7 @@
     public void testSetCallDetailsHeader_PayphoneNumber() {
         setCallDetailsHeaderWithNumber("", Calls.PRESENTATION_PAYPHONE);
         assertEquals(View.VISIBLE, mNameView.getVisibility());
-        assertEquals("Pay phone", mNameView.getText().toString());
+        assertEquals("Payphone", mNameView.getText().toString());
     }
 
     public void testSetCallDetailsHeader_VoicemailNumber() {
diff --git a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
index 9b3e6bc..5f09cb7 100644
--- a/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogAdapterTest.java
@@ -18,11 +18,14 @@
 
 import android.content.Context;
 import android.database.MatrixCursor;
+import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.view.View;
 import android.widget.LinearLayout;
 
+import com.android.dialer.contactinfo.ContactInfoCache;
+import com.android.dialer.contactinfo.ContactInfoCache.OnContactInfoChangedListener;
 import com.google.common.collect.Lists;
 
 import java.util.List;
@@ -43,6 +46,7 @@
 
     private MatrixCursor mCursor;
     private View mView;
+    private ViewHolder mViewHolder;
 
     @Override
     protected void setUp() throws Exception {
@@ -70,7 +74,8 @@
         mCursor.moveToFirst();
         // The views into which to store the data.
         mView = new LinearLayout(getContext());
-        mView.setTag(CallLogListItemViews.createForTest(getContext()));
+        mViewHolder = CallLogListItemViewHolder.createForTest(getContext());
+        mView.setTag(mViewHolder);
     }
 
     @Override
@@ -85,12 +90,13 @@
         mCursor.addRow(createCallLogEntry());
 
         // Bind the views of a single row.
-        mAdapter.bindStandAloneView(mView, getContext(), mCursor);
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
 
         // There is one request for contact details.
-        assertEquals(1, mAdapter.requests.size());
+        assertEquals(1, mAdapter.getContactInfoCache().requests.size());
 
-        TestCallLogAdapter.Request request = mAdapter.requests.get(0);
+        TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
         // It is for the number we need to show.
         assertEquals(TEST_NUMBER, request.number);
         // It has the right country.
@@ -103,12 +109,13 @@
         mCursor.addRow(createCallLogEntryWithCachedValues());
 
         // Bind the views of a single row.
-        mAdapter.bindStandAloneView(mView, getContext(), mCursor);
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
 
         // There is one request for contact details.
-        assertEquals(1, mAdapter.requests.size());
+        assertEquals(1, mAdapter.getContactInfoCache().requests.size());
 
-        TestCallLogAdapter.Request request = mAdapter.requests.get(0);
+        TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
         // The values passed to the request, match the ones in the call log cache.
         assertEquals(TEST_NAME, request.callLogInfo.name);
         assertEquals(1, request.callLogInfo.type);
@@ -121,12 +128,13 @@
         mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, createContactInfo());
 
         // Bind the views of a single row.
-        mAdapter.bindStandAloneView(mView, getContext(), mCursor);
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
 
         // There is one request for contact details.
-        assertEquals(1, mAdapter.requests.size());
+        assertEquals(1, mAdapter.getContactInfoCache().requests.size());
 
-        TestCallLogAdapter.Request request = mAdapter.requests.get(0);
+        TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
         // Since there is something in the cache, it is not an immediate request.
         assertFalse("should not be immediate", request.immediate);
     }
@@ -136,10 +144,11 @@
         mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, createContactInfo());
 
         // Bind the views of a single row.
-        mAdapter.bindStandAloneView(mView, getContext(), mCursor);
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
 
         // Cache and call log are up-to-date: no need to request update.
-        assertEquals(0, mAdapter.requests.size());
+        assertEquals(0, mAdapter.getContactInfoCache().requests.size());
     }
 
     public void testBindView_MismatchBetwenCallLogAndMemoryCache_EnqueueRequest() {
@@ -151,12 +160,13 @@
         mAdapter.injectContactInfoForTest(TEST_NUMBER, TEST_COUNTRY_ISO, info);
 
         // Bind the views of a single row.
-        mAdapter.bindStandAloneView(mView, getContext(), mCursor);
+        mAdapter.changeCursor(mCursor);
+        mAdapter.onBindViewHolder(mViewHolder, 0);
 
         // There is one request for contact details.
-        assertEquals(1, mAdapter.requests.size());
+        assertEquals(1, mAdapter.getContactInfoCache().requests.size());
 
-        TestCallLogAdapter.Request request = mAdapter.requests.get(0);
+        TestContactInfoCache.Request request = mAdapter.getContactInfoCache().requests.get(0);
         // Since there is something in the cache, it is not an immediate request.
         assertFalse("should not be immediate", request.immediate);
     }
@@ -191,9 +201,20 @@
     /**
      * Subclass of {@link CallLogAdapter} used in tests to intercept certain calls.
      */
-    // TODO: This would be better done by splitting the contact lookup into a collaborator class
-    // instead.
     private static final class TestCallLogAdapter extends CallLogAdapter {
+        public TestCallLogAdapter(Context context, CallFetcher callFetcher,
+                ContactInfoHelper contactInfoHelper) {
+            super(context, callFetcher, contactInfoHelper, false, null);
+            mContactInfoCache = new TestContactInfoCache(
+                    contactInfoHelper, mOnContactInfoChangedListener);
+        }
+
+        public TestContactInfoCache getContactInfoCache() {
+            return (TestContactInfoCache) mContactInfoCache;
+        }
+    }
+
+    private static final class TestContactInfoCache extends ContactInfoCache {
         public static class Request {
             public final String number;
             public final String countryIso;
@@ -211,9 +232,9 @@
 
         public final List<Request> requests = Lists.newArrayList();
 
-        public TestCallLogAdapter(Context context, CallFetcher callFetcher,
-                ContactInfoHelper contactInfoHelper) {
-            super(context, callFetcher, contactInfoHelper, null, null, false);
+        public TestContactInfoCache(
+                ContactInfoHelper contactInfoHelper, OnContactInfoChangedListener listener) {
+            super(contactInfoHelper, listener);
         }
 
         @Override
diff --git a/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java b/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
index b88989d..0c19799 100644
--- a/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogFragmentTest.java
@@ -57,7 +57,7 @@
  *   runtest contacts
  * or
  *   adb shell am instrument \
- *     -w com.android.contacts.tests/android.test.InstrumentationTestRunner
+ *     -w com.android.dialer.tests/android.test.InstrumentationTestRunner
  */
 @LargeTest
 public class CallLogFragmentTest extends ActivityInstrumentationTestCase2<FragmentTestActivity> {
@@ -93,10 +93,10 @@
     private Random mRnd;
 
     // An item in the call list. All the methods performing checks use it.
-    private CallLogListItemViews mItem;
-    // The list of views representing the data in the DB. View are in
-    // reverse order compare to the DB.
-    private View[] mList;
+    private CallLogListItemViewHolder mItem;
+
+    // The list of view holderss representing the data in the DB, in reverse order from the DB.
+    private CallLogListItemViewHolder[] mList;
 
     public CallLogFragmentTest() {
         super(FragmentTestActivity.class);
@@ -126,21 +126,22 @@
         // Do not process requests for details during tests. This would start a background thread,
         // which makes the tests flaky.
         mAdapter.disableRequestProcessingForTest();
-        mAdapter.stopRequestProcessing();
+        mAdapter.pauseCache();
         mParentView = new FrameLayout(mActivity);
         mCursor = new MatrixCursor(CallLogQuery._PROJECTION);
+        mAdapter.setCursorForTesting(mCursor);
     }
 
     /**
      * Checks that the call icon is not visible for private and
      * unknown numbers.
-     * Use 2 passes, one where new views are created and one where
-     * half of the total views are updated and the other half created.
+     * Use 2 passes, one where new viewHolder are created and one where
+     * half of the total viewHolder are updated and the other half created.
      */
     @MediumTest
     public void testCallViewIsNotVisibleForPrivateAndUnknownNumbers() {
         final int SIZE = 100;
-        mList = new View[SIZE];
+        mList = new CallLogListItemViewHolder[SIZE];
 
         // Insert the first batch of entries.
         mCursor.moveToFirst();
@@ -151,7 +152,7 @@
         checkCallStatus();
 
         // Append the rest of the entries. We keep the first set of
-        // views around so they get updated and not built from
+        // viewHolder around so they get updated and not built from
         // scratch, this exposes some bugs that are not there when the
         // call log is launched for the 1st time but show up when the
         // call log gets updated afterwards.
@@ -163,40 +164,43 @@
     }
 
     @MediumTest
-    public void testCallAndGroupViews_GroupView() {
+    public void testCallAndGroupviewHolder_GroupView() {
         mCursor.moveToFirst();
         insertPrivate(NOW, 0);
         insertPrivate(NOW, 0);
         insertPrivate(NOW, 0);
-        View view = mAdapter.newGroupView(getActivity(), mParentView);
-        mAdapter.bindGroupView(view, getActivity(), mCursor, 3, false);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        mAdapter.onBindViewHolder(viewHolder, /* position */ 0);
     }
 
     @MediumTest
-    public void testCallAndGroupViews_StandAloneView() {
+    public void testCallAndGroupviewHolder_StandAloneView() {
         mCursor.moveToFirst();
         insertPrivate(NOW, 0);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
     }
 
     @MediumTest
-    public void testCallAndGroupViews_ChildView() {
+    public void testCallAndGroupviewHolder_ChildView() {
         mCursor.moveToFirst();
         insertPrivate(NOW, 0);
-        View view = mAdapter.newChildView(getActivity(), mParentView);
-        mAdapter.bindChildView(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        mAdapter.onBindViewHolder(viewHolder, /* position */ 0);
     }
 
     @MediumTest
     public void testBindView_NumberOnlyNoCache() {
         mCursor.moveToFirst();
         insert(TEST_NUMBER, Calls.PRESENTATION_ALLOWED, NOW, 0, Calls.INCOMING_TYPE);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        assertNameIs(views, TEST_NUMBER);
+        assertNameIs(viewHolder, TEST_NUMBER);
     }
 
     @MediumTest
@@ -206,11 +210,11 @@
                 Calls.PRESENTATION_ALLOWED, NOW, 0, Calls.INCOMING_TYPE);
         values[CallLogQuery.CACHED_FORMATTED_NUMBER] = TEST_FORMATTED_NUMBER;
         insertValues(values);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        assertNameIs(views, TEST_FORMATTED_NUMBER);
+        assertNameIs(viewHolder, TEST_FORMATTED_NUMBER);
     }
 
     @MediumTest
@@ -220,12 +224,12 @@
         // {@value com.android.dialer.calllog.ContactInfo#GEOCODE_AS_LABEL}
         insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
                 "John Doe", Phone.TYPE_HOME, TEST_DEFAULT_CUSTOM_LABEL);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        assertNameIs(views, "John Doe");
-        assertLabel(views, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
+        assertNameIs(viewHolder, "John Doe");
+        assertLabel(viewHolder, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
     }
 
     @MediumTest
@@ -233,12 +237,12 @@
         mCursor.moveToFirst();
         insertWithCachedValues("sip:johndoe@gmail.com", NOW, 0, Calls.INCOMING_TYPE,
                 "John Doe", Phone.TYPE_HOME, TEST_DEFAULT_CUSTOM_LABEL);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        assertNameIs(views, "John Doe");
-        assertLabel(views, "sip:johndoe@gmail.com", "sip:johndoe@gmail.com");
+        assertNameIs(viewHolder, "John Doe");
+        assertLabel(viewHolder, "sip:johndoe@gmail.com", "sip:johndoe@gmail.com");
     }
 
     @MediumTest
@@ -248,12 +252,12 @@
         // {@value com.android.dialer.calllog.ContactInfo#GEOCODE_AS_LABEL}
         insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
                 "John Doe", Phone.TYPE_HOME, TEST_DEFAULT_CUSTOM_LABEL);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        assertNameIs(views, "John Doe");
-        assertLabel(views, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
+        assertNameIs(viewHolder, "John Doe");
+        assertLabel(viewHolder, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_HOME));
     }
 
     @MediumTest
@@ -263,12 +267,12 @@
         // {@link com.android.dialer.calllog.ContactInfo#GEOCODE_AS_LABEL}
         insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
                 "John Doe", Phone.TYPE_WORK, TEST_DEFAULT_CUSTOM_LABEL);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        assertNameIs(views, "John Doe");
-        assertLabel(views, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_WORK));
+        assertNameIs(viewHolder, "John Doe");
+        assertLabel(viewHolder, TEST_FORMATTED_NUMBER, getTypeLabel(Phone.TYPE_WORK));
     }
 
     @MediumTest
@@ -277,12 +281,12 @@
         String numberLabel = "My label";
         insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
                 "John Doe", Phone.TYPE_CUSTOM, numberLabel);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        assertNameIs(views, "John Doe");
-        assertLabel(views, TEST_FORMATTED_NUMBER, numberLabel);
+        assertNameIs(viewHolder, "John Doe");
+        assertLabel(viewHolder, TEST_FORMATTED_NUMBER, numberLabel);
     }
 
     @MediumTest
@@ -290,38 +294,39 @@
         mCursor.moveToFirst();
         insertWithCachedValues(TEST_NUMBER, NOW, 0, Calls.INCOMING_TYPE,
                 "John Doe", Phone.TYPE_HOME, "");
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        assertTrue(views.quickContactView.isEnabled());
+        assertTrue(viewHolder.quickContactView.isEnabled());
     }
 
     @MediumTest
     public void testBindView_WithoutQuickContactBadge() {
         mCursor.moveToFirst();
         insert(TEST_NUMBER, Calls.PRESENTATION_ALLOWED, NOW, 0, Calls.INCOMING_TYPE);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        assertFalse(views.quickContactView.isEnabled());
+        assertFalse(viewHolder.quickContactView.isEnabled());
     }
 
     @MediumTest
     public void testBindView_CallButton() {
         mCursor.moveToFirst();
         insert(TEST_NUMBER, Calls.PRESENTATION_ALLOWED, NOW, 0, Calls.INCOMING_TYPE);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
-
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
+        mAdapter.changeCursor(mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
+        viewHolder.updateCallButton();
 
         // The primaryActionView tag is set in the
         // {@link com.android.dialer.calllog.CallLogAdapter#bindView} method.  If it is possible
         // to place a call to the phone number, a call intent will have been created for the
         // primaryActionView.
-        IntentProvider intentProvider = (IntentProvider) views.callBackButtonView.getTag();
+        IntentProvider intentProvider = (IntentProvider) viewHolder.callActionView.getTag();
         Intent intent = intentProvider.getIntent(mActivity);
         // Starts a call.
         assertEquals(TestConstants.CALL_INTENT_ACTION, intent.getAction());
@@ -333,11 +338,11 @@
     public void testBindView_PlayButton() {
         mCursor.moveToFirst();
         insertVoicemail(TEST_NUMBER, Calls.PRESENTATION_ALLOWED, NOW, 0);
-        View view = mAdapter.newStandAloneView(getActivity(), mParentView);
-        mAdapter.bindViewForTest(view, getActivity(), mCursor);
+        CallLogListItemViewHolder viewHolder = (CallLogListItemViewHolder)
+                mAdapter.onCreateViewHolder(mParentView, /* viewType */ 0);
+        bindViewForTest(viewHolder);
 
-        CallLogListItemViews views = (CallLogListItemViews) view.getTag();
-        IntentProvider intentProvider = (IntentProvider) views.voicemailButtonView.getTag();
+        IntentProvider intentProvider = (IntentProvider) viewHolder.voicemailButtonView.getTag();
         Intent intent = intentProvider.getIntent(mActivity);
         // Starts the call detail activity.
         assertEquals(new ComponentName(mActivity, CallDetailActivity.class),
@@ -360,10 +365,10 @@
     }
 
     //
-    // HELPERS to check conditions on the DB/views
+    // HELPERS to check conditions on the DB/viewHolder
     //
     /**
-     * Go over the views in the list and check to ensure that
+     * Go over the viewHolder in the list and check to ensure that
      * callable numbers have an associated call intent, where numbers
      * which are not callable have a null intent.
      */
@@ -372,17 +377,17 @@
             if (null == mList[i]) {
                 break;
             }
-            mItem = (CallLogListItemViews) mList[i].getTag();
+            mItem = (CallLogListItemViewHolder) mList[i];
             int presentation = getPhoneNumberPresentationForListEntry(i);
             if (presentation == Calls.PRESENTATION_RESTRICTED ||
                     presentation == Calls.PRESENTATION_UNKNOWN) {
                 //If number is not callable, the primary action view should have a null tag.
-                assertNull(mItem.callBackButtonView.getTag());
+                assertNull(mItem.callActionView.getTag());
             } else {
                 //If the number is callable, the primary action view should have a non-null tag.
-                assertNotNull(mItem.callBackButtonView.getTag());
+                assertNotNull(mItem.callActionView.getTag());
 
-                IntentProvider intentProvider = (IntentProvider)mItem.callBackButtonView.getTag();
+                IntentProvider intentProvider = (IntentProvider)mItem.callActionView.getTag();
                 Intent callIntent = intentProvider.getIntent(mActivity);
 
                 //The intent should be to make the call
@@ -409,7 +414,7 @@
     }
 
     //
-    // HELPERS to build/update the call entries (views) from the DB.
+    // HELPERS to build/update the call entries (viewHolder) from the DB.
     //
 
     /**
@@ -420,11 +425,13 @@
     private void buildViewListFromDb() {
         int i = 0;
         mCursor.moveToLast();
-        while(!mCursor.isBeforeFirst()) {
+        while (!mCursor.isBeforeFirst()) {
             if (null == mList[i]) {
-                mList[i] = mAdapter.newStandAloneView(mActivity, mParentView);
+                mList[i] = (CallLogListItemViewHolder)
+                        mAdapter.onCreateViewHolder(mParentView, /* itemType */ 0);
             }
-            mAdapter.bindViewForTest(mList[i], mActivity, mCursor);
+            // Bind to the proper position, despite iterating in reverse.
+            bindViewForTest(mList[i], mCursor.getCount() - i - 1);
             mCursor.moveToPrevious();
             i++;
         }
@@ -442,6 +449,23 @@
     //
 
     /**
+     * Bind a call log entry view for testing purposes.  Also inflates the action view stub so
+     * unit tests can access the buttons contained within.
+     *
+     * @param view The current call log row.
+     * @param position The position of hte item.
+     */
+    private void bindViewForTest(CallLogListItemViewHolder viewHolder, int position) {
+        mAdapter.onBindViewHolder(viewHolder, position);
+        viewHolder.inflateActionViewStub(null);
+        viewHolder.updateCallButton();
+    }
+
+    private void bindViewForTest(CallLogListItemViewHolder viewHolder) {
+        bindViewForTest(viewHolder, /* position */ 0);
+    }
+
+    /**
      * Insert a certain number of random numbers in the DB. Makes sure
      * there is at least one private and one unknown number in the DB.
      * @param num Of entries to be inserted.
@@ -625,17 +649,17 @@
     }
 
     /** Asserts that the name text view is shown and contains the given text. */
-    private void assertNameIs(CallLogListItemViews views, String name) {
-        assertEquals(View.VISIBLE, views.phoneCallDetailsViews.nameView.getVisibility());
-        assertEquals(name, views.phoneCallDetailsViews.nameView.getText());
+    private void assertNameIs(CallLogListItemViewHolder viewHolder, String name) {
+        assertEquals(View.VISIBLE, viewHolder.phoneCallDetailsViews.nameView.getVisibility());
+        assertEquals(name, viewHolder.phoneCallDetailsViews.nameView.getText().toString());
     }
 
     /** Asserts that the label text view contains the given text. */
-    private void assertLabel(CallLogListItemViews views, CharSequence number,
+    private void assertLabel(CallLogListItemViewHolder viewHolder, CharSequence number,
             CharSequence label) {
         if (label != null) {
-            assertTrue(views.phoneCallDetailsViews.callLocationAndDate.getText().toString()
-                    .contains(label));
+            assertTrue(viewHolder.phoneCallDetailsViews.callLocationAndDate.getText()
+                    .toString().contains(label));
         }
     }
 }
diff --git a/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java b/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
index 30a84c2..0f4974b 100644
--- a/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
+++ b/tests/src/com/android/dialer/calllog/CallLogListItemHelperTest.java
@@ -50,7 +50,7 @@
     private CallLogListItemHelper mHelper;
 
     /** The views used in the tests. */
-    private CallLogListItemViews mViews;
+    private CallLogListItemViewHolder mViewHolder;
     private PhoneNumberDisplayHelper mPhoneNumberHelper;
     private PhoneNumberDisplayHelper mPhoneNumberDisplayHelper;
 
@@ -68,20 +68,20 @@
         mPhoneNumberDisplayHelper = new PhoneNumberDisplayHelper(context, mResources, phoneUtils);
         mHelper = new CallLogListItemHelper(phoneCallDetailsHelper, mPhoneNumberDisplayHelper,
                 mResources);
-        mViews = CallLogListItemViews.createForTest(context);
+        mViewHolder = CallLogListItemViewHolder.createForTest(getContext());
     }
 
     @Override
     protected void tearDown() throws Exception {
         mHelper = null;
-        mViews = null;
+        mViewHolder = null;
         super.tearDown();
     }
 
     public void testSetPhoneCallDetails() {
         setPhoneCallDetailsWithNumber("12125551234", Calls.PRESENTATION_ALLOWED,
                 "1-212-555-1234");
-        assertEquals(View.VISIBLE, mViews.callBackButtonView.getVisibility());
+        assertEquals(View.VISIBLE, mViewHolder.callActionView.getVisibility());
     }
 
     public void testSetPhoneCallDetails_Unknown() {
@@ -102,23 +102,23 @@
     public void testSetPhoneCallDetails_VoicemailNumber() {
         setPhoneCallDetailsWithNumber(TEST_VOICEMAIL_NUMBER,
                 Calls.PRESENTATION_ALLOWED, TEST_VOICEMAIL_NUMBER);
-        assertEquals(View.VISIBLE, mViews.voicemailButtonView.getVisibility());
+        assertEquals(View.VISIBLE, mViewHolder.voicemailButtonView.getVisibility());
     }
 
     public void testSetPhoneCallDetails_ReadVoicemail() {
         setPhoneCallDetailsWithTypes(Calls.VOICEMAIL_TYPE);
-        assertEquals(View.VISIBLE, mViews.voicemailButtonView.getVisibility());
+        assertEquals(View.VISIBLE, mViewHolder.voicemailButtonView.getVisibility());
     }
 
     public void testSetPhoneCallDetails_UnreadVoicemail() {
         setUnreadPhoneCallDetailsWithTypes(Calls.VOICEMAIL_TYPE);
-        assertEquals(View.VISIBLE, mViews.voicemailButtonView.getVisibility());
+        assertEquals(View.VISIBLE, mViewHolder.voicemailButtonView.getVisibility());
     }
 
     public void testSetPhoneCallDetails_VoicemailFromUnknown() {
         setPhoneCallDetailsWithNumberAndType("", Calls.PRESENTATION_UNKNOWN,
                 "", Calls.VOICEMAIL_TYPE);
-        assertEquals(View.VISIBLE, mViews.voicemailButtonView.getVisibility());
+        assertEquals(View.VISIBLE, mViewHolder.voicemailButtonView.getVisibility());
     }
 
     /**
@@ -335,7 +335,7 @@
 
     /** Asserts that the primary action view does not have a call intent. */
     private void assertNoCallIntent() {
-        Object intentProvider = (IntentProvider)mViews.primaryActionView.getTag();
+        Object intentProvider = (IntentProvider)mViewHolder.primaryActionView.getTag();
         // The intent provider should be null as there is no ability to make a call.
         assertNull(intentProvider);
     }
@@ -350,7 +350,7 @@
     /** Sets the details of a phone call using the specified phone number. */
     private void setPhoneCallDetailsWithNumberAndType(String number,
             int presentation, String formattedNumber, int callType) {
-        mHelper.setPhoneCallDetails(getContext(), mViews,
+        mHelper.setPhoneCallDetails(getContext(), mViewHolder,
                 new PhoneCallDetails(number, presentation, formattedNumber,
                         TEST_COUNTRY_ISO, TEST_GEOCODE,
                         new int[]{ callType }, TEST_DATE, TEST_DURATION)
@@ -359,7 +359,7 @@
 
     /** Sets the details of a phone call using the specified call type. */
     private void setPhoneCallDetailsWithTypes(int... types) {
-        mHelper.setPhoneCallDetails(getContext() ,mViews,
+        mHelper.setPhoneCallDetails(getContext() ,mViewHolder,
                 new PhoneCallDetails(TEST_NUMBER, Calls.PRESENTATION_ALLOWED,
                         TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, TEST_GEOCODE,
                         types, TEST_DATE, TEST_DURATION)
@@ -368,7 +368,7 @@
 
     /** Sets the details of an unread phone call using the specified call type. */
     private void setUnreadPhoneCallDetailsWithTypes(int... types) {
-        mHelper.setPhoneCallDetails(getContext(), mViews,
+        mHelper.setPhoneCallDetails(getContext(), mViewHolder,
                 new PhoneCallDetails(TEST_NUMBER, Calls.PRESENTATION_ALLOWED,
                         TEST_FORMATTED_NUMBER, TEST_COUNTRY_ISO, TEST_GEOCODE,
                         types, TEST_DATE, TEST_DURATION)
diff --git a/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java b/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
index 9d34bbf..5b46293 100644
--- a/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
+++ b/tests/src/com/android/dialer/calllog/CallLogQueryTestUtils.java
@@ -29,7 +29,7 @@
     public static Object[] createTestValues() {
         Object[] values = new Object[]{
                 0L, "", 0L, 0L, Calls.INCOMING_TYPE, "", "", "", null, 0, null, null, null, null,
-                0L, null, 0, Calls.PRESENTATION_ALLOWED, null, null, 0, null, null
+                0L, null, 0, Calls.PRESENTATION_ALLOWED, null, null, 0, null, null, null
         };
         assertEquals(CallLogQuery._PROJECTION.length, values.length);
         return values;
diff --git a/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java b/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
new file mode 100644
index 0000000..53583e0
--- /dev/null
+++ b/tests/src/com/android/dialer/calllog/GroupingListAdapterTests.java
@@ -0,0 +1,300 @@
+/*
+ * Copyright (C) 2015 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.dialer.calllog;
+
+import static com.android.dialer.calllog.GroupingListAdapter.ITEM_TYPE_GROUP_HEADER;
+import static com.android.dialer.calllog.GroupingListAdapter.ITEM_TYPE_IN_GROUP;
+import static com.android.dialer.calllog.GroupingListAdapter.ITEM_TYPE_STANDALONE;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.support.v7.widget.RecyclerView;
+import android.test.AndroidTestCase;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+
+/**
+ * Tests for {@link GroupingListAdapter}.
+ *
+ * Running all tests:
+ *
+ *   adb shell am instrument -e class com.android.dialer.calllog.GroupingListAdapterTests \
+ *     -w com.android.dialer.tests/android.test.InstrumentationTestRunner
+ */
+public class GroupingListAdapterTests extends AndroidTestCase {
+
+    static private final String[] PROJECTION = new String[] {
+        "_id",
+        "group",
+    };
+
+    private static final int GROUPING_COLUMN_INDEX = 1;
+
+    private MatrixCursor mCursor;
+    private long mNextId;
+
+    private GroupingListAdapter mAdapter = new GroupingListAdapter(null) {
+
+        @Override
+        protected void addGroups(Cursor cursor) {
+            int count = cursor.getCount();
+            int groupItemCount = 1;
+            cursor.moveToFirst();
+            String currentValue = cursor.getString(GROUPING_COLUMN_INDEX);
+            for (int i = 1; i < count; i++) {
+                cursor.moveToNext();
+                String value = cursor.getString(GROUPING_COLUMN_INDEX);
+                if (TextUtils.equals(value, currentValue)) {
+                    groupItemCount++;
+                } else {
+                    if (groupItemCount > 1) {
+                        addGroup(i - groupItemCount, groupItemCount, false);
+                    }
+
+                    groupItemCount = 1;
+                    currentValue = value;
+                }
+            }
+            if (groupItemCount > 1) {
+                addGroup(count - groupItemCount, groupItemCount, false);
+            }
+        }
+
+        @Override
+        public void onContentChanged() {
+            // Do nothing.
+        }
+
+        @Override
+        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int position) {
+            return null;
+        }
+
+        @Override
+        public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
+            // Do nothing.
+        }
+    };
+
+
+    private void buildCursor(String... numbers) {
+        mCursor = new MatrixCursor(PROJECTION);
+        mNextId = 1;
+        for (String number : numbers) {
+            mCursor.addRow(new Object[]{mNextId, number});
+            mNextId++;
+        }
+    }
+
+    public void testGroupingWithoutGroups() {
+        buildCursor("1", "2", "3");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(3, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 1);
+        assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 2);
+    }
+
+    public void testGroupingWithCollapsedGroupAtTheBeginning() {
+        buildCursor("1", "1", "2");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(2, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_GROUP_HEADER, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 2);
+    }
+
+    public void testGroupingWithExpandedGroupAtTheBeginning() {
+        buildCursor("1", "1", "2");
+        mAdapter.changeCursor(mCursor);
+        mAdapter.toggleGroup(0);
+
+        assertEquals(4, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_GROUP_HEADER, true, 0);
+        assertPositionMetadata(1, ITEM_TYPE_IN_GROUP, false, 0);
+        assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+        assertPositionMetadata(3, ITEM_TYPE_STANDALONE, false, 2);
+    }
+
+    public void testGroupingWithExpandCollapseCycleAtTheBeginning() {
+        buildCursor("1", "1", "2");
+        mAdapter.changeCursor(mCursor);
+        mAdapter.toggleGroup(0);
+        mAdapter.toggleGroup(0);
+
+        assertEquals(2, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_GROUP_HEADER, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 2);
+    }
+
+    public void testGroupingWithCollapsedGroupInTheMiddle() {
+        buildCursor("1", "2", "2", "2", "3");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(3, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, false, 1);
+        assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 4);
+    }
+
+    public void testGroupingWithExpandedGroupInTheMiddle() {
+        buildCursor("1", "2", "2", "2", "3");
+        mAdapter.changeCursor(mCursor);
+        mAdapter.toggleGroup(1);
+
+        assertEquals(6, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, true, 1);
+        assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+        assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+        assertPositionMetadata(4, ITEM_TYPE_IN_GROUP, false, 3);
+        assertPositionMetadata(5, ITEM_TYPE_STANDALONE, false, 4);
+    }
+
+    public void testGroupingWithCollapsedGroupAtTheEnd() {
+        buildCursor("1", "2", "3", "3", "3");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(3, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 1);
+        assertPositionMetadata(2, ITEM_TYPE_GROUP_HEADER, false, 2);
+    }
+
+    public void testGroupingWithExpandedGroupAtTheEnd() {
+        buildCursor("1", "2", "3", "3", "3");
+        mAdapter.changeCursor(mCursor);
+        mAdapter.toggleGroup(2);
+
+        assertEquals(6, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_STANDALONE, false, 1);
+        assertPositionMetadata(2, ITEM_TYPE_GROUP_HEADER, true, 2);
+        assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+        assertPositionMetadata(4, ITEM_TYPE_IN_GROUP, false, 3);
+        assertPositionMetadata(5, ITEM_TYPE_IN_GROUP, false, 4);
+    }
+
+    public void testGroupingWithMultipleCollapsedGroups() {
+        buildCursor("1", "2", "2", "3", "4", "4", "5", "5", "6");
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(6, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, false, 1);
+        assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 3);
+        assertPositionMetadata(3, ITEM_TYPE_GROUP_HEADER, false, 4);
+        assertPositionMetadata(4, ITEM_TYPE_GROUP_HEADER, false, 6);
+        assertPositionMetadata(5, ITEM_TYPE_STANDALONE, false, 8);
+    }
+
+    public void testGroupingWithMultipleExpandedGroups() {
+        buildCursor("1", "2", "2", "3", "4", "4", "5", "5", "6");
+        mAdapter.changeCursor(mCursor);
+        mAdapter.toggleGroup(1);
+
+        // Note that expanding the group of 2's shifted the group of 5's down from the
+        // 4th to the 6th position
+        mAdapter.toggleGroup(6);
+
+        assertEquals(10, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, true, 1);
+        assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+        assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+        assertPositionMetadata(4, ITEM_TYPE_STANDALONE, false, 3);
+        assertPositionMetadata(5, ITEM_TYPE_GROUP_HEADER, false, 4);
+        assertPositionMetadata(6, ITEM_TYPE_GROUP_HEADER, true, 6);
+        assertPositionMetadata(7, ITEM_TYPE_IN_GROUP, false, 6);
+        assertPositionMetadata(8, ITEM_TYPE_IN_GROUP, false, 7);
+        assertPositionMetadata(9, ITEM_TYPE_STANDALONE, false, 8);
+    }
+
+    public void testPositionCache() {
+        buildCursor("1", "2", "2", "3", "4", "4", "5", "5", "6");
+        mAdapter.changeCursor(mCursor);
+
+        // First pass - building up cache
+        assertEquals(6, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, false, 1);
+        assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 3);
+        assertPositionMetadata(3, ITEM_TYPE_GROUP_HEADER, false, 4);
+        assertPositionMetadata(4, ITEM_TYPE_GROUP_HEADER, false, 6);
+        assertPositionMetadata(5, ITEM_TYPE_STANDALONE, false, 8);
+
+        // Second pass - using cache
+        assertEquals(6, mAdapter.getItemCount());
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, false, 1);
+        assertPositionMetadata(2, ITEM_TYPE_STANDALONE, false, 3);
+        assertPositionMetadata(3, ITEM_TYPE_GROUP_HEADER, false, 4);
+        assertPositionMetadata(4, ITEM_TYPE_GROUP_HEADER, false, 6);
+        assertPositionMetadata(5, ITEM_TYPE_STANDALONE, false, 8);
+
+        // Invalidate cache by expanding a group
+        mAdapter.toggleGroup(1);
+
+        // First pass - building up cache
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, true, 1);
+        assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+        assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+        assertPositionMetadata(4, ITEM_TYPE_STANDALONE, false, 3);
+        assertPositionMetadata(5, ITEM_TYPE_GROUP_HEADER, false, 4);
+        assertPositionMetadata(6, ITEM_TYPE_GROUP_HEADER, false, 6);
+        assertPositionMetadata(7, ITEM_TYPE_STANDALONE, false, 8);
+
+        // Second pass - using cache
+        assertPositionMetadata(0, ITEM_TYPE_STANDALONE, false, 0);
+        assertPositionMetadata(1, ITEM_TYPE_GROUP_HEADER, true, 1);
+        assertPositionMetadata(2, ITEM_TYPE_IN_GROUP, false, 1);
+        assertPositionMetadata(3, ITEM_TYPE_IN_GROUP, false, 2);
+        assertPositionMetadata(4, ITEM_TYPE_STANDALONE, false, 3);
+        assertPositionMetadata(5, ITEM_TYPE_GROUP_HEADER, false, 4);
+        assertPositionMetadata(6, ITEM_TYPE_GROUP_HEADER, false, 6);
+        assertPositionMetadata(7, ITEM_TYPE_STANDALONE, false, 8);
+    }
+
+    public void testGroupDescriptorArrayGrowth() {
+        String[] numbers = new String[500];
+        for (int i = 0; i < numbers.length; i++) {
+
+            // Make groups of 2
+            numbers[i] = String.valueOf((i / 2) * 2);
+        }
+
+        buildCursor(numbers);
+        mAdapter.changeCursor(mCursor);
+
+        assertEquals(250, mAdapter.getItemCount());
+    }
+
+    private void assertPositionMetadata(int position, int itemType, boolean isExpanded,
+            int cursorPosition) {
+        GroupingListAdapter.PositionMetadata metadata = new GroupingListAdapter.PositionMetadata();
+        mAdapter.obtainPositionMetadata(metadata, position);
+        assertEquals(itemType, metadata.itemType);
+        if (metadata.itemType == ITEM_TYPE_GROUP_HEADER) {
+            assertEquals(isExpanded, metadata.isExpanded);
+        }
+        assertEquals(cursorPosition, metadata.cursorPosition);
+    }
+}
diff --git a/tests/src/com/android/dialer/util/TestConstants.java b/tests/src/com/android/dialer/util/TestConstants.java
index 780626a..8ebf7f1 100644
--- a/tests/src/com/android/dialer/util/TestConstants.java
+++ b/tests/src/com/android/dialer/util/TestConstants.java
@@ -1,7 +1,5 @@
 package com.android.dialer.util;
 
-import android.content.Intent;
-
 public class TestConstants {
-    public static final String CALL_INTENT_ACTION = Intent.ACTION_CALL;
+    public static final String CALL_INTENT_ACTION = CallIntentUtil.CALL_ACTION;
 }