diff --git a/res/layout/contact_tile_starred.xml b/res/layout/contact_tile_starred.xml
index ba1dff2..d667a34 100644
--- a/res/layout/contact_tile_starred.xml
+++ b/res/layout/contact_tile_starred.xml
@@ -61,6 +61,12 @@
             android:layout_marginLeft="4dip"
             style="@style/ContactTileStatusText" />
 
+        <ImageButton
+            android:id="@+id/contact_tile_push_state"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="?android:attr/selectableItemBackground" />
+
     </RelativeLayout>
 
 </view>
diff --git a/res/layout/contact_tile_starred_secondary_target.xml b/res/layout/contact_tile_starred_secondary_target.xml
index f7b8673..4b2639b 100644
--- a/res/layout/contact_tile_starred_secondary_target.xml
+++ b/res/layout/contact_tile_starred_secondary_target.xml
@@ -47,8 +47,15 @@
             stlye="@style/ContactTileStarredName" />
 
         <ImageButton
+            android:id="@+id/contact_tile_push_state"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="?android:attr/selectableItemBackground" />
+
+        <ImageButton
             android:id="@+id/contact_tile_secondary_button"
             android:src="@drawable/ic_tab_unselected_contacts"
+            android:background="?android:attr/selectableItemBackground"
             android:layout_height="@dimen/contact_tile_shadowbox_height"
             android:layout_width="wrap_content"
             android:layout_alignParentBottom="true"
diff --git a/src/com/android/contacts/list/ContactTileAdapter.java b/src/com/android/contacts/list/ContactTileAdapter.java
index 1e65612..2c64d8f 100644
--- a/src/com/android/contacts/list/ContactTileAdapter.java
+++ b/src/com/android/contacts/list/ContactTileAdapter.java
@@ -19,20 +19,16 @@
 import com.android.contacts.ContactTileLoaderFactory;
 import com.android.contacts.GroupMemberLoader;
 import com.android.contacts.R;
-import com.android.contacts.model.AccountTypeManager;
-import com.android.contacts.model.DataKind;
+import com.android.contacts.list.ContactTileAdapter.DisplayType;
 
 import android.content.ContentUris;
 import android.content.Context;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.Uri;
-import android.provider.ContactsContract;
-import android.provider.ContactsContract.CommonDataKinds.Email;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.Contacts;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.LinearLayout;
@@ -430,10 +426,19 @@
         }
     }
 
+    private ContactTileView.Listener mContactTileListener = new ContactTileView.Listener() {
+        @Override
+        public void onClick(ContactTileView contactTileView) {
+            if (mListener != null) {
+                mListener.onContactSelected(contactTileView.getLookupUri());
+            }
+        }
+    };
+
     /**
      * Acts as a row item composed of {@link ContactTileView}
      */
-    private class ContactTileRow extends LinearLayout implements OnClickListener {
+    private class ContactTileRow extends LinearLayout {
         private int mItemViewType;
         private int mLayoutResId;
 
@@ -458,7 +463,7 @@
             }
 
         private void addTileFromEntry(ContactEntry entry, int tileIndex) {
-            ContactTileView contactTile = null;
+            final ContactTileView contactTile;
 
             if (getChildCount() <= tileIndex) {
                 switch (mItemViewType) {
@@ -480,7 +485,7 @@
                 contactTile.setLayoutParams(new LinearLayout.LayoutParams(0,
                         LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f));
                 contactTile.setPhotoManager(mPhotoManager);
-                contactTile.setOnClickListener(this);
+                contactTile.setListener(mContactTileListener);
                 addView(contactTile);
             } else {
                 contactTile = (ContactTileView) getChildAt(tileIndex);
@@ -488,11 +493,6 @@
             contactTile.setClickable(entry != null);
             contactTile.loadFromContact(entry);
         }
-
-        @Override
-        public void onClick(View v) {
-            mListener.onContactSelected(((ContactTileView) v).getLookupUri());
-        }
     }
 
     /**
diff --git a/src/com/android/contacts/list/ContactTileSecondaryTargetView.java b/src/com/android/contacts/list/ContactTileSecondaryTargetView.java
index 862e23d..073ac29 100644
--- a/src/com/android/contacts/list/ContactTileSecondaryTargetView.java
+++ b/src/com/android/contacts/list/ContactTileSecondaryTargetView.java
@@ -20,9 +20,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.util.AttributeSet;
-import android.view.MotionEvent;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.widget.ImageButton;
 
 /**
@@ -30,8 +28,7 @@
  * in a perfect square like the {@link ContactTileStarredView}. However it adds in an additional
  * touch target for a secondary action.
  */
-public class ContactTileSecondaryTargetView extends ContactTileStarredView
-        implements OnClickListener {
+public class ContactTileSecondaryTargetView extends ContactTileStarredView {
 
     private final static String TAG = ContactTileSecondaryTargetView.class.getSimpleName();
 
@@ -44,12 +41,13 @@
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        mSecondaryButton = (ImageButton) findViewById(R.id.contact_tile_secondary_button);
-        mSecondaryButton.setOnClickListener(this);
-    }
 
-    @Override
-    public void onClick(View v) {
-        getContext().startActivity(new Intent(Intent.ACTION_VIEW, getLookupUri()));
+        mSecondaryButton = (ImageButton) findViewById(R.id.contact_tile_secondary_button);
+        mSecondaryButton.setOnClickListener(new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                getContext().startActivity(new Intent(Intent.ACTION_VIEW, getLookupUri()));
+            }
+        });
     }
 }
diff --git a/src/com/android/contacts/list/ContactTileView.java b/src/com/android/contacts/list/ContactTileView.java
index 3839573..aee34c9 100644
--- a/src/com/android/contacts/list/ContactTileView.java
+++ b/src/com/android/contacts/list/ContactTileView.java
@@ -27,6 +27,7 @@
 import android.util.Log;
 import android.view.View;
 import android.widget.FrameLayout;
+import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
@@ -46,6 +47,8 @@
     private TextView mPhoneLabel;
     private TextView mPhoneNumber;
     private ContactPhotoManager mPhotoManager = null;
+    private ImageButton mPushState;
+    private Listener mListener;
 
     public ContactTileView(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -63,6 +66,22 @@
         mStatus = (TextView) findViewById(R.id.contact_tile_status);
         mPhoneLabel = (TextView) findViewById(R.id.contact_tile_phone_type);
         mPhoneNumber = (TextView) findViewById(R.id.contact_tile_phone_number);
+        mPushState = (ImageButton) findViewById(R.id.contact_tile_push_state);
+
+        OnClickListener listener = new OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mListener != null) {
+                    mListener.onClick(ContactTileView.this);
+                }
+            }
+        };
+
+        if(mPushState != null) {
+            mPushState.setOnClickListener(listener);
+        } else {
+            setOnClickListener(listener);
+        }
     }
 
     public void setPhotoManager(ContactPhotoManager photoManager) {
@@ -130,7 +149,15 @@
         }
     }
 
+    public void setListener(Listener listener) {
+        mListener = listener;
+    }
+
     public Uri getLookupUri() {
         return mLookupUri;
     }
+
+    public interface Listener {
+        void onClick(ContactTileView contactTileView);
+    }
 }
