diff --git a/InCallUI/res/layout/call_card.xml b/InCallUI/res/layout/call_card.xml
index cf7a490..2178ab7 100644
--- a/InCallUI/res/layout/call_card.xml
+++ b/InCallUI/res/layout/call_card.xml
@@ -46,7 +46,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical"
-                android:translationZ="@dimen/primary_call_translation_z"
+                android:elevation="@dimen/primary_call_elevation"
                 android:background="@color/incall_call_banner_background_color"
                 android:clipChildren="false"
                 android:clipToPadding="false" >
@@ -73,6 +73,9 @@
                     android:contentDescription="@string/contactPhoto"
                     android:src="@drawable/picture_unknown"/>
 
+                <!-- Secondary "Call info" block, for the background ("on hold") call. -->
+                <include layout="@layout/secondary_call_info" />
+
                 <fragment android:name="com.android.incallui.DialpadFragment"
                     android:id="@+id/dialpadFragment"
                     android:layout_width="match_parent"
@@ -125,11 +128,4 @@
 
     </FrameLayout>
 
-    <!-- Secondary "Call info" block, for the background ("on hold") call. -->
-    <ViewStub android:id="@+id/secondary_call_info"
-        android:layout="@layout/secondary_call_info"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1" />
-
 </LinearLayout>
diff --git a/InCallUI/res/layout/primary_call_info.xml b/InCallUI/res/layout/primary_call_info.xml
index f483471..4b19c48 100644
--- a/InCallUI/res/layout/primary_call_info.xml
+++ b/InCallUI/res/layout/primary_call_info.xml
@@ -79,7 +79,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:textAppearance="?android:attr/textAppearanceSmall"
-                    android:textColor="@color/incall_call_banner_secondary_text_color"
+                    android:textColor="@color/incall_call_banner_subtext_color"
                     android:textSize="@dimen/call_label_text_size"
                     android:singleLine="true"
                     android:textDirection="ltr" />
@@ -88,7 +88,7 @@
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:textAppearance="?android:attr/textAppearanceSmall"
-                    android:textColor="@color/incall_call_banner_secondary_text_color"
+                    android:textColor="@color/incall_call_banner_subtext_color"
                     android:textSize="@dimen/call_label_text_size"
                     android:singleLine="true"
                     android:layout_marginStart="6dp" />
@@ -101,7 +101,7 @@
                 android:layout_height="wrap_content"
                 android:layout_centerVertical="true"
                 android:textAppearance="?android:attr/textAppearanceSmall"
-                android:textColor="@color/incall_call_banner_secondary_text_color"
+                android:textColor="@color/incall_call_banner_subtext_color"
                 android:singleLine="true"
                 android:visibility="gone" />
 
diff --git a/InCallUI/res/layout/secondary_call_info.xml b/InCallUI/res/layout/secondary_call_info.xml
index 6f0fee5..e45d90d 100644
--- a/InCallUI/res/layout/secondary_call_info.xml
+++ b/InCallUI/res/layout/secondary_call_info.xml
@@ -14,65 +14,39 @@
      limitations under the License.
 -->
 
-<!-- XML resource file for secondary call info, which will be used by CallCard.
-     See also call_card.xml.
+<!-- XML resource file for secondary call info, which will be used by CallCard. -->
 
-     This should look similar to primary call info (primary_call_info.xml), but
-     to optimize the view usage, the structure is different. -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/secondary_call_info"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:paddingStart="@dimen/call_banner_side_padding"
+    android:paddingEnd="@dimen/secondary_call_banner_right_padding"
+    android:paddingTop="@dimen/call_banner_top_bottom_padding"
+    android:paddingBottom="@dimen/call_banner_top_bottom_padding"
+    android:background="@color/incall_banner_secondary_background_color"
+    android:elevation="@dimen/secondary_call_elevation" >
 
-    <!-- Contact photo for call_info #2 -->
-    <ImageView android:id="@+id/secondaryCallPhoto"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:gravity="top|center_horizontal"
-        android:scaleType="centerCrop"
-        android:contentDescription="@string/onHold" />
-
-    <View android:id="@+id/dim_effect_for_secondary_photo"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/clickable_dim_effect"/>
-
-    <!-- Parent FrameLayout is used to size the background correctly, while the child TextView
-        just wraps its content and is aligned with layout_gravity start so that it is aligned
-        to the correct side in RTL mode regardless of whether the text is Arabic or not -->
-    <FrameLayout
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/call_banner_height"
-        android:paddingStart="@dimen/call_banner_side_padding"
-        android:paddingEnd="@dimen/secondary_call_banner_right_padding"
-        android:paddingTop="@dimen/call_banner_top_bottom_padding"
-        android:paddingBottom="@dimen/call_banner_top_bottom_padding"
-        android:background="@color/incall_call_banner_background_color">
-        <!-- Name (or the phone number, if we don't have a name to display). -->
-        <TextView android:id="@+id/secondaryCallName"
-            style="@style/SecondaryCallInfoSecondaryCallName"
-            android:layout_gravity="bottom|start"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:textColor="@color/incall_call_banner_text_color"
-            android:ellipsize="marquee"
-            android:singleLine="true"/>
-    </FrameLayout>
+    <!-- Name (or the phone number, if we don't have a name to display). -->
+    <TextView android:id="@+id/secondaryCallName"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textColor="@color/incall_banner_secondary_text_color"
+        android:ellipsize="marquee"
+        android:singleLine="true"/>
 
     <!-- Call status of the background call, usually the string "On hold". -->
     <TextView android:id="@+id/secondaryCallStatus"
-        style="@style/SecondaryCallInfoSecondaryCallStatus"
         android:layout_width="wrap_content"
-        android:layout_height="@dimen/call_banner_height"
-        android:gravity="bottom|end"
-        android:layout_gravity="end"
-        android:paddingStart="@dimen/call_banner_side_padding"
+        android:layout_height="wrap_content"
         android:paddingEnd="@dimen/call_banner_side_padding"
-        android:paddingTop="@dimen/call_banner_top_bottom_padding"
-        android:paddingBottom="@dimen/call_banner_top_bottom_padding"
         android:text="@string/onHold"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:textColor="@color/incall_call_banner_text_color"
-        android:textAllCaps="true"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textColor="@color/incall_banner_secondary_text_color"
+        android:textAlignment="textEnd"
         android:singleLine="true" />
-</FrameLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/InCallUI/res/values/colors.xml b/InCallUI/res/values/colors.xml
index 74c218e..57264f7 100644
--- a/InCallUI/res/values/colors.xml
+++ b/InCallUI/res/values/colors.xml
@@ -23,10 +23,10 @@
 
     <!-- Background color of main banner. -->
     <color name="incall_call_banner_background_color">@color/incall_background_color</color>
-    <!-- white -->
-    <color name="incall_call_banner_text_color">#FFFFFF</color>
-    <!-- White, with 80% opacity. -->
-    <color name="incall_call_banner_secondary_text_color">#99ffffff</color>
+    <color name="incall_call_banner_text_color">#ffffff</color>
+    <color name="incall_call_banner_subtext_color">#99ffffff</color>
+    <color name="incall_banner_secondary_background_color">#f5f5f5</color>
+    <color name="incall_banner_secondary_text_color">#808080</color>
 
     <!-- Color of the theme of the People app -->
     <color name="people_app_theme_color">#33B5E5</color>
diff --git a/InCallUI/res/values/dimens.xml b/InCallUI/res/values/dimens.xml
index c01b969..24858c2 100644
--- a/InCallUI/res/values/dimens.xml
+++ b/InCallUI/res/values/dimens.xml
@@ -29,10 +29,10 @@
     <!-- Padding at the left and right edges of the "call banner". -->
     <dimen name="call_banner_side_padding">24dp</dimen>
     <!-- Padding at the right edges of the secondary call banner. -->
-    <dimen name="secondary_call_banner_right_padding">100dp</dimen>
+    <dimen name="secondary_call_banner_right_padding">24dp</dimen>
     <!-- Padding at the top and bottom edges of the "call banner". -->
     <dimen name="call_banner_primary_call_top_padding">16dp</dimen>
-    <dimen name="call_banner_top_bottom_padding">8dp</dimen>
+    <dimen name="call_banner_top_bottom_padding">16dp</dimen>
 
     <!-- Padding at the top and bottom edges of the "provider information" -->
     <dimen name="provider_info_top_bottom_padding">8dp</dimen>
@@ -55,7 +55,8 @@
     <!-- Height of buttons in the extra button row. -->
     <dimen name="extra_row_button_height">@dimen/in_call_button_dimension</dimen>
 
-    <dimen name="primary_call_translation_z">8dp</dimen>
+    <dimen name="primary_call_elevation">8dp</dimen>
+    <dimen name="secondary_call_elevation">8dp</dimen>
 
 
     <!-- Padding at the left and right edges of the incall_touch_ui button
diff --git a/InCallUI/res/values/styles.xml b/InCallUI/res/values/styles.xml
index 747a324..d86ff68 100644
--- a/InCallUI/res/values/styles.xml
+++ b/InCallUI/res/values/styles.xml
@@ -127,11 +127,4 @@
     <style name="PrimaryCallInfoPrimaryCallBanner">
         <item name="android:layout_alignParentTop">true</item>
     </style>
-
-    <style name="SecondaryCallInfoSecondaryCallName">
-        <item name="android:layout_gravity">top|left</item>
-    </style>
-    <style name="SecondaryCallInfoSecondaryCallStatus">
-        <item name="android:layout_gravity">top|right</item>
-    </style>
 </resources>
diff --git a/InCallUI/src/com/android/incallui/CallCardFragment.java b/InCallUI/src/com/android/incallui/CallCardFragment.java
index f43d66b..0c60fd5 100644
--- a/InCallUI/src/com/android/incallui/CallCardFragment.java
+++ b/InCallUI/src/com/android/incallui/CallCardFragment.java
@@ -73,10 +73,8 @@
     private View mCallButtonsContainer;
 
     // Secondary caller info
-    private ViewStub mSecondaryCallInfo;
+    private View mSecondaryCallInfo;
     private TextView mSecondaryCallName;
-    private ImageView mSecondaryPhoto;
-    private View mSecondaryPhotoOverlay;
 
     private View mEndCallButton;
     private ImageButton mHandoffButton;
@@ -132,7 +130,7 @@
         mPhoneNumber = (TextView) view.findViewById(R.id.phoneNumber);
         mPrimaryName = (TextView) view.findViewById(R.id.name);
         mNumberLabel = (TextView) view.findViewById(R.id.label);
-        mSecondaryCallInfo = (ViewStub) view.findViewById(R.id.secondary_call_info);
+        mSecondaryCallInfo = (View) view.findViewById(R.id.secondary_call_info);
         mPhoto = (ImageView) view.findViewById(R.id.photo);
         mCallStateLabel = (TextView) view.findViewById(R.id.callStateLabel);
         mCallNumberAndLabel = view.findViewById(R.id.labelAndNumber);
@@ -246,12 +244,11 @@
 
     @Override
     public void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
-            Drawable photo, boolean isConference, boolean isGeneric) {
+            boolean isConference, boolean isGeneric) {
 
         if (show) {
             if (isConference) {
                 name = getConferenceString(isGeneric);
-                photo = getConferencePhoto(isGeneric);
                 nameIsNumber = false;
             }
 
@@ -263,21 +260,12 @@
                 nameDirection = View.TEXT_DIRECTION_LTR;
             }
             mSecondaryCallName.setTextDirection(nameDirection);
-
-            setDrawableToImageView(mSecondaryPhoto, photo);
         } else {
             mSecondaryCallInfo.setVisibility(View.GONE);
         }
     }
 
     @Override
-    public void setSecondaryImage(Drawable image) {
-        if (image != null) {
-            setDrawableToImageView(mSecondaryPhoto, image);
-        }
-    }
-
-    @Override
     public void setCallState(int state, int cause, boolean bluetoothOn, String gatewayLabel,
             String gatewayNumber, boolean isWiFi, boolean isHandoffCapable,
             boolean isHandoffPending) {
@@ -511,20 +499,12 @@
         if (mSecondaryCallName == null) {
             mSecondaryCallName = (TextView) getView().findViewById(R.id.secondaryCallName);
         }
-        if (mSecondaryPhoto == null) {
-            mSecondaryPhoto = (ImageView) getView().findViewById(R.id.secondaryCallPhoto);
-        }
-
-        if (mSecondaryPhotoOverlay == null) {
-            mSecondaryPhotoOverlay = getView().findViewById(R.id.dim_effect_for_secondary_photo);
-            mSecondaryPhotoOverlay.setOnClickListener(new OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    getPresenter().secondaryPhotoClicked();
-                }
-            });
-            mSecondaryPhotoOverlay.setOnTouchListener(new SmallerHitTargetTouchListener());
-        }
+        mSecondaryCallInfo.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getPresenter().secondaryInfoClicked();
+            }
+        });
     }
 
     public void dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index e73848c..5762832 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -312,8 +312,6 @@
                     if (entry.photo != null) {
                         if (mPrimary != null && callId.equals(mPrimary.getCallId())) {
                             getUi().setPrimaryImage(entry.photo);
-                        } else if (mSecondary != null && callId.equals(mSecondary.getCallId())) {
-                            getUi().setSecondaryImage(entry.photo);
                         }
                     }
                 }
@@ -418,11 +416,11 @@
 
             final boolean nameIsNumber = nameForCall != null && nameForCall.equals(
                     mSecondaryContactInfo.number);
-            ui.setSecondary(true, nameForCall, nameIsNumber, mSecondaryContactInfo.label,
-                    mSecondaryContactInfo.photo, isConference, isGenericConf);
+            ui.setSecondary(true /* show */, nameForCall, nameIsNumber, mSecondaryContactInfo.label,
+                    isConference, isGenericConf);
         } else {
             // reset to nothing so that it starts off blank next time we use it.
-            ui.setSecondary(false, null, false, null, null, isConference, isGenericConf);
+            ui.setSecondary(false, null, false, null, isConference, isGenericConf);
         }
     }
 
@@ -488,9 +486,9 @@
         return contactInfo.number;
     }
 
-    public void secondaryPhotoClicked() {
+    public void secondaryInfoClicked() {
         if (mSecondary == null) {
-            Log.wtf(this, "Secondary photo clicked but no secondary call.");
+            Log.wtf(this, "Secondary info clicked but no secondary call.");
             return;
         }
 
@@ -512,8 +510,7 @@
         void setPrimary(String number, String name, boolean nameIsNumber, String label,
                 Drawable photo, boolean isConference, boolean isGeneric, boolean isSipCall);
         void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
-                Drawable photo, boolean isConference, boolean isGeneric);
-        void setSecondaryImage(Drawable image);
+                boolean isConference, boolean isGeneric);
         void setCallState(int state, int cause, boolean bluetoothOn,
                 String gatewayLabel, String gatewayNumber, boolean isWifi, boolean isHandoffCapable,
                 boolean isHandoffPending);
