diff --git a/java/src/com/android/inputmethod/latin/AutoCorrection.java b/java/src/com/android/inputmethod/latin/AutoCorrection.java
index 30b68165122587dd95c3333aaeb0eb7c22829d97..b5934111f1451232ec3371905be913ebdbf2c88c 100644
--- a/java/src/com/android/inputmethod/latin/AutoCorrection.java
+++ b/java/src/com/android/inputmethod/latin/AutoCorrection.java
@@ -34,17 +34,17 @@ public class AutoCorrection {
 
     public static CharSequence computeAutoCorrectionWord(
             final ConcurrentHashMap<String, Dictionary> dictionaries,
-            final WordComposer wordComposer, final ArrayList<SuggestedWordInfo> suggestions,
+            final WordComposer wordComposer, SuggestedWordInfo suggestion,
             final CharSequence consideredWord, final float autoCorrectionThreshold,
             final CharSequence whitelistedWord) {
         if (hasAutoCorrectionForWhitelistedWord(whitelistedWord)) {
             return whitelistedWord;
         } else if (hasAutoCorrectionForConsideredWord(
-                dictionaries, wordComposer, suggestions, consideredWord)) {
+                dictionaries, wordComposer, suggestion, consideredWord)) {
             return consideredWord;
-        } else if (hasAutoCorrectionForBinaryDictionary(wordComposer, suggestions,
+        } else if (hasAutoCorrectionForBinaryDictionary(wordComposer, suggestion,
                 consideredWord, autoCorrectionThreshold)) {
-            return suggestions.get(0).mWord;
+            return suggestion.mWord;
         }
         return null;
     }
@@ -111,27 +111,26 @@ public class AutoCorrection {
 
     private static boolean hasAutoCorrectionForConsideredWord(
             final ConcurrentHashMap<String, Dictionary> dictionaries,
-            final WordComposer wordComposer, final ArrayList<SuggestedWordInfo> suggestions,
+            final WordComposer wordComposer, final SuggestedWordInfo suggestion,
             final CharSequence consideredWord) {
         if (TextUtils.isEmpty(consideredWord)) return false;
-        return wordComposer.size() > 1 && suggestions.size() > 0
+        return wordComposer.size() > 1 && null != suggestion
                 && !allowsToBeAutoCorrected(dictionaries, consideredWord, false);
     }
 
     private static boolean hasAutoCorrectionForBinaryDictionary(WordComposer wordComposer,
-            ArrayList<SuggestedWordInfo> suggestions,
+            SuggestedWordInfo suggestion,
             CharSequence consideredWord, float autoCorrectionThreshold) {
-        if (wordComposer.size() > 1 && suggestions.size() > 0) {
-            final SuggestedWordInfo autoCorrectionSuggestion = suggestions.get(0);
+        if (wordComposer.size() > 1 && null != suggestion) {
             //final int autoCorrectionSuggestionScore = sortedScores[0];
-            final int autoCorrectionSuggestionScore = autoCorrectionSuggestion.mScore;
+            final int autoCorrectionSuggestionScore = suggestion.mScore;
             // TODO: when the normalized score of the first suggestion is nearly equals to
             //       the normalized score of the second suggestion, behave less aggressive.
             final float normalizedScore = BinaryDictionary.calcNormalizedScore(
-                    consideredWord.toString(), autoCorrectionSuggestion.mWord.toString(),
+                    consideredWord.toString(), suggestion.mWord.toString(),
                     autoCorrectionSuggestionScore);
             if (DBG) {
-                Log.d(TAG, "Normalized " + consideredWord + "," + autoCorrectionSuggestion + ","
+                Log.d(TAG, "Normalized " + consideredWord + "," + suggestion + ","
                         + autoCorrectionSuggestionScore + ", " + normalizedScore
                         + "(" + autoCorrectionThreshold + ")");
             }
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 08a7b869d289b8bf406d8829ca3e59066e0e6a87..baf24c8aec3e69ee733cce1ae813788f76c68ad5 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -249,6 +249,8 @@ public class Suggest {
                     transformedWordInfo.mSourceDict);
         }
 
+        final SuggestedWordInfo bestSuggestion = suggestionsContainer.isEmpty()
+                ? null : suggestionsContainer.get(0);
         final CharSequence whitelistedWord = capitalizeWord(isAllUpperCase,
                 isFirstCharCapitalized, mWhiteListDictionary.getWhitelistedWord(consideredWord));
 
@@ -256,7 +258,7 @@ public class Suggest {
         if (isCorrectionEnabled) {
             final CharSequence autoCorrection =
                     AutoCorrection.computeAutoCorrectionWord(mDictionaries, wordComposer,
-                            suggestionsContainer, consideredWord, mAutoCorrectionThreshold,
+                            bestSuggestion, consideredWord, mAutoCorrectionThreshold,
                             whitelistedWord);
             hasAutoCorrection = (null != autoCorrection);
         } else {