diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboard.java b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
index 1414626..4e139e8 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboard.java
@@ -56,8 +56,8 @@
     private Drawable mMicPreviewIcon;
     private Drawable m123MicIcon;
     private Drawable m123MicPreviewIcon;
-    private Drawable mButtonArrowLeftIcon;
-    private Drawable mButtonArrowRightIcon;
+    private final Drawable mButtonArrowLeftIcon;
+    private final Drawable mButtonArrowRightIcon;
     private Key mShiftKey;
     private Key mEnterKey;
     private Key mF1Key;
@@ -66,15 +66,15 @@
     private int mSpaceKeyIndex = -1;
     private int mSpaceDragStartX;
     private int mSpaceDragLastDiff;
-    /* package */ Locale mLocale;
+    private Locale mLocale;
     private LanguageSwitcher mLanguageSwitcher;
-    private Resources mRes;
-    private Context mContext;
+    private final Resources mRes;
+    private final Context mContext;
     // Whether this keyboard has voice icon on it
     private boolean mHasVoiceButton;
     // Whether voice icon is enabled at all
     private boolean mVoiceEnabled;
-    private boolean mIsAlphaKeyboard;
+    private final boolean mIsAlphaKeyboard;
     private CharSequence m123Label;
     private boolean mCurrentlyInSpace;
     private SlidingLocaleDrawable mSlidingLocaleIcon;
@@ -97,7 +97,7 @@
     private static final float OVERLAP_PERCENTAGE_LOW_PROB = 0.70f;
     private static final float OVERLAP_PERCENTAGE_HIGH_PROB = 0.85f;
 
-    static int sSpacebarVerticalCorrection;
+    private static int sSpacebarVerticalCorrection;
 
     public LatinKeyboard(Context context, int xmlLayoutResId) {
         this(context, xmlLayoutResId, 0);
@@ -131,11 +131,6 @@
         mSpaceKeyIndex = indexOf(' ');
     }
 
-    public LatinKeyboard(Context context, int layoutTemplateResId, 
-            CharSequence characters, int columns, int horizontalPadding) {
-        super(context, layoutTemplateResId, characters, columns, horizontalPadding);
-    }
-
     @Override
     protected Key createKeyFromXml(Resources res, Row parent, int x, int y, 
             XmlResourceParser parser) {
@@ -482,9 +477,8 @@
                    .equalsIgnoreCase(locale.getLanguage())) {
             locale = null;
         }
-        setColorOfSymbolIcons(isAutoCompletion, isBlackSym);
-        if (mLocale != null && mLocale.equals(locale)) return;
         mLocale = locale;
+        setColorOfSymbolIcons(isAutoCompletion, isBlackSym);
     }
 
     boolean isCurrentlyInSpace() {
