diff --git a/java/res/values-en/whitelist.xml b/java/res/values-en/whitelist.xml
index 4078b4d..f929cec 100644
--- a/java/res/values-en/whitelist.xml
+++ b/java/res/values-en/whitelist.xml
@@ -30,9 +30,707 @@
         <item>ill</item>
         <item>I\'ll</item>
 
+        <!-- Following entries came from AutoText -->
+        <!-- TODO: Trim down these entries by removing ones getting auto-corrected by the typing
+                error correction algorithms. -->
+        <item>255</item>
+        <item>abouta</item>
+        <item>about a</item>
+
+        <item>255</item>
+        <item>aboutit</item>
+        <item>about it</item>
+
+        <item>255</item>
+        <item>aboutthe</item>
+        <item>about the</item>
+
+        <item>255</item>
+        <item>acheive</item>
+        <item>achieve</item>
+
+        <item>255</item>
+        <item>acheived</item>
+        <item>achieved</item>
+
+        <item>255</item>
+        <item>acheiving</item>
+        <item>achieving</item>
+
+        <item>255</item>
+        <item>acomodate</item>
+        <item>accommodate</item>
+
+        <item>255</item>
+        <item>accomodate</item>
+        <item>accommodate</item>
+
+        <item>255</item>
+        <item>acn</item>
+        <item>can</item>
+
+        <item>255</item>
+        <item>adn</item>
+        <item>and</item>
+
+        <item>255</item>
+        <item>agian</item>
+        <item>again</item>
+
+        <item>255</item>
+        <item>ahd</item>
+        <item>had</item>
+
+        <item>255</item>
+        <item>ahve</item>
+        <item>have</item>
+
+        <item>255</item>
+        <item>aint</item>
+        <item>ain\'t</item>
+
+        <item>255</item>
+        <item>alot</item>
+        <item>a lot</item>
+
+        <item>255</item>
+        <item>amde</item>
+        <item>made</item>
+
+        <item>255</item>
+        <item>amke</item>
+        <item>make</item>
+
+        <item>255</item>
+        <item>andone</item>
+        <item>and one</item>
+
+        <item>255</item>
+        <item>andteh</item>
+        <item>and the</item>
+
+        <item>255</item>
+        <item>anothe</item>
+        <item>another</item>
+
+        <item>255</item>
+        <item>arent</item>
+        <item>aren\'t</item>
+
+        <item>255</item>
+        <item>asthe</item>
+        <item>as the</item>
+
+        <item>255</item>
+        <item>atthe</item>
+        <item>at the</item>
+
+        <item>255</item>
+        <item>bakc</item>
+        <item>back</item>
+
+        <item>255</item>
+        <item>beacuse</item>
+        <item>because</item>
+
+        <item>255</item>
+        <item>becasue</item>
+        <item>because</item>
+
+        <item>255</item>
+        <item>becaus</item>
+        <item>because</item>
+
+        <item>255</item>
+        <item>becausea</item>
+        <item>because a</item>
+
+        <item>255</item>
+        <item>becauseof</item>
+        <item>because of</item>
+
+        <item>255</item>
+        <item>becausethe</item>
+        <item>because the</item>
+
+        <item>255</item>
+        <item>becauseyou</item>
+        <item>because you</item>
+
+        <item>255</item>
+        <item>becuase</item>
+        <item>because</item>
+
+        <item>255</item>
+        <item>becuse</item>
+        <item>because</item>
+
+        <item>255</item>
+        <item>beleive</item>
+        <item>believe</item>
+
+        <item>255</item>
+        <item>butthe</item>
+        <item>but the</item>
+
+        <item>255</item>
+        <item>cant</item>
+        <item>can\'t</item>
+
+        <item>255</item>
+        <item>certian</item>
+        <item>certain</item>
+
+        <item>255</item>
+        <item>changable</item>
+        <item>changeable</item>
+
+        <item>255</item>
+        <item>chekc</item>
+        <item>check</item>
+
+        <item>255</item>
+        <item>chnage</item>
+        <item>change</item>
+
+        <item>255</item>
+        <item>couldnt</item>
+        <item>couldn\'t</item>
+
+        <item>255</item>
+        <item>couldthe</item>
+        <item>could the</item>
+
+        <item>255</item>
+        <item>couldve</item>
+        <item>could\'ve</item>
+
+        <item>255</item>
+        <item>cna</item>
+        <item>can</item>
+
+        <item>255</item>
+        <item>committment</item>
+        <item>commitment</item>
+
+        <item>255</item>
+        <item>committments</item>
+        <item>commitments</item>
+
+        <item>255</item>
+        <item>companys</item>
+        <item>company\'s</item>
+
+        <item>255</item>
+        <item>cxan</item>
+        <item>can</item>
+
+        <item>255</item>
+        <item>didint</item>
+        <item>didn\'t</item>
+
+        <item>255</item>
+        <item>didnot</item>
+        <item>did not</item>
+
+        <item>255</item>
+        <item>didnt</item>
+        <item>didn\'t</item>
+
+        <item>255</item>
+        <item>doesnt</item>
+        <item>doesn\'t</item>
+
+        <item>255</item>
+        <item>dont</item>
+        <item>don\'t</item>
+
+        <item>255</item>
+        <item>eyt</item>
+        <item>yet</item>
+
+        <item>255</item>
+        <item>fidn</item>
+        <item>find</item>
+
+        <item>255</item>
+        <item>fora</item>
+        <item>for a</item>
+
+        <item>255</item>
+        <item>freind</item>
+        <item>friend</item>
+
+        <item>255</item>
+        <item>friday</item>
+        <item>Friday</item>
+
+        <item>255</item>
+        <item>hadbeen</item>
+        <item>had been</item>
+
+        <item>255</item>
+        <item>hadnt</item>
+        <item>hadn\'t</item>
+
+        <item>255</item>
+        <item>haev</item>
+        <item>have</item>
+
+        <item>255</item>
+        <item>hasbeen</item>
+        <item>has been</item>
+
+        <item>255</item>
+        <item>hasnt</item>
+        <item>hasn\'t</item>
+
+        <item>255</item>
+        <item>havent</item>
+        <item>haven\'t</item>
+
+        <item>255</item>
+        <item>hed</item>
+        <item>he\'d</item>
+
+        <item>255</item>
+        <item>hel</item>
+        <item>he\'ll</item>
+
+        <item>255</item>
+        <item>heres</item>
+        <item>here\'s</item>
+
+        <item>255</item>
+        <item>hes</item>
+        <item>he\'s</item>
+
+        <item>255</item>
+        <item>hlep</item>
+        <item>help</item>
+
+        <item>255</item>
+        <item>howd</item>
+        <item>how\'d</item>
+
+        <item>255</item>
+        <item>howll</item>
+        <item>how\'ll</item>
+
+        <item>255</item>
+        <item>hows</item>
+        <item>how\'s</item>
+
+        <item>255</item>
+        <item>howve</item>
+        <item>how\'ve</item>
+
+        <item>255</item>
+        <item>hte</item>
+        <item>the</item>
+
+        <item>255</item>
+        <item>htis</item>
+        <item>this</item>
+
+        <item>255</item>
+        <item>hvae</item>
+        <item>have</item>
+
+        <item>255</item>
+        <item>i</item>
+        <item>I</item>
+
+        <item>255</item>
+        <item>il</item>
+        <item>I\'ll</item>
+
+        <item>255</item>
+        <item>im</item>
+        <item>I\'m</item>
+
+        <item>255</item>
+        <item>i\'m</item>
+        <item>I\'m</item>
+
+        <item>255</item>
+        <item>i\'ll</item>
+        <item>I\'ll</item>
+
+        <item>255</item>
+        <item>i\'ve</item>
+        <item>I\'ve</item>
+
+        <item>255</item>
+        <item>inteh</item>
+        <item>in the</item>
+
+        <item>255</item>
+        <item>isnt</item>
+        <item>isn\'t</item>
+
+        <item>255</item>
+        <item>isthe</item>
+        <item>is the</item>
+
+        <item>255</item>
+        <item>itd</item>
+        <item>it\'d</item>
+
+        <item>255</item>
+        <item>itis</item>
+        <item>it is</item>
+
+        <item>255</item>
+        <item>itll</item>
+        <item>it\'ll</item>
+
+        <item>255</item>
+        <item>itsa</item>
+        <item>it\'s a</item>
+
+        <item>255</item>
+        <item>ive</item>
+        <item>I\'ve</item>
+
         <item>255</item>
         <item>lets</item>
         <item>let\'s</item>
 
+        <item>255</item>
+        <item>maam</item>
+        <item>ma\'am</item>
+
+        <item>255</item>
+        <item>mkae</item>
+        <item>make</item>
+
+        <item>255</item>
+        <item>mkaes</item>
+        <item>makes</item>
+
+        <item>255</item>
+        <item>monday</item>
+        <item>Monday</item>
+
+        <item>255</item>
+        <item>mustnt</item>
+        <item>mustn\'t</item>
+
+        <item>255</item>
+        <item>neednt</item>
+        <item>needn\'t</item>
+
+        <item>255</item>
+        <item>oclock</item>
+        <item>o\'clock</item>
+
+        <item>255</item>
+        <item>ofits</item>
+        <item>of its</item>
+
+        <item>255</item>
+        <item>ofthe</item>
+        <item>of the</item>
+
+        <item>255</item>
+        <item>omre</item>
+        <item>more</item>
+
+        <item>255</item>
+        <item>oneof</item>
+        <item>one of</item>
+
+        <item>255</item>
+        <item>otehr</item>
+        <item>other</item>
+
+        <item>255</item>
+        <item>outof</item>
+        <item>out of</item>
+
+        <item>255</item>
+        <item>overthe</item>
+        <item>over the</item>
+
+        <item>255</item>
+        <item>owrk</item>
+        <item>work</item>
+
+        <item>255</item>
+        <item>percentof</item>
+        <item>percent of</item>
+
+        <item>255</item>
+        <item>recieve</item>
+        <item>receive</item>
+
+        <item>255</item>
+        <item>recieved</item>
+        <item>received</item>
+
+        <item>255</item>
+        <item>recieving</item>
+        <item>receiving</item>
+
+        <item>255</item>
+        <item>saidthat</item>
+        <item>said that</item>
+
+        <item>255</item>
+        <item>saidthe</item>
+        <item>said the</item>
+
+        <item>255</item>
+        <item>saturday</item>
+        <item>Saturday</item>
+
+        <item>255</item>
+        <item>seh</item>
+        <item>she</item>
+
+        <item>255</item>
+        <item>shant</item>
+        <item>shan\'t</item>
+
+        <item>255</item>
+        <item>she\'</item>
+        <item>she\'ll</item>
+
+        <item>255</item>
+        <item>shel</item>
+        <item>she\'ll</item>
+
+        <item>255</item>
+        <item>shes</item>
+        <item>she\'s</item>
+
+        <item>255</item>
+        <item>shouldent</item>
+        <item>shouldn\'t</item>
+
+        <item>255</item>
+        <item>shouldnt</item>
+        <item>shouldn\'t</item>
+
+        <item>255</item>
+        <item>shouldve</item>
+        <item>should\'ve</item>
+
+        <item>255</item>
+        <item>sunday</item>
+        <item>Sunday</item>
+
+        <item>255</item>
+        <item>tahn</item>
+        <item>than</item>
+
+        <item>255</item>
+        <item>taht</item>
+        <item>that</item>
+
+        <item>255</item>
+        <item>teh</item>
+        <item>the</item>
+
+        <item>255</item>
+        <item>thatd</item>
+        <item>that\'d</item>
+
+        <item>255</item>
+        <item>thatll</item>
+        <item>that\'ll</item>
+
+        <item>255</item>
+        <item>thats</item>
+        <item>that\'s</item>
+
+        <item>255</item>
+        <item>thatthe</item>
+        <item>that the</item>
+
+        <item>255</item>
+        <item>theres</item>
+        <item>there\'s</item>
+
+        <item>255</item>
+        <item>theyd</item>
+        <item>they\'d</item>
+
+        <item>255</item>
+        <item>theyll</item>
+        <item>they\'ll</item>
+
+        <item>255</item>
+        <item>theyre</item>
+        <item>they\'re</item>
+
+        <item>255</item>
+        <item>theyve</item>
+        <item>they\'ve</item>
+
+        <item>255</item>
+        <item>thier</item>
+        <item>their</item>
+
+        <item>255</item>
+        <item>thsi</item>
+        <item>this</item>
+
+        <item>255</item>
+        <item>thursday</item>
+        <item>Thursday</item>
+
+        <item>255</item>
+        <item>tothe</item>
+        <item>to the</item>
+
+        <item>255</item>
+        <item>tuesday</item>
+        <item>Tuesday</item>
+
+        <item>255</item>
+        <item>UnitedStates</item>
+        <item>United States</item>
+
+        <item>255</item>
+        <item>unitedstates</item>
+        <item>United States</item>
+
+        <item>255</item>
+        <item>visavis</item>
+        <item>vis-a-vis</item>
+
+        <item>255</item>
+        <item>wasnt</item>
+        <item>wasn\'t</item>
+
+        <item>255</item>
+        <item>wednesday</item>
+        <item>Wednesday</item>
+
+        <item>255</item>
+        <item>wierd</item>
+        <item>weird</item>
+
+        <item>255</item>
+        <item>wel</item>
+        <item>we\'ll</item>
+
+        <item>255</item>
+        <item>wer</item>
+        <item>we\'re</item>
+
+        <item>255</item>
+        <item>werent</item>
+        <item>weren\'t</item>
+
+        <item>255</item>
+        <item>weve</item>
+        <item>we\'ve</item>
+
+        <item>255</item>
+        <item>whatd</item>
+        <item>what\'d</item>
+
+        <item>255</item>
+        <item>whatll</item>
+        <item>what\'ll</item>
+
+        <item>255</item>
+        <item>whatm</item>
+        <item>what\'m</item>
+
+        <item>255</item>
+        <item>whatre</item>
+        <item>what\'re</item>
+
+        <item>255</item>
+        <item>whats</item>
+        <item>what\'s</item>
+
+        <item>255</item>
+        <item>whens</item>
+        <item>when\'s</item>
+
+        <item>255</item>
+        <item>whered</item>
+        <item>where\'d</item>
+
+        <item>255</item>
+        <item>wherell</item>
+        <item>where\'ll</item>
+
+        <item>255</item>
+        <item>wheres</item>
+        <item>where\'s</item>
+
+        <item>255</item>
+        <item>whod</item>
+        <item>who\'d</item>
+
+        <item>255</item>
+        <item>wholl</item>
+        <item>who\'ll</item>
+
+        <item>255</item>
+        <item>whos</item>
+        <item>who\'s</item>
+
+        <item>255</item>
+        <item>whove</item>
+        <item>who\'ve</item>
+
+        <item>255</item>
+        <item>whyd</item>
+        <item>why\'d</item>
+
+        <item>255</item>
+        <item>whyll</item>
+        <item>why\'ll</item>
+
+        <item>255</item>
+        <item>whys</item>
+        <item>why\'s</item>
+
+        <item>255</item>
+        <item>whyve</item>
+        <item>why\'ve</item>
+
+        <item>255</item>
+        <item>witha</item>
+        <item>with a</item>
+
+        <item>255</item>
+        <item>wont</item>
+        <item>won\'t</item>
+
+        <item>255</item>
+        <item>wouldnt</item>
+        <item>wouldn\'t</item>
+
+        <item>255</item>
+        <item>wouldve</item>
+        <item>would\'ve</item>
+
+        <item>255</item>
+        <item>yall</item>
+        <item>y\'all</item>
+
+        <item>255</item>
+        <item>youd</item>
+        <item>you\'d</item>
+
+        <item>255</item>
+        <item>youll</item>
+        <item>you\'ll</item>
+
+        <item>255</item>
+        <item>youre</item>
+        <item>you\'re</item>
+
+        <item>255</item>
+        <item>youve</item>
+        <item>you\'ve</item>
     </string-array>
 </resources>
diff --git a/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java b/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java
index f33a462..36ffe2d 100644
--- a/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java
+++ b/java/src/com/android/inputmethod/deprecated/recorrection/RecorrectionSuggestionEntries.java
@@ -57,7 +57,7 @@
 
     private static SuggestedWords.Builder getTypedSuggestions(
             Suggest suggest, KeyboardSwitcher keyboardSwitcher, WordComposer word) {
-        return suggest.getSuggestedWordBuilder(keyboardSwitcher.getKeyboardView(), word, null,
+        return suggest.getSuggestedWordBuilder(word, null,
                 keyboardSwitcher.getLatinKeyboard().getProximityInfo());
     }
 }
diff --git a/java/src/com/android/inputmethod/latin/AutoCorrection.java b/java/src/com/android/inputmethod/latin/AutoCorrection.java
index e6ae2c5..fc97710 100644
--- a/java/src/com/android/inputmethod/latin/AutoCorrection.java
+++ b/java/src/com/android/inputmethod/latin/AutoCorrection.java
@@ -50,7 +50,7 @@
     public void updateAutoCorrectionStatus(Map<String, Dictionary> dictionaries,
             WordComposer wordComposer, ArrayList<CharSequence> suggestions, int[] sortedScores,
             CharSequence typedWord, double autoCorrectionThreshold, int correctionMode,
-            CharSequence quickFixedWord, CharSequence whitelistedWord) {
+            CharSequence whitelistedWord) {
         if (hasAutoCorrectionForWhitelistedWord(whitelistedWord)) {
             mHasAutoCorrection = true;
             mAutoCorrectionWord = whitelistedWord;
@@ -58,9 +58,6 @@
                 dictionaries, wordComposer, suggestions, typedWord, correctionMode)) {
             mHasAutoCorrection = true;
             mAutoCorrectionWord = typedWord;
-        } else if (hasAutoCorrectionForQuickFix(quickFixedWord)) {
-            mHasAutoCorrection = true;
-            mAutoCorrectionWord = quickFixedWord;
         } else if (hasAutoCorrectionForBinaryDictionary(wordComposer, suggestions, correctionMode,
                 sortedScores, typedWord, autoCorrectionThreshold)) {
             mHasAutoCorrection = true;
@@ -109,10 +106,6 @@
                 || correctionMode == Suggest.CORRECTION_FULL_BIGRAM);
     }
 
-    private static boolean hasAutoCorrectionForQuickFix(CharSequence quickFixedWord) {
-        return quickFixedWord != null;
-    }
-
     private boolean hasAutoCorrectionForBinaryDictionary(WordComposer wordComposer,
             ArrayList<CharSequence> suggestions, int correctionMode, int[] sortedScores,
             CharSequence typedWord, double autoCorrectionThreshold) {
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index dfb4d06..777881c 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -550,7 +550,6 @@
         if (mSettingsValues.mAutoCorrectEnabled) {
             mSuggest.setAutoCorrectionThreshold(mSettingsValues.mAutoCorrectionThreshold);
         }
-        updateAutoTextEnabled();
 
         mUserDictionary = new UserDictionary(this, localeStr);
         mSuggest.setUserDictionary(mUserDictionary);
@@ -734,7 +733,6 @@
 
         loadSettings();
         updateCorrectionMode();
-        updateAutoTextEnabled();
         updateSuggestionVisibility(mPrefs, mResources);
 
         if (mSuggest != null && mSettingsValues.mAutoCorrectEnabled) {
@@ -1673,8 +1671,7 @@
         }
         // getSuggestedWordBuilder handles gracefully a null value of prevWord
         final SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(
-                mKeyboardSwitcher.getKeyboardView(), wordComposer, prevWord,
-                mKeyboardSwitcher.getLatinKeyboard().getProximityInfo());
+                wordComposer, prevWord, mKeyboardSwitcher.getLatinKeyboard().getProximityInfo());
 
         boolean autoCorrectionAvailable = !mInputTypeNoAutoCorrect && mSuggest.hasAutoCorrection();
         final CharSequence typedWord = wordComposer.getTypedWord();
@@ -1907,9 +1904,8 @@
 
         final CharSequence prevWord = EditingUtils.getThisWord(getCurrentInputConnection(),
                 mSettingsValues.mWordSeparators);
-        SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(
-                mKeyboardSwitcher.getKeyboardView(), sEmptyWordComposer, prevWord,
-                mKeyboardSwitcher.getLatinKeyboard().getProximityInfo());
+        SuggestedWords.Builder builder = mSuggest.getSuggestedWordBuilder(sEmptyWordComposer,
+                prevWord, mKeyboardSwitcher.getLatinKeyboard().getProximityInfo());
 
         if (builder.size() > 0) {
             // Explicitly supply an empty typed word (the no-second-arg version of
@@ -2214,18 +2210,6 @@
         }
     }
 
-    private void updateAutoTextEnabled() {
-        if (mSuggest == null) return;
-        // We want to use autotext if the settings are asking for auto corrections, and if
-        // the input language is the same as the system language (because autotext will only
-        // work in the system language so if we are entering text in a different language we
-        // do not want it on).
-        // We used to look at the "quick fixes" option instead of mAutoCorrectEnabled, but
-        // this option was redundant and confusing and therefore removed.
-        mSuggest.setQuickFixesEnabled(mSettingsValues.mAutoCorrectEnabled
-                && SubtypeSwitcher.getInstance().isSystemLanguageSameAsInputLanguage());
-    }
-
     private void updateSuggestionVisibility(final SharedPreferences prefs, final Resources res) {
         final String suggestionVisiblityStr = prefs.getString(
                 Settings.PREF_SHOW_SUGGESTIONS_SETTING,
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 16dccf8..208fd13 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -17,10 +17,8 @@
 package com.android.inputmethod.latin;
 
 import android.content.Context;
-import android.text.AutoText;
 import android.text.TextUtils;
 import android.util.Log;
-import android.view.View;
 
 import com.android.inputmethod.keyboard.ProximityInfo;
 
@@ -97,8 +95,6 @@
 
     private static final int PREF_MAX_BIGRAMS = 60;
 
-    private boolean mQuickFixesEnabled;
-
     private double mAutoCorrectionThreshold;
     private int[] mScores = new int[mPrefMaxSuggestions];
     private int[] mBigramScores = new int[PREF_MAX_BIGRAMS];
@@ -160,6 +156,7 @@
             final Locale locale) {
         mMainDict = null;
         new Thread("InitializeBinaryDictionary") {
+            @Override
             public void run() {
                 final Dictionary newMainDict = DictionaryFactory.createDictionaryFromManager(
                         context, locale, dictionaryResId);
@@ -170,11 +167,6 @@
         }.start();
     }
 
-
-    public void setQuickFixesEnabled(boolean enabled) {
-        mQuickFixesEnabled = enabled;
-    }
-
     public int getCorrectionMode() {
         return mCorrectionMode;
     }
@@ -256,14 +248,13 @@
     /**
      * Returns a object which represents suggested words that match the list of character codes
      * passed in. This object contents will be overwritten the next time this function is called.
-     * @param view a view for retrieving the context for AutoText
      * @param wordComposer contains what is currently being typed
      * @param prevWordForBigram previous word (used only for bigram)
      * @return suggested words object.
      */
-    public SuggestedWords getSuggestions(final View view, final WordComposer wordComposer,
+    public SuggestedWords getSuggestions(final WordComposer wordComposer,
             final CharSequence prevWordForBigram, final ProximityInfo proximityInfo) {
-        return getSuggestedWordBuilder(view, wordComposer, prevWordForBigram,
+        return getSuggestedWordBuilder(wordComposer, prevWordForBigram,
                 proximityInfo).build();
     }
 
@@ -295,7 +286,7 @@
     }
 
     // TODO: cleanup dictionaries looking up and suggestions building with SuggestedWords.Builder
-    public SuggestedWords.Builder getSuggestedWordBuilder(final View view,
+    public SuggestedWords.Builder getSuggestedWordBuilder(
             final WordComposer wordComposer, CharSequence prevWordForBigram,
             final ProximityInfo proximityInfo) {
         LatinImeLogger.onStartSuggestion(prevWordForBigram);
@@ -336,6 +327,7 @@
                     }
                 } else {
                     // Word entered: return only bigrams that match the first char of the typed word
+                    @SuppressWarnings("null")
                     final char currentChar = typedWord.charAt(0);
                     // TODO: Must pay attention to locale when changing case.
                     final char currentCharUpper = Character.toUpperCase(currentChar);
@@ -363,34 +355,14 @@
                 dictionary.getWords(wordComposer, this, proximityInfo);
             }
         }
-        CharSequence autoText = null;
         final String typedWordString = typedWord == null ? null : typedWord.toString();
-        if (typedWord != null) {
-            // Apply quick fix only for the typed word.
-            if (mQuickFixesEnabled) {
-                final String lowerCaseTypedWord = typedWordString.toLowerCase();
-                // Is there an AutoText (also known as Quick Fixes) correction?
-                // Capitalize as needed
-                autoText = capitalizeWord(mIsAllUpperCase, mIsFirstCharCapitalized, AutoText.get(
-                        lowerCaseTypedWord, 0, lowerCaseTypedWord.length(), view));
-                if (DBG) {
-                    if (autoText != null) {
-                        Log.d(TAG, "Auto corrected by AUTOTEXT: " + typedWord + " -> " + autoText);
-                    }
-                }
-            }
-        }
 
         CharSequence whitelistedWord = capitalizeWord(mIsAllUpperCase, mIsFirstCharCapitalized,
                 mWhiteListDictionary.getWhiteListedWord(typedWordString));
 
         mAutoCorrection.updateAutoCorrectionStatus(mUnigramDictionaries, wordComposer,
                 mSuggestions, mScores, typedWord, mAutoCorrectionThreshold, mCorrectionMode,
-                autoText, whitelistedWord);
-
-        if (autoText != null) {
-            mSuggestions.add(0, autoText);
-        }
+                whitelistedWord);
 
         if (whitelistedWord != null) {
             mSuggestions.add(0, whitelistedWord);
diff --git a/tests/src/com/android/inputmethod/latin/SuggestHelper.java b/tests/src/com/android/inputmethod/latin/SuggestHelper.java
index 48fe817..43b8cf6 100644
--- a/tests/src/com/android/inputmethod/latin/SuggestHelper.java
+++ b/tests/src/com/android/inputmethod/latin/SuggestHelper.java
@@ -49,7 +49,6 @@
     }
 
     private void init() {
-        mSuggest.setQuickFixesEnabled(false);
         mSuggest.setCorrectionMode(Suggest.CORRECTION_FULL);
         mKeyDetector.setKeyboard(mKeyboard, 0, 0);
         mKeyDetector.setProximityCorrectionEnabled(true);
@@ -94,13 +93,13 @@
 
     // TODO: This may be slow, but is OK for test so far.
     public SuggestedWords getSuggestions(CharSequence typed) {
-        return mSuggest.getSuggestions(null, createWordComposer(typed), null,
+        return mSuggest.getSuggestions(createWordComposer(typed), null,
                 mKeyboard.getProximityInfo());
     }
 
     public CharSequence getFirstSuggestion(CharSequence typed) {
         WordComposer word = createWordComposer(typed);
-        SuggestedWords suggestions = mSuggest.getSuggestions(null, word, null,
+        SuggestedWords suggestions = mSuggest.getSuggestions(word, null,
                 mKeyboard.getProximityInfo());
         // Note that suggestions.getWord(0) is the word user typed.
         return suggestions.size() > 1 ? suggestions.getWord(1) : null;
@@ -108,7 +107,7 @@
 
     public CharSequence getAutoCorrection(CharSequence typed) {
         WordComposer word = createWordComposer(typed);
-        SuggestedWords suggestions = mSuggest.getSuggestions(null, word, null,
+        SuggestedWords suggestions = mSuggest.getSuggestions(word, null,
                 mKeyboard.getProximityInfo());
         // Note that suggestions.getWord(0) is the word user typed.
         return (suggestions.size() > 1 && mSuggest.hasAutoCorrection())
@@ -117,7 +116,7 @@
 
     public int getSuggestIndex(CharSequence typed, CharSequence expected) {
         WordComposer word = createWordComposer(typed);
-        SuggestedWords suggestions = mSuggest.getSuggestions(null, word, null,
+        SuggestedWords suggestions = mSuggest.getSuggestions(word, null,
                 mKeyboard.getProximityInfo());
         // Note that suggestions.getWord(0) is the word user typed.
         for (int i = 1; i < suggestions.size(); i++) {
@@ -130,14 +129,14 @@
     private void getBigramSuggestions(CharSequence previous, CharSequence typed) {
         if (!TextUtils.isEmpty(previous) && (typed.length() > 1)) {
             WordComposer firstChar = createWordComposer(Character.toString(typed.charAt(0)));
-            mSuggest.getSuggestions(null, firstChar, previous, mKeyboard.getProximityInfo());
+            mSuggest.getSuggestions(firstChar, previous, mKeyboard.getProximityInfo());
         }
     }
 
     public CharSequence getBigramFirstSuggestion(CharSequence previous, CharSequence typed) {
         WordComposer word = createWordComposer(typed);
         getBigramSuggestions(previous, typed);
-        SuggestedWords suggestions = mSuggest.getSuggestions(null, word, previous,
+        SuggestedWords suggestions = mSuggest.getSuggestions(word, previous,
                 mKeyboard.getProximityInfo());
         return suggestions.size() > 1 ? suggestions.getWord(1) : null;
     }
@@ -145,7 +144,7 @@
     public CharSequence getBigramAutoCorrection(CharSequence previous, CharSequence typed) {
         WordComposer word = createWordComposer(typed);
         getBigramSuggestions(previous, typed);
-        SuggestedWords suggestions = mSuggest.getSuggestions(null, word, previous,
+        SuggestedWords suggestions = mSuggest.getSuggestions(word, previous,
                 mKeyboard.getProximityInfo());
         return (suggestions.size() > 1 && mSuggest.hasAutoCorrection())
                 ? suggestions.getWord(1) : null;
@@ -155,7 +154,7 @@
             CharSequence expected) {
         WordComposer word = createWordComposer(typed);
         getBigramSuggestions(previous, typed);
-        SuggestedWords suggestions = mSuggest.getSuggestions(null, word, previous,
+        SuggestedWords suggestions = mSuggest.getSuggestions(word, previous,
                 mKeyboard.getProximityInfo());
         for (int i = 1; i < suggestions.size(); i++) {
             if (TextUtils.equals(suggestions.getWord(i), expected))
diff --git a/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java b/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java
index a7d532e..7efd5d0 100644
--- a/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java
+++ b/tests/src/com/android/inputmethod/latin/UserBigramSuggestHelper.java
@@ -58,7 +58,7 @@
         flushUserBigrams();
         if (!TextUtils.isEmpty(previous) && !TextUtils.isEmpty(Character.toString(typed))) {
             WordComposer firstChar = createWordComposer(Character.toString(typed));
-            mSuggest.getSuggestions(null, firstChar, previous, mKeyboard.getProximityInfo());
+            mSuggest.getSuggestions(firstChar, previous, mKeyboard.getProximityInfo());
             boolean reloading = mUserBigram.reloadDictionaryIfRequired();
             if (reloading) mUserBigram.waitForDictionaryLoading();
             mUserBigram.getBigrams(firstChar, previous, mSuggest);
