diff --git a/Android.mk b/Android.mk
index a03d671..c42434f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -12,7 +12,7 @@
 endif
 
 src_dirs := src src-bind $(phone_common_dir)/src
-res_dirs := res res-aosp res-icons $(phone_common_dir)/res
+res_dirs := res res-aosp res-bind res-icons $(phone_common_dir)/res
 asset_dirs := assets
 
 LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs))
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index e87b846..6c97227 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -16,8 +16,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.contacts"
-    android:versionCode="10609"
-    android:versionName="1.6.9">
+    android:versionCode="10605"
+    android:versionName="1.6.5">
 
     <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="25" />
 
diff --git a/res-bind/layout/navigation_view.xml b/res-bind/layout/navigation_view.xml
new file mode 100644
index 0000000..d553768
--- /dev/null
+++ b/res-bind/layout/navigation_view.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.design.widget.NavigationView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/nav_view"
+    android:theme="@style/NavigationDrawerMenuItemTextAppearance"
+    android:layout_width="wrap_content"
+    android:layout_height="match_parent"
+    android:layout_gravity="start"
+    android:fitsSystemWindows="true"
+    android:background="@android:color/white"
+    app:itemBackground="@drawable/drawer_item_background"
+    app:headerLayout="@layout/nav_header_main"
+    app:menu="@menu/activity_main_drawer"/>
diff --git a/res/layout/contacts_drawer_activity.xml b/res/layout/contacts_drawer_activity.xml
index e560494..904a46b 100644
--- a/res/layout/contacts_drawer_activity.xml
+++ b/res/layout/contacts_drawer_activity.xml
@@ -17,7 +17,6 @@
 
 <android.support.v4.widget.DrawerLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/drawer_layout"
     android:layout_width="match_parent"
@@ -26,40 +25,9 @@
     tools:openDrawer="start">
 
     <!-- To prevent hamburger menu from getting the initial focus. -->
-    <View
-        android:focusable="true"
-        android:focusableInTouchMode="true"
-        android:layout_width="1px"
-        android:layout_height="1px" >
-        <requestFocus/>
-    </View>
+    <include layout="@layout/dummy_view_for_initial_focus"/>
 
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/fragment_container"
-        android:orientation="vertical"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
+    <include layout="@layout/contacts_main_content"/>
 
-        <include
-            layout="@layout/people_activity_toolbar"
-            android:id="@+id/toolbar_parent" />
-
-        <FrameLayout
-            android:id="@+id/content_frame"
-            android:layout_width="match_parent"
-            android:layout_height="fill_parent"
-            android:background="?android:attr/windowBackground" />
-    </LinearLayout>
-
-    <android.support.design.widget.NavigationView
-        android:id="@+id/nav_view"
-        android:theme="@style/NavigationDrawerMenuItemTextAppearance"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_gravity="start"
-        android:fitsSystemWindows="true"
-        app:itemBackground="@drawable/drawer_item_background"
-        app:headerLayout="@layout/nav_header_main"
-        app:menu="@menu/activity_main_drawer"/>
-
+    <include layout="@layout/navigation_view"/>
 </android.support.v4.widget.DrawerLayout>
\ No newline at end of file
diff --git a/res/layout/contacts_main_content.xml b/res/layout/contacts_main_content.xml
new file mode 100644
index 0000000..748bdbb
--- /dev/null
+++ b/res/layout/contacts_main_content.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/fragment_container"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <include
+        layout="@layout/people_activity_toolbar"
+        android:id="@+id/toolbar_parent" />
+
+    <FrameLayout
+        android:id="@+id/content_frame"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="?android:attr/windowBackground" />
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/dummy_view_for_initial_focus.xml b/res/layout/dummy_view_for_initial_focus.xml
new file mode 100644
index 0000000..3876e98
--- /dev/null
+++ b/res/layout/dummy_view_for_initial_focus.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<View
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:focusable="true"
+    android:focusableInTouchMode="true"
+    android:layout_width="1px"
+    android:layout_height="1px" >
+    <requestFocus/>
+</View>
\ No newline at end of file
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 00829af..1373736 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM-kontak ingevoer</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Kon nie SIM-kontakte invoer nie"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Kon nie aanmeld nie"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Kies kontakte om in te voer"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Kanselleer invoer"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Outo-sinkronisering is af. Tik om aan te skakel."</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 62f65ab..7e141f4 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> የሲም እውቂያዎች መጥተዋል</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"የሲም እውቂያዎችን ማምጣት አልተሳካም"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"መግባት አልተሳካም"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"ለማምጣት ዕውቂያዎችን ምረጥ"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"ማምጣት ይቅር"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"ራስሰር-አስምር ጠፍቷል። ለማብራት መታ ያድርጉ።"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 4bf5dee..39a3800 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -667,6 +667,7 @@
       <item quantity="one">‏تم استيراد جهة اتصال واحدة من شريحة SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"‏فشل استيراد جهات الاتصال من شريحة SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"أخفق تسجيل الدخول"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"حدد جهات اتصال لاستيرادها"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"إلغاء الاستيراد"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"المزامنة التلقائية متوقفة. انقر للتشغيل."</string>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 79508d4..7898dd4 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM kontakt</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM kontaktları import etmək olmadı"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Hesaba daxil olmaq olmadı"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"İmport üçün kontaktlar seçin"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"İmportu ləğv edin"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Avto-sinxronizasiya deaktivdir. Aktiv etmək üçün toxunun."</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index be6cab3..83ebe1c 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 контакт в SIM картата бе импортиран</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Импортирането на контактите в SIM картата не бе успешно"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Влизането в профила не бе възможно"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Избиране на контакти за импортиране"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Анулиране на импортирането"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Автоматичното синхронизиране е изключено. Докоснете, за да включите."</string>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 8bebcce..3bef431 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other">SIM কার্ডে থাকা <xliff:g id="COUNT">%d</xliff:g>টি পরিচিতি আমদানি করা হয়েছে</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM কার্ডে থাকা পরিচিতিগুলি আমদানি করা গেল না"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"সাইন ইন করা গেল না"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"আমদানি করতে পরিচিতিগুলি নির্বাচন করুন"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"আমদানি বাতিল করুন"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"স্বতঃ-সিঙ্ক বন্ধ আছে৷ চালু করতে আলতো চাপ দিন৷"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 4761d7c..47905d7 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">S\'ha importat 1 contacte de la SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"No s\'han pogut importar els contactes de la SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"No s\'ha pogut iniciar la sessió"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Selecciona contactes per importar-los"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancel·la la importació"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"La sincronització automàtica està desactivada. Toca per activar-la."</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index dfb0f4d..b3db771 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -641,6 +641,7 @@
       <item quantity="one">Byl importován 1 kontakt ze SIM karty</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Kontakty ze SIM karty se nepodařilo importovat"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Přihlášení se nezdařilo"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Vyberte kontakty na import"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Zrušit import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automatická synchronizace je vypnutá. Zapnete ji klepnutím."</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 34a5add..25b3c8e 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> kontaktpersoner på SIM-kortet blev importeret</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Kontaktpersonerne på SIM-kortet kan ikke importeres"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Der kan ikke logges ind"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Vælg kontakter, der skal importeres"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Annuller import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automatisk synkronisering er slået fra. Tryk for at slå funktionen til."</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index e7848b1..2a3c203 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM-Kontakt importiert</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Fehler beim Importieren von SIM-Kontakten"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Fehler bei der Anmeldung"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Kontakte für Import auswählen"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Import abbrechen"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Die automatische Synchronisierung ist deaktiviert. Zum Aktivieren hier tippen."</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index f19db8e..2023dd9 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">Έγινε εισαγωγή 1 επαφής από τη SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Απέτυχε η εισαγωγή των επαφών από τη SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Αποτυχία σύνδεσης"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Επιλέξτε επαφές για εισαγωγή"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Ακύρωση εισαγωγής"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Ο αυτόματος συγχρονισμός είναι ανενεργός. Πατήστε για να τον ενεργοποιήσετε."</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 4db1098..1029ab9 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM contact imported</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Failed to import SIM contacts"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Failed to sign in"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Select contacts to import"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancel import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Auto-sync is off. Tap to turn on."</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 4db1098..1029ab9 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM contact imported</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Failed to import SIM contacts"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Failed to sign in"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Select contacts to import"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancel import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Auto-sync is off. Tap to turn on."</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 4db1098..1029ab9 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM contact imported</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Failed to import SIM contacts"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Failed to sign in"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Select contacts to import"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancel import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Auto-sync is off. Tap to turn on."</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 1b8643f..37231d8 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">Se importó 1 contacto de la SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"No se pudieron importar los contactos de la SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"No se pudo acceder"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Seleccionar contactos para importar"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancelar importación"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"La sincronización automática está desactivada. Presiona para activarla."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index eb5b70f..2ddddaf 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">Se ha importado 1 contacto de la SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"No se han podido importar los contactos de la SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"No se ha podido iniciar sesión"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Seleccionar contactos para importarlos"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancelar importación"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"La sincronización automática está desactivada. Toca para activarla."</string>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 764d329..ccec1a0 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM-kaardi kontakt imporditi</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM-kaardi kontaktide importimine ebaõnnestus"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Sisselogimine ebaõnnestus"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Valige imporditavad kontaktid"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Impordi tühistamine"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automaatne sünkroonimine on välja lülitatud. Puudutage sisselülitamiseks."</string>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 4c8a129..1902d03 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">SIM txarteleko 1 kontaktu inportatu da</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Ezin izan dira inportatu SIM txarteleko kontaktuak"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Ezin izan da hasi saioa"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Hautatu inportatu beharreko kontaktuak"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Utzi inportazioa bertan behera"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Desaktibatuta dago sinkronizazio automatikoa. Sakatu aktibatzeko."</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index e987da1..775e1e8 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> مخاطب سیم کارت وارد شد</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"مخاطبین سیم کارت وارد نشدند"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"وارد سیستم نشدید"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"انتخاب مخاطبین برای وارد کردن"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"لغو وارد کردن"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"همگام‌سازی خودکار غیرفعال است. برای فعال کردن ضربه بزنید."</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 6050fa8..daaf58e 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">Yksi SIM-yhteystieto tuotiin.</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM-yhteystietojen tuonti epäonnistui."</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Kirjautuminen epäonnistui"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Valitse tuotavat yhteystiedot"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Peruuta tuonti"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automaattinen synkronointi ei ole käytössä. Ota toiminto käyttöön napauttamalla."</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 63941f5..94552d2 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contacts importés de la carte SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Échec de l\'importation des contacts de la carte SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Échec de la connexion"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Sélectionner les contacts à importer"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Annuler l\'importation"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"La synchronisation automatique est désactivée. Touchez ici pour l\'activer."</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 00f3d30..c560725 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contacts importés depuis la carte SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Impossible d\'importer les contacts de la carte SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Connexion impossible"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Sélectionner les contacts à importer"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Annuler l\'importation"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"La synchronisation automatique est désactivée. Appuyez pour l\'activer."</string>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 11ac1b5..87adf49 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">Importouse 1 contacto da SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Produciuse un erro ao importar contactos da SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Produciuse un erro ao iniciar sesión"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Seleccionar contactos para importar"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancelar importación"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"A sincronización automática está desactivada. Toca para activala."</string>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index 64c7a15..1cc7878 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> SIM સંપર્કો આયાત કર્યાં</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM સંપર્કો આયાત કરવામાં નિષ્ફળ થયાં"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"સાઇન ઇન કરવામાં નિષ્ફળ થયાં"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"આયાત કરવા માટે સંપર્કો પસંદ કરો"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"આયાત કરવાનું રદ કરો"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"સ્વતઃ સમન્વયન બંધ છે. ચાલુ કરવા માટે ટૅપ કરો."</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index c252b02..f3ad921 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> सिम संपर्क आयात किए गए</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"सिम संपर्कों को आयात करने में विफल रहा"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"प्रवेश करने में विफल रहे"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"आयात करने के लिए संपर्कों को चुनें"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"आयात रद्द करें"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"स्वतः समन्वयन बंद है. चालू करने के लिए टैप करें."</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index fd444dc..e3f0228 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -628,6 +628,7 @@
       <item quantity="other">Uvezeno je <xliff:g id="COUNT">%d</xliff:g> kontakata sa SIM-a</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Uvoz kontakata sa SIM kartice nije uspio"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Prijava nije uspjela"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Odabir kontakata za uvoz"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Otkazivanje uvoza"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automatska sinkronizacija je isključena. Dodirnite da biste je uključili."</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 987db94..8225f2e 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM-névjegy importálva</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Nem sikerült importálni a SIM-névjegyeket."</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Sikertelen bejelentkezés"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Válassza ki az importálni kívánt névjegyeket"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Importálás leállítása"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Az automatikus szinkronizálás ki van kapcsolva. Koppintson a bekapcsolásához."</string>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 6a8eca6..81fa4a5 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> կոնտակտ SIM քարտից ներմուծվեց</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM քարտից չհաջողվեց ներմուծել կոնտակտները"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Չհաջողվեց մուտք գործել"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Ընտրեք կոնտակտներ ներմուծման համար"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Չեղարկել ներմուծումը"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Հպեք՝ հաշվի ինքնահամաժամեցումը միացնելու համար:"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 8482c65..24ef671 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 kontak SIM yang diimpor</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Gagal mengimpor kontak SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Gagal masuk"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Pilih kontak untuk diimpor"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Batalkan impor"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Sinkronisasi otomatis tidak aktif. Tap untuk mengaktifkan."</string>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index d9dc1a7..ba9f6a8 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> SIM-tengiliðir fluttir inn</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Ekki tókst að flytja inn SIM-tengiliðina"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Innskráning tókst ekki"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Veldu tengiliði til að flytja inn"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Hætta við innflutning"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Slökkt er á sjálfvirkri samstillingu. Ýttu til að kveikja á henni."</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 469d845..36b6c01 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 contatto della SIM importato</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Impossibile importare i contatti della SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Impossibile accedere"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Seleziona contatti da importare"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Annulla importazione"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"La sincronizzazione automatica è disattivata. Tocca per attivarla."</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index b06dcfa..d1584cf 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -641,6 +641,7 @@
       <item quantity="one">‏איש קשר אחד יובא מכרטיס ה-SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"‏לא ניתן היה לייבא את אנשי הקשר מכרטיס ה-SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"לא ניתן היה להיכנס לחשבון"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"בחר אנשי קשר לייבוא"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"בטל את הייבוא"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"הסינכרון האוטומטי מושבת. הקש כדי להפעיל אותו."</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 738dace..79018fd 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 件の SIM の連絡先をインポートしました</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM の連絡先をインポートできませんでした"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"ログインできませんでした"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"インポートする連絡先の選択"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"インポートをキャンセル"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"自動同期が OFF になっています。タップすると ON になります。"</string>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index aabdabf..5792baf 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">იმპორტირებულია 1 SIM კონტაქტი</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM კონტაქტების იმპორტირება ვერ მოხერხდა"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"შესვლა ვერ მოხერხდა"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"აირჩიეთ კონტაქტი იმპორტისათვის"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"იმპორტის გაუქმება"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"ავტო-სინქ. გამორთულია. შეეხეთ ჩასართავად."</string>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 85a433f..f8ea98c 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM контактісі импортталды</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM контактілері импортталмады"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Жүйеге кіру мүмкін болмады"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Импортталатын контактілерді таңдау"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Импорттауды тоқтату"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Автоматты синхрондау өшірулі. Қосу үшін түртіңіз."</string>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 54a8e67..1a06739 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">បាន​នាំចូល​ទំនាក់ទំនង SIM 1</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"មិន​អាច​នាំចូល​ទំនាក់ទំនង​ពី SIM បាន​ទេ"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"មិន​អាច​ចូល​បាន​ទេ"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"ជ្រើស​ទំនាក់​ទំនង ដើម្បី​នាំចូល"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"បោះបង់ការ​នាំចូល"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"ការធ្វើសមកាលស្វ័យប្រវត្តិ​ត្រូវ​បានបិទ។ ចុច ដើម្បីបើក។"</string>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 7f95d44..b23aee0 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> ಸಿಮ್ ಸಂಪರ್ಕಗಳನ್ನು ಆಮದು ಮಾಡಲಾಗಿದೆ</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"ಸಿಮ್ ಸಂಪರ್ಕಗಳನ್ನು ಆಮದು ಮಾಡಲು ವಿಫಲವಾಗಿದೆ"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"ಸೈನ್ ಇನ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"ಆಮದು ಮಾಡಲು ಸಂಪರ್ಕಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"ಆಮದು ರದ್ದುಮಾಡಿ"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"ಸ್ವಯಂಚಾಲಿತ ಸಿಂಕ್ ಆಫ್‌ ಆಗಿದೆ. ಆನ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 0f2468a..87e167d 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">SIM 연락처 1개를 가져옴</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM 연락처를 가져오지 못했습니다."</string>
+    <string name="connection_failed" msgid="7558253972301525402">"로그인하지 못했습니다."</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"가져올 주소록 선택"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"가져오기 취소"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"자동 동기화가 사용 중지되어 있습니다. 사용 설정하려면 탭하세요."</string>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index a518ec6..b44e738 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -724,6 +724,7 @@
       <item quantity="one">SIM-картадан 1 байланыш өткөрүлүп алынды</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM-картадагы байланыштар өткөрүлүп алынган жок"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Кире алган жоксуз"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Импорттоло турган байланыштарды тандаңыз"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Импорттоону жокко чыгаруу"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Түзмөктүн авто шайкештештирүү функциясы өчүрүлгөн. Күйгүзүү үчүн тийип коюңуз."</string>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index d6b3bd5..17b7606 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">ນຳເຂົ້າ 1 ລາຍຊື່ຜູ້ຕິດຕໍ່ຊິມແລ້ວ</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"ນຳເຂົ້າລາຍຊື່ຜູ້ຕິດຕໍ່ຈາກຊິມກາດບໍ່ສຳເລັດ"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"ເຂົ້າສູ່ລະບົບບໍ່ສຳເລັດ"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"ເລືອກລາຍຊື່ເພື່ອນຳເຂົ້າ"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"ຍົກເລີກການນຳເຂົ້າ"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"ການຊິ້ງຂໍ້ມູນອັດຕະໂນມັດຖືກປິດໄວ້. ແຕະເພື່ອເປີດໃຊ້."</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 0e42617..dc8d56e 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -641,6 +641,7 @@
       <item quantity="other">Importuota <xliff:g id="COUNT">%d</xliff:g> SIM kortelės kontaktų</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Nepavyko importuoti SIM kortelės kontaktų"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Nepavyko prisijungti"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Pasirinkti importuojamus kontaktus"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Atšaukti importavimą"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automatinis sinchronizavimas išjungtas. Jei norite įjungti, palieskite."</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 75d16d2..9a767e6 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -628,6 +628,7 @@
       <item quantity="other">Importētas <xliff:g id="COUNT">%d</xliff:g> SIM kartes kontaktpersonas</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Neizdevās importēt SIM kartes kontaktpersonas."</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Neizdevās pierakstīties"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Importējamo kontaktpersonu atlase"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Atcelt importēšanu"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automātiskā sinhronizācija ir izslēgta. Pieskarieties, lai to ieslēgtu."</string>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index adcf8a0..2dc9c64 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other">Увезени се <xliff:g id="COUNT">%d</xliff:g> контакти од SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Не успеа увезувањето контакти од SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Не успеа да се најави"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Изберете контакти за увоз"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Откажете го увозот"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Автоматското синхронизирање е исклучено. Допрете за да го вклучите."</string>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index f9ba02e..53cf67c 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">ഒരു സിം കോൺടാക്‌റ്റ് ഇമ്പോർട്ടുചെയ്‌തു</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"സിം കോൺടാക്‌റ്റുകൾ ഇമ്പോർട്ടുചെയ്യാനായില്ല"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"സൈൻ ഇൻ ചെയ്യാനായില്ല"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"ഇമ്പോർട്ടുചെയ്യാനുള്ളവ തിരഞ്ഞെടുക്കൂ"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"ഇറക്കുമതി റദ്ദാക്കുക"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"സ്വയ സമന്വയം ഓഫാണ്. ഓണാക്കാൻ ടാപ്പുചെയ്യുക."</string>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 7c0db45..85d788c 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -617,6 +617,7 @@
       <item quantity="one">1 SIM-н харилцагчийг импорт хийсэн</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM-н харилцагчдыг импортолж чадсангүй"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Нэвтэрч чадсангүй"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Импорт хийх харилцагчдыг сонгоно уу"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Импорт хийхийг цуцлах"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Автомат синк идэвхгүй байна. Идэвхжүүлэх бол товшино уу."</string>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 3143c1a..c63029a 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> सिम संपर्क आयात केले</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"सिम संपर्क आयात करण्यात अयशस्वी"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"साइन इन करण्यात अयशस्वी झाले"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"आयात करण्यासाठी संपर्क निवडा"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"आयात रद्द करा"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"स्वयं-संकालन बंद आहे. चालू करण्यासाठी टॅप करा."</string>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index de22de1..3f29d27 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -617,6 +617,7 @@
       <item quantity="one">1 kenalan SIM diimport</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Gagal mengimport kenalan SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Gagal log masuk"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Pilih kenalan untuk diimport"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Batalkan import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Auto segerak dimatikan. Ketik untuk menghidupkannya."</string>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index cebaa74..5211bdb 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">ဆင်းမ်အဆက်အသွယ် ၁ ခုကို တင်သွင်းပြီးပါပြီ</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"ဆင်းမ်အဆက်အသွယ်များကို တင်သွင်း၍မရပါ"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"အကောင့် ဝင်၍မရပါ"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"တင်သွင်းရန် လိပ်စာများကို ရွေးပါ"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"တင်သွင်းမှု ပယ်ဖျက်ရန်"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"အလိုအလျောက်စင့်ခ်လုပ်ခြင်းကို ပိတ်ထားသည်။ ဖွင့်ရန်အတွက် တို့ပါ။"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 9dfc27b..6b31d9d 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">Én SIM-kontakt ble importert</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Kunne ikke importere SIM-kontakter"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Kunne ikke logge på"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Velg kontaktene du vil importere"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Avbryt import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automatisk synkronisering er slått av. Trykk for å slå det på."</string>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 1490795..f7e5370 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">SIM को १ सम्पर्क आयात गरियो</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM को सम्पर्कहरू आयात गर्न सकिएन"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"साइन इन गर्न सकिएन"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"आयात गर्न सम्पर्कहरू चयन गर्नुहोस्"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"आयात रद्द गर्नुहोस्"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"स्वत:सिङ्क गर्ने सेवा निष्क्रिय छ। सक्रिय गर्न ट्याप गर्नुहोस्।"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index e25eb35..35a376d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 contact op simkaart geïmporteerd</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Kan contacten op simkaart niet importeren"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Inloggen is mislukt"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Contacten selecteren om te importeren"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Importeren annuleren"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automatisch synchroniseren is uitgeschakeld. Tik om in te schakelen."</string>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index 3e93111..c835053 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> SIM ਸੰਪਰਕ ਆਯਾਤ ਕੀਤੇ ਗਏ</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM ਸੰਪਰਕਾਂ ਨੂੰ ਆਯਾਤ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"ਸਾਈਨ ਇਨ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"ਆਯਾਤ ਕਰਨ ਲਈ ਸੰਪਰਕ ਚੁਣੋ"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"ਆਯਾਤ ਰੱਦ ਕਰੋ"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"ਸਵੈ-ਸਮਕਾਲੀਕਰਨ ਬੰਦ ਹੈ। ਚਾਲੂ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 422e11d..0d2cb74 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -641,6 +641,7 @@
       <item quantity="one">Zaimportowano 1 kontakt z karty SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Nie udało się zaimportować kontaktów z karty SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Nie udało się zalogować"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Wybierz kontakty do importowania"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Anuluj importowanie"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automatyczna synchronizacja jest wyłączona. Kliknij, by ją włączyć."</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index eb32b51..47079b9 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contatos importados do SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Falha ao importar contatos do SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Falha ao fazer login"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Selecione os contatos a serem importados"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancelar importação"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"A sincronização automática está desativada. Toque para ativar."</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 8847004..6d494f3 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 contacto do cartão SIM importado</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Ocorreu uma falha ao importar os contactos do cartão SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Ocorreu uma falha ao iniciar sessão"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Selecione os contactos a importar"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancelar importação"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"A sincronização automática está desativada. Toque para ativar."</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index eb32b51..47079b9 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> contatos importados do SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Falha ao importar contatos do SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Falha ao fazer login"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Selecione os contatos a serem importados"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Cancelar importação"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"A sincronização automática está desativada. Toque para ativar."</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 074b1d0..6ca552a 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -628,6 +628,7 @@
       <item quantity="one">A fost importată o persoană de contact de pe SIM.</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Nu s-au importat persoanele de contact de pe SIM."</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Nu v-ați conectat."</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Selectați persoane de contact pentru import"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Anulați importul"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Sincronizarea automată este dezactivată. Atingeți pentru a o activa."</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 21f5d3c..c2e9f46 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -641,6 +641,7 @@
       <item quantity="other">Импортировано <xliff:g id="COUNT">%d</xliff:g> контакта с SIM-карты</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Не удалось импортировать контакты с SIM-карты"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Не удалось войти в систему"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Выберите контакты для импорта"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Отменить импорт"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Автосинхронизация отключена. Нажмите, чтобы ее включить."</string>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index cf09d06..93daaac 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other">SIM සම්බන්ධතා <xliff:g id="COUNT">%d</xliff:g>ක් ආයාත කරන ලදී</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM සම්බන්ධතා ආයාත කිරීමට අසමත් විය"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"පිරීමට අසමත් විය"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"ආයාත කිරීමට සම්බන්ධතා තෝරන්න"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"ආයාත කිරීම අවලංගු කරන්න"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"ස්වයංක්‍රිය සමමුහුර්ත කිරීම ක්‍රියාවිරහිතයි. ක්‍රියාත්මක කිරීමට තට්ටු කරන්න."</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 7f5d328..fdd379e 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -641,6 +641,7 @@
       <item quantity="one">Importoval sa 1 kontakt na SIM karte</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Import kontaktov na SIM karte zlyhal"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Prihlásenie zlyhalo"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Výber kontaktov na import"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Zrušiť import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automatická synchronizácia je vypnutá. Zapnete ju klepnutím."</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 416bb7a..1b6accd 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -641,6 +641,7 @@
       <item quantity="other">S kartice SIM je uvoženih <xliff:g id="COUNT">%d</xliff:g> stikov</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Stikov s kartice SIM ni bilo mogoče uvoziti"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Prijava ni uspela"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Izberite stike za uvoz"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Prekliči uvoz"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Samodejna sinhronizacija je izklopljena. Dotaknite se, da jo vklopite."</string>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 04103d4..11fd5f0 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 kontakt i kartës SIM u importua</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Importimi i kontakteve të kartës SIM dështoi"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Identifikimi dështoi"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Zgjidh kontaktet për importim"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Anulo importimin"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Sinkronizimi automatik është joaktiv. Trokit për ta aktivizuar."</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index d13c375..29689aa 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -628,6 +628,7 @@
       <item quantity="other">Увезено је <xliff:g id="COUNT">%d</xliff:g> контаката са SIM картице</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Увоз контаката са SIM картице није успео"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Пријављивање није успело"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Изаберите контакте за увоз"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Откажите увоз"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Аутоматска синхронизација је искључена. Додирните да бисте је укључили."</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index ad5fde3..460d97c 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">En SIM-kontakt importerad</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Det gick inte att importera SIM-kontakter"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Det gick inte att logga in"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Välj kontakter att importera"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Avbryt import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Automatisk synkronisering har inaktiverats. Aktivera genom att trycka."</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 0f48c7f..68761e5 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -617,6 +617,7 @@
       <item quantity="one">Anwani 1 iliyokuwa kwenye SIM imeletwa</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Imeshindwa kuleta anwani zilizo kwenye SIM kadi"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Imeshindwa kuingia katika akaunti"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Chagua anwani za kuleta"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Ghairi uletaji"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Usawazishaji wa kiotomatiki umezimwa. Gonga ili uuwashe."</string>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 97f994e..12f05b0 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 சிம் தொடர்பு இறக்கப்பட்டது</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"சிம் தொடர்புகளை இறக்க முடியவில்லை"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"உள்நுழைய முடியவில்லை"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"இறக்க வேண்டிய தொடர்புகளைத் தேர்ந்தெடுக்கவும்"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"இறக்குவதை ரத்துசெய்வதற்கான ஐகான்"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"தானாக ஒத்திசை எனும் அம்சம் முடக்கப்பட்டுள்ளது. இயக்க, தட்டவும்."</string>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 4e24e05..efa9b96 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM పరిచయం దిగుమతి చేయబడింది</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM పరిచయాలను దిగుమతి చేయడంలో విఫలమైంది"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"సైన్ ఇన్ చేయడంలో విఫలమైంది"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"దిగుమతి చేయాల్సిన పరిచయాలను ఎంచుకోండి"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"దిగుమతిని రద్దు చేస్తుంది"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"స్వీయ-సమకాలీకరణ ఆఫ్‌లో ఉంది. ఆన్ చేయడానికి నొక్కండి."</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index cd91d64..e50f9f4 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">นำเข้าผู้ติดต่อ 1 รายจากซิมแล้ว</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"นำเข้าผู้ติดต่อจากซิมไม่สำเร็จ"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"ไม่สามารถลงชื่อเข้าใช้ได้"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"เลือกผู้ติดต่อที่จะนำเข้า"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"ยกเลิกการนำเข้า"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"ซิงค์อัตโนมัติปิดอยู่ แตะเพื่อเปิด"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 75ef44d..faa7e70 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> na contact sa SIM ang na-import</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Hindi na-import ang mga contact sa SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Hindi nakapag-sign in"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Piliin ang mga contact na ii-import"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Kanselahin ang pag-import"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Naka-off ang auto-sync. I-tap upang i-on."</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 0cfb59c..daccfb5 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 SIM kişisi içe aktarıldı</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"SIM kişileri içe aktarılamadı"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Oturum açılamadı"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"İçe aktarılacak kişileri seçin"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"İçe aktarma iptal edilir"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Otomatik senkronizasyon kapalı. Açmak için dokunun."</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index a91aada..1f59260 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -641,6 +641,7 @@
       <item quantity="other">Імпортовано <xliff:g id="COUNT">%d</xliff:g> контакта із SIM-карти</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Не вдалось імпортувати контакти із SIM-карти"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Помилка входу"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Виберіть контакти для імпорту"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Скасувати імпорт"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Автоматичну синхронізацію вимкнено. Торкніться, щоб увімкнути."</string>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index a566428..fd5ea54 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">‏1 SIM رابطہ درآمد ہو گیا</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"‏SIM رابطے درآمد کرنے میں ناکام"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"سائن ان کرنے میں ناکام"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"درآمد کیلئے رابطے چنیں"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"برآمد منسوخ کریں"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"خودکار مطابقت پذیری آف ہے۔ آن کرنے کیلئے تھپتھپائیں۔"</string>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 99382ef..b3997b0 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">1 ta kontakt SIM kartadan import qilindi</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Kontaktlarni SIM kartadan import qilib bo‘lmadi"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Tizimga kirib bo‘lmadi"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Import qilish uchun kontaktlarni tanlang"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Import qilishni bekor qilish"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Avto-sinxronlash o‘chiq. Uni yoqish uchun bosing."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 317f980..c2691d2 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">Đã nhập 1 liên hệ trên SIM</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Không nhập được liên hệ trên SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Không đăng nhập được"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Chọn danh bạ để nhập"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Hủy nhập"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Tự động đồng bộ hóa đang tắt. Hãy nhấn để bật."</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 16589be..e904c4e 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">已导入 1 位 SIM 卡联系人</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"无法导入 SIM 卡联系人"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"无法登录"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"选择要导入的联系人"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"取消导入"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"自动同步功能已关闭。点按即可开启。"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index cd6bfc1..0233f8f 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">已匯入 1 位 SIM 聯絡人</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"無法匯入 SIM 聯絡人"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"無法登入"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"選取要匯入的聯絡人"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"取消匯入"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"自動同步已關閉。輕按以開啟。"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index d8bfa7f..6f26ab0 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="one">已匯入 1 位 SIM 卡聯絡人</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"無法匯入 SIM 卡聯絡人"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"無法登入"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"選取要匯入的聯絡人"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"取消匯入"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"自動同步功能已關閉。輕觸即可開啟。"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 61faf1d..416888d 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -615,6 +615,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> oxhumana nabo be-SIM bangenisiwe</item>
     </plurals>
     <string name="sim_import_failed_toast" msgid="5559267299793622705">"Yehlulekile ukungenisa oxhumana nabo be-SIM"</string>
+    <string name="connection_failed" msgid="7558253972301525402">"Yehlulekile ukungena ngemvume"</string>
     <string name="sim_import_dialog_title" msgid="6699935401502172530">"Khetha othintana nabo ozobangenisa"</string>
     <string name="sim_import_cancel_content_description" msgid="2388362519166414488">"Khansela ukungenisa"</string>
     <string name="auto_sync_off" msgid="2180147284456026587">"Ukuvumelanisa okuzenzekelelayo kuvaliwe.Thepha ukuze uvule."</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b1e4762..0c4ee83 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -726,7 +726,7 @@
     <string name="contact_editor_title_read_only_contact">View only</string>
 
     <!-- Dialog title when the user is selecting a raw contact to edit.  [CHAR LIMIT=128] -->
-    <string name="contact_editor_pick_raw_contact_dialog_title">Choose linked contact</string>
+    <string name="contact_editor_pick_raw_contact_to_edit_dialog_title">Choose contact to edit</string>
 
     <!-- Button label to prompt the user to add an account (when there are 0 existing accounts on the device) [CHAR LIMIT=30] -->
     <string name="add_account">Add account</string>
@@ -1861,6 +1861,8 @@
     <!-- Toast shown on settings screen when importing from SIM completes with an error -->
     <string name="sim_import_failed_toast">Failed to import SIM contacts</string>
 
+    <!-- Error message displayed to user when they started the app, but could not sign in to Google's servers. [CHAR LIMIT=50]-->
+    <string name="connection_failed">Failed to sign in</string>
     <!-- Title of SIM import dialog for accessibility; this isn't displayed but is announced
      by talkback when the window is shown -->
     <string name="sim_import_dialog_title">Select contacts to import</string>
diff --git a/src-bind/com/android/contactsbind/ObjectFactory.java b/src-bind/com/android/contactsbind/ObjectFactory.java
index d6799e2..e55b7a8 100644
--- a/src-bind/com/android/contactsbind/ObjectFactory.java
+++ b/src-bind/com/android/contactsbind/ObjectFactory.java
@@ -13,7 +13,9 @@
  */
 package com.android.contactsbind;
 
+import com.android.contacts.ContactsDrawerActivity;
 import com.android.contacts.common.logging.Logger;
+import com.android.contacts.common.util.NavigationDrawer;
 import com.android.contactsbind.search.AutocompleteHelper;
 import com.android.contacts.common.util.DeviceLocalAccountTypeFactory;
 
@@ -50,4 +52,8 @@
     public static Intent getContactSheetIntent(Context context, Uri contactLookupUri) {
         return null;
     }
+
+    public static NavigationDrawer getNavigationDrawer(ContactsDrawerActivity activity) {
+        return new NavigationDrawer.Default(activity);
+    }
 }
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index a56ce0d..e4ffc5e 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -26,6 +26,7 @@
 import android.os.Bundle;
 import android.provider.ContactsContract.Intents;
 import android.support.annotation.LayoutRes;
+import android.support.annotation.NonNull;
 import android.support.design.widget.NavigationView;
 import android.support.v4.view.GravityCompat;
 import android.support.v4.view.MenuItemCompat;
@@ -33,6 +34,7 @@
 import android.support.v7.app.ActionBarDrawerToggle;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.Toolbar;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -61,6 +63,7 @@
 import com.android.contacts.common.util.AccountsListAdapter.AccountListFilter;
 import com.android.contacts.common.util.ImplicitIntentsUtil;
 import com.android.contacts.common.util.MaterialColorMapUtils;
+import com.android.contacts.common.util.NavigationDrawer;
 import com.android.contacts.common.util.ViewUtil;
 import com.android.contacts.editor.ContactEditorFragment;
 import com.android.contacts.editor.SelectAccountDialogFragment;
@@ -80,6 +83,7 @@
 import com.android.contactsbind.ObjectFactory;
 import com.android.contactsbind.experiments.Flags;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -145,7 +149,7 @@
 
         private void stopSearchAndSelection() {
             final MultiSelectContactsListFragment listFragment;
-            if (isAllContactsView() || isAccountView()) {
+            if (isAccountView()) {
                 listFragment = getAllFragment();
             } else if (isGroupView()) {
                 listFragment = getGroupFragment();
@@ -192,7 +196,7 @@
     }
 
     protected ContactListFilterController mContactListFilterController;
-    protected DrawerLayout mDrawer;
+    protected DrawerLayout mDrawerLayout;
     protected ContactsActionBarDrawerToggle mToggle;
     protected Toolbar mToolbar;
     protected NavigationView mNavigationView;
@@ -202,6 +206,8 @@
     // The account the new group will be created under.
     private AccountWithDataSet mNewGroupAccount;
 
+    private NavigationDrawer mNavigationDrawer;
+
     // Recycle badge if possible
     private TextView mAssistantNewBadge;
 
@@ -212,10 +218,18 @@
     protected Map<ContactListFilter, MenuItem> mFilterMenuMap = new HashMap<>();
     protected Map<Integer, MenuItem> mIdMenuMap = new HashMap<>();
 
+    private List<GroupListItem> mGroupListItems;
+    private List<ContactListFilter> mAccountFilterItems;
+    private AccountWithDataSet mCurrentAccount;
+
+    protected boolean mShouldShowAccountSwitcher;
+
     @Override
     protected void onCreate(Bundle savedState) {
         super.onCreate(savedState);
 
+        mShouldShowAccountSwitcher = Flags.getInstance().getBoolean(Experiments.ACCOUNT_SWITCHER);
+
         mContactListFilterController = ContactListFilterController.getInstance(this);
         mContactListFilterController.checkFilterValidity(false);
 
@@ -229,11 +243,12 @@
         ViewUtil.addRectangularOutlineProvider(findViewById(R.id.toolbar_parent), getResources());
 
         // Set up hamburger button.
-        mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
-        mToggle = new ContactsActionBarDrawerToggle(this, mDrawer, mToolbar,
+        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
+        mToggle = new ContactsActionBarDrawerToggle(this, mDrawerLayout, mToolbar,
                 R.string.navigation_drawer_open, R.string.navigation_drawer_close);
+        mDrawerLayout.setDrawerListener(mToggle);
+        mToggle.syncState();
 
-        mDrawer.setDrawerListener(mToggle);
         // Set fallback handler for when drawer is disabled.
         mToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
             @Override
@@ -246,21 +261,27 @@
         if (savedState != null) {
             mCurrentView = ContactsView.values()[savedState.getInt(KEY_CONTACTS_VIEW)];
         } else {
-            mCurrentView = ContactsView.ALL_CONTACTS;
+            resetContactsView();
         }
 
-        // Set up hamburger menu items.
-        mNavigationView = (NavigationView) findViewById(R.id.nav_view);
-        mNavigationView.setNavigationItemSelectedListener(this);
-        setUpMenu();
-
-        initializeAssistantNewBadge();
         loadGroupsAndFilters();
 
         if (savedState != null && savedState.containsKey(KEY_NEW_GROUP_ACCOUNT)) {
             mNewGroupAccount = AccountWithDataSet.unstringify(
                     savedState.getString(KEY_NEW_GROUP_ACCOUNT));
         }
+
+        mNavigationDrawer = ObjectFactory.getNavigationDrawer(this);
+
+        mNavigationView = mNavigationDrawer.getNavigationView();
+        mNavigationView.setNavigationItemSelectedListener(this);
+        setUpMenu();
+        initializeAssistantNewBadge();
+    }
+
+    protected void resetContactsView() {
+        mCurrentView = mShouldShowAccountSwitcher
+                ? ContactsView.ACCOUNT_VIEW : ContactsView.ALL_CONTACTS;
     }
 
     private void initializeAssistantNewBadge() {
@@ -285,7 +306,7 @@
 
     public void setDrawerLockMode(boolean enabled) {
         // Prevent drawer from being opened by sliding from the start of screen.
-        mDrawer.setDrawerLockMode(enabled ? DrawerLayout.LOCK_MODE_UNLOCKED
+        mDrawerLayout.setDrawerLockMode(enabled ? DrawerLayout.LOCK_MODE_UNLOCKED
                 : DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
 
         // Order of these statements matter.
@@ -326,10 +347,14 @@
             menu.removeItem(R.id.nav_help);
         }
 
-        final MenuItem allContactsMenu = menu.findItem(R.id.nav_all_contacts);
-        mIdMenuMap.put(R.id.nav_all_contacts, allContactsMenu);
-        if (isAllContactsView()) {
-            updateMenuSelection(allContactsMenu);
+        if (!mShouldShowAccountSwitcher) {
+            final MenuItem allContactsMenu = menu.findItem(R.id.nav_all_contacts);
+            mIdMenuMap.put(R.id.nav_all_contacts, allContactsMenu);
+            if (isAllContactsView()) {
+                updateMenuSelection(allContactsMenu);
+            }
+        } else {
+            menu.removeItem(R.id.nav_all_contacts);
         }
     }
 
@@ -349,9 +374,11 @@
     @Override
     protected void onResume() {
         super.onResume();
-        if (mDrawer.isDrawerOpen(GravityCompat.START)) {
+        if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
             updateStatusBarBackground();
         }
+        // Restoring recent accounts.
+        mNavigationDrawer.onResume();
     }
 
     public void updateStatusBarBackground() {
@@ -361,11 +388,12 @@
     public void updateStatusBarBackground(int color) {
         if (!CompatUtils.isLollipopCompatible()) return;
         if (color == -1) {
-            mDrawer.setStatusBarBackgroundColor(MaterialColorMapUtils.getStatusBarColor(this));
+            mDrawerLayout.setStatusBarBackgroundColor(
+                    MaterialColorMapUtils.getStatusBarColor(this));
         } else {
-            mDrawer.setStatusBarBackgroundColor(color);
+            mDrawerLayout.setStatusBarBackgroundColor(color);
         }
-        mDrawer.invalidate();
+        mDrawerLayout.invalidate();
         getWindow().setStatusBarColor(Color.TRANSPARENT);
     }
 
@@ -381,6 +409,24 @@
         mToggle.onConfigurationChanged(newConfig);
     }
 
+    @Override
+    protected void onStart() {
+        super.onStart();
+        mNavigationDrawer.onStart();
+    }
+
+    @Override
+    protected void onPause() {
+        mNavigationDrawer.onPause();
+        super.onPause();
+    }
+
+    @Override
+    protected void onStop() {
+        mNavigationDrawer.onStop();
+        super.onStop();
+    }
+
     // Set up fragment manager to load groups and filters.
     protected void loadGroupsAndFilters() {
         final FragmentManager fragmentManager = getFragmentManager();
@@ -421,15 +467,39 @@
     public void onGroupsLoaded(List<GroupListItem> groupListItems) {
         final Menu menu = mNavigationView.getMenu();
         final MenuItem groupsMenuItem = menu.findItem(R.id.nav_groups);
+        if (groupsMenuItem == null) {
+            return;
+        }
+        final SubMenu subMenu = groupsMenuItem.getSubMenu();
+        subMenu.removeGroup(R.id.nav_groups_items);
+
+        mGroupListItems = groupListItems;
+
+        if (mShouldShowAccountSwitcher && mCurrentAccount != null) {
+            updateGroupMenuForAccount(mCurrentAccount);
+        } else {
+            updateGroupMenuForAccount(null);
+        }
+    }
+
+    /**
+     * Update menu items in group section of navigation drawer based on {@link AccountWithDataSet}.
+     * If {@link AccountWithDataSet} is null, then we show groups in all accounts.
+     */
+    public void updateGroupMenuForAccount(AccountWithDataSet account) {
+        mCurrentAccount = account;
+
+        final Menu menu = mNavigationView.getMenu();
+        final MenuItem groupsMenuItem = menu.findItem(R.id.nav_groups);
         final SubMenu subMenu = groupsMenuItem.getSubMenu();
         subMenu.removeGroup(R.id.nav_groups_items);
         mGroupMenuMap = new HashMap<>();
 
         final GroupMetaData groupMetaData = getGroupMetaData();
 
-        if (groupListItems != null) {
+        if (mGroupListItems != null ) {
             // Add each group
-            for (final GroupListItem groupListItem : groupListItems) {
+            for (final GroupListItem groupListItem : getGroupsForCurrentAccount(mCurrentAccount)) {
                 if (GroupUtil.isEmptyFFCGroup(groupListItem)) {
                     continue;
                 }
@@ -453,7 +523,7 @@
                                 updateMenuSelection(menuItem);
                             }
                         });
-                        mDrawer.closeDrawer(GravityCompat.START);
+                        mDrawerLayout.closeDrawer(GravityCompat.START);
                         return true;
                     }
                 });
@@ -478,17 +548,33 @@
                         onCreateGroupMenuItemClicked();
                     }
                 });
-                mDrawer.closeDrawer(GravityCompat.START);
+                mDrawerLayout.closeDrawer(GravityCompat.START);
                 return true;
             }
         });
 
         if (isGroupView() && groupMetaData != null) {
-            updateGroupMenu(groupMetaData);
+            updateGroupMenuCheckedStatus(groupMetaData);
         }
     }
 
-    public void updateGroupMenu(GroupMetaData groupMetaData) {
+    private List<GroupListItem> getGroupsForCurrentAccount(AccountWithDataSet account) {
+        final List<GroupListItem> desiredGroupItems = new ArrayList<>();
+        if (account == null) {
+            desiredGroupItems.addAll(mGroupListItems);
+        } else {
+            for (GroupListItem group : mGroupListItems) {
+                if (TextUtils.equals(mCurrentAccount.name, group.getAccountName())
+                        && TextUtils.equals(mCurrentAccount.type, group.getAccountType())
+                        && TextUtils.equals(mCurrentAccount.dataSet, group.getDataSet())) {
+                    desiredGroupItems.add(group);
+                }
+            }
+        }
+        return desiredGroupItems;
+    }
+
+    public void updateGroupMenuCheckedStatus(GroupMetaData groupMetaData) {
         clearCheckedMenus();
         if (groupMetaData != null && mGroupMenuMap != null
                 && mGroupMenuMap.get(groupMetaData.groupId) != null) {
@@ -528,7 +614,12 @@
         final Account account = extras == null ? null :
                 (Account) extras.getParcelable(Intents.Insert.EXTRA_ACCOUNT);
         if (account == null) {
-            selectAccountForNewGroup();
+            if (mShouldShowAccountSwitcher && mCurrentAccount != null) {
+                // Create a new group in current account.
+                onAccountChosen(mCurrentAccount, /* extraArgs */ null);
+            } else {
+                selectAccountForNewGroup();
+            }
         } else {
             final String dataSet = extras == null
                     ? null : extras.getString(Intents.Insert.EXTRA_DATA_SET);
@@ -540,6 +631,11 @@
 
     @Override
     public void onFiltersLoaded(List<ContactListFilter> accountFilterItems) {
+        mAccountFilterItems = accountFilterItems;
+
+        // Don't show accounts in menu if we enable account switcher.
+        if (mShouldShowAccountSwitcher) return;
+
         final AccountDisplayInfoFactory accountDisplayFactory = AccountDisplayInfoFactory.
                 fromListFilters(this, accountFilterItems);
 
@@ -553,7 +649,6 @@
             return;
         }
 
-
         for (int i = 0; i < accountFilterItems.size(); i++) {
             final ContactListFilter filter = accountFilterItems.get(i);
             final AccountDisplayInfo displayableAccount =
@@ -577,7 +672,7 @@
                             updateMenuSelection(menuItem);
                         }
                     });
-                    mDrawer.closeDrawer(GravityCompat.START);
+                    mDrawerLayout.closeDrawer(GravityCompat.START);
                     return true;
                 }
             });
@@ -619,8 +714,21 @@
                 AppCompatActivity.RESULT_OK, intent);
     }
 
+    public void changeFilter(AccountWithDataSet account) {
+        for (ContactListFilter filter : mAccountFilterItems) {
+            if (account.equals(filter.toAccountWithDataSet())) {
+                final Intent intent = new Intent();
+                intent.putExtra(AccountFilterActivity.EXTRA_CONTACT_LIST_FILTER, filter);
+                AccountFilterUtil.handleAccountFilterResult(mContactListFilterController,
+                        AppCompatActivity.RESULT_OK, intent);
+                clearCheckedMenus();
+                break;
+            }
+        }
+    }
+
     @Override
-    public boolean onNavigationItemSelected(final MenuItem item) {
+    public boolean onNavigationItemSelected(@NonNull final MenuItem item) {
         final int id = item.getItemId();
         mToggle.runWhenIdle(new Runnable() {
             @Override
@@ -645,10 +753,14 @@
             }
         });
 
-        mDrawer.closeDrawer(GravityCompat.START);
+        mDrawerLayout.closeDrawer(GravityCompat.START);
         return true;
     }
 
+    public void closeDrawer() {
+        mDrawerLayout.closeDrawer(GravityCompat.START);
+    }
+
     private Intent createPreferenceIntent() {
         final Intent intent = new Intent(this, ContactsPreferenceActivity.class);
         intent.putExtra(ContactsPreferenceActivity.EXTRA_NEW_LOCAL_PROFILE,
@@ -657,12 +769,15 @@
     }
 
     public void switchToAllContacts() {
-        resetFilter();
+        if (mShouldShowAccountSwitcher) {
+            clearCheckedMenus();
+        } else {
+            resetFilter();
 
-        final Menu menu = mNavigationView.getMenu();
-        final MenuItem allContacts = menu.findItem(R.id.nav_all_contacts);
-        updateMenuSelection(allContacts);
-
+            final Menu menu = mNavigationView.getMenu();
+            final MenuItem allContacts = menu.findItem(R.id.nav_all_contacts);
+            updateMenuSelection(allContacts);
+        }
         setTitle(getString(R.string.contactsList));
     }
 
@@ -697,6 +812,9 @@
     }
 
     private void setMenuChecked(MenuItem menuItem, boolean checked) {
+        if (menuItem == null) {
+            return;
+        }
         menuItem.setCheckable(checked);
         menuItem.setChecked(checked);
     }
@@ -722,6 +840,7 @@
 
     @Override
     public void onAccountChosen(AccountWithDataSet account, Bundle extraArgs) {
+        if (account == null) return;
         mNewGroupAccount = account;
         GroupNameEditDialogFragment.newInstanceForCreation(
                 mNewGroupAccount, GroupUtil.ACTION_CREATE_GROUP)
diff --git a/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java b/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java
index 69dccb5..3d47b8f 100644
--- a/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java
@@ -6,7 +6,6 @@
 import android.content.ContentUris;
 import android.content.Intent;
 import android.content.Loader;
-import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.ContactsContract;
@@ -17,13 +16,14 @@
 import com.android.contacts.R;
 import com.android.contacts.common.activity.RequestPermissionsActivity;
 import com.android.contacts.common.model.AccountTypeManager;
-import com.android.contacts.common.model.account.AccountType;
 import com.android.contacts.common.util.ImplicitIntentsUtil;
 import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette;
 import com.android.contacts.editor.ContactEditorFragment;
 import com.android.contacts.editor.EditorIntents;
 import com.android.contacts.editor.PickRawContactDialogFragment;
 import com.android.contacts.editor.PickRawContactLoader;
+import com.android.contacts.editor.PickRawContactLoader.RawContactsMetadata;
+import com.android.contactsbind.FeedbackHelper;
 
 /**
  * Transparent springboard activity that hosts a dialog to select a raw contact to edit.
@@ -36,36 +36,36 @@
     private static final String TAG_RAW_CONTACTS_DIALOG = "rawContactsDialog";
     private static final int LOADER_RAW_CONTACTS = 1;
 
+    public static final String EXTRA_SHOW_READ_ONLY = "showReadOnly";
+
     private Uri mUri;
-    private Cursor mCursor;
+    private RawContactsMetadata mResult;
     private MaterialPalette mMaterialPalette;
-    private boolean mIsUserProfile;
     private boolean mHasWritableAccount;
     private int mWritableAccountPosition;
 
     /**
      * The contact data loader listener.
      */
-    protected final LoaderManager.LoaderCallbacks<Cursor> mRawContactLoaderListener =
-            new LoaderManager.LoaderCallbacks<Cursor>() {
+    protected final LoaderManager.LoaderCallbacks<RawContactsMetadata> mRawContactLoaderListener =
+            new LoaderManager.LoaderCallbacks<RawContactsMetadata>() {
 
                 @Override
-                public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+                public Loader<RawContactsMetadata> onCreateLoader(int id, Bundle args) {
                     return new PickRawContactLoader(ContactEditorSpringBoardActivity.this, mUri);
                 }
 
                 @Override
-                public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
-                    if (cursor == null) {
-                        Toast.makeText(ContactEditorSpringBoardActivity.this,
-                                R.string.editor_failed_to_load, Toast.LENGTH_SHORT).show();
-                        finish();
+                public void onLoadFinished(Loader<RawContactsMetadata> loader,
+                        RawContactsMetadata result) {
+                    if (result == null) {
+                        toastErrorAndFinish();
                         return;
                     }
-                    mCursor = cursor;
-                    mIsUserProfile = ((PickRawContactLoader) loader).isUserProfile();
+                    mResult = result;
+                    maybeTrimReadOnly();
                     setHasWritableAccount();
-                    if (mCursor.getCount() > 1 && mHasWritableAccount) {
+                    if (mResult.rawContacts.size() > 1 && mHasWritableAccount) {
                         showDialog();
                     } else {
                         loadEditor();
@@ -73,8 +73,7 @@
                 }
 
                 @Override
-                public void onLoaderReset(Loader<Cursor> loader) {
-                    mCursor = null;
+                public void onLoaderReset(Loader<RawContactsMetadata> loader) {
                 }
             };
 
@@ -111,6 +110,11 @@
                 RawContacts.CONTENT_ITEM_TYPE.equals(type)) {
             final long rawContactId = ContentUris.parseId(mUri);
             startEditorAndForwardExtras(getIntentForRawContact(rawContactId));
+        } else if (android.provider.Contacts.AUTHORITY.equals(authority)) {
+            // Fail if given a legacy URI.
+            FeedbackHelper.sendFeedback(this, TAG,
+                    "Legacy Uri was passed to editor.", new IllegalArgumentException());
+            toastErrorAndFinish();
         } else {
             getLoaderManager().initLoader(LOADER_RAW_CONTACTS, null, mRawContactLoaderListener);
         }
@@ -122,6 +126,19 @@
     }
 
     /**
+     * If not configured to show read only raw contact, trim them from the result.
+     */
+    private void maybeTrimReadOnly() {
+        final boolean showReadOnly = getIntent().getBooleanExtra(EXTRA_SHOW_READ_ONLY, false);
+        mResult.showReadOnly = showReadOnly;
+
+        if (showReadOnly) {
+            return;
+        }
+        mResult.trimReadOnly(AccountTypeManager.getInstance(this));
+    }
+
+    /**
      * Start the dialog to pick the raw contact to edit.
      */
     private void showDialog() {
@@ -130,8 +147,6 @@
                 fm.findFragmentByTag(TAG_RAW_CONTACTS_DIALOG);
         if (oldFragment != null && oldFragment.getDialog() != null
                 && oldFragment.getDialog().isShowing()) {
-            // Just update the cursor without reshowing the dialog.
-            oldFragment.setCursor(mCursor);
             return;
         }
         final FragmentTransaction ft = fm.beginTransaction();
@@ -139,7 +154,7 @@
             ft.remove(oldFragment);
         }
         final PickRawContactDialogFragment newFragment = PickRawContactDialogFragment.getInstance(
-                 mCursor, mIsUserProfile);
+                 mResult);
         ft.add(newFragment, TAG_RAW_CONTACTS_DIALOG);
         // commitAllowingStateLoss is safe in this activity because the fragment entirely depends
         // on the result of the loader. Even if we lose the fragment because the activity was
@@ -156,18 +171,13 @@
     private void loadEditor() {
         final Intent intent;
         if (mHasWritableAccount) {
-            mCursor.moveToPosition(mWritableAccountPosition);
-            final long rawContactId = mCursor.getLong(PickRawContactLoader.RAW_CONTACT_ID);
-            intent = getIntentForRawContact(rawContactId);
+            intent = getIntentForRawContact(mResult.rawContacts.get(mWritableAccountPosition).id);
         } else {
             // If the contact has only read-only raw contacts, we'll want to let the editor create
             // the writable raw contact for it.
             intent = EditorIntents.createEditContactIntent(this, mUri, mMaterialPalette, -1);
             intent.setClass(this, ContactEditorActivity.class);
         }
-        // Destroy the loader to prevent multiple onLoadFinished calls in case CP2 is updating in
-        // the background.
-        getLoaderManager().destroyLoader(LOADER_RAW_CONTACTS);
         startEditorAndForwardExtras(intent);
     }
 
@@ -175,18 +185,9 @@
      * Determines if this contact has a writable account.
      */
     private void setHasWritableAccount() {
-        mCursor.moveToPosition(-1);
-        while (mCursor.moveToNext()) {
-            final String accountType = mCursor.getString(PickRawContactLoader.ACCOUNT_TYPE);
-            final String dataSet = mCursor.getString(PickRawContactLoader.DATA_SET);
-            final AccountType account = AccountTypeManager.getInstance(this)
-                    .getAccountType(accountType, dataSet);
-            if (account.areContactsWritable()) {
-                mHasWritableAccount = true;
-                mWritableAccountPosition = mCursor.getPosition();
-                return;
-            }
-        }
+        mWritableAccountPosition = mResult.getIndexOfFirstWritableAccount(
+                AccountTypeManager.getInstance(this));
+        mHasWritableAccount = mWritableAccountPosition != -1;
     }
 
     /**
@@ -211,4 +212,11 @@
         }
         ImplicitIntentsUtil.startActivityInApp(this, intent);
     }
+
+    private void toastErrorAndFinish() {
+        Toast.makeText(ContactEditorSpringBoardActivity.this,
+                R.string.editor_failed_to_load, Toast.LENGTH_SHORT).show();
+        setResult(RESULT_CANCELED, null);
+        finish();
+    }
 }
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 90aa580..5d5a8bf 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -287,8 +287,8 @@
 
         if (isGroupDeleteAction(action)) {
             popSecondLevel();
+            resetContactsView();
             mMembersFragment.toastForSaveAction(action);
-            mCurrentView = ContactsView.ALL_CONTACTS;
             showFabWithAnimation(/* showFab */ true);
             return;
         }
@@ -538,6 +538,9 @@
         final int providerStatus = mProviderStatusWatcher.getProviderStatus();
         final Menu menu = mNavigationView.getMenu();
         final MenuItem groupsMenuItem = menu.findItem(R.id.nav_groups);
+        if (groupsMenuItem == null) {
+            return;
+        }
         final SubMenu subMenu = groupsMenuItem.getSubMenu();
 
         // Reload groups and filters if provider status changes to "normal" and there's no groups
@@ -641,8 +644,8 @@
         }
 
         // Handle the back event in drawer first.
-        if (mDrawer.isDrawerOpen(GravityCompat.START)) {
-            mDrawer.closeDrawer(GravityCompat.START);
+        if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
+            mDrawerLayout.closeDrawer(GravityCompat.START);
             return;
         }
 
@@ -709,7 +712,8 @@
             return true;
         }
 
-        if (!AccountFilterUtil.isAllContactsFilter(mContactListFilterController.getFilter())
+        if (!mShouldShowAccountSwitcher
+                && !AccountFilterUtil.isAllContactsFilter(mContactListFilterController.getFilter())
                 && !mAllFragment.isHidden()) {
             // If mAllFragment is hidden, then mContactsUnavailableFragment is visible so we
             // don't need to switch to all contacts.
@@ -804,6 +808,17 @@
         super.onFilterMenuItemClicked(intent);
     }
 
+    @Override
+    public void changeFilter(AccountWithDataSet account) {
+        super.changeFilter(account);
+        // We must pop second level first to "restart" mAllFragment, before changing filter.
+        if (isInSecondLevel()) {
+            popSecondLevel();
+            showFabWithAnimation(/* showFab */ true);
+        }
+        mCurrentView = ContactsView.ACCOUNT_VIEW;
+    }
+
     private void switchToOrUpdateGroupView(String action) {
         // If group fragment is active and visible, we simply update it.
         if (mMembersFragment != null && !mMembersFragment.isInactive()) {
@@ -866,7 +881,7 @@
             popSecondLevel();
         }
         mShouldSwitchToAllContacts = false;
-        mCurrentView = ContactsView.ALL_CONTACTS;
+        resetContactsView();
         showFabWithAnimation(/* showFab */ true);
         mAllFragment.scrollToTop();
 
diff --git a/src/com/android/contacts/common/Experiments.java b/src/com/android/contacts/common/Experiments.java
index 827083b..5891fdb 100644
--- a/src/com/android/contacts/common/Experiments.java
+++ b/src/com/android/contacts/common/Experiments.java
@@ -21,6 +21,11 @@
 public final class Experiments {
 
     /**
+     * Experiment to enable account switcher
+     */
+    public static final String ACCOUNT_SWITCHER = "Account__account_switcher_enable";
+
+    /**
      * Experiment to enable assistant in left navigation drawer.
      */
     public static final String ASSISTANT = "Assistant__enable_assistant";
diff --git a/src/com/android/contacts/common/list/ContactListFilter.java b/src/com/android/contacts/common/list/ContactListFilter.java
index 5b7472d..f3bac38 100644
--- a/src/com/android/contacts/common/list/ContactListFilter.java
+++ b/src/com/android/contacts/common/list/ContactListFilter.java
@@ -394,7 +394,7 @@
 
     /**
      * Returns true if this ContactListFilter contains at least one Google account.
-     * (see {@link #isGoogleAccountType)
+     * (see {@link #isGoogleAccountType )
      */
     public boolean isSyncable(List<AccountWithDataSet> accounts) {
         if (isGoogleAccountType() && filterType == ContactListFilter.FILTER_TYPE_ACCOUNT) {
@@ -410,8 +410,7 @@
                 // If we're showing all contacts and there is any Google account on the device then
                 // we're syncable.
                 for (AccountWithDataSet account : accounts) {
-                    if (GoogleAccountType.ACCOUNT_TYPE.equals(account.type)
-                            && account.dataSet == null) {
+                    if (account.isWritableGoogleAccount()) {
                         return true;
                     }
                 }
@@ -421,7 +420,7 @@
     }
 
     /**
-     * Returns the Google accounts (see {@link #isGoogleAccountType) for this ContactListFilter.
+     * Returns the Google accounts (see {@link #isGoogleAccountType ) for this ContactListFilter.
      */
     public List<Account> getSyncableAccounts(List<AccountWithDataSet> accounts) {
         final List<Account> syncableAccounts = new ArrayList<>();
@@ -433,8 +432,7 @@
                 || filterType == ContactListFilter.FILTER_TYPE_DEFAULT) {
             if (accounts != null && accounts.size() > 0) {
                 for (AccountWithDataSet account : accounts) {
-                    if (GoogleAccountType.ACCOUNT_TYPE.equals(account.type)
-                            && account.dataSet == null) {
+                    if (account.isWritableGoogleAccount()) {
                         syncableAccounts.add(new Account(account.name, account.type));
                     }
                 }
diff --git a/src/com/android/contacts/common/list/ContactListFilterController.java b/src/com/android/contacts/common/list/ContactListFilterController.java
index 4d3d6ad..5ceef18 100644
--- a/src/com/android/contacts/common/list/ContactListFilterController.java
+++ b/src/com/android/contacts/common/list/ContactListFilterController.java
@@ -81,6 +81,8 @@
      * which case, we should switch to the last saved filter in {@link SharedPreferences}.
      */
     public abstract void checkFilterValidity(boolean notifyListeners);
+
+    public abstract Context getContext();
 }
 
 /**
@@ -196,4 +198,9 @@
                 mFilter.accountName, mFilter.accountType, mFilter.dataSet);
         return accountTypeManager.contains(filterAccount, /* contactWritableOnly */ false);
     }
+
+    @Override
+    public Context getContext() {
+        return mContext;
+    }
 }
diff --git a/src/com/android/contacts/common/model/AccountTypeManager.java b/src/com/android/contacts/common/model/AccountTypeManager.java
index 15c9771..8d01892 100644
--- a/src/com/android/contacts/common/model/AccountTypeManager.java
+++ b/src/com/android/contacts/common/model/AccountTypeManager.java
@@ -313,13 +313,13 @@
             return -1;
         } else if (a.name == null || a.type == null) {
             return 1;
-        } else if (isWritableGoogleAccount(a) && a.equals(mDefaultAccount)) {
+        } else if (a.isWritableGoogleAccount() && a.equals(mDefaultAccount)) {
             return -1;
-        } else if (isWritableGoogleAccount(b) && b.equals(mDefaultAccount)) {
+        } else if (b.isWritableGoogleAccount() && b.equals(mDefaultAccount)) {
             return 1;
-        } else if (isWritableGoogleAccount(a) && !isWritableGoogleAccount(b)) {
+        } else if (a.isWritableGoogleAccount() && !b.isWritableGoogleAccount()) {
             return -1;
-        } else if (isWritableGoogleAccount(b) && !isWritableGoogleAccount(a)) {
+        } else if (b.isWritableGoogleAccount() && !a.isWritableGoogleAccount()) {
             return 1;
         } else {
             int diff = a.name.compareToIgnoreCase(b.name);
@@ -339,10 +339,6 @@
             }
         }
     }
-
-    private static boolean isWritableGoogleAccount(AccountWithDataSet account) {
-        return GoogleAccountType.ACCOUNT_TYPE.equals(account.type) && account.dataSet == null;
-    }
 }
 
 class AccountTypeManagerImpl extends AccountTypeManager
diff --git a/src/com/android/contacts/common/model/account/AccountDisplayInfo.java b/src/com/android/contacts/common/model/account/AccountDisplayInfo.java
index f68fdd5..c5463d6 100644
--- a/src/com/android/contacts/common/model/account/AccountDisplayInfo.java
+++ b/src/com/android/contacts/common/model/account/AccountDisplayInfo.java
@@ -65,7 +65,7 @@
     }
 
     public boolean isGoogleAccount() {
-        return GoogleAccountType.ACCOUNT_TYPE.equals(mSource.type) && mSource.dataSet == null;
+        return mSource.isWritableGoogleAccount();
     }
 
     public boolean isDeviceAccount() {
diff --git a/src/com/android/contacts/common/model/account/AccountWithDataSet.java b/src/com/android/contacts/common/model/account/AccountWithDataSet.java
index 3ee0aab..4917abc 100644
--- a/src/com/android/contacts/common/model/account/AccountWithDataSet.java
+++ b/src/com/android/contacts/common/model/account/AccountWithDataSet.java
@@ -79,6 +79,10 @@
         mAccountTypeWithDataSet = AccountTypeWithDataSet.get(type, dataSet);
     }
 
+    public boolean isWritableGoogleAccount() {
+        return GoogleAccountType.ACCOUNT_TYPE.equals(type) && dataSet == null;
+    }
+
     public boolean isNullAccount() {
         return name == null && type == null && dataSet == null;
     }
diff --git a/src/com/android/contacts/common/model/account/BaseAccountType.java b/src/com/android/contacts/common/model/account/BaseAccountType.java
index 5ed79ef..8d8b8e4 100644
--- a/src/com/android/contacts/common/model/account/BaseAccountType.java
+++ b/src/com/android/contacts/common/model/account/BaseAccountType.java
@@ -187,24 +187,24 @@
                 context.getResources().getBoolean(R.bool.config_editor_field_order_primary);
 
         kind.fieldList.add(new EditField(StructuredName.PREFIX, R.string.name_prefix,
-                FLAGS_PERSON_NAME).setLongForm(true));
+                FLAGS_PERSON_NAME).setOptional(true));
         if (!displayOrderPrimary) {
             kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
                     FLAGS_PERSON_NAME));
             kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
-                    FLAGS_PERSON_NAME).setLongForm(true));
+                    FLAGS_PERSON_NAME).setOptional(true));
             kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
                     FLAGS_PERSON_NAME));
         } else {
             kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
                     FLAGS_PERSON_NAME));
             kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
-                    FLAGS_PERSON_NAME).setLongForm(true));
+                    FLAGS_PERSON_NAME).setOptional(true));
             kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
                     FLAGS_PERSON_NAME));
         }
         kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
-                FLAGS_PERSON_NAME).setLongForm(true));
+                FLAGS_PERSON_NAME).setOptional(true));
 
         return kind;
     }
diff --git a/src/com/android/contacts/common/preference/ContactsPreferences.java b/src/com/android/contacts/common/preference/ContactsPreferences.java
index ac7b0e0..5a79877 100644
--- a/src/com/android/contacts/common/preference/ContactsPreferences.java
+++ b/src/com/android/contacts/common/preference/ContactsPreferences.java
@@ -20,6 +20,7 @@
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.preference.PreferenceManager;
@@ -67,6 +68,10 @@
 
     public static final boolean PREF_DISPLAY_ONLY_PHONES_DEFAULT = false;
 
+    private static final String NAV_DRAWER_FIRST_RECENT = "NavigationDrawer_first_recent";
+
+    private static final String NAV_DRAWER_SECOND_RECENT = "NavigationDrawer_second_recent";
+
     /**
      * Value to use when a preference is unassigned and needs to be read from the shared preferences
      */
@@ -233,6 +238,26 @@
         return false;
     }
 
+    public void setRecentAccounts(@NonNull List<String> recentAccounts) {
+        final int size = recentAccounts.size();
+        final Editor editor = mPreferences.edit();
+        editor.putString(NAV_DRAWER_FIRST_RECENT, size > 0 ? recentAccounts.get(0) : null);
+        editor.putString(NAV_DRAWER_SECOND_RECENT, size > 1 ? recentAccounts.get(1) : null);
+        editor.commit();
+    }
+
+    public void getRecentAccounts(List<String> recentAccounts) {
+        recentAccounts.clear();
+        String recent = mPreferences.getString(NAV_DRAWER_FIRST_RECENT, null);
+        if (recent != null) {
+            recentAccounts.add(recent);
+        }
+        recent = mPreferences.getString(NAV_DRAWER_SECOND_RECENT, null);
+        if (recent != null) {
+            recentAccounts.add(recent);
+        }
+    }
+
     public void registerChangeListener(ChangeListener listener) {
         if (mListener != null) unregisterChangeListener();
 
diff --git a/src/com/android/contacts/common/util/AccountFilterUtil.java b/src/com/android/contacts/common/util/AccountFilterUtil.java
index 96c5113..ed72f67 100644
--- a/src/com/android/contacts/common/util/AccountFilterUtil.java
+++ b/src/com/android/contacts/common/util/AccountFilterUtil.java
@@ -32,6 +32,7 @@
 
 import com.android.contacts.R;
 import com.android.contacts.activities.ContactEditorActivity;
+import com.android.contacts.common.Experiments;
 import com.android.contacts.common.list.AccountFilterActivity;
 import com.android.contacts.common.list.ContactListFilter;
 import com.android.contacts.common.list.ContactListFilterController;
@@ -42,6 +43,7 @@
 import com.android.contacts.common.model.account.AccountWithDataSet;
 import com.android.contacts.common.preference.ContactsPreferences;
 import com.android.contactsbind.ObjectFactory;
+import com.android.contactsbind.experiments.Flags;
 
 import com.google.common.collect.Lists;
 
@@ -89,8 +91,7 @@
             if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
                 filterController.selectCustomFilter();
             } else {
-                filterController.setContactListFilter(filter, /* persistent */
-                        filter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS);
+                filterController.setContactListFilter(filter, shouldPersistFilter(filter));
             }
         }
     }
@@ -132,6 +133,7 @@
     private static List<ContactListFilter> loadAccountFilters(Context context,
             DeviceLocalAccountTypeFactory deviceAccountTypeFactory) {
         final ArrayList<ContactListFilter> accountFilters = Lists.newArrayList();
+
         final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(context);
         final List<AccountWithDataSet> accounts = accountTypeManager.getSortedAccounts(
                 /* defaultAccount */ getDefaultAccount(context), /* contactWritableOnly */ true);
@@ -236,4 +238,11 @@
         return account.withFormattedName(context, R.string.title_from_other_accounts)
                 .getNameLabel().toString();
     }
+
+    public static boolean shouldPersistFilter(ContactListFilter filter) {
+        if (Flags.getInstance().getBoolean(Experiments.ACCOUNT_SWITCHER)) {
+            return true;
+        }
+        return filter != null && filter.isContactsFilterType();
+    }
 }
diff --git a/src/com/android/contacts/common/util/DeviceLocalAccountTypeFactory.java b/src/com/android/contacts/common/util/DeviceLocalAccountTypeFactory.java
index 040a6b4..e54b31f 100644
--- a/src/com/android/contacts/common/util/DeviceLocalAccountTypeFactory.java
+++ b/src/com/android/contacts/common/util/DeviceLocalAccountTypeFactory.java
@@ -52,7 +52,6 @@
 
         public static boolean isLocalAccountType(DeviceLocalAccountTypeFactory factory,
                 String type) {
-
             return isLocalAccountType(factory.classifyAccount(type));
         }
     }
diff --git a/src/com/android/contacts/common/util/NavigationDrawer.java b/src/com/android/contacts/common/util/NavigationDrawer.java
new file mode 100644
index 0000000..c60f029
--- /dev/null
+++ b/src/com/android/contacts/common/util/NavigationDrawer.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts.common.util;
+
+import android.support.design.widget.NavigationView;
+import android.support.v7.app.AppCompatActivity;
+
+import com.android.contacts.R;
+
+public interface NavigationDrawer {
+    void onStart();
+    void onResume();
+    void onPause();
+    void onStop();
+    NavigationView getNavigationView();
+
+    class Default implements NavigationDrawer {
+
+        AppCompatActivity mActivity;
+
+        public Default(AppCompatActivity activity) {
+            mActivity = activity;
+        }
+
+        @Override
+        public void onStart() {}
+
+        @Override
+        public void onResume() {}
+
+        @Override
+        public void onPause() {}
+
+        @Override
+        public void onStop() {}
+
+        @Override
+        public NavigationView getNavigationView() {
+            return (NavigationView) mActivity.findViewById(R.id.nav_view);
+        }
+    }
+}
diff --git a/src/com/android/contacts/editor/PickRawContactDialogFragment.java b/src/com/android/contacts/editor/PickRawContactDialogFragment.java
index 6b0051e..aa3e015 100644
--- a/src/com/android/contacts/editor/PickRawContactDialogFragment.java
+++ b/src/com/android/contacts/editor/PickRawContactDialogFragment.java
@@ -6,7 +6,6 @@
 import android.content.ContentUris;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.ContactsContract.RawContacts;
@@ -14,8 +13,9 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.CursorAdapter;
+import android.widget.BaseAdapter;
 import android.widget.ImageView;
+import android.widget.ListAdapter;
 import android.widget.TextView;
 
 import com.android.contacts.R;
@@ -27,6 +27,8 @@
 import com.android.contacts.common.model.account.AccountWithDataSet;
 import com.android.contacts.common.model.account.GoogleAccountType;
 import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.editor.PickRawContactLoader.RawContact;
+import com.android.contacts.editor.PickRawContactLoader.RawContactsMetadata;
 
 /**
  * Should only be started from an activity that implements {@link PickRawContactListener}.
@@ -34,7 +36,7 @@
  * for the chosen raw contact.
  */
 public class PickRawContactDialogFragment extends DialogFragment {
-    private static final String ARGS_IS_USER_PROFILE = "isUserProfile";
+    private static final String ARGS_RAW_CONTACTS_METADATA = "rawContactsMetadata";
 
     public interface PickRawContactListener {
         void onPickRawContact(long rawContactId);
@@ -43,69 +45,93 @@
     /**
      * Used to list the account info for the given raw contacts list.
      */
-    private final class RawContactAccountListAdapter extends CursorAdapter {
+    private final class RawContactAccountListAdapter extends BaseAdapter {
         private final LayoutInflater mInflater;
         private final Context mContext;
+        private final RawContactsMetadata mRawContactsMetadata;
         private final AccountDisplayInfoFactory mAccountDisplayInfoFactory;
         private final AccountTypeManager mAccountTypeManager;
         private final ContactsPreferences mPreferences;
 
-        public RawContactAccountListAdapter(Context context, Cursor cursor) {
-            super(context, cursor, 0);
+        public RawContactAccountListAdapter(Context context,
+                RawContactsMetadata rawContactsMetadata) {
             mContext = context;
             mInflater = LayoutInflater.from(context);
             mAccountDisplayInfoFactory = AccountDisplayInfoFactory.forWritableAccounts(context);
             mAccountTypeManager = AccountTypeManager.getInstance(context);
             mPreferences = new ContactsPreferences(context);
+            mRawContactsMetadata = rawContactsMetadata;
         }
 
         @Override
-        public void bindView(View view, Context context, Cursor cursor) {
-            final long rawContactId = cursor.getLong(PickRawContactLoader.RAW_CONTACT_ID);
-            final String accountName = cursor.getString(PickRawContactLoader.ACCOUNT_NAME);
-            final String accountType = cursor.getString(PickRawContactLoader.ACCOUNT_TYPE);
-            final String dataSet = cursor.getString(PickRawContactLoader.DATA_SET);
-            final AccountType account = mAccountTypeManager.getAccountType(accountType, dataSet);
+        public int getCount() {
+            return mRawContactsMetadata.rawContacts.size();
+        }
 
-            final int displayNameColumn =
+        @Override
+        public Object getItem(int position) {
+            return mRawContactsMetadata.rawContacts.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return mRawContactsMetadata.rawContacts.get(position).id;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            final View view;
+            final RawContactViewHolder holder;
+            if (convertView == null) {
+                view = mInflater.inflate(R.layout.raw_contact_list_item, parent, false);
+                holder = new RawContactViewHolder();
+                holder.displayName = (TextView) view.findViewById(R.id.display_name);
+                holder.accountName = (TextView) view.findViewById(R.id.account_name);
+                holder.accountIcon = (ImageView) view.findViewById(R.id.account_icon);
+                holder.photo = (ImageView) view.findViewById(R.id.photo);
+                view.setTag(holder);
+            } else {
+                view = convertView;
+                holder = (RawContactViewHolder) view.getTag();
+            }
+            final RawContact rawContact = mRawContactsMetadata.rawContacts.get(position);
+            final AccountType account = mAccountTypeManager.getAccountType(rawContact.accountType,
+                    rawContact.accountDataSet);
+
+            String displayName =
                     mPreferences.getDisplayOrder() == ContactsPreferences.DISPLAY_ORDER_PRIMARY
-                            ? PickRawContactLoader.DISPLAY_NAME_PRIMARY
-                            : PickRawContactLoader.DISPLAY_NAME_ALTERNATIVE;
-
-            String displayName = cursor.getString(displayNameColumn);
+                    ? rawContact.displayName : rawContact.displayNameAlt;
 
             if (TextUtils.isEmpty(displayName)) {
                 displayName = mContext.getString(R.string.missing_name);
             }
-            final RawContactViewHolder holder = (RawContactViewHolder) view.getTag();
             holder.displayName.setText(displayName);
 
             final String accountDisplayLabel;
 
             // Use the same string as editor if it's an editable user profile raw contact.
-            if (mIsUserProfile && account.areContactsWritable()) {
+            if (mRawContactsMetadata.isUserProfile && account.areContactsWritable()) {
                 final AccountDisplayInfo displayInfo =
                         mAccountDisplayInfoFactory.getAccountDisplayInfo(
-                                new AccountWithDataSet(accountName, accountType, dataSet));
+                                new AccountWithDataSet(rawContact.accountName,
+                                        rawContact.accountType, rawContact.accountDataSet));
                 accountDisplayLabel = EditorUiUtils.getAccountHeaderLabelForMyProfile(mContext,
                         displayInfo);
-            }
-            else if (GoogleAccountType.ACCOUNT_TYPE.equals(accountType)
+            } else if (GoogleAccountType.ACCOUNT_TYPE.equals(rawContact.accountType)
                     && account.dataSet == null) {
                 // Focus Google accounts have the account name shown
-                accountDisplayLabel = accountName;
+                accountDisplayLabel = rawContact.accountName;
             } else {
                 accountDisplayLabel = account.getDisplayLabel(mContext).toString();
             }
 
             holder.accountName.setText(accountDisplayLabel);
             holder.accountIcon.setImageDrawable(account.getDisplayIcon(mContext));
-
             final ContactPhotoManager.DefaultImageRequest
                     request = new ContactPhotoManager.DefaultImageRequest(
-                    displayName, String.valueOf(rawContactId), /* isCircular = */ true);
+                    displayName, String.valueOf(rawContact.id), /* isCircular = */ true);
             final Uri photoUri = Uri.withAppendedPath(
-                    ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId),
+                    ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContact.id),
                     RawContacts.DisplayPhoto.CONTENT_DIRECTORY);
 
             ContactPhotoManager.getInstance(mContext).loadDirectoryPhoto(holder.photo,
@@ -113,26 +139,10 @@
                     /* darkTheme = */ false,
                     /* isCircular = */ true,
                     request);
-        }
 
-        @Override
-        public View newView(Context context, Cursor cursor, ViewGroup parent) {
-            final View view = mInflater.inflate(R.layout.raw_contact_list_item, parent, false);
-            final RawContactViewHolder holder = new RawContactViewHolder();
-            holder.displayName = (TextView) view.findViewById(R.id.display_name);
-            holder.accountName = (TextView) view.findViewById(R.id.account_name);
-            holder.accountIcon = (ImageView) view.findViewById(R.id.account_icon);
-            holder.photo = (ImageView) view.findViewById(R.id.photo);
-            view.setTag(holder);
             return view;
         }
 
-        @Override
-        public long getItemId(int position) {
-            getCursor().moveToPosition(position);
-            return getCursor().getLong(PickRawContactLoader.RAW_CONTACT_ID);
-        }
-
         class RawContactViewHolder {
             TextView displayName;
             TextView accountName;
@@ -141,17 +151,13 @@
         }
     }
 
-    // Cursor holding all raw contact rows for the given Contact.
-    private Cursor mCursor;
-    private CursorAdapter mAdapter;
-    private boolean mIsUserProfile;
+    private ListAdapter mAdapter;
 
-    public static PickRawContactDialogFragment getInstance(Cursor cursor, boolean isUserProfile) {
+    public static PickRawContactDialogFragment getInstance(RawContactsMetadata metadata) {
         final PickRawContactDialogFragment fragment = new PickRawContactDialogFragment();
         final Bundle args = new Bundle();
-        args.putBoolean(ARGS_IS_USER_PROFILE, isUserProfile);
+        args.putParcelable(ARGS_RAW_CONTACTS_METADATA, metadata);
         fragment.setArguments(args);
-        fragment.setCursor(cursor);
         return fragment;
     }
 
@@ -161,9 +167,19 @@
             throw new IllegalArgumentException(
                     "Host activity doesn't implement PickRawContactListener");
         }
+        final Bundle args = getArguments();
+        if (args == null) {
+            throw new IllegalArgumentException("Dialog created with no arguments");
+        }
+
+        final RawContactsMetadata metadata = args.getParcelable(ARGS_RAW_CONTACTS_METADATA);
+        if (metadata == null) {
+            throw new IllegalArgumentException("Dialog created with null RawContactsMetadata");
+        }
+
         final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-        mAdapter = new RawContactAccountListAdapter(getContext(), mCursor);
-        builder.setTitle(R.string.contact_editor_pick_raw_contact_dialog_title);
+        mAdapter = new RawContactAccountListAdapter(getContext(), metadata);
+        builder.setTitle(R.string.contact_editor_pick_raw_contact_to_edit_dialog_title);
         builder.setAdapter(mAdapter, new DialogInterface.OnClickListener() {
             @Override
             public void onClick(DialogInterface dialog, int which) {
@@ -178,32 +194,14 @@
     @Override
     public void onDismiss(DialogInterface dialog) {
         super.onDismiss(dialog);
-        mCursor = null;
         finishActivity();
     }
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        final Bundle args = getArguments();
-        if (args != null) {
-            mIsUserProfile = args.getBoolean(ARGS_IS_USER_PROFILE);
-        }
-    }
-
-    @Override
     public Context getContext() {
         return getActivity();
     }
 
-    public void setCursor(Cursor cursor) {
-        if (mAdapter != null) {
-            mAdapter.swapCursor(cursor);
-        }
-        mCursor = cursor;
-    }
-
     private void finishActivity() {
         if (getActivity() != null && !getActivity().isFinishing()) {
             getActivity().finish();
diff --git a/src/com/android/contacts/editor/PickRawContactLoader.java b/src/com/android/contacts/editor/PickRawContactLoader.java
index ca44e21..1939666 100644
--- a/src/com/android/contacts/editor/PickRawContactLoader.java
+++ b/src/com/android/contacts/editor/PickRawContactLoader.java
@@ -1,22 +1,31 @@
 package com.android.contacts.editor;
 
+import android.content.AsyncTaskLoader;
+import android.content.ContentResolver;
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.RawContacts;
 
+import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountType;
+
+import java.util.ArrayList;
+
 /**
  * Loader for the pick a raw contact to edit activity. Loads all raw contact metadata for the
  * given Contact {@link Uri}.
  */
-public class PickRawContactLoader extends CursorLoader {
+public class PickRawContactLoader extends
+        AsyncTaskLoader<PickRawContactLoader.RawContactsMetadata> {
     private Uri mContactUri;
-    private boolean mIsUserProfile;
+    private RawContactsMetadata mCachedResult;
 
-    public static final String[] COLUMNS = new String[] {
+    private static final String[] RAW_CONTACT_PROJECTION = new String[] {
             RawContacts.ACCOUNT_NAME,
             RawContacts.ACCOUNT_TYPE,
             RawContacts.DATA_SET,
@@ -25,53 +34,97 @@
             RawContacts.DISPLAY_NAME_ALTERNATIVE
     };
 
-    public static final String SELECTION = RawContacts.CONTACT_ID + "=?";
+    private static final String RAW_CONTACT_SELECTION = RawContacts.CONTACT_ID + "=?";
 
-    public static final int ACCOUNT_NAME = 0;
-    public static final int ACCOUNT_TYPE = 1;
-    public static final int DATA_SET = 2;
-    public static final int RAW_CONTACT_ID = 3;
-    public static final int DISPLAY_NAME_PRIMARY = 4;
-    public static final int DISPLAY_NAME_ALTERNATIVE = 5;
+    private static final int ACCOUNT_NAME = 0;
+    private static final int ACCOUNT_TYPE = 1;
+    private static final int DATA_SET = 2;
+    private static final int RAW_CONTACT_ID = 3;
+    private static final int DISPLAY_NAME_PRIMARY = 4;
+    private static final int DISPLAY_NAME_ALTERNATIVE = 5;
 
     public PickRawContactLoader(Context context, Uri contactUri) {
-        super(context, ensureIsContactUri(contactUri), COLUMNS, SELECTION, null, RawContacts._ID);
-        mContactUri = contactUri;
+        super(context);
+        mContactUri = ensureIsContactUri(contactUri);
     }
 
     @Override
-    public Cursor loadInBackground() {
+    public RawContactsMetadata loadInBackground() {
+        final ContentResolver resolver = getContext().getContentResolver();
         // Get the id of the contact we're looking at.
-        final Cursor cursor = getContext().getContentResolver()
-                .query(mContactUri, new String[] { Contacts._ID, Contacts.IS_USER_PROFILE }, null,
+        final Cursor contactCursor = resolver.query(
+                mContactUri, new String[]{Contacts._ID, Contacts.IS_USER_PROFILE}, null,
                 null, null);
 
-        if (cursor == null) {
+        if (contactCursor == null) {
             return null;
         }
 
-        if (cursor.getCount() < 1) {
-            cursor.close();
+        if (contactCursor.getCount() < 1) {
+            contactCursor.close();
             return null;
         }
 
-        cursor.moveToFirst();
-        final long contactId = cursor.getLong(/* Contacts._ID */ 0);
-        mIsUserProfile = cursor.getInt(/* Contacts.IS_USER_PROFILE */ 1) == 1;
+        final RawContactsMetadata result = new RawContactsMetadata();
+        final long contactId;
+        try {
+            contactCursor.moveToFirst();
+            contactId = contactCursor.getLong(/* Contacts._ID */ 0);
+            result.isUserProfile = contactCursor.getInt(/* Contacts.IS_USER_PROFILE */ 1) == 1;
+        } finally {
+            contactCursor.close();
+        }
 
-        cursor.close();
-        // Update selection arguments and uri.
-        setSelectionArgs(new String[]{ Long.toString(contactId) });
-        if (mIsUserProfile) {
-            setUri(ContactsContract.Profile.CONTENT_RAW_CONTACTS_URI);
+        // Load RawContact data
+        final Uri rawContactUri;
+        if (result.isUserProfile) {
+            rawContactUri = ContactsContract.Profile.CONTENT_RAW_CONTACTS_URI;
         } else {
-            setUri(RawContacts.CONTENT_URI);
+            rawContactUri = RawContacts.CONTENT_URI;
         }
-        return super.loadInBackground();
+
+        final Cursor rawContactCursor = resolver.query(
+                rawContactUri, RAW_CONTACT_PROJECTION, RAW_CONTACT_SELECTION,
+                new String[] {Long.toString(contactId)}, null);
+
+        if (rawContactCursor == null) {
+            return null;
+        }
+
+        rawContactCursor.moveToPosition(-1);
+        try {
+            while (rawContactCursor.moveToNext()) {
+                RawContact rawContact = new RawContact();
+                rawContact.id = rawContactCursor.getLong(RAW_CONTACT_ID);
+                rawContact.displayName = rawContactCursor.getString(DISPLAY_NAME_PRIMARY);
+                rawContact.displayNameAlt = rawContactCursor.getString(DISPLAY_NAME_ALTERNATIVE);
+                rawContact.accountName = rawContactCursor.getString(ACCOUNT_NAME);
+                rawContact.accountType = rawContactCursor.getString(ACCOUNT_TYPE);
+                rawContact.accountDataSet = rawContactCursor.getString(DATA_SET);
+                result.rawContacts.add(rawContact);
+            }
+        } finally {
+            rawContactCursor.close();
+        }
+        return result;
     }
 
-    public boolean isUserProfile() {
-        return mIsUserProfile;
+    @Override
+    public void deliverResult(RawContactsMetadata data) {
+        mCachedResult = data;
+        if (isStarted()) {
+            super.deliverResult(data);
+        }
+    }
+
+    @Override
+    protected void onStartLoading() {
+        super.onStartLoading();
+        if (mCachedResult == null) {
+            forceLoad();
+        } else {
+            deliverResult(mCachedResult);
+        }
     }
 
     /**
@@ -87,4 +140,121 @@
         }
         return uri;
     }
+
+    public static class RawContactsMetadata implements Parcelable {
+        public static final Parcelable.Creator<RawContactsMetadata> CREATOR =
+                new Parcelable.Creator<RawContactsMetadata>() {
+                    @Override
+                    public RawContactsMetadata createFromParcel(Parcel source) {
+                        return new RawContactsMetadata(source);
+                    }
+
+                    @Override
+                    public RawContactsMetadata[] newArray(int size) {
+                        return new RawContactsMetadata[size];
+                    }
+                };
+
+        public boolean isUserProfile;
+        public boolean showReadOnly = false;
+        public ArrayList<RawContact> rawContacts = new ArrayList<>();
+
+        public RawContactsMetadata() {}
+
+        private RawContactsMetadata(Parcel in) {
+            isUserProfile = in.readInt() == 1;
+            showReadOnly = in.readInt() == 1;
+            in.readTypedList(rawContacts, RawContact.CREATOR);
+        }
+
+        /**
+         * Removes all read-only raw contacts.
+         */
+        public void trimReadOnly(AccountTypeManager accountManager) {
+            for (int i = rawContacts.size() - 1; i >= 0 ; i--) {
+                final RawContact rawContact = rawContacts.get(i);
+                final AccountType account = accountManager.getAccountType(
+                        rawContact.accountType, rawContact.accountDataSet);
+                if (!account.areContactsWritable()) {
+                    rawContacts.remove(i);
+                }
+            }
+        }
+
+        /**
+         * Returns the index of the first writable account in this contact or -1 if none exist.
+         */
+        public int getIndexOfFirstWritableAccount(AccountTypeManager accountManager) {
+            for (int i = 0; i < rawContacts.size(); i++) {
+                final RawContact rawContact = rawContacts.get(i);
+                final AccountType account = accountManager.getAccountType(
+                        rawContact.accountType, rawContact.accountDataSet);
+                if (account.areContactsWritable()) {
+                    return i;
+                }
+            }
+
+            return -1;
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeInt(isUserProfile ? 1 : 0);
+            dest.writeInt(showReadOnly ? 1 : 0);
+            dest.writeTypedList(rawContacts);
+        }
+    }
+
+    public static class RawContact implements Parcelable {
+        public static final Parcelable.Creator<RawContact> CREATOR =
+                new Parcelable.Creator<RawContact>() {
+                    @Override
+                    public RawContact createFromParcel(Parcel source) {
+                        return new RawContact(source);
+                    }
+
+                    @Override
+                    public RawContact[] newArray(int size) {
+                        return new RawContact[size];
+                    }
+                };
+
+        public long id;
+        public String displayName;
+        public String displayNameAlt;
+        public String accountName;
+        public String accountType;
+        public String accountDataSet;
+
+        public RawContact() {}
+
+        private RawContact(Parcel in) {
+            id = in.readLong();
+            displayName = in.readString();
+            displayNameAlt = in.readString();
+            accountName = in.readString();
+            accountType = in.readString();
+            accountDataSet = in.readString();
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeLong(id);
+            dest.writeString(displayName);
+            dest.writeString(displayNameAlt);
+            dest.writeString(accountName);
+            dest.writeString(accountType);
+            dest.writeString(accountDataSet);
+        }
+    }
 }
diff --git a/src/com/android/contacts/group/GroupMembersFragment.java b/src/com/android/contacts/group/GroupMembersFragment.java
index be3b127..ab978ac 100644
--- a/src/com/android/contacts/group/GroupMembersFragment.java
+++ b/src/com/android/contacts/group/GroupMembersFragment.java
@@ -786,7 +786,7 @@
         maybeAttachCheckBoxListener();
 
         mActivity.setTitle(mGroupMetaData.groupName);
-        mActivity.updateGroupMenu(mGroupMetaData);
+        mActivity.updateGroupMenuCheckedStatus(mGroupMetaData);
         mActivity.invalidateOptionsMenu();
 
         // Start loading the group members
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 5539428..ad1a2ca 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -29,6 +29,7 @@
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.graphics.Rect;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
@@ -72,8 +73,13 @@
 import com.android.contacts.common.logging.Logger;
 import com.android.contacts.common.logging.ScreenEvent;
 import com.android.contacts.common.model.AccountTypeManager;
+import com.android.contacts.common.model.account.AccountDisplayInfo;
+import com.android.contacts.common.model.account.AccountDisplayInfoFactory;
+import com.android.contacts.common.model.account.AccountType;
 import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.preference.ContactsPreferences;
 import com.android.contacts.common.util.AccountFilterUtil;
+import com.android.contacts.common.util.DeviceLocalAccountTypeFactory;
 import com.android.contacts.common.util.ImplicitIntentsUtil;
 import com.android.contacts.interactions.ContactDeletionInteraction;
 import com.android.contacts.interactions.ContactMultiDeletionInteraction;
@@ -83,6 +89,7 @@
 import com.android.contacts.util.SyncUtil;
 import com.android.contactsbind.experiments.Flags;
 import com.android.contactsbind.FeatureHighlightHelper;
+import com.android.contactsbind.ObjectFactory;
 
 import java.util.List;
 import java.util.Locale;
@@ -156,6 +163,7 @@
     private ContactsDrawerActivity mActivity;
     private ContactsRequest mContactsRequest;
     private ContactListFilterController mContactListFilterController;
+    private DeviceLocalAccountTypeFactory mDeviceLocalFactory;
 
     private final ActionBarAdapter.Listener mActionBarListener = new ActionBarAdapter.Listener() {
         @Override
@@ -449,13 +457,14 @@
         mIsRecreatedInstance = (savedState != null);
         mContactListFilterController = ContactListFilterController.getInstance(getContext());
         mContactListFilterController.checkFilterValidity(false);
-        // Use FILTER_TYPE_ALL_ACCOUNTS filter if the instance is not a re-created one.
-        // This is useful when user upgrades app while an account filter was
-        // stored in sharedPreference in a previous version of Contacts app.
-        final ContactListFilter filter = mIsRecreatedInstance
-                ? getFilter()
-                : AccountFilterUtil.createContactsFilter(getContext());
-        setContactListFilter(filter);
+        mDeviceLocalFactory = ObjectFactory.getDeviceLocalAccountTypeFactory(getContext());
+        if (!Flags.getInstance().getBoolean(Experiments.ACCOUNT_SWITCHER)
+                && !mIsRecreatedInstance) {
+            // Use FILTER_TYPE_ALL_ACCOUNTS filter if the instance is not a re-created one.
+            // This is useful when user upgrades app while an account filter was
+            // stored in sharedPreference in a previous version of Contacts app.
+            setContactListFilter(AccountFilterUtil.createContactsFilter(getContext()));
+        }
     }
 
     @Override
@@ -951,7 +960,7 @@
      */
     private void setContactListFilter(ContactListFilter filter) {
         mContactListFilterController.setContactListFilter(filter,
-                /* persistent */ isAllContactsFilter(filter));
+                AccountFilterUtil.shouldPersistFilter(filter));
     }
 
     @Override
