diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index fa5a46fca3e05ffd1727eeab2371e0d7d4001a01..7c08377be964d772b781cbe5616c1412c9ca669e 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1114,8 +1114,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
             if (ic != null) {
                 ic.commitText(typedWord, 1);
             }
-            addToUserUnigramAndBigramDictionaries(typedWord,
-                    UserUnigramDictionary.FREQUENCY_FOR_TYPED);
+            addToUserHistoryDictionary(typedWord);
         }
         updateSuggestions();
     }
@@ -1834,9 +1833,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
             mExpectingUpdateSelection = true;
             commitChosenWord(autoCorrection, LastComposedWord.COMMIT_TYPE_DECIDED_WORD,
                     separatorCodePoint);
-            // Add the word to the user unigram dictionary if it's not a known word
-            addToUserUnigramAndBigramDictionaries(autoCorrection,
-                    UserUnigramDictionary.FREQUENCY_FOR_TYPED);
+            // Add the word to the user history dictionary
+            addToUserHistoryDictionary(autoCorrection);
             if (!typedWord.equals(autoCorrection) && null != ic) {
                 // This will make the correction flash for a short while as a visual clue
                 // to the user that auto-correction happened.
@@ -1895,13 +1893,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
         mExpectingUpdateSelection = true;
         commitChosenWord(suggestion, LastComposedWord.COMMIT_TYPE_MANUAL_PICK,
                 LastComposedWord.NOT_A_SEPARATOR);
-        // Add the word to the auto dictionary if it's not a known word
-        if (index == 0) {
-            addToUserUnigramAndBigramDictionaries(suggestion,
-                    UserUnigramDictionary.FREQUENCY_FOR_PICKED);
-        } else {
-            addToOnlyBigramDictionary(suggestion, 1);
-        }
+        // Add the word to the user history dictionary
+        addToUserHistoryDictionary(suggestion);
         mSpaceState = SPACE_STATE_PHANTOM;
         // TODO: is this necessary?
         mKeyboardSwitcher.updateShiftState();
@@ -2002,21 +1995,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
         setSuggestionStripShown(isSuggestionsStripVisible());
     }
 
-    private void addToUserUnigramAndBigramDictionaries(CharSequence suggestion,
-            int frequencyDelta) {
-        checkAddToDictionary(suggestion, frequencyDelta, false);
-    }
-
-    private void addToOnlyBigramDictionary(CharSequence suggestion, int frequencyDelta) {
-        checkAddToDictionary(suggestion, frequencyDelta, true);
-    }
-
     /**
      * Adds to the UserBigramDictionary and/or UserUnigramDictionary
-     * @param selectedANotTypedWord true if it should be added to bigram dictionary if possible
      */
-    private void checkAddToDictionary(CharSequence suggestion, int frequencyDelta,
-            boolean selectedANotTypedWord) {
+    private void addToUserHistoryDictionary(final CharSequence suggestion) {
         if (suggestion == null || suggestion.length() < 1) return;
 
         // Only auto-add to dictionary if auto-correct is ON. Otherwise we'll be
@@ -2027,28 +2009,17 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
             return;
         }
 
-        if (null != mSuggest && null != mUserUnigramDictionary) {
-            final boolean selectedATypedWordAndItsInUserUnigramDic =
-                    !selectedANotTypedWord && mUserUnigramDictionary.isValidWord(suggestion);
-            final boolean isValidWord = AutoCorrection.isValidWord(
-                    mSuggest.getUnigramDictionaries(), suggestion, true);
-            final boolean needsToAddToUserUnigramDictionary =
-                    selectedATypedWordAndItsInUserUnigramDic || !isValidWord;
-            if (needsToAddToUserUnigramDictionary) {
-                mUserUnigramDictionary.addWord(suggestion.toString(), frequencyDelta);
-            }
+        if (null != mUserUnigramDictionary) {
+            mUserUnigramDictionary.addUnigram(suggestion.toString());
         }
 
         if (mUserBigramDictionary != null) {
-            // We don't want to register as bigrams words separated by a separator.
-            // For example "I will, and you too" : we don't want the pair ("will" "and") to be
-            // a bigram.
             final InputConnection ic = getCurrentInputConnection();
             if (null != ic) {
                 final CharSequence prevWord =
                         EditingUtils.getPreviousWord(ic, mSettingsValues.mWordSeparators);
-                if (!TextUtils.isEmpty(prevWord)) {
-                    mUserBigramDictionary.addBigrams(prevWord.toString(), suggestion.toString());
+                if (null != prevWord) {
+                    mUserBigramDictionary.addBigramPair(prevWord.toString(), suggestion.toString());
                 }
             }
         }
diff --git a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java b/java/src/com/android/inputmethod/latin/UserBigramDictionary.java
index e6a59d0ab6ebf69c3dd82b7cdb57373adbca7087..52a31f2e6b7ea29493f33c7dbb00fdf12de31b46 100644
--- a/java/src/com/android/inputmethod/latin/UserBigramDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserBigramDictionary.java
@@ -157,7 +157,7 @@ public class UserBigramDictionary extends ExpandableDictionary {
     /**
      * Pair will be added to the userbigram database.
      */
-    public int addBigrams(String word1, String word2) {
+    public int addBigramPair(String word1, String word2) {
         // remove caps if second word is autocapitalized
         if (mIme != null && mIme.isAutoCapitalized()) {
             word2 = Character.toLowerCase(word2.charAt(0)) + word2.substring(1);
diff --git a/java/src/com/android/inputmethod/latin/UserUnigramDictionary.java b/java/src/com/android/inputmethod/latin/UserUnigramDictionary.java
index 869865d7b27373aa46fc7bdf195d76a1bd99ba6c..2fc395c3eff2335e31bed887a99fd6baf322847b 100644
--- a/java/src/com/android/inputmethod/latin/UserUnigramDictionary.java
+++ b/java/src/com/android/inputmethod/latin/UserUnigramDictionary.java
@@ -143,9 +143,9 @@ public class UserUnigramDictionary extends ExpandableDictionary {
         }
     }
 
-    @Override
-    public void addWord(String newWord, int addFrequency) {
+    public void addUnigram(String newWord) {
         if (!ENABLE_USER_UNIGRAM_DICTIONARY) return;
+        final int addFrequency = FREQUENCY_FOR_TYPED;
         String word = newWord;
         final int length = word.length();
         // Don't add very short or very long words.