diff --git a/res/layout/blocked_number_fragment.xml b/res/layout/blocked_number_fragment.xml
index b1e4d0f..bbface6 100644
--- a/res/layout/blocked_number_fragment.xml
+++ b/res/layout/blocked_number_fragment.xml
@@ -15,6 +15,7 @@
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:card_view="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/blocked_number_fragment"
     android:orientation="vertical"
     android:background="@color/blocked_number_background"
     android:layout_width="match_parent"
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index 8b2eb60..b90d285 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -315,7 +315,7 @@
             case R.id.context_menu_block_number:
                 FilterNumberDialogFragment newFragment =
                         FilterNumberDialogFragment.newInstance(blockId, info.normalizedNumber,
-                                number, countryIso, info.formattedNumber);
+                                number, countryIso, displayNumber);
                 newFragment.setQueryHandler(mFilteredNumberAsyncQueryHandler);
                 newFragment.setParentView(
                         ((Activity) mContext).findViewById(R.id.floating_action_button_container));
diff --git a/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java b/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
index df5fe06..54324cd 100644
--- a/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
+++ b/src/com/android/dialer/calllog/PhoneCallDetailsHelper.java
@@ -112,7 +112,7 @@
         if (accountLabel != null) {
             views.callAccountLabel.setVisibility(View.VISIBLE);
             views.callAccountLabel.setText(accountLabel);
-            int color = PhoneAccountUtils.getAccountColor(mContext, details.accountHandle);
+            int color = mTelecomCallLogCache.getAccountColor(details.accountHandle);
             if (color == PhoneAccount.NO_HIGHLIGHT_COLOR) {
                 int defaultColor = R.color.dialtacts_secondary_text_color;
                 views.callAccountLabel.setTextColor(mContext.getResources().getColor(defaultColor));
diff --git a/src/com/android/dialer/calllog/TelecomCallLogCache.java b/src/com/android/dialer/calllog/TelecomCallLogCache.java
index 7071669..6363b91 100644
--- a/src/com/android/dialer/calllog/TelecomCallLogCache.java
+++ b/src/com/android/dialer/calllog/TelecomCallLogCache.java
@@ -120,6 +120,7 @@
     public boolean isVideoEnabled() {
         if (!mHasCheckedForVideoEnabled) {
             mIsVideoEnabled = CallUtil.isVideoEnabled(mContext);
+            mHasCheckedForVideoEnabled = true;
         }
         return mIsVideoEnabled;
     }
diff --git a/src/com/android/dialer/filterednumber/BlockedNumberAdapter.java b/src/com/android/dialer/filterednumber/BlockedNumberAdapter.java
index 504b520..5041ed8 100644
--- a/src/com/android/dialer/filterednumber/BlockedNumberAdapter.java
+++ b/src/com/android/dialer/filterednumber/BlockedNumberAdapter.java
@@ -89,7 +89,8 @@
                         FilterNumberDialogFragment.newInstance(id, normalizedNumber, number,
                                 countryIso, displayNumber);
                 newFragment.setQueryHandler(mFilteredNumberAsyncQueryHandler);
-                newFragment.setParentView(view);
+                newFragment.setParentView(
+                        ((Activity) mContext).findViewById(R.id.blocked_number_fragment));
                 newFragment.show(((Activity) mContext).getFragmentManager(),
                         FilterNumberDialogFragment.BLOCK_DIALOG_FRAGMENT);
             }
diff --git a/src/com/android/dialer/filterednumber/BlockedNumberFragment.java b/src/com/android/dialer/filterednumber/BlockedNumberFragment.java
index 69fba34..455982a 100644
--- a/src/com/android/dialer/filterednumber/BlockedNumberFragment.java
+++ b/src/com/android/dialer/filterednumber/BlockedNumberFragment.java
@@ -54,8 +54,8 @@
             mAdapter = new BlockedNumberAdapter(getContext(), mFilteredNumberAsyncQueryHandler);
         }
         setListAdapter(mAdapter);
-        final Button addNumberBtn = (Button) getActivity().findViewById(R.id.add_number_button);
-        addNumberBtn.setOnClickListener(this);
+        getActivity().findViewById(R.id.add_number_button).setOnClickListener(this);
+        getListView().getEmptyView().findViewById(R.id.add_number_button).setOnClickListener(this);
     }
 
     @Override
diff --git a/src/com/android/dialer/settings/AppCompatPreferenceActivity.java b/src/com/android/dialer/settings/AppCompatPreferenceActivity.java
index 0708783..804d477 100644
--- a/src/com/android/dialer/settings/AppCompatPreferenceActivity.java
+++ b/src/com/android/dialer/settings/AppCompatPreferenceActivity.java
@@ -15,29 +15,15 @@
  */
 package com.android.dialer.settings;
 
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
 import android.content.res.Configuration;
 import android.os.Bundle;
-import android.os.UserManager;
 import android.preference.PreferenceActivity;
-import android.preference.PreferenceManager;
-import android.preference.PreferenceActivity.Header;
-import android.provider.Settings;
 import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatActivity;
 import android.support.v7.app.AppCompatDelegate;
 import android.support.v7.widget.Toolbar;
-import android.telecom.TelecomManager;
-import android.telephony.TelephonyManager;
 import android.view.MenuInflater;
-import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.Toast;
-
-import java.util.List;
 
 /**
  * A {@link android.preference.PreferenceActivity} which implements and proxies the necessary calls
