diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
index 8fbb44a..d174b40 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
@@ -43,6 +43,35 @@
  * DictionaryFacilitator as a client for interacting with dictionaries.
  */
 public interface DictionaryFacilitator {
+
+    public static final String[] ALL_DICTIONARY_TYPES = new String[] {
+            Dictionary.TYPE_MAIN,
+            Dictionary.TYPE_USER_HISTORY,
+            Dictionary.TYPE_USER,
+            Dictionary.TYPE_CONTACTS};
+
+    public static final String[] DYNAMIC_DICTIONARY_TYPES = new String[] {
+            Dictionary.TYPE_USER_HISTORY,
+            Dictionary.TYPE_USER,
+            Dictionary.TYPE_CONTACTS};
+
+    /**
+     * {@link Dictionary#TYPE_USER} is deprecated, except for the spelling service.
+     */
+    public static final String[] DICTIONARY_TYPES_FOR_SPELLING = new String[] {
+            Dictionary.TYPE_MAIN,
+            Dictionary.TYPE_USER_HISTORY,
+            Dictionary.TYPE_USER,
+            Dictionary.TYPE_CONTACTS};
+
+    /**
+     * {@link Dictionary#TYPE_USER} is deprecated, except for the spelling service.
+     */
+    public static final String[] DICTIONARY_TYPES_FOR_SUGGESTIONS = new String[] {
+            Dictionary.TYPE_MAIN,
+            Dictionary.TYPE_USER_HISTORY,
+            Dictionary.TYPE_CONTACTS};
+
     /**
      * Returns whether this facilitator is exactly for this list of locales.
      *
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
index 2865dee..96603ef 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
@@ -78,34 +78,6 @@
     private final Object mLock = new Object();
     private final DistracterFilter mDistracterFilter;
 
-    private static final String[] ALL_DICTIONARY_TYPES = new String[] {
-        Dictionary.TYPE_MAIN,
-        Dictionary.TYPE_USER_HISTORY,
-        Dictionary.TYPE_USER,
-        Dictionary.TYPE_CONTACTS};
-
-    private static final String[] SUB_DICTIONARY_TYPES = new String[] {
-        Dictionary.TYPE_USER_HISTORY,
-        Dictionary.TYPE_USER,
-        Dictionary.TYPE_CONTACTS};
-
-    /**
-     * {@link Dictionary#TYPE_USER} is deprecated, except for the spelling service.
-     */
-    private static final String[] DICTIONARY_TYPES_FOR_SPELLING = new String[] {
-        Dictionary.TYPE_MAIN,
-        Dictionary.TYPE_USER_HISTORY,
-        Dictionary.TYPE_USER,
-        Dictionary.TYPE_CONTACTS};
-
-    /**
-     * {@link Dictionary#TYPE_USER} is deprecated, except for the spelling service.
-     */
-    private static final String[] DICTIONARY_TYPES_FOR_SUGGESTIONS = new String[] {
-        Dictionary.TYPE_MAIN,
-        Dictionary.TYPE_USER_HISTORY,
-        Dictionary.TYPE_CONTACTS};
-
     public static final Map<String, Class<? extends ExpandableBinaryDictionary>>
             DICT_TYPE_TO_CLASS = new HashMap<>();
 
@@ -419,7 +391,7 @@
             if (null == currentDictionaryGroupForLocale) {
                 continue;
             }
-            for (final String dictType : SUB_DICTIONARY_TYPES) {
+            for (final String dictType : DYNAMIC_DICTIONARY_TYPES) {
                 if (currentDictionaryGroupForLocale.hasDict(dictType, account)) {
                     dictTypeForLocale.add(dictType);
                 }
@@ -840,7 +812,7 @@
         final ArrayList<Pair<String, DictionaryStats>> statsOfEnabledSubDicts = new ArrayList<>();
         final DictionaryGroup[] dictionaryGroups = mDictionaryGroups;
         for (final DictionaryGroup dictionaryGroup : dictionaryGroups) {
-            for (final String dictType : SUB_DICTIONARY_TYPES) {
+            for (final String dictType : DYNAMIC_DICTIONARY_TYPES) {
                 final ExpandableBinaryDictionary dictionary = dictionaryGroup.getSubDict(dictType);
                 if (dictionary == null) continue;
                 statsOfEnabledSubDicts.add(new Pair<>(dictType, dictionary.getDictionaryStats()));
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCache.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCache.java
index 13bd151..666813d 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCache.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorLruCache.java
@@ -128,7 +128,7 @@
     public DictionaryFacilitator get(final Locale locale) {
         DictionaryFacilitator dictionaryFacilitator = mLruCache.get(locale);
         if (dictionaryFacilitator != null) {
-            // dictionary falicitator for the locale is in the cache.
+            // dictionary facilitator for the locale is in the cache.
             return dictionaryFacilitator;
         }
         synchronized (mLock) {
