diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 6b6ec2b..9b950d2 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -141,7 +141,6 @@
                         mBigramScores[j], SuggestedWordInfo.KIND_CORRECTION));
             }
         }
-        Utils.addAllSuggestions(mDicTypeId, Dictionary.BIGRAM, suggestions, callback);
         return suggestions;
     }
 
@@ -168,7 +167,6 @@
                         mScores[j], SuggestedWordInfo.KIND_CORRECTION));
             }
         }
-        Utils.addAllSuggestions(mDicTypeId, Dictionary.UNIGRAM, suggestions, callback);
         return suggestions;
     }
 
diff --git a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
index 7d131a6..e48e9e9 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableDictionary.java
@@ -262,7 +262,6 @@
         }
         final ArrayList<SuggestedWordInfo> suggestions =
                 getWordsInner(codes, prevWordForBigrams, proximityInfo);
-        Utils.addAllSuggestions(mDicTypeId, Dictionary.UNIGRAM, suggestions, callback);
         return suggestions;
     }
 
@@ -618,7 +617,6 @@
         if (!reloadDictionaryIfRequired()) {
             final ArrayList<SuggestedWordInfo> suggestions = new ArrayList<SuggestedWordInfo>();
             runBigramReverseLookUp(previousWord, suggestions);
-            Utils.addAllSuggestions(mDicTypeId, Dictionary.BIGRAM, suggestions, callback);
             return suggestions;
         }
         return null;
diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java
index 19ac718..8f71de0 100644
--- a/java/src/com/android/inputmethod/latin/Utils.java
+++ b/java/src/com/android/inputmethod/latin/Utils.java
@@ -531,14 +531,4 @@
         }
         return builder.toString();
     }
-
-    public static void addAllSuggestions(final int dicTypeId, final int dataType,
-            final ArrayList<SuggestedWords.SuggestedWordInfo> suggestions,
-            final Dictionary.WordCallback callback) {
-        for (SuggestedWordInfo suggestion : suggestions) {
-            final String suggestionStr = suggestion.mWord.toString();
-            callback.addWord(suggestionStr.toCharArray(), null, 0, suggestionStr.length(),
-                    suggestion.mScore, dicTypeId, dataType);
-        }
-    }
 }
diff --git a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
index f68fc10..acaf3d2 100644
--- a/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
+++ b/java/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerService.java
@@ -792,7 +792,7 @@
                             composer, prevWord, suggestionsGatherer, dictInfo.mProximityInfo);
                     for (final SuggestedWordInfo suggestion : suggestions) {
                         final String suggestionStr = suggestion.mWord.toString();
-                        suggestionsGatherer.oldAddWord(suggestionStr.toCharArray(), 0,
+                        suggestionsGatherer.oldAddWord(suggestionStr.toCharArray(), null, 0,
                                 suggestionStr.length(), suggestion.mScore, 0 /* ignored */,
                                 Dictionary.UNIGRAM);
                     }
