diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index eb95a4e..bbb4594 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -133,8 +133,8 @@
 import com.android.dialer.searchfragment.list.NewSearchFragment.SearchFragmentListener;
 import com.android.dialer.simulator.Simulator;
 import com.android.dialer.simulator.SimulatorComponent;
-import com.android.dialer.smartdial.SmartDialNameMatcher;
-import com.android.dialer.smartdial.SmartDialPrefix;
+import com.android.dialer.smartdial.util.SmartDialNameMatcher;
+import com.android.dialer.smartdial.util.SmartDialPrefix;
 import com.android.dialer.storage.StorageComponent;
 import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.util.DialerUtils;
diff --git a/java/com/android/dialer/app/list/SmartDialNumberListAdapter.java b/java/com/android/dialer/app/list/SmartDialNumberListAdapter.java
index 5b48ccf..1d2cda3 100644
--- a/java/com/android/dialer/app/list/SmartDialNumberListAdapter.java
+++ b/java/com/android/dialer/app/list/SmartDialNumberListAdapter.java
@@ -22,9 +22,9 @@
 import android.text.TextUtils;
 import com.android.contacts.common.list.ContactListItemView;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.dialpadview.SmartDialCursorLoader;
-import com.android.dialer.smartdial.SmartDialMatchPosition;
-import com.android.dialer.smartdial.SmartDialNameMatcher;
+import com.android.dialer.smartdial.SmartDialCursorLoader;
+import com.android.dialer.smartdial.util.SmartDialMatchPosition;
+import com.android.dialer.smartdial.util.SmartDialNameMatcher;
 import com.android.dialer.util.CallUtil;
 import java.util.ArrayList;
 
diff --git a/java/com/android/dialer/app/list/SmartDialSearchFragment.java b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
index e97a16c..1a7f195 100644
--- a/java/com/android/dialer/app/list/SmartDialSearchFragment.java
+++ b/java/com/android/dialer/app/list/SmartDialSearchFragment.java
@@ -31,7 +31,7 @@
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.database.DialerDatabaseHelper;
-import com.android.dialer.dialpadview.SmartDialCursorLoader;
+import com.android.dialer.smartdial.SmartDialCursorLoader;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.widget.EmptyContentView;
 import java.util.Arrays;
diff --git a/java/com/android/dialer/database/DialerDatabaseHelper.java b/java/com/android/dialer/database/DialerDatabaseHelper.java
index b0bd62a..3fb8730 100644
--- a/java/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/java/com/android/dialer/database/DialerDatabaseHelper.java
@@ -42,8 +42,8 @@
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
-import com.android.dialer.smartdial.SmartDialNameMatcher;
-import com.android.dialer.smartdial.SmartDialPrefix;
+import com.android.dialer.smartdial.util.SmartDialNameMatcher;
+import com.android.dialer.smartdial.util.SmartDialPrefix;
 import com.android.dialer.util.PermissionsUtil;
 import java.util.ArrayList;
 import java.util.HashSet;
diff --git a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
index 23e3f9d..23f368f 100644
--- a/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/cp2/SearchContactsCursorLoader.java
@@ -28,9 +28,9 @@
 import android.support.annotation.Nullable;
 import android.text.TextUtils;
 import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.dialer.dialpadview.SmartDialCursorLoader;
 import com.android.dialer.searchfragment.common.Projections;
 import com.android.dialer.searchfragment.common.SearchCursor;
+import com.android.dialer.smartdial.SmartDialCursorLoader;
 
 /** Cursor Loader for CP2 contacts. */
 public final class SearchContactsCursorLoader extends CursorLoader {
diff --git a/java/com/android/dialer/dialpadview/SmartDialCursorLoader.java b/java/com/android/dialer/smartdial/SmartDialCursorLoader.java
similarity index 97%
rename from java/com/android/dialer/dialpadview/SmartDialCursorLoader.java
rename to java/com/android/dialer/smartdial/SmartDialCursorLoader.java
index d085b55..f6bc932 100644
--- a/java/com/android/dialer/dialpadview/SmartDialCursorLoader.java
+++ b/java/com/android/dialer/smartdial/SmartDialCursorLoader.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.dialer.dialpadview;
+package com.android.dialer.smartdial;
 
 import android.content.AsyncTaskLoader;
 import android.content.Context;
@@ -25,7 +25,7 @@
 import com.android.dialer.database.Database;
 import com.android.dialer.database.DialerDatabaseHelper;
 import com.android.dialer.database.DialerDatabaseHelper.ContactNumber;
-import com.android.dialer.smartdial.SmartDialNameMatcher;
+import com.android.dialer.smartdial.util.SmartDialNameMatcher;
 import com.android.dialer.util.PermissionsUtil;
 import java.util.ArrayList;
 
diff --git a/java/com/android/dialer/smartdial/BulgarianSmartDialMap.java b/java/com/android/dialer/smartdial/map/BulgarianSmartDialMap.java
similarity index 98%
rename from java/com/android/dialer/smartdial/BulgarianSmartDialMap.java
rename to java/com/android/dialer/smartdial/map/BulgarianSmartDialMap.java
index a16d159..cbe6afa 100644
--- a/java/com/android/dialer/smartdial/BulgarianSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/BulgarianSmartDialMap.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.dialer.smartdial;
+package com.android.dialer.smartdial.map;
 
 import android.support.v4.util.SimpleArrayMap;
 import com.google.common.base.Optional;
diff --git a/java/com/android/dialer/smartdial/CompositeSmartDialMap.java b/java/com/android/dialer/smartdial/map/CompositeSmartDialMap.java
similarity index 92%
rename from java/com/android/dialer/smartdial/CompositeSmartDialMap.java
rename to java/com/android/dialer/smartdial/map/CompositeSmartDialMap.java
index e9f237f..df32d4c 100644
--- a/java/com/android/dialer/smartdial/CompositeSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/CompositeSmartDialMap.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.dialer.smartdial;
+package com.android.dialer.smartdial.map;
 
 import android.content.Context;
 import android.support.annotation.VisibleForTesting;
@@ -58,7 +58,7 @@
    * <p>The provided character is expected to be a normalized character. See {@link
    * SmartDialMap#normalizeCharacter(char)} for details.
    */
-  static boolean isValidDialpadCharacter(Context context, char ch) {
+  public static boolean isValidDialpadCharacter(Context context, char ch) {
     if (DEFAULT_MAP.isValidDialpadCharacter(ch)) {
       return true;
     }
@@ -73,7 +73,7 @@
    * <p>The provided character is expected to be a normalized character. See {@link
    * SmartDialMap#normalizeCharacter(char)} for details.
    */
-  static boolean isValidDialpadAlphabeticChar(Context context, char ch) {
+  public static boolean isValidDialpadAlphabeticChar(Context context, char ch) {
     if (DEFAULT_MAP.isValidDialpadAlphabeticChar(ch)) {
       return true;
     }
@@ -85,7 +85,7 @@
   /**
    * Returns true if the provided character is a digit, and can be mapped to a key on the dialpad.
    */
-  static boolean isValidDialpadNumericChar(Context context, char ch) {
+  public static boolean isValidDialpadNumericChar(Context context, char ch) {
     if (DEFAULT_MAP.isValidDialpadNumericChar(ch)) {
       return true;
     }
@@ -102,7 +102,7 @@
    *
    * <p>If the provided character can't be mapped to a key on the dialpad, return -1.
    */
-  static byte getDialpadIndex(Context context, char ch) {
+  public static byte getDialpadIndex(Context context, char ch) {
     Optional<Byte> dialpadIndex = DEFAULT_MAP.getDialpadIndex(ch);
     if (dialpadIndex.isPresent()) {
       return dialpadIndex.get();
@@ -124,7 +124,7 @@
    *
    * <p>If the provided character can't be mapped to a key on the dialpad, return the character.
    */
-  static char getDialpadNumericCharacter(Context context, char ch) {
+  public static char getDialpadNumericCharacter(Context context, char ch) {
     Optional<Character> dialpadNumericChar = DEFAULT_MAP.getDialpadNumericCharacter(ch);
     if (dialpadNumericChar.isPresent()) {
       return dialpadNumericChar.get();
@@ -144,7 +144,7 @@
    *
    * <p>If the provided character can't be mapped to a key on the dialpad, return the character.
    */
-  static char normalizeCharacter(Context context, char ch) {
+  public static char normalizeCharacter(Context context, char ch) {
     Optional<Character> normalizedChar = DEFAULT_MAP.normalizeCharacter(ch);
     if (normalizedChar.isPresent()) {
       return normalizedChar.get();
diff --git a/java/com/android/dialer/smartdial/LatinSmartDialMap.java b/java/com/android/dialer/smartdial/map/LatinSmartDialMap.java
similarity index 99%
rename from java/com/android/dialer/smartdial/LatinSmartDialMap.java
rename to java/com/android/dialer/smartdial/map/LatinSmartDialMap.java
index b67901b..052af05 100644
--- a/java/com/android/dialer/smartdial/LatinSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/LatinSmartDialMap.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.dialer.smartdial;
+package com.android.dialer.smartdial.map;
 
 import android.support.v4.util.SimpleArrayMap;
 import com.google.common.base.Optional;
diff --git a/java/com/android/dialer/smartdial/RussianSmartDialMap.java b/java/com/android/dialer/smartdial/map/RussianSmartDialMap.java
similarity index 98%
rename from java/com/android/dialer/smartdial/RussianSmartDialMap.java
rename to java/com/android/dialer/smartdial/map/RussianSmartDialMap.java
index ada9182..5038520 100644
--- a/java/com/android/dialer/smartdial/RussianSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/RussianSmartDialMap.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.dialer.smartdial;
+package com.android.dialer.smartdial.map;
 
 import android.support.v4.util.SimpleArrayMap;
 import com.google.common.base.Optional;
diff --git a/java/com/android/dialer/smartdial/SmartDialMap.java b/java/com/android/dialer/smartdial/map/SmartDialMap.java
similarity index 98%
rename from java/com/android/dialer/smartdial/SmartDialMap.java
rename to java/com/android/dialer/smartdial/map/SmartDialMap.java
index bc5c9ea..c74dd28 100644
--- a/java/com/android/dialer/smartdial/SmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/SmartDialMap.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.dialer.smartdial;
+package com.android.dialer.smartdial.map;
 
 import android.support.v4.util.SimpleArrayMap;
 import com.google.common.base.Optional;
diff --git a/java/com/android/dialer/smartdial/UkrainianSmartDialMap.java b/java/com/android/dialer/smartdial/map/UkrainianSmartDialMap.java
similarity index 98%
rename from java/com/android/dialer/smartdial/UkrainianSmartDialMap.java
rename to java/com/android/dialer/smartdial/map/UkrainianSmartDialMap.java
index 8ba53c4..28dbc0d 100644
--- a/java/com/android/dialer/smartdial/UkrainianSmartDialMap.java
+++ b/java/com/android/dialer/smartdial/map/UkrainianSmartDialMap.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.dialer.smartdial;
+package com.android.dialer.smartdial.map;
 
 import android.support.v4.util.SimpleArrayMap;
 import com.google.common.base.Optional;
diff --git a/java/com/android/dialer/smartdial/SmartDialMatchPosition.java b/java/com/android/dialer/smartdial/util/SmartDialMatchPosition.java
similarity index 93%
rename from java/com/android/dialer/smartdial/SmartDialMatchPosition.java
rename to java/com/android/dialer/smartdial/util/SmartDialMatchPosition.java
index 8056ad7..db317ae 100644
--- a/java/com/android/dialer/smartdial/SmartDialMatchPosition.java
+++ b/java/com/android/dialer/smartdial/util/SmartDialMatchPosition.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package com.android.dialer.smartdial;
+package com.android.dialer.smartdial.util;
 
-import android.util.Log;
+import com.android.dialer.common.LogUtil;
 import java.util.ArrayList;
 
 /**
@@ -59,7 +59,7 @@
   public static void print(ArrayList<SmartDialMatchPosition> list) {
     for (int i = 0; i < list.size(); i++) {
       SmartDialMatchPosition m = list.get(i);
-      Log.d(TAG, "[" + m.start + "," + m.end + "]");
+      LogUtil.d(TAG, "[" + m.start + "," + m.end + "]");
     }
   }
 
diff --git a/java/com/android/dialer/smartdial/SmartDialNameMatcher.java b/java/com/android/dialer/smartdial/util/SmartDialNameMatcher.java
similarity index 98%
rename from java/com/android/dialer/smartdial/SmartDialNameMatcher.java
rename to java/com/android/dialer/smartdial/util/SmartDialNameMatcher.java
index 4e3e0cc..725c88c 100644
--- a/java/com/android/dialer/smartdial/SmartDialNameMatcher.java
+++ b/java/com/android/dialer/smartdial/util/SmartDialNameMatcher.java
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.dialer.smartdial;
+package com.android.dialer.smartdial.util;
 
 import android.content.Context;
 import android.support.annotation.Nullable;
 import android.text.TextUtils;
-import com.android.dialer.smartdial.SmartDialPrefix.PhoneNumberTokens;
+import com.android.dialer.smartdial.map.CompositeSmartDialMap;
+import com.android.dialer.smartdial.util.SmartDialPrefix.PhoneNumberTokens;
 import java.util.ArrayList;
 
 /**
diff --git a/java/com/android/dialer/smartdial/SmartDialPrefix.java b/java/com/android/dialer/smartdial/util/SmartDialPrefix.java
similarity index 99%
rename from java/com/android/dialer/smartdial/SmartDialPrefix.java
rename to java/com/android/dialer/smartdial/util/SmartDialPrefix.java
index b9c1f8c..9af4119 100644
--- a/java/com/android/dialer/smartdial/SmartDialPrefix.java
+++ b/java/com/android/dialer/smartdial/util/SmartDialPrefix.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.dialer.smartdial;
+package com.android.dialer.smartdial.util;
 
 import android.content.Context;
 import android.content.SharedPreferences;
@@ -22,6 +22,7 @@
 import android.support.annotation.VisibleForTesting;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
+import com.android.dialer.smartdial.map.CompositeSmartDialMap;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Set;
