diff --git a/res/layout-sw580dp/people_activity.xml b/res/layout-sw580dp/people_activity.xml
index 969bbf9..6d702e7 100644
--- a/res/layout-sw580dp/people_activity.xml
+++ b/res/layout-sw580dp/people_activity.xml
@@ -28,6 +28,7 @@
         android:splitMotionEvents="true">
 
         <LinearLayout
+            android:id="@+id/browse_view"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:orientation="vertical"
@@ -36,40 +37,33 @@
             ex:layout_narrowWidth="310dip"
             ex:layout_wideParentWidth="1280dip"
             ex:layout_wideWidth="430dip"
-            android:background="@drawable/list_background_holo">
+            android:background="@drawable/list_background_holo"
+            android:visibility="gone">
 
             <View
                 style="@style/SectionDivider"
                 android:layout_marginLeft="40dip"
                 android:layout_marginTop="24dip" />
 
-            <!-- Favorites -->
-            <fragment
-                android:id="@+id/favorites_fragment"
-                class="com.android.contacts.list.StrequentContactListFragment"
-                android:layout_height="match_parent"
-                android:layout_width="match_parent" />
-
             <!-- Contacts -->
             <fragment
                 android:id="@+id/contacts_fragment"
                 class="com.android.contacts.list.DefaultContactBrowseListFragment"
                 android:layout_height="0dip"
                 android:layout_width="match_parent"
-                android:layout_weight="1"
-            />
+                android:layout_weight="1" />
 
             <!-- Groups -->
             <fragment
                 android:id="@+id/groups_fragment"
                 class="com.android.contacts.group.GroupBrowseListFragment"
                 android:layout_height="match_parent"
-                android:layout_width="match_parent"
-            />
+                android:layout_width="match_parent" />
         </LinearLayout>
 
         <view
             class="com.android.contacts.widget.TransitionAnimationView"
+            android:id="@+id/details_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             ex:layout_narrowParentWidth="800dip"
@@ -82,19 +76,61 @@
             ex:clipMarginBottom="9dip"
             ex:enterAnimation="@android:animator/fade_in"
             ex:exitAnimation="@android:animator/fade_out"
-            ex:animationDuration="200">
+            ex:animationDuration="200"
+            android:visibility="gone">
+
             <fragment
                 android:id="@+id/contact_detail_fragment"
                 class="com.android.contacts.detail.ContactDetailFragment"
                 android:layout_width="match_parent"
-                android:layout_height="match_parent"
-            />
+                android:layout_height="match_parent" />
             <fragment
                 android:id="@+id/group_detail_fragment"
                 class="com.android.contacts.group.GroupDetailFragment"
                 android:layout_width="match_parent"
+                android:layout_height="match_parent" />
+        </view>
+
+        <view
+            class="com.android.contacts.widget.TransitionAnimationView"
+            android:id="@+id/favorites_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            ex:layout_narrowParentWidth="800dip"
+            ex:layout_narrowMarginRight="0dip"
+            ex:layout_wideParentWidth="1280dip"
+            ex:layout_wideMarginRight="48dip"
+            ex:clipMarginLeft="0dip"
+            ex:clipMarginTop="3dip"
+            ex:clipMarginRight="3dip"
+            ex:clipMarginBottom="9dip"
+            ex:enterAnimation="@android:animator/fade_in"
+            ex:exitAnimation="@android:animator/fade_out"
+            ex:animationDuration="200"
+            android:paddingTop="32dip"
+            android:paddingRight="32dip">
+
+            <LinearLayout
+                android:layout_width="match_parent"
                 android:layout_height="match_parent"
-            />
+                android:background="@drawable/list_background_holo">
+
+                <!-- Starred -->
+                <fragment
+                    android:id="@+id/favorites_fragment"
+                    class="com.android.contacts.list.StrequentContactListFragment"
+                    android:layout_height="match_parent"
+                    android:layout_width="0dip"
+                    android:layout_weight="2" />
+
+                <!-- Most Frequent -->
+                <fragment
+                    android:id="@+id/frequent_fragment"
+                    class="com.android.contacts.list.StrequentContactListFragment"
+                    android:layout_height="match_parent"
+                    android:layout_width="0dip"
+                    android:layout_weight="1" />
+            </LinearLayout>
         </view>
 
     </com.android.contacts.widget.InterpolatingLayout>
diff --git a/res/layout/contact_tile_regular.xml b/res/layout/contact_tile_regular.xml
index c931e97..0c02318 100644
--- a/res/layout/contact_tile_regular.xml
+++ b/res/layout/contact_tile_regular.xml
@@ -17,7 +17,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     class="com.android.contacts.list.ContactTileView"
     android:focusable="true"
-    android:padding="1dip"
+    android:padding="1px"
     android:background="@drawable/list_selector" >
 
     <RelativeLayout
@@ -30,15 +30,27 @@
             android:layout_height="match_parent"
             android:scaleType="centerCrop" />
 
+        <View
+            android:id="@+id/contact_tile_background"
+            android:layout_width="match_parent"
+            android:layout_height="48dip"
+            android:layout_alignParentBottom="true"
+            android:layout_alignParentLeft="true"
+            android:alpha="0.5"
+            android:background="@android:color/black" />
+
         <TextView
             android:id="@+id/contact_tile_name"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_height="48dip"
             android:layout_alignParentBottom="true"
-            android:background="@color/contact_tile_regular_text"
-            android:textColor="@color/contact_tile_regular_text_background"
-            android:textSize="17sp"
-            android:alpha="0.7" />
+            android:layout_alignParentLeft="true"
+            android:gravity="center_vertical"
+            android:paddingLeft="8dip"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:textColor="@android:color/white"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
 
     </RelativeLayout>
 
diff --git a/res/layout/contact_tile_single.xml b/res/layout/contact_tile_single.xml
index e1bdccc..7147f3c 100644
--- a/res/layout/contact_tile_single.xml
+++ b/res/layout/contact_tile_single.xml
@@ -31,7 +31,9 @@
             android:layout_height="fill_parent"
             android:layout_weight="1"
             android:textSize="18sp"
-            android:textColor="#333333"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:textAppearance="?android:attr/textAppearanceMedium"
             android:paddingTop="24dip" />
 
         <ImageView
diff --git a/res/layout/favorites_star.xml b/res/layout/favorites_star.xml
new file mode 100644
index 0000000..f2afa31
--- /dev/null
+++ b/res/layout/favorites_star.xml
@@ -0,0 +1,31 @@
+<?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:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:paddingLeft="10dip"
+    android:paddingRight="10dip">
+    <CheckBox
+        android:id="@+id/star"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:contentDescription="@string/description_star"
+        android:visibility="invisible"
+        style="?android:attr/starStyle"/>
+</FrameLayout>
\ No newline at end of file
diff --git a/res/menu/star.xml b/res/menu/star.xml
new file mode 100644
index 0000000..904adbf
--- /dev/null
+++ b/res/menu/star.xml
@@ -0,0 +1,21 @@
+<?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_star"
+        android:showAsAction="always" />
+</menu>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 60873b1..9d726e2 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -51,8 +51,4 @@
 
     <!-- Color of the background of the tabs on the contact detail page -->
     <color name="detail_tab_background">#DBDBDB</color>
-
-    <!--  Color of the text foreground and background of Regular Sized ContactTile -->
-    <color name="contact_tile_regular_text">#2B1B17</color>
-    <color name="contact_tile_regular_text_background">#FFFFFF</color>
 </resources>
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index c62084b..e216d54 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -22,6 +22,7 @@
 import com.android.contacts.ContactsSearchManager;
 import com.android.contacts.R;
 import com.android.contacts.detail.ContactDetailAboutFragment;
+import com.android.contacts.detail.ContactDetailDisplayUtils;
 import com.android.contacts.detail.ContactDetailFragment;
 import com.android.contacts.detail.ContactDetailFragmentCarousel;
 import com.android.contacts.detail.ContactDetailTabCarousel;
@@ -42,9 +43,15 @@
 import android.support.v4.view.ViewPager.OnPageChangeListener;
 import android.util.Log;
 import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
 import android.widget.AbsListView;
 import android.widget.AbsListView.OnScrollListener;
+import android.widget.CheckBox;
 import android.widget.Toast;
 
 import java.util.ArrayList;
@@ -54,6 +61,9 @@
 
     public static final int FRAGMENT_COUNT = 2;
 
+    private ContactLoader.Result mContactData;
+    private Uri mLookupUri;
+
     private ContactDetailAboutFragment mAboutFragment;
     private ContactDetailUpdatesFragment mUpdatesFragment;
 
@@ -129,6 +139,40 @@
     }
 
     @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        super.onCreateOptionsMenu(menu);
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.star, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        MenuItem starredMenuItem = menu.findItem(R.id.menu_star);
+        ViewGroup starredContainer = (ViewGroup) getLayoutInflater().inflate(
+                R.layout.favorites_star, null, false);
+        final CheckBox starredView = (CheckBox) starredContainer.findViewById(R.id.star);
+        starredView.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                // Toggle "starred" state
+                // Make sure there is a contact
+                if (mLookupUri != null) {
+                    Intent intent = ContactSaveService.createSetStarredIntent(
+                            ContactDetailActivity.this, mLookupUri, starredView.isChecked());
+                    ContactDetailActivity.this.startService(intent);
+                }
+            }
+        });
+        // If there is contact data, update the starred state
+        if (mContactData != null) {
+            ContactDetailDisplayUtils.setStarred(mContactData, starredView);
+        }
+        starredMenuItem.setActionView(starredContainer);
+        return true;
+    }
+
+    @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         FragmentKeyListener mCurrentFragment;
         switch (getCurrentPage()) {
@@ -165,6 +209,12 @@
 
         @Override
         public void onDetailsLoaded(ContactLoader.Result result) {
+            if (result == null) {
+                return;
+            }
+            mContactData = result;
+            mLookupUri = result.getLookupUri();
+            invalidateOptionsMenu();
             if (mTabCarousel != null) {
                 mTabCarousel.loadData(result);
             }
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 548faa2..e373a6b 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -32,6 +32,7 @@
 import com.android.contacts.list.ContactEntryListFragment;
 import com.android.contacts.list.ContactListFilter;
 import com.android.contacts.list.ContactListFilterController;
+import com.android.contacts.list.ContactTileAdapter.DisplayType;
 import com.android.contacts.list.ContactsIntentResolver;
 import com.android.contacts.list.ContactsRequest;
 import com.android.contacts.list.ContactsUnavailableFragment;
@@ -53,7 +54,6 @@
 import android.app.ActionBar.Tab;
 import android.app.ActionBar.TabListener;
 import android.app.Activity;
-import android.app.Dialog;
 import android.app.Fragment;
 import android.app.FragmentManager;
 import android.app.FragmentTransaction;
@@ -93,6 +93,7 @@
     private static final int SUBACTIVITY_NEW_CONTACT = 2;
     private static final int SUBACTIVITY_EDIT_CONTACT = 3;
     private static final int SUBACTIVITY_CUSTOMIZE_FILTER = 4;
+    private static final int FAVORITES_COLUMN_COUNT = 4;
 
     private static final String KEY_SEARCH_MODE = "searchMode";
 
@@ -134,8 +135,13 @@
 
     private DefaultContactBrowseListFragment mContactsFragment;
     private StrequentContactListFragment mFavoritesFragment;
+    private StrequentContactListFragment mFrequentFragment;
     private GroupBrowseListFragment mGroupsFragment;
 
+    private View mFavoritesView;
+    private View mBrowserView;
+    private View mDetailsView;
+
     private enum TabState {
         FAVORITES, CONTACTS, GROUPS
     }
@@ -182,6 +188,8 @@
         } else if (fragment instanceof StrequentContactListFragment) {
             mFavoritesFragment = (StrequentContactListFragment) fragment;
             mFavoritesFragment.setListener(mFavoritesFragmentListener);
+            mFavoritesFragment.setColumnCount(FAVORITES_COLUMN_COUNT);
+            mFavoritesFragment.setDisplayType(DisplayType.STARRED_ONLY);
         }
     }
 
@@ -218,19 +226,27 @@
         if (createContentView) {
             setContentView(R.layout.people_activity);
 
+            mFavoritesView = findViewById(R.id.favorites_view);
+            mDetailsView = findViewById(R.id.details_view);
+            mBrowserView = findViewById(R.id.browse_view);
+
             final FragmentManager fragmentManager = getFragmentManager();
             mFavoritesFragment = (StrequentContactListFragment) fragmentManager
                     .findFragmentById(R.id.favorites_fragment);
+            mFrequentFragment = (StrequentContactListFragment) fragmentManager
+                    .findFragmentById(R.id.frequent_fragment);
             mContactsFragment = (DefaultContactBrowseListFragment) fragmentManager
                     .findFragmentById(R.id.contacts_fragment);
             mGroupsFragment = (GroupBrowseListFragment) fragmentManager
                     .findFragmentById(R.id.groups_fragment);
-
             // Hide all tabs (the current tab will later be reshown once a tab is selected)
             final FragmentTransaction transaction = fragmentManager.beginTransaction();
-            transaction.hide(mFavoritesFragment);
             transaction.hide(mContactsFragment);
             transaction.hide(mGroupsFragment);
+
+            if (mFrequentFragment != null) {
+                mFrequentFragment.setDisplayType(DisplayType.FREQUENT_ONLY);
+            }
             if (mContactDetailFragment != null) {
                 transaction.hide(mContactDetailFragment);
             }
@@ -261,7 +277,7 @@
             Tab favoritesTab = actionBar.newTab();
             favoritesTab.setText(getString(R.string.strequentList));
             favoritesTab.setTabListener(new TabChangeListener(mFavoritesFragment,
-                    mContactDetailFragment, TabState.FAVORITES));
+                    mFrequentFragment, TabState.FAVORITES));
             actionBar.addTab(favoritesTab);
 
             Tab peopleTab = actionBar.newTab();
@@ -333,6 +349,22 @@
 
     private void setSelectedTab(TabState tab) {
         mSelectedTab = tab;
+
+        if (mFrequentFragment != null) {
+            switch (mSelectedTab) {
+                case FAVORITES:
+                    mFavoritesView.setVisibility(View.VISIBLE);
+                    mBrowserView.setVisibility(View.GONE);
+                    mDetailsView.setVisibility(View.GONE);
+                    break;
+                case GROUPS:
+                case CONTACTS:
+                    mFavoritesView.setVisibility(View.GONE);
+                    mBrowserView.setVisibility(View.VISIBLE);
+                    mDetailsView.setVisibility(View.VISIBLE);
+                    break;
+            }
+        }
     }
 
     @Override
@@ -461,6 +493,9 @@
         switch (action) {
             case START_SEARCH_MODE:
                 // Bring the contact list fragment (and detail fragment if applicable) to the front
+                mFavoritesView.setVisibility(View.GONE);
+                mBrowserView.setVisibility(View.VISIBLE);
+                mDetailsView.setVisibility(View.VISIBLE);
                 FragmentTransaction ft = getFragmentManager().beginTransaction();
                 ft.show(mContactsFragment);
                 if (mContactDetailFragment != null) ft.show(mContactDetailFragment);
@@ -480,6 +515,7 @@
                     if (mContactDetailFragment != null) transaction.hide(mContactDetailFragment);
                     transaction.commit();
                 }
+                if (mSelectedTab != null) setSelectedTab(mSelectedTab);
                 break;
             case CHANGE_SEARCH_QUERY:
                 loadSearch(mActionBarAdapter.getQueryString());
diff --git a/src/com/android/contacts/detail/ContactDetailTabCarousel.java b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
index a12106f..b253b25 100644
--- a/src/com/android/contacts/detail/ContactDetailTabCarousel.java
+++ b/src/com/android/contacts/detail/ContactDetailTabCarousel.java
@@ -39,16 +39,13 @@
  * TODO: Create custom views for the tabs so their width can be programatically set as 2/3 of the
  * screen width.
  */
-public class ContactDetailTabCarousel extends HorizontalScrollView
-        implements View.OnClickListener, OnTouchListener {
+public class ContactDetailTabCarousel extends HorizontalScrollView implements OnTouchListener {
     private static final String TAG = "ContactDetailTabCarousel";
 
-    private CheckBox mStarredView;
     private ImageView mPhotoView;
     private TextView mStatusView;
     private TextView mStatusDateView;
 
-    private Uri mContactUri;
     private Listener mListener;
 
     private View[] mTabs = new View[2];
@@ -157,8 +154,6 @@
      * from the outside to fully setup the View
      */
     public void loadData(ContactLoader.Result contactData) {
-        mContactUri = contactData.getLookupUri();
-
         View aboutView = findViewById(R.id.tab_about);
         View updateView = findViewById(R.id.tab_update);
 
@@ -187,17 +182,14 @@
         mTabs[0] = aboutTab;
         mTabs[1] = updatesTab;
 
-        // Retrieve the photo and star views for the "about" tab
+        // Retrieve the photo view for the "about" tab
         mPhotoView = (ImageView) aboutView.findViewById(R.id.photo);
-        mStarredView = (CheckBox) aboutView.findViewById(R.id.star);
-        mStarredView.setOnClickListener(this);
 
         // Retrieve the social update views for the "updates" tab
         mStatusView = (TextView) updateView.findViewById(R.id.status);
         mStatusDateView = (TextView) updateView.findViewById(R.id.status_date);
 
         ContactDetailDisplayUtils.setPhoto(mContext, contactData, mPhotoView);
-        ContactDetailDisplayUtils.setStarred(contactData, mStarredView);
         ContactDetailDisplayUtils.setSocialSnippetAndDate(mContext, contactData, mStatusView,
                 mStatusDateView);
     }
@@ -209,23 +201,6 @@
         mListener = listener;
     }
 
-    // TODO: The starred icon needs to move to the action bar.
-    @Override
-    public void onClick(View view) {
-        switch (view.getId()) {
-            case R.id.star: {
-                // Toggle "starred" state
-                // Make sure there is a contact
-                if (mContactUri != null) {
-                    Intent intent = ContactSaveService.createSetStarredIntent(
-                            getContext(), mContactUri, mStarredView.isChecked());
-                    getContext().startService(intent);
-                }
-                break;
-            }
-        }
-    }
-
     @Override
     public boolean onTouch(View v, MotionEvent event) {
         switch (event.getAction()) {
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index ba2794d..91792df 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -272,7 +272,9 @@
 
         // If anything was left unsaved, save it now but keep the editor open.
         if (!getActivity().isChangingConfigurations() && mStatus == Status.EDITING) {
-            save(SaveMode.RELOAD);
+            if (mStatus != SaveMode.JOIN) {
+                save(SaveMode.RELOAD);
+            }
         }
     }
 
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index feb308c..86f6b33 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -102,7 +102,7 @@
             DisplayType displayType) {
         mListener = listener;
         mContext = context;
-        mColumnCount = numCols;
+        mColumnCount = (displayType == DisplayType.FREQUENT_ONLY ? 1 : numCols);
         mDisplayType = displayType;
 
         bindColumnIndices();
@@ -112,6 +112,14 @@
         mPhotoManager = photoLoader;
     }
 
+    public void setColumnCount(int columnCount) {
+        mColumnCount = columnCount;
+    }
+
+    public void setDisplayType(DisplayType displayType) {
+        mDisplayType = displayType;
+    }
+
     /**
      * Sets the column indices for expected {@link Cursor}
      * based on {@link DisplayType}.
@@ -202,7 +210,6 @@
             // Adding Containter that has multi columns
             rowCount += getNumRows(mContacts.size());
         }
-
         // Adding Divider Row if Neccessary
         if (mDisplayType == DisplayType.STREQUENT && mContacts.size() > 0) rowCount++;
 
@@ -232,9 +239,8 @@
         if (contactIndex < mContacts2.size()) {
             contactList = mContacts2;
         } else {
-            if (mDisplayType == DisplayType.STREQUENT) {
-                contactIndex = (position - mDividerRowIndex - 1) * mColumnCount;
-
+            if (mDisplayType == DisplayType.STREQUENT ||
+                    mDisplayType == DisplayType.FREQUENT_ONLY) {
                 resultList.add(mContacts.get(position - mDividerRowIndex - 1));
                 return resultList;
             }
@@ -385,9 +391,9 @@
             for (int columnCounter = 0; columnCounter < columnCount; columnCounter++) {
                 ContactEntry entry =
                         columnCounter < list.size() ? list.get(columnCounter) : null;
-                addTileFromEntry(entry, columnCounter);
+                        addTileFromEntry(entry, columnCounter);
+                }
             }
-        }
 
         private void addTileFromEntry(ContactEntry entry, int tileIndex) {
             ContactTileView contactTile;
diff --git a/src/com/android/contacts/list/ContactTileView.java b/src/com/android/contacts/list/ContactTileView.java
index da1351f..883e3f0 100644
--- a/src/com/android/contacts/list/ContactTileView.java
+++ b/src/com/android/contacts/list/ContactTileView.java
@@ -45,7 +45,6 @@
     private ContactPhotoManager mPhotoManager = null;
     /**
      * Is set to true if the {@link ContactTileView} is a square.
-     * A {@link ViewType#REGULAR} is displayed as a square.
      */
     private boolean mIsSquare;
 
diff --git a/src/com/android/contacts/list/StrequentContactListFragment.java b/src/com/android/contacts/list/StrequentContactListFragment.java
index d226950..e0f0dc1 100644
--- a/src/com/android/contacts/list/StrequentContactListFragment.java
+++ b/src/com/android/contacts/list/StrequentContactListFragment.java
@@ -73,6 +73,14 @@
         getLoaderManager().restartLoader(LOADER_STREQUENT, null, mStrequentLoaderListener);
     }
 
+    public void setColumnCount(int columnCount) {
+        mAdapter.setColumnCount(columnCount);
+    }
+
+    public void setDisplayType(DisplayType displayType) {
+        mAdapter.setDisplayType(displayType);
+    }
+
     /**
      * The listener for the strequent meta data loader.
      */
