diff --git a/res/layout/contact_tile_regular.xml b/res/layout/contact_tile_regular.xml
index 3fbc0fb..c864ee6 100644
--- a/res/layout/contact_tile_regular.xml
+++ b/res/layout/contact_tile_regular.xml
@@ -16,14 +16,30 @@
 <view
     xmlns:android="http://schemas.android.com/apk/res/android"
     class="com.android.contacts.list.ContactTileView"
-    style="@style/ContactTileRegularLayout">
+    android:focusable="true"
+    android:padding="3dip"
+    android:background="@drawable/list_selector" >
 
-    <ImageView
-        android:id="@+id/contact_tile_image"
-        style="@style/ContactTileRegularImage" />
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
 
-    <TextView
-        android:id="@+id/contact_tile_name"
-        style="@style/ContactTileRegularText" />
+        <ImageView
+            android:id="@+id/contact_tile_image"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:scaleType="centerCrop" />
+
+        <TextView
+            android:id="@+id/contact_tile_name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            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" />
+
+    </RelativeLayout>
 
 </view>
diff --git a/res/layout/contact_tile_small.xml b/res/layout/contact_tile_small.xml
index a750943..9eda2cf 100644
--- a/res/layout/contact_tile_small.xml
+++ b/res/layout/contact_tile_small.xml
@@ -16,17 +16,30 @@
 <view
     xmlns:android="http://schemas.android.com/apk/res/android"
     class="com.android.contacts.list.ContactTileView"
-    style="@style/ContactTileSmallLayout">
+    android:focusable="true"
+    android:padding="5dip"
+    android:background="@drawable/list_selector" >
 
     <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content">
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
+
         <ImageView
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
             android:id="@+id/contact_tile_image"
-            style="@style/ContactTileSmallImage" />
+            android:gravity="top"
+            android:scaleType="centerCrop" />
+
         <TextView
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
             android:id="@+id/contact_tile_name"
-            style="@style/ContactTileSmallText" />
+            android:paddingTop="8dip"
+            android:paddingLeft="4dip" />
+
     </LinearLayout>
 
 </view>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 3c80950..6c0970f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -280,54 +280,6 @@
         <item name="android:paddingTop">5dip</item>
     </style>
 
-    <style name="ContactTileRegularText">
-        <item name="android:layout_width">160dip</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:layout_alignParentBottom">true</item>
-        <item name="android:background">@color/contact_tile_regular_text</item>
-        <item name="android:textColor">@color/contact_tile_regular_text_background</item>
-        <item name="android:textSize">17sp</item>
-        <item name="android:alpha">0.7</item>
-        <item name="android:gravity">center_horizontal</item>
-    </style>
-
-    <style name="ContactTileRegularImage">
-        <item name="android:layout_width">160dip</item>
-        <item name="android:layout_height">160dip</item>
-        <item name="android:layout_alignParentTop">true</item>
-        <item name="android:layout_alignParentLeft">true</item>
-        <item name="android:scaleType">centerCrop</item>
-    </style>
-
-    <style name="ContactTileRegularLayout">
-        <item name="android:layout_width">155dip</item>
-        <item name="android:layout_height">160dip</item>
-        <item name="android:focusable">true</item>
-        <item name="android:padding">5dip</item>
-        <item name="android:background">@drawable/list_selector</item>
-    </style>
-
-    <style name="ContactTileSmallText">
-        <item name="android:layout_width">80dip</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:paddingTop">8dip</item>
-        <item name="android:paddingLeft">4dip</item>
-    </style>
-
-    <style name="ContactTileSmallImage">
-        <item name="android:layout_width">80dip</item>
-        <item name="android:layout_height">80dip</item>
-        <item name="android:scaleType">centerCrop</item>
-    </style>
-
-    <style name="ContactTileSmallLayout">
-        <item name="android:layout_width">160dip</item>
-        <item name="android:layout_height">80dip</item>
-        <item name="android:focusable">true</item>
-        <item name="android:padding">5dip</item>
-        <item name="android:background">@drawable/list_selector</item>
-    </style>
-
     <style name="GroupBrowseListItem">
         <item name="android:paddingRight">20dip</item>
     </style>
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index 32a68cb..961eeb8 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -18,7 +18,6 @@
 import com.android.contacts.ContactPhotoManager;
 import com.android.contacts.R;
 import com.android.contacts.StrequentMetaDataLoader;
-
 import android.content.ContentUris;
 import android.content.Context;
 import android.database.Cursor;
@@ -158,6 +157,11 @@
         return numRows;
     }
 
+    public void setColumnCount(int colCount) {
+        mColumnCount = colCount;
+        notifyDataSetChanged();
+    }
+
     /**
      * Returns the number of rows required to show the provided number of entries
      * with the current number of columns.
@@ -230,12 +234,13 @@
 
         // Creating new row if needed
         if (contactTileRowView == null) {
-            int layoutResId = getLayoutResourceId(getItemViewType(position));
-            contactTileRowView = new ContactTileRow(mContext, layoutResId);
+            int itemViewType = getItemViewType(position);
+            int layoutResId = getLayoutResourceId(itemViewType);
+            contactTileRowView = new ContactTileRow(mContext, layoutResId,
+                    itemViewType == ViewTypes.REGULAR);
         }
 
         contactTileRowView.configureRow(contactList);
-
         return contactTileRowView;
     }
 
@@ -268,9 +273,11 @@
 
     /**
      * Returns view type based on {@link DisplayType}.
-     * STARRED_ONLY and GROUP_MEMBERS are {@link ViewTypes}.REGULAR.
-     * FREQUENT_ONLY is {@link ViewTypes}.SMALL.
-     * STREQUENT mixes both {@link ViewTypes} and also adds in {@link ViewTypes}.DIVIDER.
+     * {@link DisplayType#STARRED_ONLY} and {@link DisplayType#GROUP_MEMBERS}
+     * are {@link ViewTypes#REGULAR}.
+     * {@link DisplayType#FREQUENT_ONLY} is {@link ViewTypes#SMALL}.
+     * {@link DisplayType#STREQUENT} mixes both {@link ViewTypes}
+     * and also adds in {@link ViewTypes#DIVIDER}.
      */
     @Override
     public int getItemViewType(int position) {
@@ -299,10 +306,12 @@
      */
     private class ContactTileRow extends LinearLayout implements OnClickListener {
         private int mLayoutResId;
+        private boolean mIsContactTileSquare;
 
-        public ContactTileRow(Context context, int layoutResId) {
+        public ContactTileRow(Context context, int layoutResId, boolean isSquare) {
             super(context);
             mLayoutResId = layoutResId;
+            mIsContactTileSquare = isSquare;
         }
 
         /**
@@ -322,6 +331,9 @@
 
             if (getChildCount() <= tileIndex) {
                 contactTile = (ContactTileView) inflate(mContext, mLayoutResId, null);
+                contactTile.setIsSquare(mIsContactTileSquare);
+                contactTile.setLayoutParams(new LinearLayout.LayoutParams(0,
+                        LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f));
                 contactTile.setPhotoManager(mPhotoManager);
                 contactTile.setOnClickListener(this);
                 addView(contactTile);
diff --git a/src/com/android/contacts/list/ContactTileView.java b/src/com/android/contacts/list/ContactTileView.java
index d19ca7e..4cce82e 100644
--- a/src/com/android/contacts/list/ContactTileView.java
+++ b/src/com/android/contacts/list/ContactTileView.java
@@ -24,20 +24,25 @@
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
+import android.widget.FrameLayout;
 import android.widget.ImageView;
-import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-/*
+/**
  * A ContactTile displays the contact's picture overlayed with their name
  */
-public class ContactTileView extends RelativeLayout {
+public class ContactTileView extends FrameLayout {
     private final static String TAG = "ContactTileView";
 
     private Uri mLookupUri;
     private ImageView mPhoto;
     private TextView mName;
     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;
 
     public ContactTileView(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -50,6 +55,14 @@
         mPhoto = (ImageView) findViewById(R.id.contact_tile_image);
     }
 
+    public boolean isSquare() {
+        return mIsSquare;
+    }
+
+    public void setIsSquare(boolean isSquare) {
+        mIsSquare = isSquare;
+    }
+
     public void setPhotoManager(ContactPhotoManager photoManager) {
         mPhotoManager = photoManager;
     }
@@ -74,4 +87,14 @@
     public Uri getLookupUri() {
         return mLookupUri;
     }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        // Getting how much space is currently available and telling our
+        // Children to split it.
+        int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
+        int childMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY);
+        measureChildren(childMeasureSpec, childMeasureSpec);
+        setMeasuredDimension(width, width / (mIsSquare ? 1 : 2));
+    }
 }
