diff --git a/res/drawable-hdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-hdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-hdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-ldrtl-hdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-ldrtl-hdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-ldrtl-hdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-ldrtl-mdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-ldrtl-mdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-ldrtl-mdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-ldrtl-xhdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-ldrtl-xhdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-ldrtl-xhdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-mdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-mdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-mdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-xhdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-xhdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-xhdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-xxhdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-xxhdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-xxhdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/quantum_ic_assistant_grey600_24.png b/res/drawable-xxxhdpi/quantum_ic_assistant_grey600_24.png
new file mode 100644
index 0000000..0647862
--- /dev/null
+++ b/res/drawable-xxxhdpi/quantum_ic_assistant_grey600_24.png
Binary files differ
diff --git a/res/layout/quickcontact_collapsed_suggestion_card.xml b/res/layout/quickcontact_collapsed_suggestion_card.xml
new file mode 100644
index 0000000..dbd3eee
--- /dev/null
+++ b/res/layout/quickcontact_collapsed_suggestion_card.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    style="@style/ExpandingEntryCardStyle"
+    android:layout_height="wrap_content"
+    android:layout_width="match_parent"
+    android:visibility="gone"
+    android:id="@+id/collapsed_suggestion_card">
+
+    <LinearLayout
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:orientation="horizontal"
+        android:clickable="true"
+        android:id="@+id/collapsed_suggestion_header">
+
+        <ImageView
+                android:src="@drawable/quantum_ic_assistant_grey600_24"
+                android:layout_width="@dimen/detail_network_icon_size"
+                android:layout_height="@dimen/detail_network_icon_size"
+                android:layout_margin="16dip"
+                android:layout_gravity="center_vertical"/>
+
+        <TextView
+                android:id="@+id/collapsed_suggestion_card_title"
+                android:textSize="@dimen/expanding_entry_card_title_text_size"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:textColor="@color/quickcontact_entry_header_text_color"
+                android:singleLine="true"
+                android:ellipsize="end"
+                android:paddingTop="@dimen/quickcontact_suggestion_card_image_spacing"
+                android:paddingBottom="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <ImageView
+                android:src="@drawable/ic_menu_expander_minimized_holo_light"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical|end"
+                android:layout_alignParentEnd="true"
+                android:paddingStart="@dimen/editor_round_button_padding_left"
+                android:paddingEnd="@dimen/editor_round_button_padding_right"
+                android:paddingTop="@dimen/editor_round_button_padding_top"
+                android:paddingBottom="@dimen/editor_round_button_padding_bottom"/>
+    </LinearLayout>>
+
+</android.support.v7.widget.CardView>
\ No newline at end of file
diff --git a/res/layout/quickcontact_content.xml b/res/layout/quickcontact_content.xml
index 9c4e644..a6a8abb 100644
--- a/res/layout/quickcontact_content.xml
+++ b/res/layout/quickcontact_content.xml
@@ -54,7 +54,8 @@
             android:visibility="gone"
             cardview:cardCornerRadius="@dimen/expanding_entry_card_card_corner_radius" />
 
-        <include layout="@layout/quickcontact_suggestion_card" />
+        <include layout="@layout/quickcontact_collapsed_suggestion_card" />
+        <include layout="@layout/quickcontact_expand_suggestion_card" />
 
     </LinearLayout>
 
diff --git a/res/layout/quickcontact_expand_suggestion_card.xml b/res/layout/quickcontact_expand_suggestion_card.xml
new file mode 100644
index 0000000..c2c32cd
--- /dev/null
+++ b/res/layout/quickcontact_expand_suggestion_card.xml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+
+<!--
+  Layout for the expand suggestion card in QuickContact.
+-->
+<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    style="@style/ExpandingEntryCardStyle"
+    android:layout_height="wrap_content"
+    android:layout_width="match_parent"
+    android:visibility="gone"
+    android:id="@+id/expand_suggestion_card">
+
+    <LinearLayout
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/expand_suggestion_card_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textStyle="bold"
+            android:textColor="@color/quickcontact_entry_header_text_color"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:paddingTop="@dimen/quickcontact_suggestion_card_image_spacing"
+            android:paddingBottom="@dimen/quickcontact_suggestion_card_image_spacing"
+            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <TextView
+            android:id="@+id/expand_suggestion_card_help"
+            android:textSize="@dimen/expanding_entry_card_title_text_size"
+            android:text="@string/suggestion_card_help_message"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/quickcontact_entry_header_text_color"
+            android:paddingBottom="@dimen/quickcontact_suggestion_card_image_spacing"
+            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"
+            android:paddingEnd="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <TextView
+            android:id="@+id/expand_suggestion_card_this_contact"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:text="@string/suggestion_card_this_contact_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/quickcontact_entry_sub_header_text_color"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <LinearLayout
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:layout_marginTop="@dimen/quickcontact_suggestion_card_layout_margin"
+            android:layout_marginBottom="@dimen/quickcontact_suggestion_card_layout_margin"
+            android:orientation="horizontal">
+
+            <ImageView
+                android:id="@+id/suggestion_icon"
+                android:layout_width="@dimen/quickcontact_suggestion_card_icon_height"
+                android:layout_height="@dimen/quickcontact_suggestion_card_icon_width"
+                android:layout_gravity="center_vertical"
+                android:layout_marginStart="@dimen/quickcontact_suggestion_card_image_spacing"
+                android:scaleType="fitCenter" />
+
+            <TextView
+                    android:id="@+id/suggestion_for_name"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:textColor="@color/quickcontact_entry_header_text_color"
+                    android:singleLine="true"
+                    android:ellipsize="end"
+                    android:layout_marginStart="@dimen/expanding_entry_card_item_image_spacing"
+                    android:layout_marginEnd="@dimen/expanding_entry_card_item_image_spacing"/>
+
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/expand_suggestion_card_duplicates_title"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:text="@string/suggestion_card_duplicates_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textColor="@color/quickcontact_entry_sub_header_text_color"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"/>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:id="@+id/suggestion_list"
+            android:animateLayoutChanges="true"
+            android:orientation="vertical" />
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|end"
+            android:orientation="horizontal">
+
+            <Button
+                android:id="@+id/cancel_button"
+                style="?android:attr/buttonBarButtonStyle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/quickcontact_suggestion_cancel_button"/>
+
+            <Button
+                android:id="@+id/link_button"
+                style="?android:attr/buttonBarButtonStyle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/quickcontact_suggestion_link_button"
+                android:paddingEnd="@dimen/quickcontact_suggestion_card_image_spacing"/>
+        </LinearLayout>
+    </LinearLayout>
+</android.support.v7.widget.CardView>
\ No newline at end of file
diff --git a/res/layout/quickcontact_suggestion_card.xml b/res/layout/quickcontact_suggestion_card.xml
deleted file mode 100644
index 1419bc8..0000000
--- a/res/layout/quickcontact_suggestion_card.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 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.
--->
-
-<!--
-  Layout for the suggestion card in QuickContact.
--->
-<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:card_view="http://schemas.android.com/apk/res-auto"
-    style="@style/ExpandingEntryCardStyle"
-    android:layout_height="wrap_content"
-    android:layout_width="match_parent"
-    android:visibility="gone"
-    android:id="@+id/suggestion_card_view">
-
-    <LinearLayout
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:orientation="vertical">
-
-        <LinearLayout
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:layout_marginTop="@dimen/quickcontact_suggestion_card_layout_margin"
-            android:layout_marginBottom="@dimen/quickcontact_suggestion_card_layout_margin"
-            android:orientation="horizontal">
-
-            <ImageView
-                android:id="@+id/suggestion_icon"
-                android:layout_width="@dimen/quickcontact_suggestion_card_icon_height"
-                android:layout_height="@dimen/quickcontact_suggestion_card_icon_width"
-                android:layout_gravity="center_vertical"
-                android:layout_marginStart="@dimen/quickcontact_suggestion_card_image_spacing"
-                android:scaleType="fitCenter" />
-
-            <LinearLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:orientation="vertical"
-                android:layout_gravity="center_vertical"
-                android:layout_weight="1"
-                android:layout_toEndOf="@+id/line_vertical_separator"
-                android:layout_marginStart="@dimen/expanding_entry_card_item_image_spacing"
-                android:layout_marginEnd="@dimen/expanding_entry_card_item_image_spacing">
-
-                <TextView
-                    android:id="@+id/suggestion_for_name"
-                    android:textSize="@dimen/expanding_entry_card_title_text_size"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:textColor="@color/quickcontact_entry_header_text_color"
-                    android:singleLine="true"
-                    android:ellipsize="end"
-                    android:textAlignment="viewStart"/>
-
-                <TextView
-                    android:id="@+id/suggestion_number"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:textAlignment="viewStart"
-                    android:singleLine="true"
-                    android:ellipsize="end"
-                    android:textColor="@color/quickcontact_entry_sub_header_text_color" />
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/suggestion_summary"
-                    android:textAlignment="viewStart"
-                    android:singleLine="true"
-                    android:ellipsize="end"
-                    android:textColor="@color/quickcontact_entry_sub_header_text_color" />
-            </LinearLayout>
-
-            <View
-                android:id="@+id/line_vertical_separator"
-                android:layout_width="@dimen/divider_line_height"
-                android:layout_height="match_parent"
-                android:layout_toEndOf="@+id/expand_suggestion_button"
-                android:background="@color/divider_line_color_light"/>
-
-            <ImageView
-                android:id="@+id/expand_suggestion_button"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_vertical|end"
-                android:layout_alignParentEnd="true"
-                android:paddingStart="@dimen/editor_round_button_padding_left"
-                android:paddingEnd="@dimen/editor_round_button_padding_right"
-                android:paddingTop="@dimen/editor_round_button_padding_top"
-                android:paddingBottom="@dimen/editor_round_button_padding_bottom"/>
-
-        </LinearLayout>
-
-        <View
-            android:id="@+id/title_separator"
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/divider_line_height"
-            android:paddingTop="@dimen/editor_round_button_padding_top"
-            android:background="@color/divider_line_color_light"/>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:id="@+id/suggestion_list"
-            android:animateLayoutChanges="true"
-            android:orientation="vertical" />
-
-        <View
-            android:id="@+id/title_separator2"
-            android:layout_width="match_parent"
-            android:layout_height="@dimen/divider_line_height"
-            android:background="@color/divider_line_color_light"
-            android:visibility="gone"/>
-
-        <Button
-            android:id="@+id/link_button"
-            style="?android:attr/buttonBarButtonStyle"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/quickcontact_suggestion_link_button"
-            android:textColor="@color/quickcontact_entry_sub_header_text_color"
-            android:paddingStart="@dimen/quickcontact_suggestion_card_image_spacing"/>
-    </LinearLayout>
-</android.support.v7.widget.CardView>
\ No newline at end of file
diff --git a/res/layout/quickcontact_suggestion_contact_item.xml b/res/layout/quickcontact_suggestion_contact_item.xml
index 76792f8..e7c5af6 100644
--- a/res/layout/quickcontact_suggestion_contact_item.xml
+++ b/res/layout/quickcontact_suggestion_contact_item.xml
@@ -30,6 +30,7 @@
         android:layout_gravity="center_vertical" />
 
     <LinearLayout
+        android:id="@+id/suggestion_contact_item"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="@dimen/expanding_entry_card_item_image_spacing"
@@ -41,22 +42,20 @@
             android:id="@+id/aggregation_suggestion_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textSize="@dimen/expanding_entry_card_title_text_size"
-            android:textColor="@color/quickcontact_entry_sub_header_text_color"
             android:layout_marginTop="@dimen/quickcontact_suggestion_card_layout_margin"
             android:singleLine="true"
             android:ellipsize="end"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textColor="@color/quickcontact_entry_header_text_color" />
 
         <TextView
-            android:id="@+id/aggregation_suggestion_account_type"
+            android:id="@+id/aggregation_suggestion_account_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textAppearance="?android:attr/textAppearanceSmall"
             android:layout_marginBottom="@dimen/quickcontact_suggestion_card_layout_margin"
             android:singleLine="true"
-            android:ellipsize="end"
-            android:textColor="@color/quickcontact_entry_sub_header_text_color" />
+            android:ellipsize="end" />
 
     </LinearLayout>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4454306..e440ab5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -768,12 +768,21 @@
     <string name="quick_contact_display_name_with_phonetic"><xliff:g id="display_name">%s</xliff:g> (<xliff:g id="phonetic_name">%s</xliff:g>)</string>
 
     <!-- Button used in quick contact suggestion card to link selected contacts. [CHAR LIMIT=30]-->
-    <string name="quickcontact_suggestion_link_button">Link</string>
+    <string name="quickcontact_suggestion_link_button">LINK CONTACTS</string>
+
+    <!-- Button used in quick contact suggestion card to collapse suggestion card. [CHAR LIMIT=30]-->
+    <string name="quickcontact_suggestion_cancel_button">CANCEL</string>
+
+    <!-- Suggestion card title in quick contact UI [CHAR LIMIT=100] -->
+    <plurals name="quickcontact_suggestion_card_title">
+        <item quantity="one">1 Duplicate Detected</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> Duplicates Detected</item>
+    </plurals>
 
     <!-- Suggestions number in quick contact suggestion card [CHAR LIMIT=60] -->
     <plurals name="quickcontact_suggestions_number">
-        <item quantity="one">1 suggested contact</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> suggested contacts</item>
+        <item quantity="one">1 linked contact</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> linked contacts</item>
     </plurals>
 
     <!-- Account type number for suggestions in quick contact suggestion card [CHAR LIMIT=30]-->
@@ -787,4 +796,13 @@
 
     <!-- Linked contacts title showing in contact editor UI. [CHAR LIMIT=30]-->
     <string name="compact_editor_linked_contacts_title">Linked contacts</string>
+
+    <!-- "This contact" title showing in suggestion card in Quick contact. [CHAR LIMIT=30]-->
+    <string name="suggestion_card_this_contact_title">This contact</string>
+
+    <!-- "Duplicates" title showing in suggestion card in Quick contact. [CHAR LIMIT=30]-->
+    <string name="suggestion_card_duplicates_title">Duplicates</string>
+
+    <!-- Help message showing in suggestion card in Quick contact. [CHAR LIMIT=500]-->
+    <string name="suggestion_card_help_message">Clean up duplicate contacts to see all info in one place. For more details on a contact tap on the avatar. You can always change the profile photo or separate contacts at anytime.</string>
 </resources>
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 2f37387..d501e77 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -200,6 +200,8 @@
     private static final String KEY_THEME_COLOR = "theme_color";
     private static final String KEY_IS_SUGGESTION_LIST_COLLAPSED = "is_suggestion_list_collapsed";
     private static final String KEY_SELECTED_SUGGESTION_CONTACTS = "selected_suggestion_contacts";
+    private static final String KEY_PREVIOUS_CONTACT_ID = "previous_contact_id";
+    private static final String KEY_SUGGESTIONS_AUTO_SELECTED = "suggestions_auto_seleted";
 
     private static final int ANIMATION_STATUS_BAR_COLOR_CHANGE_DURATION = 150;
     private static final int REQUEST_CODE_CONTACT_EDITOR_ACTIVITY = 1;
@@ -245,17 +247,19 @@
     private ExpandingEntryCardView mAboutCard;
 
     // Suggestion card.
-    private CardView mSuggestionCardView;
+    private CardView mCollapsedSuggestionCardView;
+    private CardView mExpandSuggestionCardView;
+    private View mCollapasedSuggestionHeader;
+    private TextView mCollapsedSuggestionCardTitle;
+    private TextView mExpandSuggestionCardTitle;
     private ImageView mSuggestionSummaryPhoto;
     private TextView mSuggestionForName;
-    private TextView mSuggestionNumber;
-    private TextView mSuggestionSummary;
-    private ImageView mSuggestionExpansionButton;
     private LinearLayout mSuggestionList;
-    private View mSuggestionSeparator;
+    private Button mSuggestionsCancelButton;
     private Button mSuggestionsLinkButton;
     private boolean mIsSuggestionListCollapsed;
-    private long mPreviousSuggestionForContactId = 0;
+    private boolean mSuggestionsShouldAutoSelected = true;
+    private long mPreviousContactId = 0;
 
     private MultiShrinkScroller mScroller;
     private SelectAccountDialogFragmentListener mSelectAccountFragmentListener;
@@ -483,36 +487,34 @@
     @Override
     public void onAggregationSuggestionChange() {
         mSuggestions = mAggregationSuggestionEngine.getSuggestions();
-        mSuggestionCardView.setVisibility(View.GONE);
+        mCollapsedSuggestionCardView.setVisibility(View.GONE);
+        mExpandSuggestionCardView.setVisibility(View.GONE);
         mSuggestionList.removeAllViews();
 
         final String suggestionForName = mContactData.getDisplayName();
         final int suggestionNumber = mSuggestions.size();
-        final String suggestionSummary = getSuggestionAccountSummary(mSuggestions);
 
         if (suggestionNumber <= 0) {
             mSelectedAggregationIds.clear();
             return;
         }
 
-        mSuggestionCardView.setVisibility(View.VISIBLE);
-
-        // Take the first suggestion 's photo as the summary photo.
-        // TODO: take all suggestions' photos.
-        final Suggestion firstSuggestion = mSuggestions.get(0);
-        if (firstSuggestion.photo != null) {
+        final byte[] photoBytes = mContactData.getThumbnailPhotoBinaryData();
+        if (photoBytes != null) {
             mSuggestionSummaryPhoto.setImageBitmap(BitmapFactory.decodeByteArray(
-                    firstSuggestion.photo, 0, firstSuggestion.photo.length));
+                    photoBytes, 0, photoBytes.length));
         } else {
             mSuggestionSummaryPhoto.setImageDrawable(
                     ContactPhotoManager.getDefaultAvatarDrawableForContact(
                             getResources(), false, null));
         }
 
+        final String suggestionTitle = getResources().getQuantityString(
+                R.plurals.quickcontact_suggestion_card_title, suggestionNumber, suggestionNumber);
+        mCollapsedSuggestionCardTitle.setText(suggestionTitle);
+        mExpandSuggestionCardTitle.setText(suggestionTitle);
+
         mSuggestionForName.setText(suggestionForName);
-        mSuggestionNumber.setText(getResources().getQuantityString(
-                R.plurals.quickcontact_suggestions_number, suggestionNumber, suggestionNumber));
-        mSuggestionSummary.setText(suggestionSummary);
 
         final Set<Long> suggestionContactIds = new HashSet<>();
         for (Suggestion suggestion : mSuggestions) {
@@ -520,77 +522,31 @@
             suggestionContactIds.add(suggestion.contactId);
         }
 
+        if (mIsSuggestionListCollapsed) {
+            collapseSuggestionList();
+        } else {
+            expandSuggestionList();
+        }
+
         // Remove contact Ids that are not suggestions.
         final Set<Long> selectedSuggestionIds = com.google.common.collect.Sets.intersection(
                 mSelectedAggregationIds, suggestionContactIds);
         mSelectedAggregationIds = new TreeSet<>(selectedSuggestionIds);
-
-        mSuggestionExpansionButton.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                if (mIsSuggestionListCollapsed) {
-                    expandSuggestionList();
-                } else {
-                    collapseSuggestionList();
-                }
-            }
-        });
     }
 
     private void collapseSuggestionList() {
-        mSuggestionList.setVisibility(View.GONE);
-        mSuggestionSeparator.setVisibility(View.GONE);
-        mSuggestionExpansionButton.setImageResource(
-                R.drawable.ic_menu_expander_minimized_holo_light);
+        mCollapsedSuggestionCardView.setVisibility(View.VISIBLE);
+        mExpandSuggestionCardView.setVisibility(View.GONE);
         mIsSuggestionListCollapsed = true;
     }
 
     private void expandSuggestionList() {
-        mSuggestionList.setVisibility(View.VISIBLE);
-        mSuggestionSeparator.setVisibility(View.VISIBLE);
-        mSuggestionExpansionButton.setImageResource(
-                R.drawable.ic_menu_expander_maximized_holo_light);
+        mCollapsedSuggestionCardView.setVisibility(View.GONE);
+        mExpandSuggestionCardView.setVisibility(View.VISIBLE);
         mIsSuggestionListCollapsed = false;
     }
-    /**
-     * Return summary like "Google(2),LinkedIn" for 3 suggestions.
-     */
-    private String getSuggestionAccountSummary(List<Suggestion> suggestions) {
-        Map<String, Integer> accountTypeMap = new HashMap<String, Integer>();
-        for (Suggestion suggestion : suggestions) {
-            final com.android.contacts.editor.AggregationSuggestionEngine.RawContact rawContact =
-                    suggestion.rawContacts.get(0);
-            final String displayAccountType = getDisplayAccountType(
-                    rawContact.accountType, rawContact.dataSet);
-            if (accountTypeMap.containsKey(displayAccountType)) {
-                int count = accountTypeMap.get(displayAccountType);
-                count++;
-                accountTypeMap.put(displayAccountType, count);
-            } else {
-                accountTypeMap.put(displayAccountType, 1);
-            }
-        }
 
-        final Set<String> accountTypeWithNumber = new HashSet<>();
-        for (String accountType : accountTypeMap.keySet()) {
-            final String number = getResources().getQuantityString(
-                    R.plurals.quickcontact_suggestion_account_type_number,
-                    accountTypeMap.get(accountType),
-                    accountTypeMap.get(accountType));
-            accountTypeWithNumber.add(getResources().getString(
-                    R.string.quickcontact_suggestion_account_type, accountType, number));
-        }
-        return TextUtils.join(",", accountTypeWithNumber);
-    }
-
-    private String getDisplayAccountType(String accountTypeString, String dataSet) {
-        final AccountTypeManager accountTypeManager = AccountTypeManager.getInstance(this);
-        final AccountType accountType = accountTypeManager.getAccountType(
-                accountTypeString, dataSet);
-        return accountType.getDisplayLabel(this).toString();
-    }
-
-    private View inflateSuggestionListView(Suggestion suggestion) {
+    private View inflateSuggestionListView(final Suggestion suggestion) {
         final LayoutInflater layoutInflater = LayoutInflater.from(this);
         final View suggestionView = layoutInflater.inflate(
                 R.layout.quickcontact_suggestion_contact_item, null);
@@ -608,17 +564,21 @@
         final TextView name = (TextView) suggestionView.findViewById(R.id.aggregation_suggestion_name);
         name.setText(suggestion.name);
 
-        final TextView accountTypeView = (TextView) suggestionView.findViewById(
-                R.id.aggregation_suggestion_account_type);
-        final String accountTypeString = suggestion.rawContacts.get(0).accountType;
-        final String dataSet = suggestion.rawContacts.get(0).dataSet;
-        final String displayAccountType = getDisplayAccountType(accountTypeString, dataSet);
-        if (!TextUtils.isEmpty(displayAccountType)) {
-            accountTypeView.setText(displayAccountType);
+        final TextView accountNameView = (TextView) suggestionView.findViewById(
+                R.id.aggregation_suggestion_account_name);
+        final String accountName = suggestion.rawContacts.get(0).accountName;
+        if (!TextUtils.isEmpty(accountName)) {
+            accountNameView.setText("From " + accountName);
+        } else {
+            accountNameView.setVisibility(View.GONE);
         }
 
         final CheckBox checkbox = (CheckBox) suggestionView.findViewById(R.id.suggestion_checkbox);
-        checkbox.setChecked(mSelectedAggregationIds.contains(suggestion.contactId));
+        checkbox.setChecked(mSuggestionsShouldAutoSelected ||
+                mSelectedAggregationIds.contains(suggestion.contactId));
+        if (checkbox.isChecked()) {
+            mSelectedAggregationIds.add(suggestion.contactId);
+        }
         checkbox.setTag(suggestion.contactId);
         checkbox.setOnClickListener(new OnClickListener() {
             @Override
@@ -629,9 +589,11 @@
                     mSelectedAggregationIds.add(contactId);
                 } else {
                     mSelectedAggregationIds.remove(contactId);
+                    mSuggestionsShouldAutoSelected = false;
                 }
             }
         });
+
         return suggestionView;
     }
 
@@ -908,18 +870,23 @@
         mRecentCard = (ExpandingEntryCardView) findViewById(R.id.recent_card);
         mAboutCard = (ExpandingEntryCardView) findViewById(R.id.about_card);
 
-        mSuggestionCardView = (CardView) findViewById(R.id.suggestion_card_view);
+        mCollapsedSuggestionCardView = (CardView) findViewById(R.id.collapsed_suggestion_card);
+        mExpandSuggestionCardView = (CardView) findViewById(R.id.expand_suggestion_card);
+        mCollapasedSuggestionHeader = findViewById(R.id.collapsed_suggestion_header);
+        mCollapsedSuggestionCardTitle = (TextView) findViewById(
+                R.id.collapsed_suggestion_card_title);
+        mExpandSuggestionCardTitle = (TextView) findViewById(R.id.expand_suggestion_card_title);
         mSuggestionSummaryPhoto = (ImageView) findViewById(R.id.suggestion_icon);
         mSuggestionForName = (TextView) findViewById(R.id.suggestion_for_name);
-        mSuggestionNumber = (TextView) findViewById(R.id.suggestion_number);
-        mSuggestionSummary = (TextView) findViewById(R.id.suggestion_summary);
-        mSuggestionExpansionButton = (ImageView) findViewById(R.id.expand_suggestion_button);
-        mSuggestionSeparator = findViewById(R.id.title_separator2);
         mSuggestionList = (LinearLayout) findViewById(R.id.suggestion_list);
+        mSuggestionsCancelButton= (Button) findViewById(R.id.cancel_button);
         mSuggestionsLinkButton = (Button) findViewById(R.id.link_button);
         if (savedInstanceState != null) {
             mIsSuggestionListCollapsed = savedInstanceState.getBoolean(
                     KEY_IS_SUGGESTION_LIST_COLLAPSED, true);
+            mPreviousContactId = savedInstanceState.getLong(KEY_PREVIOUS_CONTACT_ID);
+            mSuggestionsShouldAutoSelected = savedInstanceState.getBoolean(
+                    KEY_SUGGESTIONS_AUTO_SELECTED, true);
             mSelectedAggregationIds = (TreeSet<Long>)
                     savedInstanceState.getSerializable(KEY_SELECTED_SUGGESTION_CONTACTS);
         } else {
@@ -927,7 +894,25 @@
             mSelectedAggregationIds.clear();
         }
 
-        mSuggestionExpansionButton.setClickable(true);
+        mCollapasedSuggestionHeader.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                mCollapsedSuggestionCardView.setVisibility(View.GONE);
+                mExpandSuggestionCardView.setVisibility(View.VISIBLE);
+                mIsSuggestionListCollapsed = false;
+                mSuggestionsShouldAutoSelected = true;
+            }
+        });
+
+        mSuggestionsCancelButton.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                mCollapsedSuggestionCardView.setVisibility(View.VISIBLE);
+                mExpandSuggestionCardView.setVisibility(View.GONE);
+                mIsSuggestionListCollapsed = true;
+            }
+        });
+
         mSuggestionsLinkButton.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
@@ -1070,6 +1055,9 @@
             savedInstanceState.putInt(KEY_THEME_COLOR, mColorFilterColor);
         }
         savedInstanceState.putBoolean(KEY_IS_SUGGESTION_LIST_COLLAPSED, mIsSuggestionListCollapsed);
+        savedInstanceState.putLong(KEY_PREVIOUS_CONTACT_ID, mPreviousContactId);
+        savedInstanceState.putBoolean(
+                KEY_SUGGESTIONS_AUTO_SELECTED, mSuggestionsShouldAutoSelected);
         savedInstanceState.putSerializable(
                 KEY_SELECTED_SUGGESTION_CONTACTS, mSelectedAggregationIds);
     }
@@ -1316,13 +1304,10 @@
 
     private void populateSuggestionCard() {
         // Initialize suggestion related view and data.
-        if (mIsSuggestionListCollapsed) {
-            collapseSuggestionList();
-        } else {
-            expandSuggestionList();
-        }
-        if (mPreviousSuggestionForContactId != mContactData.getId()) {
-            mSuggestionCardView.setVisibility(View.GONE);
+        if (mPreviousContactId != mContactData.getId()) {
+            mCollapsedSuggestionCardView.setVisibility(View.GONE);
+            mExpandSuggestionCardView.setVisibility(View.GONE);
+            mIsSuggestionListCollapsed = true;
             mSuggestionList.removeAllViews();
         }
 
@@ -1335,12 +1320,12 @@
         }
 
         mAggregationSuggestionEngine.setContactId(mContactData.getId());
-        if (mPreviousSuggestionForContactId != 0
-                && mPreviousSuggestionForContactId != mContactData.getId()) {
+        if (mPreviousContactId != 0
+                && mPreviousContactId != mContactData.getId()) {
             // Clear selected Ids when listing suggestions for new contact Id.
             mSelectedAggregationIds.clear();
         }
-        mPreviousSuggestionForContactId = mContactData.getId();
+        mPreviousContactId = mContactData.getId();
 
         // Trigger suggestion engine to compute suggestions.
         final ContentValues values = new ContentValues();
