diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java
index fe3c72f4c21976dbdf1e5d68dbaf44ef29bd485c..5fe40436739fa82238ddb74fec729a702654eb72 100644
--- a/java/src/com/android/inputmethod/latin/CandidateView.java
+++ b/java/src/com/android/inputmethod/latin/CandidateView.java
@@ -49,6 +49,11 @@ import java.util.List;
 
 public class CandidateView extends LinearLayout implements OnClickListener, OnLongClickListener {
 
+    public interface Listener {
+        public boolean addWordToDictionary(String word);
+        public void pickSuggestionManually(int index, CharSequence word);
+    }
+
     private static final CharacterStyle BOLD_SPAN = new StyleSpan(Typeface.BOLD);
     private static final CharacterStyle UNDERLINE_SPAN = new UnderlineSpan();
     private static final int MAX_SUGGESTIONS = 16;
@@ -66,7 +71,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
     private final PopupWindow mPreviewPopup;
     private final TextView mPreviewText;
 
-    private LatinIME mService;
+    private Listener mListener;
     private SuggestedWords mSuggestions = SuggestedWords.EMPTY;
     private boolean mShowingAutoCorrectionInverted;
     private boolean mShowingAddToDictionary;
@@ -159,11 +164,11 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
     }
 
     /**
-     * A connection back to the service to communicate with the text field
+     * A connection back to the input method.
      * @param listener
      */
-    public void setService(LatinIME listener) {
-        mService = listener;
+    public void setListener(Listener listener) {
+        mListener = listener;
     }
 
     public void setSuggestions(SuggestedWords suggestions) {
@@ -327,7 +332,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
     }
 
     private void addToDictionary(CharSequence word) {
-        if (mService.addWordToDictionary(word.toString())) {
+        if (mListener.addWordToDictionary(word.toString())) {
             showPreview(0, getContext().getString(R.string.added_word, word));
         }
     }
@@ -349,7 +354,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo
         if (mShowingAddToDictionary && index == 0) {
             addToDictionary(word);
         } else {
-            mService.pickSuggestionManually(index, word);
+            mListener.pickSuggestionManually(index, word);
         }
     }
 
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index a4a04ffb1f0ebd99e974110c33f1fa2994f99638..a719350122f4002174dbfe656fb38f056f4a6baf 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -77,7 +77,8 @@ import java.util.Locale;
 /**
  * Input method implementation for Qwerty'ish keyboard.
  */
-public class LatinIME extends InputMethodServiceCompatWrapper implements KeyboardActionListener {
+public class LatinIME extends InputMethodServiceCompatWrapper implements KeyboardActionListener,
+        CandidateView.Listener {
     private static final String TAG = LatinIME.class.getSimpleName();
     private static final boolean PERF_DEBUG = false;
     private static final boolean TRACE = false;
@@ -491,7 +492,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
         super.setInputView(view);
         mCandidateViewContainer = view.findViewById(R.id.candidates_container);
         mCandidateView = (CandidateView) view.findViewById(R.id.candidates);
-        mCandidateView.setService(this);
+        mCandidateView.setListener(this);
         mCandidateStripHeight = (int)mResources.getDimension(R.dimen.candidate_strip_height);
     }
 
@@ -1000,6 +1001,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
         }
     }
 
+    @Override
     public boolean addWordToDictionary(String word) {
         mUserDictionary.addWord(word, 128);
         // Suggestion strip should be updated after the operation of adding word to the
@@ -1524,6 +1526,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
         return false;
     }
 
+    @Override
     public void pickSuggestionManually(int index, CharSequence suggestion) {
         SuggestedWords suggestions = mCandidateView.getSuggestions();
         mVoiceProxy.flushAndLogAllTextModificationCounters(index, suggestion,