diff --git a/res/layout-finger/contact_card_layout.xml b/res/layout-finger/contact_card_layout.xml
index 19ef744..6e70561 100644
--- a/res/layout-finger/contact_card_layout.xml
+++ b/res/layout-finger/contact_card_layout.xml
@@ -25,17 +25,29 @@
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"/>
         
-    <FrameLayout android:id="@android:id/tabcontent"
+    <ListView android:id="@+id/contact_data"
         android:layout_width="fill_parent"
-        android:layout_height="0dip"
-        android:layout_weight="1">
-        
-        <View
+        android:layout_height="fill_parent"
+        android:background="@drawable/title_bar_shadow"
+    />
+    
+    <ScrollView android:id="@android:id/empty"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:fillViewport="true"
+    >
+        <TextView android:id="@+id/emptyText"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:background="@drawable/title_bar_shadow"
+            android:text="@string/no_contact_details"
+            android:textSize="20sp"
+            android:textColor="?android:attr/textColorSecondary"
+            android:paddingLeft="10dip"
+            android:paddingRight="10dip"
+            android:paddingTop="10dip"
+            android:lineSpacingMultiplier="0.92"
         />
-        </FrameLayout>
+    </ScrollView>
             
 </LinearLayout>
 
diff --git a/res/layout/item_contact_editor.xml b/res/layout/item_contact_editor.xml
index cea4bdb..21da0aa 100644
--- a/res/layout/item_contact_editor.xml
+++ b/res/layout/item_contact_editor.xml
@@ -25,15 +25,16 @@
     <!-- Left side color bar -->
     <ImageView
         android:id="@+id/color_bar"
-        android:layout_width="15dip"
+        android:layout_width="5dip"
         android:layout_height="fill_parent"
     />
 
     <!-- The content -->
-    <RelativeLayout
+    <LinearLayout
         android:layout_width="0dip"
         android:layout_height="wrap_content"
         android:layout_weight="1"
+        android:orientation="vertical"
     >
 
         <!-- Account info header -->
@@ -42,12 +43,19 @@
             android:layout_width="fill_parent"
         >
 
+            <ImageView android:id="@+id/header_color_bar"
+                android:layout_width="fill_parent"
+                android:layout_height="2dip"
+                android:layout_marginBottom="5dip"
+            />
+
             <ImageView android:id="@+id/header_icon"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_marginLeft="7dip"
                 android:layout_marginRight="7dip"
                 android:layout_centerVertical="true"
+                android:layout_below="@id/header_color_bar"
             />
 
             <TextView android:id="@+id/header_account_type"
@@ -57,8 +65,7 @@
                 android:layout_alignTop="@id/header_icon"
                 android:layout_marginTop="-4dip"
 
-                android:textSize="24pt"
-                android:textStyle="bold"
+                android:textSize="24sp"
                 android:textColor="?android:attr/textColorPrimary"
             />
 
@@ -73,14 +80,20 @@
                 android:textColor="?android:attr/textColorPrimary"
             />
 
+            <View
+                android:layout_width="fill_parent"
+                android:layout_height="1px"
+                android:layout_alignParentBottom="true"
+
+                android:background="?android:attr/listDivider"
+            />
+
         </RelativeLayout>
 
         <FrameLayout
             android:id="@+id/stub_photo"
-            android:layout_width="100dip"
-            android:layout_height="96dip"
-            android:layout_below="@id/header"
-            android:layout_alignWithParentIfMissing="true"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
             android:paddingLeft="12dip"
             android:paddingTop="10dip">
 
@@ -97,28 +110,34 @@
             android:layout_below="@id/stub_photo"
             android:layout_marginTop="6dip"
             android:layout_marginBottom="4dip"
-            android:layout_alignWithParentIfMissing="true"
             layout="@layout/item_generic_editor" />
 
+        <TextView android:id="@+id/read_only_name"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="6dip"
+            android:layout_marginBottom="6dip"
+            android:layout_marginLeft="10dip"
+
+            android:textAppearance="?android:attr/textAppearanceLarge"
+        />
+
         <LinearLayout
             android:id="@+id/sect_general"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout_below="@+id/edit_name"
             android:orientation="vertical"
         />
 
         <View android:id="@+id/head_secondary_divider"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout_below="@id/sect_general"
             android:background="?android:attr/listDivider" />
 
         <TextView
             android:id="@+id/head_secondary"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout_below="@+id/head_secondary_divider"
 
             android:gravity="center_vertical"
             android:minHeight="?android:attr/listPreferredItemHeight"
@@ -136,20 +155,22 @@
             android:id="@+id/sect_secondary"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout_below="@id/head_secondary"
             android:orientation="vertical" />
 
         <TextView
             android:id="@+id/edit_read_only"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout_below="@id/edit_name"
-            android:gravity="center_horizontal"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:paddingTop="5dip"
-            android:paddingBottom="5dip"
-            android:text="@string/edit_read_only"/>
+            android:layout_marginTop="10dip"
+            android:layout_marginBottom="10dip"
+            android:layout_marginLeft="10dip"
 
-    </RelativeLayout>
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:textColor="?android:attr/textColorPrimary"
+            android:drawableLeft="@android:drawable/ic_dialog_alert"
+            android:drawablePadding="10dip"
+        />
+
+    </LinearLayout>
 
 </com.android.contacts.ui.widget.ContactEditorView>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 3c9a660..0cc1605 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -46,31 +46,33 @@
     <string name="menu_viewAddress" msgid="1814744325763202024">"Dirección del mapa"</string>
     <string name="menu_makeDefaultNumber" msgid="4838759253316649534">"Crear número predeterminado"</string>
     <string name="menu_makeDefaultEmail" msgid="2599044610375789994">"Crear correo electrónico predeterminado"</string>
-    <string name="menu_splitAggregate" msgid="7402548456225901170">"Dividir"</string>
+    <!-- no translation found for menu_splitAggregate (8368636463748691868) -->
+    <skip />
     <string name="splitAggregate_title" msgid="2053462872948058798">"Dividir contacto"</string>
-    <string name="contactsSplitMessage" msgid="3439008547775199243">"División de contacto"</string>
+    <!-- no translation found for contactsSplitMessage (5253490235863170269) -->
+    <skip />
+    <!-- no translation found for splitConfirmation_title (6716467920283502570) -->
+    <skip />
+    <!-- no translation found for splitConfirmation (1150797297503944823) -->
+    <skip />
     <string name="menu_joinAggregate" msgid="5027981918265667970">"Unirse"</string>
     <string name="menu_showSources" msgid="885215611438295455">"Mostrar fuentes"</string>
     <string name="menu_hideSources" msgid="71367585820555477">"Ocultar fuentes"</string>
     <string name="titleJoinAggregate" msgid="6970566008563147202">"Unirse al contacto"</string>
     <string name="titleJoinContactDataWith" msgid="7684875775798635354">"Unirse a contactos"</string>
-    <!-- no translation found for blurbJoinContactDataWith (995870557595050304) -->
-    <skip />
-    <!-- no translation found for showAllContactsJoinItem (2189695051430392383) -->
-    <skip />
-    <!-- no translation found for separatorJoinAggregateSuggestions (2831414448851313345) -->
-    <skip />
+    <string name="blurbJoinContactDataWith" msgid="995870557595050304">"Selecciona el contacto al que quieras unirte con <xliff:g id="NAME">%s</xliff:g>."</string>
+    <string name="showAllContactsJoinItem" msgid="2189695051430392383">"Mostrar todos los contactos"</string>
+    <string name="separatorJoinAggregateSuggestions" msgid="2831414448851313345">"Contactos sugeridos"</string>
     <string name="separatorJoinAggregateAll" msgid="7939932265026181043">"Todos los contactos"</string>
     <string name="contactsJoinedMessage" msgid="7208148163607047389">"Unión de contactos"</string>
     <string name="menu_contactOptions" msgid="1957061455705020617">"Opciones"</string>
     <string name="contactOptionsTitle" msgid="8259347644090700915">"Opciones"</string>
     <string name="deleteConfirmation_title" msgid="6394309508930335204">"Suprimir"</string>
-    <!-- no translation found for readOnlyContactWarning (1523906860865526049) -->
+    <!-- no translation found for readOnlyContactWarning (1390849295342594265) -->
     <skip />
-    <!-- no translation found for readOnlyContactDeleteConfirmation (56308694573221640) -->
+    <!-- no translation found for readOnlyContactDeleteConfirmation (2137170726670196909) -->
     <skip />
-    <!-- no translation found for multipleContactDeleteConfirmation (938900978442960800) -->
-    <skip />
+    <string name="multipleContactDeleteConfirmation" msgid="938900978442960800">"Eliminar este contacto suprimirá la información de mútliples cuentas."</string>
     <string name="deleteConfirmation" msgid="811706994761610640">"Este contacto se suprimirá."</string>
     <string name="menu_done" msgid="796017761764190697">"Finalizado"</string>
     <string name="menu_doNotSave" msgid="2174577548513895144">"Revertir"</string>
@@ -157,6 +159,18 @@
     <string name="listSeparatorOtherInformation" msgid="7844959649638482329">"Otra información"</string>
     <string name="listSeparatorOtherInformation_edit" msgid="1326921768011367750">"Otras opciones"</string>
     <string name="listSeparatorMore_edit" msgid="858454837482243176">"Más"</string>
+    <!-- no translation found for listTotalPhoneContacts:one (8721111084815668845) -->
+    <!-- no translation found for listTotalPhoneContacts:other (6133262880804110289) -->
+    <!-- no translation found for listTotalPhoneContactsZero (2756295259674938869) -->
+    <skip />
+    <!-- no translation found for listTotalAllContacts:one (1096068709488455155) -->
+    <!-- no translation found for listTotalAllContacts:other (2865867557378939630) -->
+    <!-- no translation found for listTotalAllContactsZero (6811347506748072822) -->
+    <skip />
+    <!-- no translation found for listFoundAllContacts:one (2830107332033967280) -->
+    <!-- no translation found for listFoundAllContacts:other (7752927996850263152) -->
+    <!-- no translation found for listFoundAllContactsZero (5554368784319460828) -->
+    <skip />
     <string name="socialStreamIconLabel" msgid="4367712449555075376">"Social"</string>
     <string name="contactsIconLabel" msgid="7666609097606552806">"Contactos"</string>
     <string name="contactsFavoritesLabel" msgid="8417039765586853670">"Favoritos"</string>
@@ -247,13 +261,11 @@
     <string name="import_all_vcard_string" msgid="5518136113853448474">"Importar todos los archivos de vCard"</string>
     <string name="searching_vcard_message" msgid="6917522333561434546">"Buscando datos de vCard en la tarjeta SD"</string>
     <string name="scanning_sdcard_failed_title" msgid="3506782007953167180">"No se ha podido explorar la tarjeta SD"</string>
-    <!-- no translation found for scanning_sdcard_failed_message (3761992500690182922) -->
-    <skip />
+    <string name="scanning_sdcard_failed_message" msgid="3761992500690182922">"No se ha podido explorar la tarjeta SD. (Motivo: \"<xliff:g id="FAIL_REASON">%s</xliff:g>\")"</string>
     <string name="fail_reason_io_error" msgid="5922864781066136340">"Error de E/S"</string>
     <string name="fail_reason_vcard_parse_error" msgid="1201233722762680214">"No se ha podido analizar vCard debido a un motivo inesperado"</string>
     <string name="fail_reason_vcard_not_supported_error" msgid="655208100451286027">"No se ha podido analizar vCard aunque el formato parece válido, ya que la implementación actual no lo admite"</string>
-    <!-- no translation found for fail_reason_no_vcard_file (6376516175882881595) -->
-    <skip />
+    <string name="fail_reason_no_vcard_file" msgid="6376516175882881595">"No se ha encontrado un archivo de vCard en la Tarjeta SD."</string>
     <string name="fail_reason_no_vcard_entry" msgid="4733290752474073143">"No se ha encontrado ninguna entrada válida de vCard para tu selección"</string>
     <string name="fail_reason_failed_to_read_files" msgid="3659521123567134029">"No se pudieron importar uno o más archivos (%s)."</string>
     <string name="fail_reason_unknown" msgid="999034019513096768">"Error desconocido"</string>
@@ -294,12 +306,9 @@
     <string name="call_disambig_title" msgid="1911302597959335178">"Llamar con"</string>
     <string name="sms_disambig_title" msgid="4675399294513152364">"Texto con"</string>
     <string name="make_primary" msgid="5829291915305113983">"Recuerda esta opción"</string>
-    <!-- no translation found for quickcontact_missing_app (4600366393134289038) -->
-    <skip />
-    <!-- no translation found for quickcontact_remember_choice (5964536411579749424) -->
-    <skip />
-    <!-- no translation found for quickcontact_missing_name (5590266114306996632) -->
-    <skip />
+    <string name="quickcontact_missing_app" msgid="4600366393134289038">"No se encontró una aplicación para manejar esta acción."</string>
+    <string name="quickcontact_remember_choice" msgid="5964536411579749424">"Recuerda esta opción."</string>
+    <string name="quickcontact_missing_name" msgid="5590266114306996632">"Desconocido"</string>
     <string name="menu_accounts" msgid="8499114602017077970">"Cuentas"</string>
     <string name="menu_import_export" msgid="3765725645491577190">"Importar/Exportar"</string>
     <string name="dialog_import_export" msgid="4771877268244096596">"Importar/Exportar contactos"</string>
@@ -310,25 +319,21 @@
     <string name="nicknameLabelsGroup" msgid="2891682101053358010">"Apodo"</string>
     <string name="organizationLabelsGroup" msgid="2478611760751832035">"Organización"</string>
     <string name="websiteLabelsGroup" msgid="4202998982804009261">"Sitio web"</string>
-    <!-- no translation found for eventLabelsGroup (8069912895912714412) -->
-    <skip />
+    <string name="eventLabelsGroup" msgid="8069912895912714412">"Evento"</string>
     <string name="type_short_home" msgid="7770424864090605384">"H"</string>
     <string name="type_short_mobile" msgid="1655473281466676216">"Lun."</string>
     <string name="type_short_work" msgid="4925330752504537861">"Mié."</string>
     <string name="type_short_pager" msgid="2613818970827594238">"P"</string>
     <string name="type_short_other" msgid="5669407180177236769">"Oct."</string>
     <string name="edit_read_only" msgid="8158629550655830981">"Este contacto es de sólo lectura"</string>
-    <!-- no translation found for edit_secondary_collapse (5371618426594477103) -->
-    <skip />
+    <string name="edit_secondary_collapse" msgid="5371618426594477103">"Más"</string>
     <string name="dialog_primary_name" msgid="5521591005692614833">"Nombre principal"</string>
     <string name="dialog_new_contact_account" msgid="9044704073286262197">"Crear contacto según la cuenta"</string>
     <string name="menu_sync_remove" msgid="3266725887008450161">"Eliminar grupo de sincronización"</string>
     <string name="dialog_sync_add" msgid="8267045393119375803">"Agregar grupo de sincronización"</string>
     <string name="display_more_groups" msgid="2682547080423434170">"Más grupos…"</string>
-    <!-- no translation found for display_ungrouped (4602580795576261158) -->
-    <skip />
-    <!-- no translation found for display_all_contacts (6846131371214707956) -->
-    <skip />
+    <string name="display_ungrouped" msgid="4602580795576261158">"Todos los otros contactos"</string>
+    <string name="display_all_contacts" msgid="6846131371214707956">"Todos los contactos"</string>
     <string name="display_warn_remove_ungrouped" msgid="2314043155909167610">"Al suprimir \"<xliff:g id="GROUP">%s</xliff:g>\" de sincronización también se suprimirá cualquier contacto no agrupado de la sincronización."</string>
     <string name="account_phone" msgid="4025734638492419713">"Sólo telefónicamente (no sincronizado)"</string>
     <string name="label_email_display_name" msgid="5537802602754309600">"Mostrar el nombre"</string>
@@ -410,6 +415,5 @@
     <string name="name_phonetic_family" msgid="462095502140180305">"Nombre familiar fonético"</string>
     <string name="split_label" msgid="8262112659919449087">"Dividir"</string>
     <string name="split_explanation" msgid="1824739956426973592">"Transformar a estos datos en el contacto propio."</string>
-    <!-- no translation found for account_name_format (4421123930035299208) -->
-    <skip />
+    <string name="account_name_format" msgid="4421123930035299208">"De <xliff:g id="SOURCE">%1$s</xliff:g> la cuenta: <xliff:g id="ACCOUNT">%2$s</xliff:g>"</string>
 </resources>
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index 0c929ba..d700195 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -123,6 +123,7 @@
 /**
  * Displays a list of contacts. Usually is embedded into the ContactsActivity.
  */
+@SuppressWarnings("deprecation")
 public class ContactsListActivity extends ListActivity implements
         View.OnCreateContextMenuListener, View.OnClickListener {
 
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index e6dd623..06296cc 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -82,6 +82,7 @@
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.ListView;
+import android.widget.ScrollView;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -168,7 +169,6 @@
         finish();
     }
 
-    private FrameLayout mTabContentLayout;
     private ListView mListView;
     private boolean mShowSmsLinksForAllPhones;
 
@@ -200,13 +200,11 @@
 
         mHandler = new NotifyingAsyncQueryHandler(this, this);
 
-        mListView = new ListView(this);
+        mListView = (ListView) findViewById(R.id.contact_data);
         mListView.setOnCreateContextMenuListener(this);
         mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
         mListView.setOnItemClickListener(this);
-
-        mTabContentLayout = (FrameLayout) findViewById(android.R.id.tabcontent);
-        mTabContentLayout.addView(mListView);
+        mListView.setEmptyView((ScrollView) findViewById(android.R.id.empty));
 
         mResolver = getContentResolver();
 
@@ -273,13 +271,13 @@
                         .setPositiveButton(android.R.string.ok, this)
                         .setCancelable(false)
                         .create();
-	    case DIALOG_CONFIRM_READONLY_HIDE: {
+            case DIALOG_CONFIRM_READONLY_HIDE: {
                 return new AlertDialog.Builder(this)
                         .setTitle(R.string.deleteConfirmation_title)
                         .setIcon(android.R.drawable.ic_dialog_alert)
                         .setMessage(R.string.readOnlyContactWarning)
                         .setPositiveButton(android.R.string.ok, this)
-			.create();
+                        .create();
             }
 
         }
@@ -509,15 +507,15 @@
             }
             case R.id.menu_delete: {
                 // Get confirmation
-		if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
+                if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
                     showDialog(DIALOG_CONFIRM_READONLY_DELETE);
-		} else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
+                } else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
                     showDialog(DIALOG_CONFIRM_READONLY_HIDE);
-		} else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
-		    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
-		} else {
-		    showDialog(DIALOG_CONFIRM_DELETE);
-		}
+                } else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
+                    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
+                } else {
+                    showDialog(DIALOG_CONFIRM_DELETE);
+                }
                 return true;
             }
             case R.id.menu_join: {
@@ -714,15 +712,15 @@
             }
 
             case KeyEvent.KEYCODE_DEL: {
-		if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
+                if (mReadOnlySourcesCnt > 0 & mWritableSourcesCnt > 0) {
                     showDialog(DIALOG_CONFIRM_READONLY_DELETE);
-		} else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
+                } else if (mReadOnlySourcesCnt > 0 && mWritableSourcesCnt == 0) {
                     showDialog(DIALOG_CONFIRM_READONLY_HIDE);
-		} else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
-		    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
-		} else {
-		    showDialog(DIALOG_CONFIRM_DELETE);
-		}
+                } else if (mReadOnlySourcesCnt == 0 && mWritableSourcesCnt > 1) {
+                    showDialog(DIALOG_CONFIRM_MULTIPLE_DELETE);
+                } else {
+                    showDialog(DIALOG_CONFIRM_DELETE);
+                }
                 return true;
             }
         }
@@ -792,8 +790,8 @@
                     mReadOnlySourcesCnt += 1;
                 } else {
                     mWritableSourcesCnt += 1;
-		    mWritableRawContactIds.add(rawContactId);
-		}
+                    mWritableRawContactIds.add(rawContactId);
+                }
 
 
                 for (NamedContentValues subValue : entity.getSubValues()) {
diff --git a/src/com/android/contacts/model/ExchangeSource.java b/src/com/android/contacts/model/ExchangeSource.java
index 5161499..b46824c 100644
--- a/src/com/android/contacts/model/ExchangeSource.java
+++ b/src/com/android/contacts/model/ExchangeSource.java
@@ -275,11 +275,11 @@
 
     @Override
     public int getHeaderColor(Context context) {
-        return 0xff876b47;
+        return 0xffd5ba96;
     }
 
     @Override
     public int getSideBarColor(Context context) {
-        return 0xffc6ab8c;
+        return 0xffb58e59;
     }
 }
diff --git a/src/com/android/contacts/model/ExternalSource.java b/src/com/android/contacts/model/ExternalSource.java
index d2f14dc..743eb4e 100644
--- a/src/com/android/contacts/model/ExternalSource.java
+++ b/src/com/android/contacts/model/ExternalSource.java
@@ -183,11 +183,11 @@
 
     @Override
     public int getHeaderColor(Context context) {
-        return 0xff7f93bc;
+        return 0xff6d86b4;
     }
 
     @Override
     public int getSideBarColor(Context context) {
-        return 0xffbdc7d8;
+        return 0xff6d86b4;
     }
 }
diff --git a/src/com/android/contacts/model/GoogleSource.java b/src/com/android/contacts/model/GoogleSource.java
index e8f7f46..a4b4cb2 100644
--- a/src/com/android/contacts/model/GoogleSource.java
+++ b/src/com/android/contacts/model/GoogleSource.java
@@ -263,11 +263,11 @@
 
     @Override
     public int getHeaderColor(Context context) {
-        return 0xff000000;
+        return 0xff89c2c2;
     }
 
     @Override
     public int getSideBarColor(Context context) {
-        return 0xffffffff;
+        return 0xff5bb4b4;
     }
 }
diff --git a/src/com/android/contacts/ui/EditContactActivity.java b/src/com/android/contacts/ui/EditContactActivity.java
index fef6a9f..5d095c6 100644
--- a/src/com/android/contacts/ui/EditContactActivity.java
+++ b/src/com/android/contacts/ui/EditContactActivity.java
@@ -79,12 +79,14 @@
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 
 /**
  * Activity for editing or inserting a contact.
  */
 public final class EditContactActivity extends Activity
-        implements View.OnClickListener {
+        implements View.OnClickListener, Comparator<EntityDelta> {
     private static final String TAG = "EditContactActivity";
 
     /** The launch code when picking a photo and the raw data is returned */
@@ -323,8 +325,10 @@
                 Context.LAYOUT_INFLATER_SERVICE);
         final Sources sources = Sources.getInstance(this);
 
-        // Remove any existing editors and rebuild any visible
+        // Sort the editors
+        Collections.sort(mState, this);
 
+        // Remove any existing editors and rebuild any visible
         mContent.removeAllViews();
         int size = mState.size();
         for (int i = 0; i < size; i++) {
@@ -363,18 +367,6 @@
     }
 
     /** {@inheritDoc} */
-    public void onDisplayNameClick(View view) {
-        if (!hasValidState()) return;
-        showAndManageDialog(createNameDialog());
-    }
-
-    /** {@inheritDoc} */
-    public void onPhotoClick(View view) {
-        if (!hasValidState()) return;
-        showAndManageDialog(createPhotoDialog());
-    }
-
-    /** {@inheritDoc} */
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.btn_done:
@@ -791,7 +783,7 @@
     /**
      * Pick a specific photo to be added under the currently selected tab.
      */
-    private boolean doPickPhotoAction(long rawContactId) {
+    boolean doPickPhotoAction(long rawContactId) {
         if (!hasValidState()) return false;
 
         try {
@@ -1028,11 +1020,6 @@
         return builder.create();
     }
 
-    private Dialog createPhotoDialog() {
-        // TODO: build dialog for picking primary photo
-        return null;
-    }
-
     /**
      * Create dialog for selecting primary display name.
      */
@@ -1085,4 +1072,63 @@
         return builder.create();
     }
 
+    /**
+     * Compare EntityDeltas for sorting the stack of editors.
+     */
+    public int compare(EntityDelta one, EntityDelta two) {
+        // Check direct equality
+        if (one.equals(two)) {
+            return 0;
+        }
+
+        final Sources sources = Sources.getInstance(this);
+        String accountType = one.getValues().getAsString(RawContacts.ACCOUNT_TYPE);
+        final ContactsSource oneSource = sources.getInflatedSource(accountType,
+                ContactsSource.LEVEL_SUMMARY);
+        accountType = two.getValues().getAsString(RawContacts.ACCOUNT_TYPE);
+        final ContactsSource twoSource = sources.getInflatedSource(accountType,
+                ContactsSource.LEVEL_SUMMARY);
+
+        // Check read-only
+        if (oneSource.readOnly && !twoSource.readOnly) {
+            return 1;
+        } else if (twoSource.readOnly && !oneSource.readOnly) {
+            return -1;
+        }
+
+        // Check account type
+        boolean skipAccountTypeCheck = false;
+        boolean oneIsGoogle = oneSource instanceof GoogleSource;
+        boolean twoIsGoogle = twoSource instanceof GoogleSource;
+        if (oneIsGoogle && !twoIsGoogle) {
+            return -1;
+        } else if (twoIsGoogle && !oneIsGoogle) {
+            return 1;
+        } else {
+            skipAccountTypeCheck = true;
+        }
+
+        int value;
+        if (!skipAccountTypeCheck) {
+            value = oneSource.accountType.compareTo(twoSource.accountType);
+            if (value != 0) {
+                return value;
+            }
+        }
+
+        // Check account name
+        String oneAccount = one.getValues().getAsString(RawContacts.ACCOUNT_NAME);
+        if (oneAccount == null) oneAccount = "null";
+        String twoAccount = two.getValues().getAsString(RawContacts.ACCOUNT_NAME);
+        if (twoAccount == null) twoAccount = "null";
+        value = oneAccount.compareTo(twoAccount);
+        if (value != 0) {
+            return value;
+        }
+
+        // Both are in the same account, fall back to contact ID
+        int oneId = one.getValues().getAsInteger(RawContacts._ID);
+        int twoId = two.getValues().getAsInteger(RawContacts._ID);
+        return oneId -twoId;
+    }
 }
diff --git a/src/com/android/contacts/ui/widget/ContactEditorView.java b/src/com/android/contacts/ui/widget/ContactEditorView.java
index 8e76e7b..bf03052 100644
--- a/src/com/android/contacts/ui/widget/ContactEditorView.java
+++ b/src/com/android/contacts/ui/widget/ContactEditorView.java
@@ -18,7 +18,6 @@
 
 import com.android.contacts.R;
 import com.android.contacts.model.ContactsSource;
-import com.android.contacts.model.Editor;
 import com.android.contacts.model.EntityDelta;
 import com.android.contacts.model.EntityModifier;
 import com.android.contacts.model.ContactsSource.DataKind;
@@ -61,6 +60,7 @@
     private LayoutInflater mInflater;
 
     private TextView mReadOnly;
+    private TextView mReadOnlyName;
 
     private PhotoEditorView mPhoto;
     private GenericEditorView mName;
@@ -75,7 +75,7 @@
     private Drawable mSecondaryOpen;
     private Drawable mSecondaryClosed;
 
-    private View mHeader;
+    private View mHeaderColorBar;
     private View mSideBar;
     private ImageView mHeaderIcon;
     private TextView mHeaderAccountType;
@@ -109,10 +109,12 @@
         mName.setMinimumHeight(photoSize);
         mName.setDeletable(false);
 
+        mReadOnlyName = (TextView) findViewById(R.id.read_only_name);
+
         mGeneral = (ViewGroup)findViewById(R.id.sect_general);
         mSecondary = (ViewGroup)findViewById(R.id.sect_secondary);
 
-        mHeader = findViewById(R.id.header);
+        mHeaderColorBar = findViewById(R.id.header_color_bar);
         mSideBar = findViewById(R.id.color_bar);
         mHeaderIcon = (ImageView) findViewById(R.id.header_icon);
         mHeaderAccountType = (TextView) findViewById(R.id.header_account_type);
@@ -188,16 +190,18 @@
         EntityModifier.ensureKindExists(state, source, StructuredName.CONTENT_ITEM_TYPE);
 
         // Fill in the header info
-        mHeader.setBackgroundColor(source.getHeaderColor(mContext));
+        mHeaderColorBar.setBackgroundColor(source.getHeaderColor(mContext));
         mSideBar.setBackgroundColor(source.getSideBarColor(mContext));
         ValuesDelta values = state.getValues();
         String accountName = values.getAsString(RawContacts.ACCOUNT_NAME);
-        if (TextUtils.isEmpty(accountName)) {
-            // TODO get from resource
-            accountName = "Local contact";
+        CharSequence accountType = source.getDisplayLabel(mContext);
+        if (TextUtils.isEmpty(accountType)) {
+            accountType = mContext.getString(R.string.account_phone);
+        } else {
+            mHeaderAccountName.setText(
+                    mContext.getString(R.string.from_account_format, accountName));
         }
-        mHeaderAccountName.setText(accountName);
-        mHeaderAccountType.setText(source.getDisplayLabel(mContext));
+        mHeaderAccountType.setText(mContext.getString(R.string.account_type_format, accountType));
         mHeaderIcon.setImageDrawable(source.getDisplayIcon(mContext));
 
         mRawContactId = values.getAsLong(RawContacts._ID);
@@ -210,12 +214,22 @@
         mName.setEnabled(!source.readOnly);
 
         boolean readOnly = source.readOnly;
+        // Show and hide the appropriate views
         if (readOnly) {
             mGeneral.setVisibility(View.GONE);
             mSecondary.setVisibility(View.GONE);
             mSecondaryHeader.setVisibility(View.GONE);
+            mName.setVisibility(View.GONE);
+            mReadOnly.setVisibility(View.VISIBLE);
+            mReadOnly.setText(mContext.getString(R.string.contact_read_only, accountType));
+            mReadOnlyName.setVisibility(View.VISIBLE);
         } else {
+            mGeneral.setVisibility(View.VISIBLE);
+            mSecondary.setVisibility(View.VISIBLE);
+            mSecondaryHeader.setVisibility(View.VISIBLE);
+            mName.setVisibility(View.VISIBLE);
             mReadOnly.setVisibility(View.GONE);
+            mReadOnlyName.setVisibility(View.GONE);
         }
 
         // Create editor sections for each possible data kind
@@ -227,7 +241,12 @@
             if (StructuredName.CONTENT_ITEM_TYPE.equals(mimeType)) {
                 // Handle special case editor for structured name
                 final ValuesDelta primary = state.getPrimaryEntry(mimeType);
-                mName.setValues(kind, primary, state, source.readOnly);
+                if (!readOnly) {
+                    mName.setValues(kind, primary, state, source.readOnly);
+                } else {
+                    String displayName = primary.getAsString(StructuredName.DISPLAY_NAME);
+                    mReadOnlyName.setText(displayName);
+                }
             } else if (Photo.CONTENT_ITEM_TYPE.equals(mimeType)) {
                 // Handle special case editor for photos
                 final ValuesDelta primary = state.getPrimaryEntry(mimeType);
diff --git a/src/com/android/contacts/ui/widget/GenericEditorView.java b/src/com/android/contacts/ui/widget/GenericEditorView.java
index 6c782f8..26d4aab 100644
--- a/src/com/android/contacts/ui/widget/GenericEditorView.java
+++ b/src/com/android/contacts/ui/widget/GenericEditorView.java
@@ -113,9 +113,10 @@
         mDelete.setVisibility(deletable ? View.VISIBLE : View.INVISIBLE);
     }
 
+    @Override
     public void setEnabled(boolean enabled) {
         mLabel.setEnabled(enabled);
-	final int count = mFields.getChildCount();
+        final int count = mFields.getChildCount();
         for (int pos = 0; pos < count; pos++) {
             final View v = mFields.getChildAt(pos);
             v.setEnabled(enabled);
@@ -168,9 +169,9 @@
         mKind = kind;
         mEntry = entry;
         mState = state;
-	mReadOnly = readOnly;
+        mReadOnly = readOnly;
 
-	final boolean enabled = !readOnly;
+        final boolean enabled = !readOnly;
 
         if (!entry.isVisible()) {
             // Hide ourselves entirely if deleted
@@ -183,7 +184,7 @@
         // Display label selector if multiple types available
         final boolean hasTypes = EntityModifier.hasEditTypes(kind);
         mLabel.setVisibility(hasTypes ? View.VISIBLE : View.GONE);
-	mLabel.setEnabled(enabled);
+        mLabel.setEnabled(enabled);
         if (hasTypes) {
             mType = EntityModifier.getCurrentType(entry, kind);
             rebuildLabel();
@@ -224,7 +225,7 @@
             final boolean couldHide = (TextUtils.isEmpty(value) && field.optional);
             final boolean willHide = (mHideOptional && couldHide);
             fieldView.setVisibility(willHide ? View.GONE : View.VISIBLE);
-	    fieldView.setEnabled(enabled);
+            fieldView.setEnabled(enabled);
             hidePossible = hidePossible || couldHide;
 
             mFields.addView(fieldView);
@@ -232,7 +233,7 @@
 
         // When hiding fields, place expandable
         mMore.setVisibility(hidePossible ? View.VISIBLE : View.GONE);
-	mMore.setEnabled(enabled);
+        mMore.setEnabled(enabled);
     }
 
     /**
@@ -304,16 +305,17 @@
             public void onClick(DialogInterface dialog, int which) {
                 dialog.dismiss();
 
-                if (mType.customColumn != null) {
+                final EditType selected = validTypes.get(which);
+                if (selected.customColumn != null) {
                     // Show custom label dialog if requested by type.
                     //
                     // Only when the custum value input in the next step is correct one.
                     // this method also set the type value to what the user requested here.
-                    mPendingType = validTypes.get(which);
+                    mPendingType = selected;
                     createCustomDialog().show();
                 } else {
                     // User picked type, and we're sure it's ok to actually write the entry.
-                    mType = validTypes.get(which);
+                    mType = selected;
                     mEntry.put(mKind.typeColumn, mType.rawValue);
                     rebuildLabel();
                 }
