diff --git a/res/layout-xlarge/raw_contact_editor_header.xml b/res/layout-xlarge/raw_contact_editor_header.xml
new file mode 100644
index 0000000..b53ae9c
--- /dev/null
+++ b/res/layout-xlarge/raw_contact_editor_header.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 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.
+-->
+
+
+<!-- Account info header -->
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_height="64dip"
+    android:layout_width="match_parent"
+    android:background="@android:drawable/list_selector_background">
+
+    <ImageView
+        android:id="@+id/header_color_bar"
+        android:layout_width="match_parent"
+        android:layout_height="4dip"
+        android:layout_marginBottom="5dip"
+        android:background="@color/edit_divider" />
+
+    <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_alignParentRight="true"
+        android:layout_below="@id/header_color_bar" />
+
+    <TextView
+        android:id="@+id/header_account_type"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toLeftOf="@+id/header_icon"
+        android:layout_alignTop="@id/header_icon"
+        android:layout_marginTop="-4dip"
+
+        android:textSize="24sp"
+        android:textColor="?android:attr/textColorPrimary"
+        android:singleLine="true" />
+
+    <TextView
+        android:id="@+id/header_account_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_toLeftOf="@+id/header_icon"
+        android:layout_alignBottom="@+id/header_icon"
+        android:layout_marginBottom="2dip"
+
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textColor="?android:attr/textColorPrimary"
+        android:singleLine="true" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1px"
+        android:layout_alignParentBottom="true"
+
+        android:background="?android:attr/listDivider" />
+</RelativeLayout>
diff --git a/res/layout-xlarge/raw_contact_editor_photo.xml b/res/layout-xlarge/raw_contact_editor_photo.xml
new file mode 100644
index 0000000..b1b86fb
--- /dev/null
+++ b/res/layout-xlarge/raw_contact_editor_photo.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 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.
+-->
+
+<com.android.contacts.widget.InterpolatingLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        ex:layout_wideParentWidth="960dip"
+        ex:layout_wideLeftMargin="96dip"
+        ex:layout_narrowParentWidth="800dip"
+        ex:layout_narrowLeftMargin="15dip">
+
+        <include
+            android:id="@+id/edit_photo"
+            layout="@layout/item_photo_editor" />
+
+    </FrameLayout>
+</com.android.contacts.widget.InterpolatingLayout>
diff --git a/res/layout-xlarge/raw_contact_editor_view.xml b/res/layout-xlarge/raw_contact_editor_view.xml
index a0b7c00..a65e602 100644
--- a/res/layout-xlarge/raw_contact_editor_view.xml
+++ b/res/layout-xlarge/raw_contact_editor_view.xml
@@ -22,62 +22,9 @@
     android:orientation="vertical"
 >
 
-    <!-- Account info header -->
-    <RelativeLayout android:id="@+id/header"
-        android:layout_height="64dip"
-        android:layout_width="match_parent"
-        android:background="@android:drawable/list_selector_background"
-    >
-
-        <ImageView android:id="@+id/header_color_bar"
-            android:layout_width="match_parent"
-            android:layout_height="4dip"
-            android:layout_marginBottom="5dip"
-            android:background="@color/edit_divider"
-        />
-
-        <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_alignParentRight="true"
-            android:layout_below="@id/header_color_bar"
-        />
-
-        <TextView android:id="@+id/header_account_type"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_toLeftOf="@+id/header_icon"
-            android:layout_alignTop="@id/header_icon"
-            android:layout_marginTop="-4dip"
-
-            android:textSize="24sp"
-            android:textColor="?android:attr/textColorPrimary"
-            android:singleLine="true"
-        />
-
-        <TextView android:id="@+id/header_account_name"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_toLeftOf="@+id/header_icon"
-            android:layout_alignBottom="@+id/header_icon"
-            android:layout_marginBottom="2dip"
-
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:textColor="?android:attr/textColorPrimary"
-            android:singleLine="true"
-        />
-
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="1px"
-            android:layout_alignParentBottom="true"
-
-            android:background="?android:attr/listDivider"
-        />
-    </RelativeLayout>
+    <include
+        layout="@layout/raw_contact_editor_header"
+        android:id="@+id/header" />
 
     <LinearLayout
         android:id="@+id/body"
@@ -87,25 +34,9 @@
         android:paddingTop="10dip"
         >
 
-        <com.android.contacts.widget.InterpolatingLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content">
-            <FrameLayout
-                android:id="@+id/stub_photo"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                ex:layout_wideParentWidth="960dip"
-                ex:layout_wideLeftMargin="96dip"
-                ex:layout_narrowParentWidth="800dip"
-                ex:layout_narrowLeftMargin="15dip"
-                >
-
-                <include
-                    android:id="@+id/edit_photo"
-                    layout="@layout/item_photo_editor" />
-
-            </FrameLayout>
-        </com.android.contacts.widget.InterpolatingLayout>
+        <include
+            layout="@layout/raw_contact_editor_photo"
+            android:id="@+id/stub_photo"/>
 
         <com.android.contacts.widget.InterpolatingLayout
             android:layout_width="match_parent"
@@ -127,7 +58,6 @@
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:paddingRight="?android:attr/scrollbarSize"
-                    android:layout_below="@id/stub_photo"
                     android:layout_marginTop="6dip"
                     android:layout_marginBottom="4dip" />
 
diff --git a/res/layout-xlarge/read_only_raw_contact_editor_view.xml b/res/layout-xlarge/read_only_raw_contact_editor_view.xml
new file mode 100644
index 0000000..f91789d
--- /dev/null
+++ b/res/layout-xlarge/read_only_raw_contact_editor_view.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<com.android.contacts.views.editor.ReadOnlyRawContactEditorView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:ex="http://schemas.android.com/apk/res/com.android.contacts"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <include
+        layout="@layout/raw_contact_editor_header"
+        android:id="@+id/header" />
+
+    <LinearLayout
+        android:id="@+id/body"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:paddingTop="10dip">
+
+        <include
+            layout="@layout/raw_contact_editor_photo"
+            android:id="@+id/stub_photo" />
+
+        <com.android.contacts.widget.InterpolatingLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                ex:layout_wideParentWidth="960dip"
+                ex:layout_wideLeftMargin="96dip"
+                ex:layout_wideRightMargin="96dip"
+                ex:layout_narrowParentWidth="800dip"
+                ex:layout_narrowLeftMargin="15dip"
+                ex:layout_narrowRightMargin="15dip">
+
+                <TextView
+                    android:id="@+id/read_only_name"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="12dip"
+                    android:layout_marginBottom="6dip"
+                    android:layout_marginLeft="6dip"
+                    android:textAppearance="?android:attr/textAppearanceMedium" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1px"
+                    android:background="?android:attr/listDivider" />
+
+                <TextView
+                    android:id="@+id/read_only_warning"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="13dip"
+                    android:layout_marginBottom="13dip"
+                    android:layout_marginLeft="13dip"
+                    android:textAppearance="?android:attr/textAppearanceSmall"
+                    android:textColor="?android:attr/textColorPrimary"
+                    android:drawableLeft="@android:drawable/ic_dialog_alert"
+                    android:drawablePadding="10dip"
+                    android:gravity="center_vertical" />
+
+                <View
+                    android:layout_width="match_parent"
+                    android:layout_height="1px"
+                    android:background="?android:attr/listDivider" />
+
+                <LinearLayout
+                    android:id="@+id/sect_general"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical" />
+            </LinearLayout>
+        </com.android.contacts.widget.InterpolatingLayout>
+    </LinearLayout>
+</com.android.contacts.views.editor.ReadOnlyRawContactEditorView>
diff --git a/src/com/android/contacts/views/editor/BaseRawContactEditorView.java b/src/com/android/contacts/views/editor/BaseRawContactEditorView.java
index 2cc3a81..52c9a29 100644
--- a/src/com/android/contacts/views/editor/BaseRawContactEditorView.java
+++ b/src/com/android/contacts/views/editor/BaseRawContactEditorView.java
@@ -16,6 +16,7 @@
 
 package com.android.contacts.views.editor;
 
+import com.android.contacts.R;
 import com.android.contacts.model.AccountType;
 import com.android.contacts.model.AccountType.EditType;
 import com.android.contacts.model.EntityDelta;
@@ -30,14 +31,13 @@
 import android.provider.ContactsContract.Data;
 import android.provider.ContactsContract.RawContacts;
 import android.util.AttributeSet;
-import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
 import android.widget.LinearLayout;
 
 /**
  * Base view that provides common code for the editor interaction for a specific
- * RawContact represented through an {@link EntityDelta}. Callers can
- * reuse this view and quickly rebuild its contents through
- * {@link #setState(EntityDelta, AccountType)}.
+ * RawContact represented through an {@link EntityDelta}.
  * <p>
  * Internal updates are performed against {@link ValuesDelta} so that the
  * source {@link Entity} can be swapped out. Any state-based changes, such as
@@ -45,10 +45,14 @@
  * {@link EntityModifier} to ensure that {@link AccountType} are enforced.
  */
 public abstract class BaseRawContactEditorView extends LinearLayout {
-    protected LayoutInflater mInflater;
 
-    protected PhotoEditorView mPhoto;
-    protected boolean mHasPhotoEditor = false;
+    private PhotoEditorView mPhoto;
+    private boolean mHasPhotoEditor = false;
+
+    private View mHeader;
+    private View mBody;
+
+    private boolean mExpanded = true;
 
     public BaseRawContactEditorView(Context context) {
         super(context);
@@ -58,6 +62,22 @@
         super(context, attrs);
     }
 
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+
+        mHeader = findViewById(R.id.header);
+        mBody = findViewById(R.id.body);
+        mHeader.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                setExpanded(!mExpanded);
+            }
+        });
+
+        mPhoto = (PhotoEditorView)findViewById(R.id.edit_photo);
+    }
+
     public void setGroupMetaData(Cursor groupMetaData) {
     }
 
@@ -69,6 +89,11 @@
         mPhoto.setPhotoBitmap(bitmap);
     }
 
+    protected void setHasPhotoEditor(boolean hasPhotoEditor) {
+        mHasPhotoEditor = hasPhotoEditor;
+        mPhoto.setVisibility(hasPhotoEditor ? View.VISIBLE : View.GONE);
+    }
+
     /**
      * Return true if the current {@link RawContacts} supports {@link Photo},
      * which means that {@link PhotoEditorView} is enabled.
@@ -99,4 +124,18 @@
      * apply to that state.
      */
     public abstract void setState(EntityDelta state, AccountType source, ViewIdGenerator vig);
+
+    /* package */ void setExpanded(boolean value) {
+        // only allow collapsing if we are one of several children
+        final boolean newValue;
+        if (getParent() instanceof ViewGroup && ((ViewGroup) getParent()).getChildCount() == 1) {
+            newValue = true;
+        } else {
+            newValue = value;
+        }
+
+        if (newValue == mExpanded) return;
+        mExpanded = newValue;
+        mBody.setVisibility(newValue ? View.VISIBLE : View.GONE);
+    }
 }
diff --git a/src/com/android/contacts/views/editor/RawContactEditorView.java b/src/com/android/contacts/views/editor/RawContactEditorView.java
index f3ac4fd..ed9b0d4 100644
--- a/src/com/android/contacts/views/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/views/editor/RawContactEditorView.java
@@ -60,20 +60,18 @@
  * {@link EntityModifier} to ensure that {@link AccountType} are enforced.
  */
 public class RawContactEditorView extends BaseRawContactEditorView {
-    private View mPhotoStub;
+    private LayoutInflater mInflater;
+
     private TextFieldsEditorView mName;
     private GroupMembershipView mGroupMembershipView;
 
     private ViewGroup mFields;
 
-    private View mHeader;
-    private View mBody;
     private ImageView mHeaderIcon;
     private TextView mHeaderAccountType;
     private TextView mHeaderAccountName;
 
     private Button mAddFieldButton;
-    private boolean mExpanded = true;
 
     private long mRawContactId = -1;
     private boolean mAutoAddToDefaultGroup = true;
@@ -89,16 +87,12 @@
         super(context, attrs);
     }
 
-    /** {@inheritDoc} */
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
 
         mInflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
-        mPhoto = (PhotoEditorView)findViewById(R.id.edit_photo);
-        mPhotoStub = findViewById(R.id.stub_photo);
-
         final int photoSize = getResources().getDimensionPixelSize(R.dimen.edit_photo_size);
 
         mName = (TextFieldsEditorView)findViewById(R.id.edit_name);
@@ -107,14 +101,6 @@
 
         mFields = (ViewGroup)findViewById(R.id.sect_fields);
 
-        mHeader = findViewById(R.id.header);
-        mBody = findViewById(R.id.body);
-        mHeader.setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                setExpanded(!mExpanded);
-            }
-        });
         mHeaderIcon = (ImageView) findViewById(R.id.header_icon);
         mHeaderAccountType = (TextView) findViewById(R.id.header_account_type);
         mHeaderAccountName = (TextView) findViewById(R.id.header_account_name);
@@ -166,9 +152,8 @@
 
         // Show photo editor when supported
         EntityModifier.ensureKindExists(state, source, Photo.CONTENT_ITEM_TYPE);
-        mHasPhotoEditor = (source.getKindForMimetype(Photo.CONTENT_ITEM_TYPE) != null);
-        mPhoto.setVisibility(mHasPhotoEditor ? View.VISIBLE : View.GONE);
-        mPhoto.setEnabled(true);
+        setHasPhotoEditor((source.getKindForMimetype(Photo.CONTENT_ITEM_TYPE) != null));
+        getPhotoEditor().setEnabled(true);
         mName.setEnabled(true);
 
         // Show and hide the appropriate views
@@ -195,8 +180,7 @@
             } else if (Photo.CONTENT_ITEM_TYPE.equals(mimeType)) {
                 // Handle special case editor for photos
                 final ValuesDelta primary = state.getPrimaryEntry(mimeType);
-                mPhoto.setValues(kind, primary, state, false, vig);
-                mPhotoStub.setVisibility(View.VISIBLE);
+                getPhotoEditor().setValues(kind, primary, state, false, vig);
             } else if (GroupMembership.CONTENT_ITEM_TYPE.equals(mimeType)) {
                 if (mGroupMembershipView != null) {
                     mGroupMembershipView.setState(state);
@@ -295,20 +279,6 @@
         return mRawContactId;
     }
 
-    /* package */ void setExpanded(boolean value) {
-        // only allow collapsing if we are one of several children
-        final boolean newValue;
-        if (getParent() instanceof ViewGroup && ((ViewGroup) getParent()).getChildCount() == 1) {
-            newValue = true;
-        } else {
-            newValue = value;
-        }
-
-        if (newValue == mExpanded) return;
-        mExpanded = newValue;
-        mBody.setVisibility(newValue ? View.VISIBLE : View.GONE);
-    }
-
     private void showAddInformationPopupWindow() {
         final ArrayList<KindSectionView> fields =
                 new ArrayList<KindSectionView>(mFields.getChildCount());
diff --git a/src/com/android/contacts/views/editor/ReadOnlyRawContactEditorView.java b/src/com/android/contacts/views/editor/ReadOnlyRawContactEditorView.java
index 021f3d6..3b678ca 100644
--- a/src/com/android/contacts/views/editor/ReadOnlyRawContactEditorView.java
+++ b/src/com/android/contacts/views/editor/ReadOnlyRawContactEditorView.java
@@ -44,15 +44,14 @@
 /**
  * Custom view that displays read-only contacts in the edit screen.
  */
-class ReadOnlyRawContactEditorView extends BaseRawContactEditorView {
+public class ReadOnlyRawContactEditorView extends BaseRawContactEditorView {
+    private LayoutInflater mInflater;
 
     private View mPhotoStub;
     private TextView mName;
     private TextView mReadOnlyWarning;
     private ViewGroup mGeneral;
 
-    private View mHeaderColorBar;
-    private View mSideBar;
     private ImageView mHeaderIcon;
     private TextView mHeaderAccountType;
     private TextView mHeaderAccountName;
@@ -75,15 +74,12 @@
         mInflater = (LayoutInflater)getContext().getSystemService(
                 Context.LAYOUT_INFLATER_SERVICE);
 
-        mPhoto = (PhotoEditorView)findViewById(R.id.edit_photo);
         mPhotoStub = findViewById(R.id.stub_photo);
 
         mName = (TextView) findViewById(R.id.read_only_name);
         mReadOnlyWarning = (TextView) findViewById(R.id.read_only_warning);
         mGeneral = (ViewGroup)findViewById(R.id.sect_general);
 
-        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);
         mHeaderAccountName = (TextView) findViewById(R.id.header_account_name);
@@ -129,10 +125,11 @@
         DataKind kind = source.getKindForMimetype(Photo.CONTENT_ITEM_TYPE);
         if (kind != null) {
             EntityModifier.ensureKindExists(state, source, Photo.CONTENT_ITEM_TYPE);
-            mHasPhotoEditor = (source.getKindForMimetype(Photo.CONTENT_ITEM_TYPE) != null);
+            boolean hasPhotoEditor = source.getKindForMimetype(Photo.CONTENT_ITEM_TYPE) != null;
+            setHasPhotoEditor(hasPhotoEditor);
             primary = state.getPrimaryEntry(Photo.CONTENT_ITEM_TYPE);
-            mPhoto.setValues(kind, primary, state, source.readOnly, vig);
-            if (!mHasPhotoEditor || !mPhoto.hasSetPhoto()) {
+            getPhotoEditor().setValues(kind, primary, state, source.readOnly, vig);
+            if (!hasPhotoEditor || !getPhotoEditor().hasSetPhoto()) {
                 mPhotoStub.setVisibility(View.GONE);
             } else {
                 mPhotoStub.setVisibility(View.VISIBLE);
