diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 4e7e7b3..ab63ddc 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -394,7 +394,7 @@
             return;
         }
 
-        boolean failed = mFilteredNumberAsyncQueryHandler.startBlockedQuery(
+        final boolean success = mFilteredNumberAsyncQueryHandler.isBlockedNumber(
                 new OnCheckBlockedListener() {
                     @Override
                     public void onCheckComplete(Integer id) {
@@ -403,9 +403,9 @@
                         updateContactPhoto();
                         updateBlockActionItem();
                     }
-                }, null, mNumber, mDetails.countryIso);
+                }, mNumber, mDetails.countryIso);
 
-        if (failed) {
+        if (!success) {
             updateContactPhoto();
             updateBlockActionItem();
         }
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 7999ee0..9f1af83 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -526,7 +526,7 @@
             views.updatePhoto();
         } else {
             views.blockId = null;
-            boolean failed = mFilteredNumberAsyncQueryHandler.startBlockedQuery(
+            final boolean success = mFilteredNumberAsyncQueryHandler.isBlockedNumber(
                         new OnCheckBlockedListener() {
                     @Override
                     public void onCheckComplete(Integer id) {
@@ -534,8 +534,8 @@
                         views.blockId = id;
                         views.updatePhoto();
                     }
-                }, null, number, countryIso);
-            if (failed) {
+                }, number, countryIso);
+            if (!success) {
                 views.updatePhoto();
             }
         }
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index 28e406f..afe8208 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -304,7 +304,7 @@
         }
 
         if (FilteredNumbersUtil.canBlockNumber(mContext, number, countryIso)) {
-            mFilteredNumberAsyncQueryHandler.startBlockedQuery(
+            mFilteredNumberAsyncQueryHandler.isBlockedNumber(
                     new FilteredNumberAsyncQueryHandler.OnCheckBlockedListener() {
                         @Override
                         public void onCheckComplete(Integer id) {
@@ -319,7 +319,7 @@
                             blockItem.setOnMenuItemClickListener(
                                     CallLogListItemViewHolder.this);
                         }
-                    }, info.normalizedNumber, number, countryIso);
+                    }, number, countryIso);
         }
     }
 
diff --git a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
index 3a717fd..06aca78 100644
--- a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
+++ b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
@@ -25,6 +25,7 @@
 import android.database.sqlite.SQLiteDatabaseCorruptException;
 import android.net.Uri;
 import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
 
 import com.android.contacts.common.util.PhoneNumberHelper;
 import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
@@ -128,7 +129,7 @@
                 null, null, null);
     }
 
-    public final void hasBlockedNumbersAsync(final OnHasBlockedNumbersListener listener) {
+    public final void hasBlockedNumbers(final OnHasBlockedNumbersListener listener) {
         startQuery(NO_TOKEN,
                 new Listener() {
                     @Override
@@ -144,28 +145,18 @@
     }
 
     /**
-     * Check if the number + country iso given has been blocked.
-     * This method normalizes the number for the lookup if normalizedNumber is null.
-     * @return {@code true} if the number was invalid and couldn't be checked,
-     * {@code false} otherwise,
+     * Check if this number has been blocked.
+     *
+     * @return {@code false} if the number was invalid and couldn't be checked,
+     *     {@code true} otherwise,
      */
-    public final boolean startBlockedQuery(final OnCheckBlockedListener listener,
-                                        String normalizedNumber, String number, String countryIso) {
-        if (normalizedNumber == null) {
-            normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
-            if (normalizedNumber == null) {
-                return true;
-            }
+    public final boolean isBlockedNumber(
+            final OnCheckBlockedListener listener, String number, String countryIso) {
+        final String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+        if (TextUtils.isEmpty(normalizedNumber)) {
+            return false;
         }
-        startBlockedQuery(listener, normalizedNumber);
-        return false;
-    }
 
-    /**
-     * Check if the normalized number given has been blocked.
-     */
-    public final void startBlockedQuery(final OnCheckBlockedListener listener,
-                                        String normalizedNumber) {
         startQuery(NO_TOKEN,
                 new Listener() {
                     @Override
@@ -185,10 +176,12 @@
                     }
                 },
                 getContentUri(null),
-                new String[]{FilteredNumberColumns._ID, FilteredNumberColumns.TYPE},
+                new String[]{ FilteredNumberColumns._ID, FilteredNumberColumns.TYPE },
                 FilteredNumberColumns.NORMALIZED_NUMBER + " = ?",
-                new String[]{normalizedNumber},
+                new String[]{ normalizedNumber },
                 null);
+
+        return true;
     }
 
     public final void blockNumber(
diff --git a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
index 67e7ee3..a9bb983 100644
--- a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
+++ b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
@@ -303,7 +303,7 @@
         // If the user has blocked numbers, notify that call blocking is temporarily disabled.
         FilteredNumberAsyncQueryHandler queryHandler =
                 new FilteredNumberAsyncQueryHandler(context.getContentResolver());
-        queryHandler.hasBlockedNumbersAsync(new OnHasBlockedNumbersListener() {
+        queryHandler.hasBlockedNumbers(new OnHasBlockedNumbersListener() {
             @Override
             public void onHasBlockedNumbers(boolean hasBlockedNumbers) {
                 if (context == null || !hasBlockedNumbers) {
diff --git a/src/com/android/dialer/list/BlockedListSearchAdapter.java b/src/com/android/dialer/list/BlockedListSearchAdapter.java
index aaea40b..1618826 100644
--- a/src/com/android/dialer/list/BlockedListSearchAdapter.java
+++ b/src/com/android/dialer/list/BlockedListSearchAdapter.java
@@ -84,7 +84,7 @@
                         }
                     }
                 };
-        mFilteredNumberAsyncQueryHandler.startBlockedQuery(
-                onCheckListener, null, number, countryIso);
+        mFilteredNumberAsyncQueryHandler.isBlockedNumber(
+                onCheckListener, number, countryIso);
     }
 }
diff --git a/src/com/android/dialer/list/BlockedListSearchFragment.java b/src/com/android/dialer/list/BlockedListSearchFragment.java
index cfb84f3..08a9c49 100644
--- a/src/com/android/dialer/list/BlockedListSearchFragment.java
+++ b/src/com/android/dialer/list/BlockedListSearchFragment.java
@@ -189,9 +189,9 @@
                 }
             }
         };
-        boolean failed = mFilteredNumberAsyncQueryHandler.startBlockedQuery(
-                onCheckListener, null, number, countryIso);
-        if (failed) {
+        final boolean success = mFilteredNumberAsyncQueryHandler.isBlockedNumber(
+                onCheckListener, number, countryIso);
+        if (!success) {
             Toast.makeText(getContext(), getString(R.string.invalidNumber, number),
                     Toast.LENGTH_SHORT).show();
         }
