diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index ab63ddc..0d943e0 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -161,7 +161,8 @@
             mHistoryList.setAdapter(
                     new CallDetailHistoryAdapter(mContext, mInflater, mCallTypeHelper, details));
 
-            updatePhotoAndBlockActionItem();
+            updateFilteredNumberChanges();
+            updateContactPhoto();
 
             findViewById(R.id.call_detail).setVisibility(View.VISIBLE);
         }
@@ -380,15 +381,15 @@
 
     @Override
     public void onChangeFilteredNumberSuccess() {
-        updatePhotoAndBlockActionItem();
+        updateFilteredNumberChanges();
     }
 
     @Override
     public void onChangeFilteredNumberUndo() {
-        updatePhotoAndBlockActionItem();
+        updateFilteredNumberChanges();
     }
 
-    private void updatePhotoAndBlockActionItem() {
+    private void updateFilteredNumberChanges() {
         if (mDetails == null ||
                 !FilteredNumbersUtil.canBlockNumber(this, mNumber, mDetails.countryIso)) {
             return;
@@ -399,14 +400,11 @@
                     @Override
                     public void onCheckComplete(Integer id) {
                         mBlockedNumberId = id;
-
-                        updateContactPhoto();
                         updateBlockActionItem();
                     }
                 }, mNumber, mDetails.countryIso);
 
         if (!success) {
-            updateContactPhoto();
             updateBlockActionItem();
         }
     }
@@ -417,11 +415,6 @@
             return;
         }
 
-        if (mBlockedNumberId != null) {
-            mQuickContactBadge.setImageDrawable(mContext.getDrawable(R.drawable.blocked_contact));
-            return;
-        }
-
         final boolean isVoicemailNumber =
                 PhoneNumberUtil.isVoicemailNumber(mContext, mDetails.accountHandle, mNumber);
         final boolean isBusiness = mContactInfoHelper.isBusiness(mDetails.sourceType);
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index cd4c10b..77da7e9 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -192,7 +192,7 @@
         mPhoneNumberTypeIndex = ContactTileLoaderFactory.PHONE_NUMBER_TYPE;
         mPhoneNumberLabelIndex = ContactTileLoaderFactory.PHONE_NUMBER_LABEL;
         mPinnedIndex = ContactTileLoaderFactory.PINNED;
-        mContactIdIndex = ContactTileLoaderFactory.CONTACT_ID;
+        mContactIdIndex = ContactTileLoaderFactory.CONTACT_ID_FOR_DATA;
 
 
         mPresenceIndex = ContactTileLoaderFactory.CONTACT_PRESENCE;
