diff --git a/java/AndroidManifest.xml b/java/AndroidManifest.xml
index 0d80c037bec4bbe40c30ad1d421e8fc7ee3fcbd4..a7e64bfaa467a085437abf63c3b4e4fa5c6e16c7 100644
--- a/java/AndroidManifest.xml
+++ b/java/AndroidManifest.xml
@@ -34,7 +34,8 @@
     <application android:label="@string/english_ime_name"
             android:icon="@drawable/ic_launcher_keyboard"
             android:killAfterRestore="false"
-            android:supportsRtl="true">
+            android:supportsRtl="true"
+            android:allowBackup="true">
 
         <service android:name="LatinIME"
                 android:label="@string/english_ime_name"
@@ -110,13 +111,14 @@
             </intent-filter>
         </receiver>
 
-        <receiver android:name=".personalization.DictionaryDecayBroadcastReciever">
+        <receiver android:name=".personalization.DictionaryDecayBroadcastReciever"
+            android:exported="false">
             <intent-filter>
                 <action android:name="com.android.inputmethod.latin.personalization.DICT_DECAY" />
             </intent-filter>
         </receiver>
 
-        <receiver android:name=".DictionaryPackInstallBroadcastReceiver">
+        <receiver android:name=".DictionaryPackInstallBroadcastReceiver" android:exported="false">
             <intent-filter>
                 <action android:name="com.android.inputmethod.dictionarypack.aosp.UNKNOWN_CLIENT" />
             </intent-filter>
diff --git a/java/res/layout/research_feedback_fragment_layout.xml b/java/res/layout/research_feedback_fragment_layout.xml
index 505a1e8d906f819d4794bf7ec62798f7677c6150..fb5c27815d9de84d4bae3f649cd42c63188af6ae 100644
--- a/java/res/layout/research_feedback_fragment_layout.xml
+++ b/java/res/layout/research_feedback_fragment_layout.xml
@@ -84,40 +84,32 @@
             android:checked="false"
             android:text="@string/research_feedback_include_recording_label" />
         <LinearLayout
+            style="?android:attr/buttonBarStyle"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:divider="?android:attr/dividerHorizontal"
-            android:showDividers="beginning"
-            android:dividerPadding="0dip">
-            <LinearLayout
-                style="?android:attr/buttonBarStyle"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal"
-                android:layoutDirection="locale"
-                android:measureWithLargestChild="true">
-                <Button
-                    android:id="@+id/research_feedback_cancel_button"
-                    android:layout_width="wrap_content"
-                    android:layout_gravity="left"
-                    android:layout_weight="1"
-                    android:maxLines="2"
-                    style="?android:attr/buttonBarButtonStyle"
-                    android:textSize="14sp"
-                    android:text="@string/research_feedback_cancel"
-                    android:layout_height="wrap_content" />
-                <Button
-                    android:id="@+id/research_feedback_send_button"
-                    android:layout_width="wrap_content"
-                    android:layout_gravity="right"
-                    android:layout_weight="1"
-                    android:maxLines="2"
-                    style="?android:attr/buttonBarButtonStyle"
-                    android:textSize="14sp"
-                    android:text="@string/research_feedback_send"
-                    android:layout_height="wrap_content" />
-            </LinearLayout>
+            android:orientation="horizontal"
+            android:layoutDirection="locale"
+            android:measureWithLargestChild="true">
+            <Button
+                android:id="@+id/research_feedback_cancel_button"
+                android:layout_width="wrap_content"
+                android:layout_gravity="left"
+                android:layout_weight="1"
+                android:maxLines="2"
+                style="?android:attr/buttonBarButtonStyle"
+                android:textSize="14sp"
+                android:text="@string/research_feedback_cancel"
+                android:layout_height="wrap_content" />
+            <Button
+                android:id="@+id/research_feedback_send_button"
+                android:layout_width="wrap_content"
+                android:layout_gravity="right"
+                android:layout_weight="1"
+                android:maxLines="2"
+                style="?android:attr/buttonBarButtonStyle"
+                android:textSize="14sp"
+                android:text="@string/research_feedback_send"
+                android:layout_height="wrap_content" />
         </LinearLayout>
     </LinearLayout>
 </ScrollView>
diff --git a/java/res/layout/seek_bar_dialog.xml b/java/res/layout/seek_bar_dialog.xml
index a47e9a0389a2ad2e17d385e87acfae5f85ae7bd0..e723ad9bb7f576822a56900d0da82c2ffb3b11bb 100644
--- a/java/res/layout/seek_bar_dialog.xml
+++ b/java/res/layout/seek_bar_dialog.xml
@@ -33,7 +33,7 @@
         <TextView android:id="@+id/seek_bar_dialog_value"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textSize="20dp"/>
+            android:textSize="20sp"/>
     </LinearLayout>
     <SeekBar
         android:id="@+id/seek_bar_dialog_bar"
diff --git a/java/res/layout/setup_steps_title.xml b/java/res/layout/setup_steps_title.xml
index e3694bfe0f7159d6cdd1622d5db46e252444849b..9ee8693f8b52413a5404d712b5fb68d66edffdf6 100644
--- a/java/res/layout/setup_steps_title.xml
+++ b/java/res/layout/setup_steps_title.xml
@@ -21,7 +21,5 @@
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
     <TextView
         android:id="@+id/setup_title"
-        style="@style/setupTitleStyle"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentTop="true" />
+        style="@style/setupTitleStyle" />
 </merge>
diff --git a/java/res/layout/setup_welcome_title.xml b/java/res/layout/setup_welcome_title.xml
index af7053a3723ffd1d2ebc1b7735dcbd8ffa28fa07..2c3b48919675537d79abc29447a6b3b79b07d25b 100644
--- a/java/res/layout/setup_welcome_title.xml
+++ b/java/res/layout/setup_welcome_title.xml
@@ -21,9 +21,7 @@
 <merge xmlns:android="http://schemas.android.com/apk/res/android">
     <TextView
         android:id="@+id/setup_welcome_title"
-        style="@style/setupTitleStyle"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentTop="true" />
+        style="@style/setupTitleStyle" />
     <TextView
         android:id="@+id/setup_welcome_description"
         android:text="@string/setup_welcome_additional_description"
diff --git a/java/res/layout/suggestions_strip.xml b/java/res/layout/suggestions_strip.xml
index cbf31e6dc2f65227c2546f626044115815b2e648..908e30522659c30c81c8140dc24d81a872438c55 100644
--- a/java/res/layout/suggestions_strip.xml
+++ b/java/res/layout/suggestions_strip.xml
@@ -19,9 +19,7 @@
 -->
 
 <merge
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
->
+    xmlns:android="http://schemas.android.com/apk/res/android">
     <LinearLayout
         android:id="@+id/suggestions_strip"
         android:orientation="horizontal"
diff --git a/java/res/layout/user_dictionary_add_word.xml b/java/res/layout/user_dictionary_add_word.xml
index 607f5c4a89a34aadb1ee226d397b04fa99f63675..615fde589e278b0ba2cfce4539c36f3b7f9e3aa2 100644
--- a/java/res/layout/user_dictionary_add_word.xml
+++ b/java/res/layout/user_dictionary_add_word.xml
@@ -58,42 +58,33 @@
     </EditText>
 
     <LinearLayout
+        style="?android:attr/buttonBarStyle"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:divider="?android:attr/dividerHorizontal"
-        android:dividerPadding="0dip"
-        android:orientation="vertical"
-        android:showDividers="beginning" >
+        android:measureWithLargestChild="true"
+        android:orientation="horizontal" >
 
-        <LinearLayout
-            style="?android:attr/buttonBarStyle"
-            android:layout_width="match_parent"
+        <Button
+            style="?android:attr/buttonBarButtonStyle"
+            android:layout_width="0dip"
             android:layout_height="wrap_content"
-            android:measureWithLargestChild="true"
-            android:orientation="horizontal" >
-
-            <Button
-                style="?android:attr/buttonBarButtonStyle"
-                android:layout_width="0dip"
-                android:layout_height="wrap_content"
-                android:layout_gravity="start"
-                android:layout_weight="1"
-                android:maxLines="2"
-                android:onClick="onClickCancel"
-                android:text="@string/cancel"
-                android:textSize="14sp" />
+            android:layout_gravity="start"
+            android:layout_weight="1"
+            android:maxLines="2"
+            android:onClick="onClickCancel"
+            android:text="@string/cancel"
+            android:textSize="14sp" />
 
-            <Button
-                style="?android:attr/buttonBarButtonStyle"
-                android:layout_width="0dip"
-                android:layout_height="wrap_content"
-                android:layout_gravity="end"
-                android:layout_weight="1"
-                android:maxLines="2"
-                android:onClick="onClickConfirm"
-                android:text="@string/user_dict_settings_add_dialog_confirm"
-                android:textSize="14sp" />
-        </LinearLayout>
+        <Button
+            style="?android:attr/buttonBarButtonStyle"
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_gravity="end"
+            android:layout_weight="1"
+            android:maxLines="2"
+            android:onClick="onClickConfirm"
+            android:text="@string/user_dict_settings_add_dialog_confirm"
+            android:textSize="14sp" />
     </LinearLayout>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/java/res/layout/user_dictionary_item.xml b/java/res/layout/user_dictionary_item.xml
index 56bad774317b20853322e283ed3065c954a7e154..b8d48b56d41b7b14ef67d02fc7991ecf0536b72a 100644
--- a/java/res/layout/user_dictionary_item.xml
+++ b/java/res/layout/user_dictionary_item.xml
@@ -19,10 +19,11 @@
     android:background="?android:attr/selectableItemBackground"
     android:gravity="center_vertical"
     android:minHeight="?android:attr/listPreferredItemHeight"
-    android:paddingEnd="?android:attr/scrollbarSize" >
+    android:paddingEnd="?android:attr/scrollbarSize"
+    android:baselineAligned="false" >
 
     <RelativeLayout
-        android:layout_width="wrap_content"
+        android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:padding="6dip"
         android:layout_weight="1" >
diff --git a/java/src/com/android/inputmethod/dictionarypack/CommonPreferences.java b/java/src/com/android/inputmethod/dictionarypack/CommonPreferences.java
index 7c27e6d512d3404a84ccabaa73b6f9d4f591c0da..3d0e29ed084cc171de35f1ea92fb9aea5c5f7965 100644
--- a/java/src/com/android/inputmethod/dictionarypack/CommonPreferences.java
+++ b/java/src/com/android/inputmethod/dictionarypack/CommonPreferences.java
@@ -23,7 +23,7 @@ public final class CommonPreferences {
     private static final String COMMON_PREFERENCES_NAME = "LatinImeDictPrefs";
 
     public static SharedPreferences getCommonPreferences(final Context context) {
-        return context.getSharedPreferences(COMMON_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
+        return context.getSharedPreferences(COMMON_PREFERENCES_NAME, 0);
     }
 
     public static void enable(final SharedPreferences pref, final String id) {
diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java
index 88b5032e3bacd78c607c28a01fd50c3141b7d1b3..384ee3e07c9816290dec810290b5f9378220e7c5 100644
--- a/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java
+++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryDownloadProgressBar.java
@@ -100,6 +100,7 @@ public class DictionaryDownloadProgressBar extends ProgressBar {
 
     @Override
     protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
         mIsCurrentlyAttachedToWindow = false;
         updateReporterThreadRunningStatusAccordingToVisibility();
     }
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
index 181ad17eaf11618c89fc674b497b7f4634cd119a..7e97802e1d4012c34646e97895f2f38cc5606b98 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java
@@ -112,7 +112,7 @@ final public class BinaryDictionaryGetter {
         public DictPackSettings(final Context context) {
             mDictPreferences = null == context ? null
                     : context.getSharedPreferences(COMMON_PREFERENCES_NAME,
-                            Context.MODE_WORLD_READABLE | Context.MODE_MULTI_PROCESS);
+                            Context.MODE_MULTI_PROCESS);
         }
         public boolean isWordListActive(final String dictId) {
             if (null == mDictPreferences) {
diff --git a/java/src/com/android/inputmethod/latin/RichInputConnection.java b/java/src/com/android/inputmethod/latin/RichInputConnection.java
index 7cf64a3bc497b0086fe2578b5978e6f5674ce79b..79b91f32d538f0ab092398a3ff85ca78e4d6350e 100644
--- a/java/src/com/android/inputmethod/latin/RichInputConnection.java
+++ b/java/src/com/android/inputmethod/latin/RichInputConnection.java
@@ -35,7 +35,6 @@ import com.android.inputmethod.latin.utils.StringUtils;
 import com.android.inputmethod.latin.utils.TextRange;
 import com.android.inputmethod.research.ResearchLogger;
 
-import java.util.Locale;
 import java.util.regex.Pattern;
 
 /**