diff --git a/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg
new file mode 100644
index 0000000..428b2f4
--- /dev/null
+++ b/res/drawable-hdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-hdpi/setup_illustration_tile.jpg b/res/drawable-hdpi/setup_illustration_tile.jpg
new file mode 100644
index 0000000..ed6575c
--- /dev/null
+++ b/res/drawable-hdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-hdpi/setup_illustration_wifi_wide_image.jpg b/res/drawable-hdpi/setup_illustration_wifi_wide_image.jpg
new file mode 100644
index 0000000..fccea72
--- /dev/null
+++ b/res/drawable-hdpi/setup_illustration_wifi_wide_image.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg
new file mode 100644
index 0000000..52e7993
--- /dev/null
+++ b/res/drawable-mdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_tile.jpg b/res/drawable-mdpi/setup_illustration_tile.jpg
new file mode 100644
index 0000000..9dbe131
--- /dev/null
+++ b/res/drawable-mdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-mdpi/setup_illustration_wifi_wide_image.jpg b/res/drawable-mdpi/setup_illustration_wifi_wide_image.jpg
new file mode 100644
index 0000000..f21dffb
--- /dev/null
+++ b/res/drawable-mdpi/setup_illustration_wifi_wide_image.jpg
Binary files differ
diff --git a/res/drawable-nodpi/setup_illustration_tile.png b/res/drawable-nodpi/setup_illustration_tile.png
deleted file mode 100644
index ae6d244..0000000
--- a/res/drawable-nodpi/setup_illustration_tile.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-nodpi/setup_illustration_wifi_image.jpg b/res/drawable-nodpi/setup_illustration_wifi_image.jpg
index 2579225..a27c93e 100644
--- a/res/drawable-nodpi/setup_illustration_wifi_image.jpg
+++ b/res/drawable-nodpi/setup_illustration_wifi_image.jpg
Binary files differ
diff --git a/res/drawable-nodpi/setup_illustration_wifi_wide_image.jpg b/res/drawable-nodpi/setup_illustration_wifi_wide_image.jpg
deleted file mode 100644
index b876fa6..0000000
--- a/res/drawable-nodpi/setup_illustration_wifi_wide_image.jpg
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg
new file mode 100644
index 0000000..2733f8e
--- /dev/null
+++ b/res/drawable-xhdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_tile.jpg b/res/drawable-xhdpi/setup_illustration_tile.jpg
new file mode 100644
index 0000000..71dabd5
--- /dev/null
+++ b/res/drawable-xhdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-xhdpi/setup_illustration_wifi_wide_image.jpg b/res/drawable-xhdpi/setup_illustration_wifi_wide_image.jpg
new file mode 100644
index 0000000..3d1b3f3
--- /dev/null
+++ b/res/drawable-xhdpi/setup_illustration_wifi_wide_image.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg
new file mode 100644
index 0000000..aec8d0f
--- /dev/null
+++ b/res/drawable-xxhdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_tile.jpg b/res/drawable-xxhdpi/setup_illustration_tile.jpg
new file mode 100644
index 0000000..46b3d02
--- /dev/null
+++ b/res/drawable-xxhdpi/setup_illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-xxhdpi/setup_illustration_wifi_wide_image.jpg b/res/drawable-xxhdpi/setup_illustration_wifi_wide_image.jpg
new file mode 100644
index 0000000..6a590b7
--- /dev/null
+++ b/res/drawable-xxhdpi/setup_illustration_wifi_wide_image.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/illustration_tile.jpg b/res/drawable-xxxhdpi/illustration_tile.jpg
new file mode 100644
index 0000000..ab3899e
--- /dev/null
+++ b/res/drawable-xxxhdpi/illustration_tile.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg b/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg
new file mode 100644
index 0000000..448a651
--- /dev/null
+++ b/res/drawable-xxxhdpi/setup_illustration_horizontal_tile.jpg
Binary files differ
diff --git a/res/drawable-xxxhdpi/setup_illustration_wifi_wide_image.jpg b/res/drawable-xxxhdpi/setup_illustration_wifi_wide_image.jpg
new file mode 100644
index 0000000..d6f2f82
--- /dev/null
+++ b/res/drawable-xxxhdpi/setup_illustration_wifi_wide_image.jpg
Binary files differ
diff --git a/res/drawable/setup_illustration_wifi_wide.xml b/res/drawable/setup_illustration_wifi_wide.xml
index 3af3561..33ee2f6 100644
--- a/res/drawable/setup_illustration_wifi_wide.xml
+++ b/res/drawable/setup_illustration_wifi_wide.xml
@@ -15,6 +15,19 @@
      limitations under the License.
 -->
 
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:autoMirrored="true"
-    android:src="@drawable/setup_illustration_wifi_wide_image" />
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:autoMirrored="true">
+
+    <item>
+        <bitmap android:src="@drawable/setup_illustration_horizontal_tile"
+            android:gravity="top"
+            android:tileModeX="repeat"
+            android:tileModeY="disabled" />
+    </item>
+
+    <item android:id="@+id/illustration_image">
+        <bitmap android:src="@drawable/setup_illustration_wifi_wide_image"
+            android:gravity="top|start" />
+    </item>
+
+</layer-list>
\ No newline at end of file
diff --git a/res/layout-land/setup_preference.xml b/res/layout-land/setup_preference.xml
index b2e1cc7..ce655d6 100644
--- a/res/layout-land/setup_preference.xml
+++ b/res/layout-land/setup_preference.xml
@@ -33,13 +33,14 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/wifi_setup_wizard_title" />
+
     </FrameLayout>
 
     <TextView
         android:id="@+id/wifi_required_info"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginBottom="6dip"
+        android:layout_marginBottom="6dp"
         android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/wifi_required_info_text"
         android:visibility="gone" />
diff --git a/res/layout-sw600dp-land/setup_preference.xml b/res/layout-sw600dp-land/setup_preference.xml
index 3d4db3d..431ac29 100644
--- a/res/layout-sw600dp-land/setup_preference.xml
+++ b/res/layout-sw600dp-land/setup_preference.xml
@@ -37,13 +37,14 @@
             <TextView
                 android:id="@+id/title"
                 style="@style/SetupCardTitle"
-                android:layout_width="0dp"
+                android:layout_width="1dp"
                 android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/setup_wizard_tablet_illustration_height"
                 android:layout_weight="6"
                 android:text="@string/wifi_setup_wizard_title"/>
 
             <LinearLayout
-                android:layout_width="0dp"
+                android:layout_width="1dp"
                 android:layout_height="match_parent"
                 android:layout_marginTop="@dimen/setup_wizard_card_land_margin_top"
                 android:layout_weight="8"
diff --git a/res/layout-sw720dp-port/setup_preference.xml b/res/layout-sw600dp/setup_preference.xml
similarity index 94%
rename from res/layout-sw720dp-port/setup_preference.xml
rename to res/layout-sw600dp/setup_preference.xml
index 8d1f53b..1e772d9 100644
--- a/res/layout-sw720dp-port/setup_preference.xml
+++ b/res/layout-sw600dp/setup_preference.xml
@@ -15,9 +15,7 @@
     limitations under the License.
 -->
 
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
@@ -28,12 +26,12 @@
         android:layout_height="0dp"
         android:layout_weight="1"
         android:background="@drawable/setup_illustration_bg"
-        android:foreground="@drawable/setup_illustration_wifi_wide"
-        settings:aspectRatio="4.0">
+        android:foreground="@drawable/setup_illustration_wifi_wide">
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="match_parent"
+            android:layout_marginTop="@dimen/setup_wizard_tablet_illustration_height"
             android:orientation="vertical"
             android:paddingLeft="@dimen/setup_wizard_card_port_margin_sides"
             android:paddingRight="@dimen/setup_wizard_card_port_margin_sides">
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index 1aa4b55..5f524af 100755
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -45,7 +45,6 @@
     <!-- Dashboard tile image margin start / end -->
     <dimen name="dashboard_tile_image_margin_start">12dp</dimen>
 
-    <dimen name="setup_wizard_card_title_margin_top">256dp</dimen>
     <dimen name="setup_wizard_card_title_padding_end">32dp</dimen>
     <dimen name="setup_wizard_card_title_padding_start">56dp</dimen>
     <dimen name="setup_wizard_card_title_padding_top">24dp</dimen>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 18306ca..fcfd5bc 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -50,7 +50,7 @@
     <dimen name="setup_add_network_item_height">56dp</dimen>
     <dimen name="setup_wizard_card_corner_radius">2dp</dimen>
     <dimen name="setup_wizard_card_elevation">5dp</dimen>
-    <dimen name="setup_wizard_card_title_margin_top">0dp</dimen>
+    <dimen name="setup_wizard_tablet_illustration_height">256dp</dimen>
     <dimen name="setup_wizard_card_title_padding_end">0dp</dimen>
     <dimen name="setup_wizard_card_title_padding_start">0dp</dimen>
     <dimen name="setup_wizard_card_title_padding_top">16dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2377fe4..d75824e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1273,7 +1273,7 @@
     <string name="bluetooth_device_advanced_online_mode_title">Connect</string>
     <!-- Bluetooth settings.  Connection options screen.  The summary of the online mode checkbox.  This describes what the setting does in the context of the screen. -->
     <string name="bluetooth_device_advanced_online_mode_summary">Connect to Bluetooth device</string>
-    <!-- Bluetooth settings.  Connection options screen.  The title of the header that is above all of the profiles. 
+    <!-- Bluetooth settings.  Connection options screen.  The title of the header that is above all of the profiles.
          When a user decides what Bluetooth capabilities to use with the device.  -->
     <string name="bluetooth_device_advanced_profile_header_title">Use for</string>
     <!-- Bluetooth settings. Connection options screen. Title for option to rename the device. [CHAR LIMIT=30] -->
@@ -2493,6 +2493,10 @@
     <string name="master_clear_confirm_title">Reset?</string>
     <!-- Error message for users that aren't allowed to factory reset [CHAR LIMIT=none] -->
     <string name="master_clear_not_available">Factory reset is not available for this user</string>
+    <!-- Master clear progress screen title [CHAR LIMIT=30] -->
+    <string name="master_clear_progress_title" >Erasing</string>
+    <!-- Master clear progress screen text [CHAR LIMIT=75] -->
+    <string name="master_clear_progress_text">Please wait...</string>
 
     <!-- Media Format -->
     <!-- SD card & phone storage settings screen, setting option name under Internal phone storage heading [CHAR LIMIT=25] -->
@@ -4834,11 +4838,14 @@
     <string name="show_all_anrs_summary">Show App Not Responding dialog
         for background apps</string>
 
+    <!-- UI debug setting: webview data reduction proxy [CHAR LIMIT=100] -->
+    <string name="dev_settings_use_google_settings">Please use GoogleSettings app for this operation</string>
+
     <!-- UI debug setting: webview data reduction proxy [CHAR LIMIT=50] -->
     <string name="webview_data_reduction_proxy">Reduce WebView Network Usage</string>
     <!-- UI debug setting: webview data reduction proxy summary [CHAR LIMIT=200] -->
     <string name="webview_data_reduction_proxy_summary">Reduce network usage by
-        proxying WebView connections through Google compression servers (Experimental)</string>
+        proxying WebView connections through Google compression servers</string>
 
     <!-- Activity title for network data usage summary. [CHAR LIMIT=25] -->
     <string name="data_usage_summary_title">Data usage</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 3f5f39d..c3d2564 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -176,7 +176,6 @@
 
     <!-- Alternate title style used for some tablet layouts -->
     <style name="SetupCardTitle">
-        <item name="android:layout_marginTop">@dimen/setup_wizard_card_title_margin_top</item>
         <item name="android:paddingBottom">@dimen/setup_wizard_card_title_padding_bottom</item>
         <item name="android:paddingEnd">@dimen/setup_wizard_card_title_padding_end</item>
         <item name="android:paddingStart">@dimen/setup_wizard_card_title_padding_start</item>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 2cffe28..d801ae0 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -31,7 +31,9 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ResolveInfo;
+import android.database.Cursor;
 import android.hardware.usb.IUsbManager;
+import android.net.Uri;
 import android.net.wifi.WifiManager;
 import android.os.AsyncTask;
 import android.os.BatteryManager;
@@ -153,6 +155,9 @@
     private static final String SHOW_ALL_ANRS_KEY = "show_all_anrs";
 
     private static final String WEBVIEW_DATA_REDUCTION_PROXY_KEY = "webview_data_reduction_proxy";
+    // GoogleSetting name for the data reduction proxy setting.
+    // Setting type: int ( 0 = disallow, 1 = allow )
+    private static final String WEBVIEW_DATA_REDUCTION_PROXY = "use_webview_data_reduction_proxy";
 
     private static final String PROCESS_STATS = "proc_stats";
 
@@ -166,6 +171,11 @@
 
     private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst";
 
+    // The setting Uri. Used when querying GoogleSettings.
+    private static final Uri GOOGLE_SETTINGS_CONTENT_URI = Uri.parse("content://com.google.settings/partner");
+    private static final String GOOGLE_SETTINGS_COMPONENT = "com.google.android.gms";
+    private static final String GOOGLE_SETTINGS_ACTIVITY = ".app.settings.GoogleSettingsActivity";
+
     private static String DEFAULT_LOG_RING_BUFFER_SIZE_IN_BYTES = "262144"; // 256K
 
     private IWindowManager mWindowManager;
@@ -372,6 +382,13 @@
         mAllPrefs.add(mProcessStats);
 
         mWebViewDataReductionProxy = findAndInitCheckboxPref(WEBVIEW_DATA_REDUCTION_PROXY_KEY);
+        mWebViewDataReductionProxy.setOnPreferenceChangeListener(
+                new Preference.OnPreferenceChangeListener() {
+                    @Override
+                    public boolean onPreferenceChange(Preference preference, Object newValue) {
+                        return handleDataReductionProxyPreferenceChange();
+                    }
+                });
     }
 
     private ListPreference addListPreference(String prefKey) {
@@ -1277,6 +1294,50 @@
             getActivity().getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0);
     }
 
+    // Reads the googlesetting and converts to an int. Throws an exception if GoogleSettings
+    // provider does not exist or if the setting name cannot be found.
+    private int getGoogleSettingValue(String name) throws Exception {
+        String value = null;
+        Cursor c = null;
+        try {
+            ContentResolver resolver = getActivity().getContentResolver();
+            c = resolver.query(GOOGLE_SETTINGS_CONTENT_URI, new String[] { "value" },
+                    "name=?", new String[]{ name }, null);
+            if (c != null && c.moveToNext()) value = c.getString(0);
+        } finally {
+            if (c != null) c.close();
+        }
+        // Throw an exception if value is null. This will indicate that setting is not found.
+        return Integer.parseInt(value);
+    }
+
+    private boolean handleDataReductionProxyPreferenceChange() {
+        int val;
+        try {
+            val = getGoogleSettingValue(WEBVIEW_DATA_REDUCTION_PROXY);
+        } catch (Exception e) {
+            // Accessing GoogleSettings failed. Use the developer setting.
+            return true;
+        }
+
+        Intent i = new Intent();
+        i.setClassName(GOOGLE_SETTINGS_COMPONENT,
+                GOOGLE_SETTINGS_COMPONENT + GOOGLE_SETTINGS_ACTIVITY);
+        try {
+            startActivity(i);
+        } catch (android.content.ActivityNotFoundException ex) {
+            // We found the GoogleSetting but for some reason activity not found.
+            // Do our best and put an alert dialog
+            new AlertDialog.Builder(getActivity()).setMessage(
+                    getActivity().getResources().getString(
+                        R.string.dev_settings_use_google_settings))
+                        .setPositiveButton(android.R.string.ok, this)
+                        .show();
+        }
+        // Use GoogleSettings to set.
+        return false;
+    }
+
     private void writeWebViewDataReductionProxyOptions() {
         Settings.Secure.putInt(getActivity().getContentResolver(),
                 Settings.Secure.WEBVIEW_DATA_REDUCTION_PROXY,
@@ -1287,9 +1348,17 @@
     }
 
     private void updateWebViewDataReductionProxyOptions() {
-        updateCheckBox(mWebViewDataReductionProxy, Settings.Secure.getInt(
-                getActivity().getContentResolver(),
-                Settings.Secure.WEBVIEW_DATA_REDUCTION_PROXY, 0) != 0);
+        int val = -1;
+        try {
+              val = getGoogleSettingValue(WEBVIEW_DATA_REDUCTION_PROXY);
+        } catch (Exception e) {
+            // Accessing GoogleSettings failed. Use the developer setting
+        }
+        if (val == -1) {
+            val = Settings.Secure.getInt(getActivity().getContentResolver(),
+                    Settings.Secure.WEBVIEW_DATA_REDUCTION_PROXY, 0);
+        }
+        updateCheckBox(mWebViewDataReductionProxy, val != 0);
     }
 
     @Override
diff --git a/src/com/android/settings/MasterClearConfirm.java b/src/com/android/settings/MasterClearConfirm.java
index d14ad39..0455d74 100644
--- a/src/com/android/settings/MasterClearConfirm.java
+++ b/src/com/android/settings/MasterClearConfirm.java
@@ -16,22 +16,21 @@
 
 package com.android.settings;
 
+import android.app.ProgressDialog;
 import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.os.AsyncTask;
 import android.service.persistentdata.PersistentDataBlockManager;
 import com.android.internal.os.storage.ExternalStorageFormatter;
-import com.android.internal.widget.LockPatternUtils;
 
-import android.app.Activity;
 import android.app.Fragment;
 import android.content.Intent;
-import android.content.res.Resources;
 import android.os.Bundle;
 import android.os.UserManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
-import android.widget.CheckBox;
 
 /**
  * Confirm and execute a reset of the device to a clean "just out of the box"
@@ -47,7 +46,6 @@
 
     private View mContentView;
     private boolean mEraseSdCard;
-    private Button mFinalButton;
 
     /**
      * The user has gone through the multiple confirmation, so now we go ahead
@@ -61,33 +59,68 @@
                 return;
             }
 
-            PersistentDataBlockManager pdbManager = (PersistentDataBlockManager)
+            final PersistentDataBlockManager pdbManager = (PersistentDataBlockManager)
                     getActivity().getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
 
             if (pdbManager != null) {
                 // if OEM unlock is enabled, this will be wiped during FR process.
                 if (!pdbManager.getOemUnlockEnabled()) {
-                    pdbManager.wipe();
-                }
-            }
+                    final ProgressDialog progressDialog = getProgressDialog();
+                    progressDialog.show();
 
-            if (mEraseSdCard) {
-                Intent intent = new Intent(ExternalStorageFormatter.FORMAT_AND_FACTORY_RESET);
-                intent.setComponent(ExternalStorageFormatter.COMPONENT_NAME);
-                getActivity().startService(intent);
+                    // need to prevent orientation changes as we're about to go into
+                    // a long IO request, so we won't be able to access inflate resources on flash
+                    final int oldOrientation = getActivity().getRequestedOrientation();
+                    getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
+                    new AsyncTask<Void, Void, Void>() {
+                        @Override
+                        protected Void doInBackground(Void... params) {
+                            pdbManager.wipe();
+                            return null;
+                        }
+
+                        @Override
+                        protected void onPostExecute(Void aVoid) {
+                            progressDialog.hide();
+                            getActivity().setRequestedOrientation(oldOrientation);
+                            doMasterClear();
+                        }
+                    }.execute();
+                }
             } else {
-                getActivity().sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
-                // Intent handling is asynchronous -- assume it will happen soon.
+                doMasterClear();
             }
         }
+
+        private ProgressDialog getProgressDialog() {
+            final ProgressDialog progressDialog = new ProgressDialog(getActivity());
+            progressDialog.setIndeterminate(true);
+            progressDialog.setCancelable(false);
+            progressDialog.setTitle(
+                    getActivity().getString(R.string.master_clear_progress_title));
+            progressDialog.setMessage(
+                    getActivity().getString(R.string.master_clear_progress_text));
+            return progressDialog;
+        }
     };
 
+    private void doMasterClear() {
+        if (mEraseSdCard) {
+            Intent intent = new Intent(ExternalStorageFormatter.FORMAT_AND_FACTORY_RESET);
+            intent.setComponent(ExternalStorageFormatter.COMPONENT_NAME);
+            getActivity().startService(intent);
+        } else {
+            getActivity().sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
+            // Intent handling is asynchronous -- assume it will happen soon.
+        }
+    }
+
     /**
      * Configure the UI for the final confirmation interaction
      */
     private void establishFinalConfirmationState() {
-        mFinalButton = (Button) mContentView.findViewById(R.id.execute_master_clear);
-        mFinalButton.setOnClickListener(mFinalClickListener);
+        mContentView.findViewById(R.id.execute_master_clear)
+                .setOnClickListener(mFinalClickListener);
     }
 
     @Override
@@ -107,6 +140,6 @@
         super.onCreate(savedInstanceState);
 
         Bundle args = getArguments();
-        mEraseSdCard = args != null ? args.getBoolean(MasterClear.ERASE_EXTERNAL_EXTRA) : false;
+        mEraseSdCard = args != null && args.getBoolean(MasterClear.ERASE_EXTERNAL_EXTRA);
     }
 }
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index ce3164d..ab7e28b 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -130,7 +130,7 @@
             // Check for carrier apps that can handle provisioning first
             Intent provisioningIntent = new Intent(TelephonyIntents.ACTION_CARRIER_SETUP);
             List<String> carrierPackages =
-                    mTm.getCarrierPackageNamesForBroadcastIntent(provisioningIntent);
+                    mTm.getCarrierPackageNamesForIntent(provisioningIntent);
             if (carrierPackages != null && !carrierPackages.isEmpty()) {
                 if (carrierPackages.size() != 1) {
                     Log.w(TAG, "Multiple matching carrier apps found, launching the first.");
diff --git a/src/com/android/settings/widget/SetupWizardIllustration.java b/src/com/android/settings/widget/SetupWizardIllustration.java
index fa8dd80..acdb5b3 100644
--- a/src/com/android/settings/widget/SetupWizardIllustration.java
+++ b/src/com/android/settings/widget/SetupWizardIllustration.java
@@ -20,9 +20,11 @@
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.graphics.Canvas;
+import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
 import android.util.Log;
+import android.view.Gravity;
 import android.widget.FrameLayout;
 
 import com.android.settings.R;
@@ -42,7 +44,8 @@
     private float mBaselineGridSize;
     private Drawable mBackground;
     private Drawable mForeground;
-    private int mForegroundHeight = 0;
+    private final Rect mViewBounds = new Rect();
+    private final Rect mForegroundBounds = new Rect();
     private float mScale = 1.0f;
     private float mAspectRatio = 0.0f;
 
@@ -112,36 +115,35 @@
         final int layoutWidth = right - left;
         final int layoutHeight = bottom - top;
         if (mForeground != null) {
-            final float intrinsicWidth = mForeground.getIntrinsicWidth();
-            final float intrinsicHeight = mForeground.getIntrinsicHeight();
-            if (intrinsicWidth <= 0 || intrinsicHeight <= 0) {
-                Log.e(TAG, "Foreground drawable intrinsic size must be defined and positive");
-                mForeground = null;
-                mForegroundHeight = 0;
-                mScale = 1.0f;
-            } else {
-                // Scale the foreground to fill the width of the view
-                mScale = layoutWidth / intrinsicWidth;
-                mForegroundHeight = (int) (intrinsicHeight * mScale);
-                mForeground.setBounds(0, 0, layoutWidth, mForegroundHeight);
+            int intrinsicWidth = mForeground.getIntrinsicWidth();
+            int intrinsicHeight = mForeground.getIntrinsicHeight();
+            final int layoutDirection = getLayoutDirection();
+
+            mViewBounds.set(0, 0, layoutWidth, layoutHeight);
+            if (mAspectRatio != 0f) {
+                mScale = layoutWidth / (float) intrinsicWidth;
+                intrinsicWidth = layoutWidth;
+                intrinsicHeight = (int) (intrinsicHeight * mScale);
             }
+            Gravity.apply(Gravity.FILL_HORIZONTAL | Gravity.TOP, intrinsicWidth, intrinsicHeight,
+                    mViewBounds, mForegroundBounds, layoutDirection);
+            mForeground.setBounds(mForegroundBounds);
         }
         if (mBackground != null) {
             // Scale the bounds by mScale to compensate for the scale done to the canvas before
             // drawing.
             mBackground.setBounds(0, 0, (int) Math.ceil(layoutWidth / mScale),
-                    (int) Math.ceil((layoutHeight - mForegroundHeight) / mScale));
+                    (int) Math.ceil((layoutHeight - mForegroundBounds.height()) / mScale));
         }
         super.onLayout(changed, left, top, right, bottom);
     }
 
     @Override
     public void onDraw(Canvas canvas) {
-        canvas.save();
         if (mBackground != null) {
             canvas.save();
             // Draw the background filling parts not covered by the illustration
-            canvas.translate(0, mForegroundHeight);
+            canvas.translate(0, mForegroundBounds.height());
             // Scale the background so its size matches the foreground
             canvas.scale(mScale, mScale, 0, 0);
             mBackground.draw(canvas);
@@ -153,7 +155,6 @@
             mForeground.draw(canvas);
             canvas.restore();
         }
-        canvas.restore();
         super.onDraw(canvas);
     }
 }
