diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index c6e0fb7..e8ea5e3 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -195,11 +195,10 @@
                                 (Pair<SuggestedWords, String>) msg.obj;
                         // [IL]: this is the only place where the second arg is not
                         // suggestedWords.mTypedWord.
-                        latinIme.showSuggestionStripWithTypedWord(p.first, p.second);
+                        latinIme.showSuggestionStrip(p.first, p.second);
                     } else {
                         final SuggestedWords suggestedWords = (SuggestedWords) msg.obj;
-                        latinIme.showSuggestionStripWithTypedWord(suggestedWords,
-                                suggestedWords.mTypedWord);
+                        latinIme.showSuggestionStrip(suggestedWords, suggestedWords.mTypedWord);
                     }
                 } else {
                     latinIme.showGesturePreviewAndSuggestionStrip((SuggestedWords) msg.obj,
@@ -1274,7 +1273,7 @@
     // This method must run on the UI Thread.
     private void showGesturePreviewAndSuggestionStrip(final SuggestedWords suggestedWords,
             final boolean dismissGestureFloatingPreviewText) {
-        showSuggestionStripWithTypedWord(suggestedWords, suggestedWords.mTypedWord);
+        showSuggestionStrip(suggestedWords, suggestedWords.mTypedWord);
         final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
         mainKeyboardView.showGestureFloatingPreviewText(suggestedWords);
         if (dismissGestureFloatingPreviewText) {
@@ -1410,7 +1409,7 @@
     }
 
     // TODO[IL]: Define a clean interface for this
-    public void showSuggestionStripWithTypedWord(final SuggestedWords sourceSuggestedWords,
+    public void showSuggestionStrip(final SuggestedWords sourceSuggestedWords,
             final String typedWord) {
         final SuggestedWords suggestedWords =
                 sourceSuggestedWords.isEmpty() ? SuggestedWords.EMPTY : sourceSuggestedWords;
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 2978aa8..bbeb74b 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -1116,7 +1116,7 @@
         final SuggestedWords suggestedWords = holder.get(null,
                 Constants.GET_SUGGESTED_WORDS_TIMEOUT);
         if (suggestedWords != null) {
-            mLatinIME.showSuggestionStripWithTypedWord(suggestedWords, suggestedWords.mTypedWord);
+            mLatinIME.showSuggestionStrip(suggestedWords, suggestedWords.mTypedWord);
         }
     }
 
@@ -1620,8 +1620,7 @@
                 mConnection.commitText(batchInputText.substring(0, indexOfLastSpace), 1);
                 final SuggestedWords suggestedWordsForLastWordOfPhraseGesture =
                         suggestedWords.getSuggestedWordsForLastWordOfPhraseGesture();
-                mLatinIME.showSuggestionStripWithTypedWord(
-                        suggestedWordsForLastWordOfPhraseGesture,
+                mLatinIME.showSuggestionStrip(suggestedWordsForLastWordOfPhraseGesture,
                         suggestedWordsForLastWordOfPhraseGesture.mTypedWord);
             }
             final String lastWord = batchInputText.substring(indexOfLastSpace);
