diff --git a/res/drawable-xlarge-nodpi/divider_vertical_dark.9.png b/res/drawable-sw580dp-nodpi/divider_vertical_dark.9.png
similarity index 100%
rename from res/drawable-xlarge-nodpi/divider_vertical_dark.9.png
rename to res/drawable-sw580dp-nodpi/divider_vertical_dark.9.png
Binary files differ
diff --git a/res/layout-sw580dp-w1000dp/contact_detail_empty.xml b/res/layout-sw580dp-w1000dp/contact_detail_empty.xml
new file mode 100644
index 0000000..e12dd39
--- /dev/null
+++ b/res/layout-sw580dp-w1000dp/contact_detail_empty.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- Placeholder for empty details for a contact -->
+
+<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">
+    <TextView android:id="@+id/emptyText"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/no_contact_details"
+        android:textSize="20sp"
+        android:textColor="?android:attr/textColorSecondary"
+        ex:layout_wideParentWidth="800dip"
+        ex:layout_wideMarginLeft="80dip"
+        ex:layout_narrowParentWidth="500dip"
+        ex:layout_narrowMarginLeft="44dip"
+        android:paddingTop="10dip"
+        android:lineSpacingMultiplier="0.92"/>
+</com.android.contacts.widget.InterpolatingLayout>
\ No newline at end of file
diff --git a/res/layout-xlarge-land/contact_detail_header_view.xml b/res/layout-sw580dp-w1000dp/contact_detail_header_view.xml
similarity index 87%
rename from res/layout-xlarge-land/contact_detail_header_view.xml
rename to res/layout-sw580dp-w1000dp/contact_detail_header_view.xml
index fb57202..82432a0 100644
--- a/res/layout-xlarge-land/contact_detail_header_view.xml
+++ b/res/layout-sw580dp-w1000dp/contact_detail_header_view.xml
@@ -25,7 +25,7 @@
     <TextView
         android:id="@+id/attribution"
         android:layout_width="match_parent"
-        android:layout_height="56dip"
+        android:layout_height="@dimen/detail_header_attribution_height"
         android:paddingRight="16dip"
         android:textAppearance="?android:attr/textAppearanceMedium"
         android:textColor="?android:attr/textColorTertiary"
@@ -60,7 +60,7 @@
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:paddingTop="16dip"
-                android:layout_marginLeft="16dip">
+                android:layout_marginLeft="@dimen/detail_header_view_margin">
 
                 <!-- Star -->
                 <CheckBox
@@ -77,33 +77,24 @@
                 <LinearLayout
                     android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
-                    android:paddingLeft="16dip"
+                    android:paddingLeft="@dimen/detail_header_view_margin"
                     android:orientation="vertical">
 
                     <TextView
                         android:id="@+id/name"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:singleLine="true"
-                        android:ellipsize="end"
+                        style="@style/ContactDetailHeaderTextView"
                         android:textSize="@dimen/contact_name_text_size" />
 
                     <TextView
                         android:id="@+id/phonetic_name"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
+                        style="@style/ContactDetailHeaderTextView"
                         android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:singleLine="true"
-                        android:ellipsize="end"
                         android:layout_marginTop="-2dip"
                         android:visibility="gone" />
 
                     <TextView
                         android:id="@+id/organization"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:singleLine="true"
-                        android:ellipsize="end"
+                        style="@style/ContactDetailHeaderTextView"
                         android:layout_marginTop="-2dip"
                         android:visibility="gone"
                         android:textAppearance="?android:attr/textAppearanceMedium"
diff --git a/res/layout-xlarge-land/contact_detail_list_item.xml b/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
similarity index 100%
rename from res/layout-xlarge-land/contact_detail_list_item.xml
rename to res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
diff --git a/res/layout-xlarge/account_selector_list_item.xml b/res/layout-sw580dp/account_selector_list_item.xml
similarity index 100%
rename from res/layout-xlarge/account_selector_list_item.xml
rename to res/layout-sw580dp/account_selector_list_item.xml
diff --git a/res/layout-xlarge/aggregation_suggestions.xml b/res/layout-sw580dp/aggregation_suggestions.xml
similarity index 100%
rename from res/layout-xlarge/aggregation_suggestions.xml
rename to res/layout-sw580dp/aggregation_suggestions.xml
diff --git a/res/layout-xlarge/aggregation_suggestions_item.xml b/res/layout-sw580dp/aggregation_suggestions_item.xml
similarity index 100%
rename from res/layout-xlarge/aggregation_suggestions_item.xml
rename to res/layout-sw580dp/aggregation_suggestions_item.xml
diff --git a/res/layout-xlarge/contact_detail_fragment.xml b/res/layout-sw580dp/contact_detail_fragment.xml
similarity index 70%
rename from res/layout-xlarge/contact_detail_fragment.xml
rename to res/layout-sw580dp/contact_detail_fragment.xml
index 4d6a900..3849277 100644
--- a/res/layout-xlarge/contact_detail_fragment.xml
+++ b/res/layout-sw580dp/contact_detail_fragment.xml
@@ -24,25 +24,10 @@
     android:background="@drawable/panel_content">
 
     <!-- Placeholder for empty list -->
-    <com.android.contacts.widget.InterpolatingLayout
+    <include
         android:id="@android:id/empty"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:visibility="gone">
-        <TextView android:id="@+id/emptyText"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/no_contact_details"
-            android:textSize="20sp"
-            android:textColor="?android:attr/textColorSecondary"
-            ex:layout_wideParentWidth="800dip"
-            ex:layout_wideMarginLeft="64dip"
-            ex:layout_narrowParentWidth="500dip"
-            ex:layout_narrowMarginLeft="42dip"
-            android:paddingTop="10dip"
-            android:lineSpacingMultiplier="0.92"
-        />
-    </com.android.contacts.widget.InterpolatingLayout>
+        layout="@layout/contact_detail_empty"
+        android:visibility="gone" />
 
     <!-- Real list -->
     <com.android.contacts.widget.InterpolatingLayout
@@ -55,8 +40,8 @@
             ex:layout_wideParentWidth="800dip"
             ex:layout_wideMarginLeft="64dip"
             ex:layout_widePaddingRight="48dip"
-            ex:layout_narrowParentWidth="500dip"
-            ex:layout_narrowMarginLeft="32dip"
+            ex:layout_narrowParentWidth="300dip"
+            ex:layout_narrowMarginLeft="5dip"
             ex:layout_narrowPaddingRight="16dip"
             android:cacheColorHint="#00000000"
             android:divider="@null"
diff --git a/res/layout-large/contact_detail_header_view.xml b/res/layout-sw580dp/contact_detail_header_view.xml
similarity index 87%
rename from res/layout-large/contact_detail_header_view.xml
rename to res/layout-sw580dp/contact_detail_header_view.xml
index 19132dd..95a5617 100644
--- a/res/layout-large/contact_detail_header_view.xml
+++ b/res/layout-sw580dp/contact_detail_header_view.xml
@@ -25,7 +25,7 @@
     <TextView
         android:id="@+id/attribution"
         android:layout_width="match_parent"
-        android:layout_height="56dip"
+        android:layout_height="@dimen/detail_header_attribution_height"
         android:paddingRight="24dip"
         android:textAppearance="?android:attr/textAppearanceMedium"
         android:textColor="?android:attr/textColorTertiary"
@@ -39,7 +39,7 @@
 
         <ImageView
             android:id="@+id/photo"
-            android:layout_marginLeft="16dip"
+            android:layout_marginLeft="@dimen/detail_header_view_margin"
             android:layout_width="96dip"
             android:layout_height="96dip" />
 
@@ -60,7 +60,7 @@
                 android:layout_height="wrap_content"
                 android:orientation="horizontal"
                 android:paddingTop="16dip"
-                android:layout_marginLeft="16dip">
+                android:layout_marginLeft="@dimen/detail_header_view_margin">>
 
                 <!-- Star -->
                 <CheckBox
@@ -77,31 +77,24 @@
                 <LinearLayout
                     android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
-                    android:paddingLeft="16dip"
+                    android:paddingLeft="@dimen/detail_header_view_margin"
                     android:orientation="vertical">
 
                     <TextView
                         android:id="@+id/name"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:singleLine="true"
-                        android:ellipsize="end"
+                        style="@style/ContactDetailHeaderTextView"
                         android:textSize="@dimen/contact_name_text_size" />
 
                     <TextView
                         android:id="@+id/phonetic_name"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
+                        style="@style/ContactDetailHeaderTextView"
                         android:textAppearance="?android:attr/textAppearanceMedium"
-                        android:singleLine="true"
-                        android:ellipsize="end"
                         android:layout_marginTop="-2dip"
                         android:visibility="gone" />
 
                     <TextView
                         android:id="@+id/organization"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
+                        style="@style/ContactDetailHeaderTextView"
                         android:layout_marginTop="-2dip"
                         android:visibility="gone"
                         android:textAppearance="?android:attr/textAppearanceMedium"
diff --git a/res/layout-xlarge/contact_editor_activity.xml b/res/layout-sw580dp/contact_editor_activity.xml
similarity index 100%
rename from res/layout-xlarge/contact_editor_activity.xml
rename to res/layout-sw580dp/contact_editor_activity.xml
diff --git a/res/layout-xlarge/contact_editor_fragment.xml b/res/layout-sw580dp/contact_editor_fragment.xml
similarity index 100%
rename from res/layout-xlarge/contact_editor_fragment.xml
rename to res/layout-sw580dp/contact_editor_fragment.xml
diff --git a/res/layout-xlarge/contact_picker_content.xml b/res/layout-sw580dp/contact_picker_content.xml
similarity index 100%
rename from res/layout-xlarge/contact_picker_content.xml
rename to res/layout-sw580dp/contact_picker_content.xml
diff --git a/res/layout-xlarge/edit_spinner.xml b/res/layout-sw580dp/edit_spinner.xml
similarity index 100%
rename from res/layout-xlarge/edit_spinner.xml
rename to res/layout-sw580dp/edit_spinner.xml
diff --git a/res/layout-xlarge/event_field_editor_view.xml b/res/layout-sw580dp/event_field_editor_view.xml
similarity index 100%
rename from res/layout-xlarge/event_field_editor_view.xml
rename to res/layout-sw580dp/event_field_editor_view.xml
diff --git a/res/layout-xlarge/external_raw_contact_editor_view.xml b/res/layout-sw580dp/external_raw_contact_editor_view.xml
similarity index 92%
rename from res/layout-xlarge/external_raw_contact_editor_view.xml
rename to res/layout-sw580dp/external_raw_contact_editor_view.xml
index 0304c48..b185c8a 100644
--- a/res/layout-xlarge/external_raw_contact_editor_view.xml
+++ b/res/layout-sw580dp/external_raw_contact_editor_view.xml
@@ -43,7 +43,7 @@
                 android:layout_gravity="top|left"
                 ex:layout_wideParentWidth="960dip"
                 ex:layout_wideMarginLeft="96dip"
-                ex:layout_narrowParentWidth="800dip"
+                ex:layout_narrowParentWidth="@dimen/editor_interpolator_narrow_width"
                 ex:layout_narrowMarginLeft="15dip">
 
                 <include
@@ -58,7 +58,7 @@
                 android:layout_gravity="top"
                 ex:layout_wideParentWidth="960dip"
                 ex:layout_wideMarginRight="48dip"
-                ex:layout_narrowParentWidth="800dip"
+                ex:layout_narrowParentWidth="@dimen/editor_interpolator_narrow_width"
                 ex:layout_narrowMarginRight="15dip"
                 android:orientation="vertical">
 
@@ -71,7 +71,7 @@
                     android:id="@+id/read_only_name"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginLeft="64dip"
+                    android:layout_marginLeft="@dimen/editor_name_text_field_left_margin"
                     android:layout_marginRight="48dip"
                     android:layout_marginTop="6dip"
                     android:layout_marginBottom="4dip"
@@ -91,7 +91,7 @@
                 ex:layout_wideParentWidth="960dip"
                 ex:layout_wideMarginLeft="96dip"
                 ex:layout_wideMarginRight="96dip"
-                ex:layout_narrowParentWidth="800dip"
+                ex:layout_narrowParentWidth="@dimen/editor_interpolator_narrow_width"
                 ex:layout_narrowMarginLeft="15dip"
                 ex:layout_narrowMarginRight="15dip">
 
@@ -132,7 +132,7 @@
                 ex:layout_wideParentWidth="960dip"
                 ex:layout_wideMarginLeft="246dip"
                 ex:layout_wideMarginRight="156dip"
-                ex:layout_narrowParentWidth="800dip"
+                ex:layout_narrowParentWidth="@dimen/editor_interpolator_narrow_width"
                 ex:layout_narrowMarginLeft="165dip"
                 ex:layout_narrowMarginRight="121dip"
                 android:layout_width="match_parent"
diff --git a/res/layout-xlarge/group_detail_fragment.xml b/res/layout-sw580dp/group_detail_fragment.xml
similarity index 100%
rename from res/layout-xlarge/group_detail_fragment.xml
rename to res/layout-sw580dp/group_detail_fragment.xml
diff --git a/res/layout-xlarge/item_group_membership.xml b/res/layout-sw580dp/item_group_membership.xml
similarity index 97%
rename from res/layout-xlarge/item_group_membership.xml
rename to res/layout-sw580dp/item_group_membership.xml
index 41d77b7..985b7ae 100644
--- a/res/layout-xlarge/item_group_membership.xml
+++ b/res/layout-sw580dp/item_group_membership.xml
@@ -24,7 +24,7 @@
 
     <TextView
         android:id="@+id/kind_title"
-        android:layout_width="150dip"
+        android:layout_width="@dimen/editor_title_label_width"
         android:layout_height="@dimen/editor_min_line_item_height"
         android:gravity="center_vertical"
         android:textAppearance="?android:attr/textAppearanceSmall"
diff --git a/res/layout-xlarge/item_kind_section.xml b/res/layout-sw580dp/item_kind_section.xml
similarity index 100%
rename from res/layout-xlarge/item_kind_section.xml
rename to res/layout-sw580dp/item_kind_section.xml
diff --git a/res/layout-xlarge/people_activity.xml b/res/layout-sw580dp/people_activity.xml
similarity index 100%
rename from res/layout-xlarge/people_activity.xml
rename to res/layout-sw580dp/people_activity.xml
diff --git a/res/layout-xlarge/phonetic_name_editor_view.xml b/res/layout-sw580dp/phonetic_name_editor_view.xml
similarity index 96%
rename from res/layout-xlarge/phonetic_name_editor_view.xml
rename to res/layout-sw580dp/phonetic_name_editor_view.xml
index c3fa6a3..f27c1fc 100644
--- a/res/layout-xlarge/phonetic_name_editor_view.xml
+++ b/res/layout-sw580dp/phonetic_name_editor_view.xml
@@ -21,7 +21,7 @@
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="vertical"
     android:paddingRight="?android:attr/scrollbarSize"
-    android:layout_marginLeft="52dip"
+    android:layout_marginLeft="@dimen/editor_name_text_field_left_margin"
     android:layout_marginRight="48dip"
     android:layout_marginTop="6dip"
     android:layout_marginBottom="4dip">
diff --git a/res/layout-xlarge/raw_contact_editor_header.xml b/res/layout-sw580dp/raw_contact_editor_header.xml
similarity index 100%
rename from res/layout-xlarge/raw_contact_editor_header.xml
rename to res/layout-sw580dp/raw_contact_editor_header.xml
diff --git a/res/layout-xlarge/raw_contact_editor_view.xml b/res/layout-sw580dp/raw_contact_editor_view.xml
similarity index 87%
rename from res/layout-xlarge/raw_contact_editor_view.xml
rename to res/layout-sw580dp/raw_contact_editor_view.xml
index 0e3d227..9c3f708 100644
--- a/res/layout-xlarge/raw_contact_editor_view.xml
+++ b/res/layout-sw580dp/raw_contact_editor_view.xml
@@ -48,8 +48,8 @@
                 android:layout_gravity="top|left"
                 ex:layout_wideParentWidth="960dip"
                 ex:layout_wideMarginLeft="96dip"
-                ex:layout_narrowParentWidth="800dip"
-                ex:layout_narrowMarginLeft="15dip">
+                ex:layout_narrowParentWidth="@dimen/editor_interpolator_narrow_width"
+                ex:layout_narrowMarginLeft="20dip">
 
                 <include
                     android:id="@+id/edit_photo"
@@ -63,8 +63,10 @@
                 android:layout_gravity="top"
                 ex:layout_wideParentWidth="960dip"
                 ex:layout_wideMarginRight="48dip"
-                ex:layout_narrowParentWidth="800dip"
+                ex:layout_wideMarginLeft="10dip"
+                ex:layout_narrowParentWidth="@dimen/editor_interpolator_narrow_width"
                 ex:layout_narrowMarginRight="15dip"
+                ex:layout_narrowMarginLeft="5dip"
                 android:orientation="vertical">
 
                 <View
@@ -83,7 +85,7 @@
                 <FrameLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginLeft="52dip"
+                    android:layout_marginLeft="@dimen/editor_name_text_field_left_margin"
                     android:layout_marginRight="48dip">
                     <ViewStub
                         android:id="@+id/aggregation_suggestion_stub"
@@ -106,16 +108,16 @@
                 ex:layout_wideParentWidth="960dip"
                 ex:layout_wideMarginLeft="96dip"
                 ex:layout_wideMarginRight="48dip"
-                ex:layout_narrowParentWidth="800dip"
-                ex:layout_narrowMarginLeft="15dip"
-                ex:layout_narrowMarginRight="15dip">
+                ex:layout_narrowParentWidth="@dimen/editor_interpolator_narrow_width"
+                ex:layout_narrowMarginLeft="25dip"
+                ex:layout_narrowMarginRight="10dip">
 
                 <LinearLayout
                     android:id="@+id/sect_fields"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:orientation="vertical"
-                    android:paddingRight="?android:attr/scrollbarSize" />
+                    android:paddingRight="@dimen/editor_name_text_field_right_margin" />
             </LinearLayout>
         </com.android.contacts.widget.InterpolatingLayout>
 
@@ -130,7 +132,7 @@
                 ex:layout_wideParentWidth="960dip"
                 ex:layout_wideMarginLeft="246dip"
                 ex:layout_wideMarginRight="156dip"
-                ex:layout_narrowParentWidth="800dip"
+                ex:layout_narrowParentWidth="@dimen/editor_interpolator_narrow_width"
                 ex:layout_narrowMarginLeft="165dip"
                 ex:layout_narrowMarginRight="121dip"
                 android:layout_width="match_parent"
diff --git a/res/layout-xlarge/search_header.xml b/res/layout-sw580dp/search_header.xml
similarity index 100%
rename from res/layout-xlarge/search_header.xml
rename to res/layout-sw580dp/search_header.xml
diff --git a/res/layout-xlarge/structured_name_editor_view.xml b/res/layout-sw580dp/structured_name_editor_view.xml
similarity index 96%
rename from res/layout-xlarge/structured_name_editor_view.xml
rename to res/layout-sw580dp/structured_name_editor_view.xml
index 37b5536..97e222e 100644
--- a/res/layout-xlarge/structured_name_editor_view.xml
+++ b/res/layout-sw580dp/structured_name_editor_view.xml
@@ -21,7 +21,7 @@
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="vertical"
     android:paddingRight="?android:attr/scrollbarSize"
-    android:layout_marginLeft="52dip"
+    android:layout_marginLeft="@dimen/editor_name_text_field_left_margin"
     android:layout_marginRight="48dip"
     android:layout_marginTop="6dip"
     android:layout_marginBottom="4dip">
diff --git a/res/layout-xlarge/text_fields_editor_view.xml b/res/layout-sw580dp/text_fields_editor_view.xml
similarity index 100%
rename from res/layout-xlarge/text_fields_editor_view.xml
rename to res/layout-sw580dp/text_fields_editor_view.xml
diff --git a/res/layout-xlarge/total_contacts.xml b/res/layout-sw580dp/total_contacts.xml
similarity index 100%
rename from res/layout-xlarge/total_contacts.xml
rename to res/layout-sw580dp/total_contacts.xml
diff --git a/res/layout-w470dp/contact_detail_activity.xml b/res/layout-w470dp/contact_detail_activity.xml
new file mode 100644
index 0000000..bf649a2
--- /dev/null
+++ b/res/layout-w470dp/contact_detail_activity.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/contact_detail_view"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <com.android.contacts.detail.ContactDetailFragmentCarousel
+        android:id="@+id/fragment_carousel"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentLeft="true"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+</FrameLayout>
diff --git a/res/layout-w470dp/contact_detail_fragment.xml b/res/layout-w470dp/contact_detail_fragment.xml
new file mode 100644
index 0000000..64fec60
--- /dev/null
+++ b/res/layout-w470dp/contact_detail_fragment.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/contact_detail"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <LinearLayout
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <ImageView android:id="@+id/photo"
+            android:scaleType="centerCrop"
+            android:layout_width="100dip"
+            android:layout_height="100dip"
+            android:layout_marginLeft="@dimen/detail_contact_photo_margin"
+            android:layout_marginRight="@dimen/detail_contact_photo_margin"
+            android:layout_marginTop="@dimen/detail_contact_photo_margin"
+            android:layout_marginBottom="@dimen/detail_contact_photo_margin"/>
+
+        <ListView android:id="@android:id/list"
+            android:layout_width="0dip"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:divider="@null"/>
+
+   </LinearLayout>
+
+    <ScrollView android:id="@android:id/empty"
+        android:layout_width="match_parent"
+        android:layout_height="0px"
+        android:layout_weight="1"
+        android:visibility="gone">
+        <TextView android:id="@+id/emptyText"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            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"/>
+    </ScrollView>
+
+    <!-- "Copy to my contacts"- button -->
+    <Button
+        android:id="@+id/copyLocal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/menu_copyContact"
+        android:visibility="gone"
+        android:layout_gravity="right"
+        android:layout_marginRight="40dip"
+        android:layout_marginTop="20dip"
+        android:layout_marginBottom="20dip" />
+
+    <View
+        android:id="@+id/alpha_overlay"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:background="@android:color/black"
+        android:alpha=".50"
+        android:visibility="gone"/>
+
+    <View
+        android:id="@+id/touch_intercept_overlay"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:background="@android:color/transparent"
+        android:visibility="gone"/>
+</RelativeLayout>
+
diff --git a/res/layout/contact_detail_empty.xml b/res/layout/contact_detail_empty.xml
new file mode 100644
index 0000000..755c069
--- /dev/null
+++ b/res/layout/contact_detail_empty.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- Placeholder for empty details for a contact -->
+
+<TextView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:text="@string/no_contact_details"
+    android:textSize="20sp"
+    android:textColor="?android:attr/textColorSecondary"
+    android:layout_marginLeft="15dip"
+    android:paddingTop="10dip"
+    android:lineSpacingMultiplier="0.92"/>
\ No newline at end of file
diff --git a/res/layout/contact_detail_fragment_carousel.xml b/res/layout/contact_detail_fragment_carousel.xml
new file mode 100644
index 0000000..165b6a1
--- /dev/null
+++ b/res/layout/contact_detail_fragment_carousel.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:scrollbars="none"
+    android:orientation="horizontal">
+
+    <fragment class="com.android.contacts.detail.ContactDetailAboutFragment"
+        android:id="@+id/about_fragment"
+        android:layout_width="@dimen/detail_fragment_carousel_fragment_width"
+        android:layout_height="match_parent" />
+
+    <fragment class="com.android.contacts.detail.ContactDetailUpdatesFragment"
+        android:id="@+id/updates_fragment"
+        android:layout_width="@dimen/detail_fragment_carousel_fragment_width"
+        android:layout_height="match_parent" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/contact_detail_updates_fragment.xml b/res/layout/contact_detail_updates_fragment.xml
index f60be2a..daa5608 100644
--- a/res/layout/contact_detail_updates_fragment.xml
+++ b/res/layout/contact_detail_updates_fragment.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/contact_detail"
     android:orientation="vertical"
     android:layout_width="match_parent"
@@ -30,5 +30,20 @@
         android:paddingRight="10dip"
         android:paddingTop="@dimen/detail_tab_carousel_height"
         android:layout_marginTop="10dip"/>
-</LinearLayout>
+
+    <View
+        android:id="@+id/alpha_overlay"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@android:color/black"
+        android:alpha=".50"
+        android:visibility="gone"/>
+
+    <View
+        android:id="@+id/touch_intercept_overlay"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@android:color/transparent"
+        android:visibility="gone"/>
+</FrameLayout>
 
diff --git a/res/menu-xlarge/actions.xml b/res/menu-sw580dp-w720dp/actions.xml
similarity index 100%
rename from res/menu-xlarge/actions.xml
rename to res/menu-sw580dp-w720dp/actions.xml
diff --git a/res/menu-xlarge/view_contact.xml b/res/menu-sw580dp-w720dp/view_contact.xml
similarity index 100%
rename from res/menu-xlarge/view_contact.xml
rename to res/menu-sw580dp-w720dp/view_contact.xml
diff --git a/res/menu-xlarge/view_group.xml b/res/menu-sw580dp-w720dp/view_group.xml
similarity index 100%
rename from res/menu-xlarge/view_group.xml
rename to res/menu-sw580dp-w720dp/view_group.xml
diff --git a/res/menu-sw580dp/actions.xml b/res/menu-sw580dp/actions.xml
new file mode 100644
index 0000000..4fe669a
--- /dev/null
+++ b/res/menu-sw580dp/actions.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/menu_search"
+        android:showAsAction="always"
+        android:actionViewClass="android.widget.SearchView" />
+
+    <item
+        android:id="@+id/menu_add_contact"
+        android:icon="@drawable/ic_menu_add_contact_holo_light"
+        android:title="@string/menu_new_contact_action_bar"
+        android:showAsAction="withText" />
+
+    <item
+        android:id="@+id/menu_add_group"
+        android:icon="@drawable/ic_menu_display_all_holo_light"
+        android:title="@string/menu_new_contact_action_bar"
+        android:showAsAction="withText" />
+
+    <item
+        android:id="@+id/menu_contacts_filter"
+        android:icon="@drawable/ic_menu_settings_holo_light"
+        android:title="@string/menu_contacts_filter" />
+
+    <item
+        android:id="@+id/menu_settings"
+        android:icon="@drawable/ic_menu_settings_holo_light"
+        android:title="@string/menu_settings" />
+
+    <item
+        android:id="@+id/menu_accounts"
+        android:icon="@drawable/ic_menu_accounts_holo_light"
+        android:title="@string/menu_accounts" />
+
+    <item
+        android:id="@+id/menu_import_export"
+        android:icon="@drawable/ic_menu_import_export_holo_light"
+        android:title="@string/menu_import_export" />
+
+</menu>
diff --git a/res/menu-sw580dp/view_contact.xml b/res/menu-sw580dp/view_contact.xml
new file mode 100644
index 0000000..542cfe3
--- /dev/null
+++ b/res/menu-sw580dp/view_contact.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/menu_edit"
+        android:icon="@drawable/ic_menu_compose_holo_light"
+        android:title="@string/menu_editContact"
+        android:alphabeticShortcut="e" />
+
+    <item
+        android:id="@+id/menu_share"
+        android:icon="@drawable/ic_menu_share_holo_light"
+        android:title="@string/menu_share"
+        android:alphabeticShortcut="s" />
+
+    <item
+        android:id="@+id/menu_options"
+        android:icon="@drawable/ic_menu_mark"
+        android:title="@string/menu_contactOptions" />
+
+    <item
+        android:id="@+id/menu_delete"
+        android:icon="@drawable/ic_menu_trash_holo_light"
+        android:title="@string/menu_deleteContact" />
+</menu>
diff --git a/res/menu-sw580dp/view_group.xml b/res/menu-sw580dp/view_group.xml
new file mode 100644
index 0000000..3ff6ac6
--- /dev/null
+++ b/res/menu-sw580dp/view_group.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/menu_edit_group"
+        android:icon="@drawable/ic_menu_compose_holo_light"
+        android:title="@string/menu_editGroup"
+        android:alphabeticShortcut="e" />
+
+    <item
+        android:id="@+id/menu_rename_group"
+        android:icon="@drawable/ic_menu_settings_holo_light"
+        android:title="@string/menu_renameGroup" />
+
+    <item
+        android:id="@+id/menu_delete_group"
+        android:icon="@drawable/ic_menu_trash_holo_light"
+        android:title="@string/menu_deleteGroup" />
+</menu>
diff --git a/res/values-xlarge-land/dimens.xml b/res/values-sw580dp-w1000dp/dimens.xml
similarity index 88%
rename from res/values-xlarge-land/dimens.xml
rename to res/values-sw580dp-w1000dp/dimens.xml
index 52c521e..45da0a8 100644
--- a/res/values-xlarge-land/dimens.xml
+++ b/res/values-sw580dp-w1000dp/dimens.xml
@@ -19,4 +19,6 @@
     <dimen name="action_bar_filter_max_width">300dip</dimen>
     <dimen name="action_bar_search_max_width">336dip</dimen>
     <dimen name="action_bar_search_spacing">32dip</dimen>
+    <dimen name="detail_header_view_margin">16dip</dimen>
+    <dimen name="detail_header_attribution_height">56dip</dimen>
 </resources>
diff --git a/res/values-sw580dp-w720dp/dimens.xml b/res/values-sw580dp-w720dp/dimens.xml
new file mode 100644
index 0000000..a8aedb8
--- /dev/null
+++ b/res/values-sw580dp-w720dp/dimens.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+<resources>
+    <dimen name="editor_type_label_width">180dip</dimen>
+    <dimen name="editor_round_button_padding_left">8dip</dimen>
+    <dimen name="editor_round_button_padding_right">8dip</dimen>
+    <dimen name="editor_name_text_field_left_margin">52dip</dimen>
+    <dimen name="editor_title_label_width">150dip</dimen>
+    <dimen name="editor_interpolator_narrow_width">800dip</dimen>
+    <dimen name="editor_name_text_field_right_margin">10dip</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values-sw580dp-w720dp/styles.xml b/res/values-sw580dp-w720dp/styles.xml
new file mode 100644
index 0000000..3b7ed4e
--- /dev/null
+++ b/res/values-sw580dp-w720dp/styles.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <style name="PeopleTheme" parent="@android:Theme.Holo.Light">
+        <item name="list_item_height">66dip</item>
+        <item name="activated_background">@drawable/list_item_activated_background</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:actionBarStyle">@style/TransparentActionBarStyle</item>
+        <item name="section_header_background">@drawable/list_title_holo</item>
+        <item name="list_item_divider">?android:attr/listDivider</item>
+        <item name="list_item_padding_top">0dip</item>
+        <item name="list_item_padding_right">24dip</item>
+        <item name="list_item_padding_bottom">0dip</item>
+        <item name="list_item_padding_left">0dip</item>
+        <item name="list_item_gap_between_image_and_text">16dip</item>
+        <item name="list_item_gap_between_label_and_data">5dip</item>
+        <item name="list_item_call_button_padding">14dip</item>
+        <item name="list_item_vertical_divider_margin">5dip</item>
+        <item name="list_item_presence_icon_margin">30dip</item>
+        <item name="list_item_photo_size">64dip</item>
+        <item name="list_item_profile_photo_size">80dip</item>
+        <item name="list_item_prefix_highlight_color">#729a27</item>
+        <item name="list_item_header_text_indent">77dip</item>
+        <item name="list_item_header_text_color">?color/section_header_text_color</item>
+        <item name="list_item_header_text_size">14sp</item>
+        <item name="contact_filter_popup_width">320dip</item>
+        <item name="show_home_icon">true</item>
+    </style>
+
+    <style name="ContactDetailHeaderTextView">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:ellipsize">end</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/res/values-xlarge/colors.xml b/res/values-sw580dp/colors.xml
similarity index 100%
rename from res/values-xlarge/colors.xml
rename to res/values-sw580dp/colors.xml
diff --git a/res/values-xlarge/dimens.xml b/res/values-sw580dp/dimens.xml
similarity index 100%
rename from res/values-xlarge/dimens.xml
rename to res/values-sw580dp/dimens.xml
diff --git a/res/values-xlarge/donottranslate_config.xml b/res/values-sw580dp/donottranslate_config.xml
similarity index 100%
rename from res/values-xlarge/donottranslate_config.xml
rename to res/values-sw580dp/donottranslate_config.xml
diff --git a/res/values-xlarge/styles.xml b/res/values-sw580dp/styles.xml
similarity index 95%
rename from res/values-xlarge/styles.xml
rename to res/values-sw580dp/styles.xml
index cbef91a..b34efcc 100644
--- a/res/values-xlarge/styles.xml
+++ b/res/values-sw580dp/styles.xml
@@ -22,14 +22,14 @@
         <item name="section_header_background">@drawable/list_title_holo</item>
         <item name="list_item_divider">?android:attr/listDivider</item>
         <item name="list_item_padding_top">0dip</item>
-        <item name="list_item_padding_right">24dip</item>
+        <item name="list_item_padding_right">20dip</item>
         <item name="list_item_padding_bottom">0dip</item>
         <item name="list_item_padding_left">0dip</item>
-        <item name="list_item_gap_between_image_and_text">16dip</item>
+        <item name="list_item_gap_between_image_and_text">8dip</item>
         <item name="list_item_gap_between_label_and_data">5dip</item>
         <item name="list_item_call_button_padding">14dip</item>
         <item name="list_item_vertical_divider_margin">5dip</item>
-        <item name="list_item_presence_icon_margin">30dip</item>
+        <item name="list_item_presence_icon_margin">18dip</item>
         <item name="list_item_photo_size">64dip</item>
         <item name="list_item_profile_photo_size">80dip</item>
         <item name="list_item_prefix_highlight_color">#729a27</item>
@@ -65,7 +65,7 @@
 
     <style name="CustomContactListFilterView" parent="CustomContactListFilterTheme">
         <item name="android:layout_width">400dip</item>
-        <item name="android:layout_height">600dip</item>
+        <item name="android:layout_height">400dip</item>
     </style>
 
     <style name="ContactPickerLayout" parent="ContactPickerTheme">
diff --git a/res/values-xlarge-land/dimens.xml b/res/values-w470dp/dimens.xml
similarity index 70%
copy from res/values-xlarge-land/dimens.xml
copy to res/values-w470dp/dimens.xml
index 52c521e..ba7f3f8 100644
--- a/res/values-xlarge-land/dimens.xml
+++ b/res/values-w470dp/dimens.xml
@@ -14,9 +14,5 @@
      limitations under the License.
 -->
 <resources>
-    <dimen name="quick_contact_width">452dip</dimen>
-    <dimen name="action_bar_filter_min_width">220dip</dimen>
-    <dimen name="action_bar_filter_max_width">300dip</dimen>
-    <dimen name="action_bar_search_max_width">336dip</dimen>
-    <dimen name="action_bar_search_spacing">32dip</dimen>
+    <dimen name="detail_tab_carousel_height">0dip</dimen>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 9525f54..3e5b554 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -38,8 +38,8 @@
     <dimen name="quick_contact_width">352dip</dimen>
 
     <!-- Padding of the rounded plus/minus/expand/collapse buttons in the editor  -->
-    <dimen name="editor_round_button_padding_left">4dip</dimen>
-    <dimen name="editor_round_button_padding_right">4dip</dimen>
+    <dimen name="editor_round_button_padding_left">2dip</dimen>
+    <dimen name="editor_round_button_padding_right">2dip</dimen>
     <dimen name="editor_round_button_padding_top">8dip</dimen>
     <dimen name="editor_round_button_padding_bottom">8dip</dimen>
 
@@ -70,6 +70,24 @@
     <!-- Font size for the entries in a spinner in the contact editor. -->
     <dimen name="editor_field_spinner_text_size">10sp</dimen>
 
+    <!-- Left margin of the name text input fields and the photo in the contact editor -->
+    <dimen name="editor_name_text_field_left_margin">25dip</dimen>
+
+    <!-- Right margin of the text input fields in the contact editor -->
+    <dimen name="editor_name_text_field_right_margin">0dip</dimen>
+
+    <!-- Width of the title labels in the contact editor -->
+    <dimen name="editor_title_label_width">120dip</dimen>
+
+    <!-- Interpolator layout narrow width value of the contact editor -->
+    <dimen name="editor_interpolator_narrow_width">600dip</dimen>
+
+    <!-- Height of the attribution text view in the contact detail header view -->
+    <dimen name="detail_header_attribution_height">40dip</dimen>
+
+    <!-- Margin between the photo, the star, and text in the contact detail header view -->
+    <dimen name="detail_header_view_margin">8dip</dimen>
+
     <!-- Height of the tab carousel on the contact detail page -->
     <dimen name="detail_tab_carousel_height">150dip</dimen>
 
@@ -79,12 +97,18 @@
     <!-- Height of the tab text label in the tab carousel on the contact detail page -->
     <dimen name="detail_tab_carousel_tab_label_height">40dip</dimen>
 
+    <!-- Width of one fragment in the fragment carousel on the contact detail page -->
+    <dimen name="detail_fragment_carousel_fragment_width">420dip</dimen>
+
     <!-- Vertical margin of the text within the update tab in the tab carousel -->
     <dimen name="detail_update_tab_vertical_margin">20dip</dimen>
 
     <!-- Left and right padding of the text within the update tab in the tab carousel -->
     <dimen name="detail_update_tab_side_padding">10dip</dimen>
 
+    <!-- Margin around the contact's photo on the contact card -->
+    <dimen name="detail_contact_photo_margin">15dip</dimen>
+
     <!-- Left and right padding for a contact detail item -->
     <dimen name="detail_item_icon_margin">10dip</dimen>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 8fd42b7..51d8a0d 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -268,6 +268,11 @@
         <item name="android:layout_width">match_parent</item>
     </style>
 
+    <style name="ContactDetailHeaderTextView">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
+
     <style name="ContactDetailItemType">
         <item name="android:layout_width">wrap_content</item>
         <item name="android:layout_height">wrap_content</item>
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index 1488bec..c62084b 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -23,11 +23,10 @@
 import com.android.contacts.R;
 import com.android.contacts.detail.ContactDetailAboutFragment;
 import com.android.contacts.detail.ContactDetailFragment;
-import com.android.contacts.detail.ContactDetailHeaderView;
+import com.android.contacts.detail.ContactDetailFragmentCarousel;
 import com.android.contacts.detail.ContactDetailTabCarousel;
 import com.android.contacts.detail.ContactDetailUpdatesFragment;
 import com.android.contacts.interactions.ContactDeletionInteraction;
-import com.android.contacts.list.ContactBrowseListFragment;
 import com.android.contacts.util.PhoneCapabilityTester;
 
 import android.accounts.Account;
@@ -43,9 +42,7 @@
 import android.support.v4.view.ViewPager.OnPageChangeListener;
 import android.util.Log;
 import android.view.KeyEvent;
-import android.view.MotionEvent;
 import android.view.View;
-import android.view.View.OnTouchListener;
 import android.widget.AbsListView;
 import android.widget.AbsListView.OnScrollListener;
 import android.widget.Toast;
@@ -63,12 +60,11 @@
     private ContactDetailTabCarousel mTabCarousel;
     private ViewPager mViewPager;
 
-    private Uri mUri;
+    private ContactDetailFragmentCarousel mFragmentCarousel;
 
     @Override
     public void onCreate(Bundle savedState) {
         super.onCreate(savedState);
-
         if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
             // This activity must not be shown. We have to select the contact in the
             // PeopleActivity instead ==> Create a forward intent and finish
@@ -88,25 +84,35 @@
 
         setContentView(R.layout.contact_detail_activity);
 
+        // Narrow width screens have a {@link ViewPager} and {@link ContactDetailTabCarousel}
         mViewPager = (ViewPager) findViewById(R.id.pager);
-        mViewPager.setAdapter(new ViewPagerAdapter(getFragmentManager()));
-        mViewPager.setOnPageChangeListener(mOnPageChangeListener);
+        if (mViewPager != null) {
+            mViewPager.setAdapter(new ViewPagerAdapter(getFragmentManager()));
+            mViewPager.setOnPageChangeListener(mOnPageChangeListener);
+        }
 
         mTabCarousel = (ContactDetailTabCarousel) findViewById(R.id.tab_carousel);
-        mTabCarousel.setListener(mTabCarouselListener);
+        if (mTabCarousel != null) {
+            mTabCarousel.setListener(mTabCarouselListener);
+        }
 
-        mUri = getIntent().getData();
+        // Otherwise, wide width screens have a {@link ContactDetailFragmentCarousel}
+        mFragmentCarousel = (ContactDetailFragmentCarousel) findViewById(R.id.fragment_carousel);
+        if (mFragmentCarousel != null) {
+            if (mAboutFragment != null) mFragmentCarousel.setAboutFragment(mAboutFragment);
+            if (mUpdatesFragment != null) mFragmentCarousel.setUpdatesFragment(mUpdatesFragment);
+        }
+
         Log.i(TAG, getIntent().getData().toString());
     }
 
-
     @Override
     public void onAttachFragment(Fragment fragment) {
         if (fragment instanceof ContactDetailAboutFragment) {
             mAboutFragment = (ContactDetailAboutFragment) fragment;
             mAboutFragment.setListener(mFragmentListener);
             mAboutFragment.setVerticalScrollListener(mVerticalScrollListener);
-            mAboutFragment.loadUri(mUri);
+            mAboutFragment.loadUri(getIntent().getData());
         } else if (fragment instanceof ContactDetailUpdatesFragment) {
             mUpdatesFragment = (ContactDetailUpdatesFragment) fragment;
         }
@@ -125,7 +131,7 @@
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         FragmentKeyListener mCurrentFragment;
-        switch (mViewPager.getCurrentItem()) {
+        switch (getCurrentPage()) {
             case 0:
                 mCurrentFragment = (FragmentKeyListener) mAboutFragment;
                 break;
@@ -140,6 +146,16 @@
         return super.onKeyDown(keyCode, event);
     }
 
+    private int getCurrentPage() {
+        if (mViewPager != null) {
+            return mViewPager.getCurrentItem();
+        } else if (mFragmentCarousel != null) {
+            return mFragmentCarousel.getCurrentPage();
+        }
+        throw new IllegalStateException("Can't figure out the currently selected page. The activity"
+                + "must either have the ViewPager or fragment carousel");
+    }
+
     private final ContactDetailFragment.Listener mFragmentListener =
             new ContactDetailFragment.Listener() {
         @Override
@@ -149,7 +165,9 @@
 
         @Override
         public void onDetailsLoaded(ContactLoader.Result result) {
-            mTabCarousel.loadData(result);
+            if (mTabCarousel != null) {
+                mTabCarousel.loadData(result);
+            }
         }
 
         @Override
@@ -278,6 +296,9 @@
         @Override
         public void onScroll(
                 AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+            if (mTabCarousel == null) {
+                return;
+            }
             // Only re-position the tab carousel vertically if the FIRST item is still visible on
             // the screen, otherwise the carousel should be in the correct place (pinned at the
             // top).
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 55acdad..548faa2 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -119,6 +119,9 @@
 
     private GroupDetailFragment mGroupDetailFragment;
 
+    private StrequentContactListFragment.Listener mFavoritesFragmentListener =
+            new StrequentContactListFragmentListener();
+
     private boolean mSearchInitiated;
 
     private ContactListFilterController mContactListFilterController;
@@ -176,6 +179,9 @@
         } else if (fragment instanceof GroupDetailFragment) {
             mGroupDetailFragment = (GroupDetailFragment) fragment;
             mContentPaneDisplayed = true;
+        } else if (fragment instanceof StrequentContactListFragment) {
+            mFavoritesFragment = (StrequentContactListFragment) fragment;
+            mFavoritesFragment.setListener(mFavoritesFragmentListener);
         }
     }
 
@@ -740,6 +746,18 @@
         }
     }
 
+    private final class StrequentContactListFragmentListener
+            implements StrequentContactListFragment.Listener {
+        @Override
+        public void onContactSelected(Uri contactUri) {
+            if (mContentPaneDisplayed) {
+                setupContactDetailFragment(contactUri);
+            } else {
+                startActivity(new Intent(Intent.ACTION_VIEW, contactUri));
+            }
+        }
+    }
+
     private final class GroupBrowserActionListener implements OnGroupBrowserActionListener {
 
         @Override
diff --git a/src/com/android/contacts/detail/ContactDetailAboutFragment.java b/src/com/android/contacts/detail/ContactDetailAboutFragment.java
index a1377e8..fc6b9cb 100644
--- a/src/com/android/contacts/detail/ContactDetailAboutFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailAboutFragment.java
@@ -19,20 +19,12 @@
 import com.android.contacts.ContactLoader;
 import com.android.contacts.R;
 
-import android.accounts.Account;
 import android.app.ActionBar;
 import android.app.Activity;
-import android.content.ContentValues;
-import android.content.Intent;
-import android.net.Uri;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
-import java.util.ArrayList;
-
 public class ContactDetailAboutFragment extends ContactDetailFragment {
 
     private static final String TAG = "ContactDetailAboutFragment";
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 74c05a5..c2aaea4 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -109,7 +109,7 @@
 import java.util.Collections;
 import java.util.List;
 
-public class ContactDetailFragment extends Fragment implements FragmentKeyListener,
+public class ContactDetailFragment extends Fragment implements FragmentKeyListener, FragmentOverlay,
         OnItemClickListener, OnItemLongClickListener, SelectAccountDialogFragment.Listener {
 
     private static final String TAG = "ContactDetailFragment";
@@ -128,6 +128,7 @@
 
     private ContactLoader.Result mContactData;
     private ContactDetailHeaderView mHeaderView;
+    private ImageView mPhotoView;
     private ListView mListView;
     private ViewAdapter mAdapter;
     private Uri mPrimaryPhoneUri = null;
@@ -166,6 +167,17 @@
     private View mEmptyView;
 
     /**
+     * This optional view adds an alpha layer over the entire fragment.
+     */
+    private View mAlphaLayer;
+
+    /**
+     * This optional view adds a layer over the entire fragment so that when visible, it intercepts
+     * all touch events on the fragment.
+     */
+    private View mTouchInterceptLayer;
+
+    /**
      * A list of distinct contact IDs included in the current contact.
      */
     private ArrayList<Long> mRawContactIds = new ArrayList<Long>();
@@ -233,6 +245,8 @@
 
         mInflater = inflater;
 
+        mPhotoView = (ImageView) mView.findViewById(R.id.photo);
+
         mListView = (ListView) mView.findViewById(android.R.id.list);
         mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
         mListView.setOnItemClickListener(this);
@@ -242,6 +256,9 @@
         // Don't set it to mListView yet.  We do so later when we bind the adapter.
         mEmptyView = mView.findViewById(android.R.id.empty);
 
+        mAlphaLayer = mView.findViewById(R.id.alpha_overlay);
+        mTouchInterceptLayer = mView.findViewById(R.id.touch_intercept_overlay);
+
         mCopyGalToLocalButton = (Button) mView.findViewById(R.id.copyLocal);
         mCopyGalToLocalButton.setOnClickListener(new OnClickListener() {
             @Override
@@ -262,6 +279,35 @@
         mListener = value;
     }
 
+    @Override
+    public void setAlphaLayerValue(float alpha) {
+        if (mAlphaLayer != null) {
+            mAlphaLayer.setAlpha(alpha);
+        }
+    }
+
+    @Override
+    public void enableAlphaLayer() {
+        if (mAlphaLayer != null) {
+            mAlphaLayer.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    public void enableTouchInterceptor(OnClickListener clickListener) {
+        if (mTouchInterceptLayer != null) {
+            mTouchInterceptLayer.setVisibility(View.VISIBLE);
+            mTouchInterceptLayer.setOnClickListener(clickListener);
+        }
+    }
+
+    @Override
+    public void disableTouchInterceptor() {
+        if (mTouchInterceptLayer != null) {
+            mTouchInterceptLayer.setVisibility(View.GONE);
+        }
+    }
+
     protected Context getContext() {
         return mContext;
     }
@@ -335,6 +381,11 @@
         // Clear old header
         mHeaderView = null;
 
+        // Setup the photo if applicable
+        if (mPhotoView != null) {
+            ContactDetailDisplayUtils.setPhoto(mContext, mContactData, mPhotoView);
+        }
+
         // Build up the contact entries
         buildEntries();
 
diff --git a/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java b/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java
new file mode 100644
index 0000000..da64c34
--- /dev/null
+++ b/src/com/android/contacts/detail/ContactDetailFragmentCarousel.java
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.contacts.detail;
+
+import com.android.contacts.R;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
+import android.widget.HorizontalScrollView;
+
+/**
+ * This is a horizontally scrolling carousel with 2 fragments: one to see info about the contact and
+ * one to see updates from the contact. Depending on the scroll position and user selection of which
+ * fragment to currently view, the alpha values and touch interceptors over each fragment are
+ * configured accordingly.
+ */
+public class ContactDetailFragmentCarousel extends HorizontalScrollView implements OnTouchListener {
+
+    private static final String TAG = ContactDetailFragmentCarousel.class.getSimpleName();
+
+    private int mAllowedHorizontalScrollLength = Integer.MIN_VALUE;
+    private int mLowerThreshold = Integer.MIN_VALUE;
+    private int mUpperThreshold = Integer.MIN_VALUE;
+
+    private static final int ABOUT_PAGE = 0;
+    private static final int UPDATES_PAGE = 1;
+
+    private int mCurrentPage = ABOUT_PAGE;
+    private int mLastScrollPosition;
+
+    private FragmentOverlay mAboutFragment;
+    private FragmentOverlay mUpdatesFragment;
+
+    private static final float MAX_ALPHA = 0.5f;
+
+    public ContactDetailFragmentCarousel(Context context) {
+        this(context, null);
+    }
+
+    public ContactDetailFragmentCarousel(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public ContactDetailFragmentCarousel(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+
+        final LayoutInflater inflater =
+                (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        inflater.inflate(R.layout.contact_detail_fragment_carousel, this);
+
+        setOnTouchListener(this);
+    }
+
+    public void setAboutFragment(FragmentOverlay fragment) {
+        // TODO: We can't always assume the "about" page will be the current page.
+        mAboutFragment = fragment;
+        mAboutFragment.enableAlphaLayer();
+        mAboutFragment.setAlphaLayerValue(0);
+        mAboutFragment.disableTouchInterceptor();
+    }
+
+    public void setUpdatesFragment(FragmentOverlay fragment) {
+        mUpdatesFragment = fragment;
+        mUpdatesFragment.enableAlphaLayer();
+        mUpdatesFragment.setAlphaLayerValue(MAX_ALPHA);
+        mUpdatesFragment.enableTouchInterceptor(mUpdatesFragTouchInterceptListener);
+    }
+
+    public int getCurrentPage() {
+        return mCurrentPage;
+    }
+
+    private final OnClickListener mAboutFragTouchInterceptListener = new OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            mCurrentPage = ABOUT_PAGE;
+            snapToEdge();
+        }
+    };
+
+    private final OnClickListener mUpdatesFragTouchInterceptListener = new OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            mCurrentPage = UPDATES_PAGE;
+            snapToEdge();
+        }
+    };
+
+    private void updateTouchInterceptors() {
+        switch (mCurrentPage) {
+            case ABOUT_PAGE:
+                // The "about this contact" page has been selected, so disable the touch interceptor
+                // on this page and enable it for the "updates" page.
+                mAboutFragment.disableTouchInterceptor();
+                mUpdatesFragment.enableTouchInterceptor(mUpdatesFragTouchInterceptListener);
+                break;
+            case UPDATES_PAGE:
+                mUpdatesFragment.disableTouchInterceptor();
+                mAboutFragment.enableTouchInterceptor(mAboutFragTouchInterceptListener);
+                break;
+        }
+    }
+
+    private void updateAlphaLayers() {
+        mAboutFragment.setAlphaLayerValue(mLastScrollPosition * MAX_ALPHA /
+                getAllowedHorizontalScrollLength());
+        mUpdatesFragment.setAlphaLayerValue(MAX_ALPHA - mLastScrollPosition * MAX_ALPHA /
+                getAllowedHorizontalScrollLength());
+    }
+
+    @Override
+    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
+        super.onScrollChanged(l, t, oldl, oldt);
+        mLastScrollPosition= l;
+        updateAlphaLayers();
+    }
+
+    private void snapToEdge() {
+        switch (mCurrentPage) {
+            case ABOUT_PAGE:
+                smoothScrollTo(0, 0);
+                break;
+            case UPDATES_PAGE:
+                smoothScrollTo(getAllowedHorizontalScrollLength(), 0);
+                break;
+        }
+        updateTouchInterceptors();
+    }
+
+    /**
+     * Returns the desired page we should scroll to based on the current X scroll position and the
+     * current page.
+     */
+    private int getDesiredPage() {
+        switch (mCurrentPage) {
+            case ABOUT_PAGE:
+                // If the user is on the "about" page, and the scroll position exceeds the lower
+                // threshold, then we should switch to the "updates" page.
+                return (mLastScrollPosition > getLowerThreshold()) ? UPDATES_PAGE : ABOUT_PAGE;
+            case UPDATES_PAGE:
+                // If the user is on the "updates" page, and the scroll position goes below the
+                // upper threshold, then we should switch to the "about" page.
+                return (mLastScrollPosition < getUpperThreshold()) ? ABOUT_PAGE : UPDATES_PAGE;
+        }
+        throw new IllegalStateException("Invalid current page " + mCurrentPage);
+    }
+
+    /**
+     * Returns the number of pixels that this view can be scrolled horizontally.
+     */
+    private int getAllowedHorizontalScrollLength() {
+        if (mAllowedHorizontalScrollLength == Integer.MIN_VALUE) {
+            computeThresholds();
+        }
+        return mAllowedHorizontalScrollLength;
+    }
+
+    /**
+     * Returns the minimum X scroll position that must be surpassed (if the user is on the "about"
+     * page of the contact card), in order for this view to automatically snap to the "updates"
+     * page.
+     */
+    private int getLowerThreshold() {
+        if (mLowerThreshold == Integer.MIN_VALUE) {
+            computeThresholds();
+        }
+        return mLowerThreshold;
+    }
+
+    /**
+     * Returns the maximum X scroll position (if the user is on the "updates" page of the contact
+     * card), below which this view will automatically snap to the "about" page.
+     */
+    private int getUpperThreshold() {
+        if (mLowerThreshold == Integer.MIN_VALUE) {
+            computeThresholds();
+        }
+        return mUpperThreshold;
+    }
+
+    // TODO: Move this to a Fragment override method (i.e. onActivityCreated or some method where
+    // we can be sure the width of the views are non-zero) instead of doing it on the fly when the
+    // values are requested for the first time.
+    private void computeThresholds() {
+        int screenWidth = getWidth();
+        int fragmentWidth = findViewById(R.id.about_fragment).getWidth();
+        mAllowedHorizontalScrollLength = (2 * fragmentWidth) - screenWidth;
+        mLowerThreshold = (screenWidth - fragmentWidth) / 2;
+        mUpperThreshold = mAllowedHorizontalScrollLength - mLowerThreshold;
+    }
+
+    @Override
+    public boolean onTouch(View v, MotionEvent event) {
+        if (event.getAction() == MotionEvent.ACTION_UP) {
+            mCurrentPage = getDesiredPage();
+            snapToEdge();
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/contacts/detail/ContactDetailTabCarousel.java b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
index dc3e126..a12106f 100644
--- a/src/com/android/contacts/detail/ContactDetailTabCarousel.java
+++ b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
@@ -19,12 +19,10 @@
 import com.android.contacts.ContactLoader;
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.R;
-import com.android.contacts.activities.ContactDetailActivity;
 
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
diff --git a/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java b/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java
index 02678de..0c4dc4f 100644
--- a/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailUpdatesFragment.java
@@ -23,19 +23,67 @@
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 
-public class ContactDetailUpdatesFragment extends Fragment implements FragmentKeyListener {
+public class ContactDetailUpdatesFragment extends Fragment
+        implements FragmentKeyListener, FragmentOverlay {
 
     private static final String TAG = "ContactDetailUpdatesFragment";
 
+    /**
+     * This optional view adds an alpha layer over the entire fragment.
+     */
+    private View mAlphaLayer;
+
+    /**
+     * This optional view adds a layer over the entire fragment so that when visible, it intercepts
+     * all touch events on the fragment.
+     */
+    private View mTouchInterceptLayer;
+
     public ContactDetailUpdatesFragment() {
         // Explicit constructor for inflation
     }
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
-        return inflater.inflate(R.layout.contact_detail_updates_fragment, container, false);
+        View rootView = inflater.inflate(R.layout.contact_detail_updates_fragment, container,
+                false);
+
+        mAlphaLayer = rootView.findViewById(R.id.alpha_overlay);
+        mTouchInterceptLayer = rootView.findViewById(R.id.touch_intercept_overlay);
+
+        return rootView;
+    }
+
+    @Override
+    public void setAlphaLayerValue(float alpha) {
+        if (mAlphaLayer != null) {
+            mAlphaLayer.setAlpha(alpha);
+        }
+    }
+
+    @Override
+    public void enableAlphaLayer() {
+        if (mAlphaLayer != null) {
+            mAlphaLayer.setVisibility(View.VISIBLE);
+        }
+    }
+
+    @Override
+    public void enableTouchInterceptor(OnClickListener clickListener) {
+        if (mTouchInterceptLayer != null) {
+            mTouchInterceptLayer.setVisibility(View.VISIBLE);
+            mTouchInterceptLayer.setOnClickListener(clickListener);
+        }
+    }
+
+    @Override
+    public void disableTouchInterceptor() {
+        if (mTouchInterceptLayer != null) {
+            mTouchInterceptLayer.setVisibility(View.GONE);
+        }
     }
 
     @Override
diff --git a/src/com/android/contacts/detail/FragmentOverlay.java b/src/com/android/contacts/detail/FragmentOverlay.java
new file mode 100644
index 0000000..6ef0846
--- /dev/null
+++ b/src/com/android/contacts/detail/FragmentOverlay.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.contacts.detail;
+
+import android.view.View.OnClickListener;
+
+/**
+ * This is implemented by {@link Fragment}s that contain an alpha layer and touch interceptor layer.
+ * The alpha layer covers the entire fragment and has an alpha value which makes the fragment
+ * contents appear "dimmed" out. The touch interceptor layer covers the entire fragment so that
+ * when visible, it intercepts all touch events on the {@link Fragment}.
+ */
+public interface FragmentOverlay {
+
+    /**
+     * Sets the alpha value on the alpha layer (if there is one).
+     */
+    public void setAlphaLayerValue(float alpha);
+
+    /**
+     * Makes the alpha layer on this fragment visible (if there is one).
+     */
+    public void enableAlphaLayer();
+
+    /**
+     * Makes the touch intercept layer on this fragment visible (if there is one). Also adds a click
+     * listener which is called when there is a touch event on the layer.
+     */
+    public void enableTouchInterceptor(OnClickListener clickListener);
+
+    /**
+     * Makes the touch intercept layer on this fragment gone (if there is one).
+     */
+    public void disableTouchInterceptor();
+}
diff --git a/src/com/android/contacts/widget/InterpolatingLayout.java b/src/com/android/contacts/widget/InterpolatingLayout.java
index fc67ef5..78785b9 100644
--- a/src/com/android/contacts/widget/InterpolatingLayout.java
+++ b/src/com/android/contacts/widget/InterpolatingLayout.java
@@ -283,6 +283,10 @@
         for (int i = 0; i < count; i++) {
             View child = getChildAt(i);
 
+            if (child.getVisibility() == View.GONE) {
+                continue;
+            }
+
             LayoutParams params = (LayoutParams) child.getLayoutParams();
             int gravity = params.gravity;
             if (gravity == -1) {
