diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9263009..672c393 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -298,7 +298,7 @@
 
         <provider
             android:name=".database.FilteredNumberProvider"
-            android:authorities="com.android.dialer"
+            android:authorities="com.android.dialer.database.filterednumberprovider"
             android:exported="false"
             android:multiprocess="false"
             />
diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java
index 8fcbb92..d36a0f6 100644
--- a/src/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/src/com/android/dialer/database/DialerDatabaseHelper.java
@@ -75,7 +75,7 @@
      *   0-98   KitKat
      * </pre>
      */
-    public static final int DATABASE_VERSION = 5;
+    public static final int DATABASE_VERSION = 6;
     public static final String DATABASE_NAME = "dialer.db";
 
     /**
@@ -400,7 +400,8 @@
         // and to be able to guarantee the state of the DB at each upgrade step.
         db.execSQL("CREATE TABLE " + Tables.FILTERED_NUMBER_TABLE + " ("
                 + FilteredNumberColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
-                + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT,"
+                + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT UNIQUE,"
+                + FilteredNumberColumns.NUMBER + " TEXT,"
                 + FilteredNumberColumns.COUNTRY_ISO + " TEXT,"
                 + FilteredNumberColumns.TIMES_FILTERED + " INTEGER,"
                 + FilteredNumberColumns.LAST_TIME_FILTERED + " LONG,"
@@ -418,6 +419,7 @@
         db.execSQL("DROP TABLE IF EXISTS " + Tables.PREFIX_TABLE);
         db.execSQL("DROP TABLE IF EXISTS " + Tables.SMARTDIAL_TABLE);
         db.execSQL("DROP TABLE IF EXISTS " + Tables.PROPERTIES);
+        db.execSQL("DROP TABLE IF EXISTS " + Tables.FILTERED_NUMBER_TABLE);
     }
 
     @Override
@@ -438,10 +440,12 @@
             return;
         }
 
-        if (oldVersion < 5) {
+        if (oldVersion < 6) {
+            db.execSQL("DROP TABLE IF EXISTS " + Tables.FILTERED_NUMBER_TABLE);
             db.execSQL("CREATE TABLE " + Tables.FILTERED_NUMBER_TABLE + " ("
                     + FilteredNumberColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT,"
+                    + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT UNIQUE,"
+                    + FilteredNumberColumns.NUMBER + " TEXT,"
                     + FilteredNumberColumns.COUNTRY_ISO + " TEXT,"
                     + FilteredNumberColumns.TIMES_FILTERED + " INTEGER,"
                     + FilteredNumberColumns.LAST_TIME_FILTERED + " LONG,"
@@ -449,7 +453,7 @@
                     + FilteredNumberColumns.TYPE + " INTEGER,"
                     + FilteredNumberColumns.SOURCE + " INTEGER"
                     + ");");
-            oldVersion = 5;
+            oldVersion = 6;
         }
 
         if (oldVersion != DATABASE_VERSION) {
diff --git a/src/com/android/dialer/database/FilteredNumberContract.java b/src/com/android/dialer/database/FilteredNumberContract.java
index 1fb2363..0ec171b 100644
--- a/src/com/android/dialer/database/FilteredNumberContract.java
+++ b/src/com/android/dialer/database/FilteredNumberContract.java
@@ -16,8 +16,15 @@
 
 package com.android.dialer.database;
 
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.database.Cursor;
 import android.net.Uri;
 import android.provider.BaseColumns;
+import android.telephony.PhoneNumberUtils;
+
+import com.android.dialerbind.ObjectFactory;
 
 /**
  * <p>
@@ -29,7 +36,7 @@
 public final class FilteredNumberContract {
 
     /** The authority for the filtered numbers provider */
-    public static final String AUTHORITY = "com.android.dialer";
+    public static final String AUTHORITY = ObjectFactory.getFilteredNumberProviderAuthority();
 
     /** A content:// style uri to the authority for the filtered numbers provider */
     public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
@@ -62,6 +69,13 @@
          */
         static final String NORMALIZED_NUMBER = "normalized_number";
         /**
+         * Represents the number to be filtered, for formatting and
+         * used with country iso for contact lookups.
+         *
+         * TYPE: TEXT
+         */
+        static final String NUMBER = "number";
+        /**
          * The country code representing the country detected when
          * the phone number was added to the database.
          * Most numbers don't have the country code, so a best guess is provided by
@@ -111,7 +125,7 @@
      * <h3>Operations</h3>
      * <dl>
      * <dt><b>Insert</b></dt>
-     * <dd>Required fields: NORMALIZED_NUMBER, TYPE, SOURCE.
+     * <dd>Required fields: NUMBER, NORMALIZED_NUMBER, TYPE, SOURCE.
      * A default value will be used for the other fields if left null.</dd>
      * <dt><b>Update</b></dt>
      * <dt><b>Delete</b></dt>
@@ -144,6 +158,5 @@
          */
         public static final String CONTENT_ITEM_TYPE =
                 "vnd.android.cursor.item/filtered_numbers_table";
-
     }
 }
diff --git a/src/com/android/dialer/database/FilteredNumberProvider.java b/src/com/android/dialer/database/FilteredNumberProvider.java
index 2bacd89..2bea7ca 100644
--- a/src/com/android/dialer/database/FilteredNumberProvider.java
+++ b/src/com/android/dialer/database/FilteredNumberProvider.java
@@ -33,6 +33,7 @@
 import com.android.contacts.common.GeoUtil;
 import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
 import com.android.dialerbind.DatabaseHelperManager;
+import com.android.dialerbind.ObjectFactory;
 import com.google.common.annotations.VisibleForTesting;
 
 import java.util.Arrays;
@@ -50,14 +51,6 @@
     private static final int FILTERED_NUMBERS_TABLE_ID = 2;
 
     private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
-    static {
-        sUriMatcher.addURI(FilteredNumberContract.AUTHORITY,
-                FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE,
-                FILTERED_NUMBERS_TABLE);
-        sUriMatcher.addURI(FilteredNumberContract.AUTHORITY,
-                FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE + "/#",
-                FILTERED_NUMBERS_TABLE_ID);
-    }
 
     @Override
     public boolean onCreate() {
@@ -65,6 +58,12 @@
         if (mDialerDatabaseHelper == null) {
             return false;
         }
+        sUriMatcher.addURI(ObjectFactory.getFilteredNumberProviderAuthority(),
+                FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE,
+                FILTERED_NUMBERS_TABLE);
+        sUriMatcher.addURI(ObjectFactory.getFilteredNumberProviderAuthority(),
+                FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE + "/#",
+                FILTERED_NUMBERS_TABLE_ID);
         return true;
     }
 
diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java
index 1a36b05..bace0a6 100644
--- a/src/com/android/dialerbind/ObjectFactory.java
+++ b/src/com/android/dialerbind/ObjectFactory.java
@@ -35,6 +35,10 @@
         return null;
     }
 
+    public static String getFilteredNumberProviderAuthority() {
+        return "com.android.dialer.database.filterednumberprovider";
+    }
+
     /**
      * Create a new instance of the call log adapter.
      * @param context The context to use.
diff --git a/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java b/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java
index 94bf6e6..5184930 100644
--- a/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java
+++ b/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java
@@ -32,7 +32,8 @@
     private static final String TIME_ZONE_AMERICA_LOS_ANGELES = "America/Los_Angeles";
     private static final String DEFAULT_TIMEZONE = TIME_ZONE_AMERICA_LOS_ANGELES;
     private static final String DEFAULT_COUNTRY_ISO = "US";
-    private static final String TEST_NUMBER = "+1234567890";
+    private static final String TEST_NUMBER = "234567890";
+    private static final String TEST_NORMALIZED_NUMBER = "+1234567890";
     private static final long TEST_TIME = 1439936706;
 
     public FilteredNumberProviderTest () {
@@ -141,7 +142,7 @@
         v.put(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED, TEST_TIME);
         int rows = mResolver.update(FilteredNumberContract.FilteredNumber.CONTENT_URI, v,
                 FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER + " = ?",
-                new String[]{TEST_NUMBER});
+                new String[]{TEST_NORMALIZED_NUMBER});
         assertEquals(rows, 1);
 
         ContentValues expected = getTestValues(TEST_TIME);
@@ -186,7 +187,9 @@
     private ContentValues getTestValues(Long timeNow) {
         ContentValues v = new ContentValues();
         v.putNull(FilteredNumberContract.FilteredNumberColumns._ID);
-        v.put(FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER, TEST_NUMBER);
+        v.put(FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER,
+                TEST_NORMALIZED_NUMBER);
+        v.put(FilteredNumberContract.FilteredNumberColumns.NUMBER, TEST_NUMBER);
         v.put(FilteredNumberContract.FilteredNumberColumns.COUNTRY_ISO, DEFAULT_COUNTRY_ISO);
         v.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 0);
         v.putNull(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED);
