diff --git a/res/layout-land/choose_lock_pattern_tutorial.xml b/res/layout-land/choose_lock_pattern_tutorial.xml
index 606d2e1..ac693cc 100644
--- a/res/layout-land/choose_lock_pattern_tutorial.xml
+++ b/res/layout-land/choose_lock_pattern_tutorial.xml
@@ -17,29 +17,29 @@
 <com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/topLayout"
-    android:orientation="horizontal"
+    android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <RelativeLayout
-        android:layout_width="0dip"
-        android:layout_height="match_parent"
-        android:layout_weight="1">
+    <!-- Top: pattern and information -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:orientation="horizontal">
 
-        <!-- left side: lock pattern -->
+        <!-- left side: lock pattern. Given the square aspect, this will be the smaller of the
+             two dimensions (height) -->
         <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
-             android:layout_width="300dip"
-             android:layout_height="300dip"
-             android:layout_gravity="center_horizontal"
-             aspect="square"/>
+             android:layout_width="match_parent"
+             android:layout_height="match_parent"/>
 
         <!-- right side: instructions and buttons -->
         <!-- header message -->
         <ScrollView
-            android:layout_width="300dip"
-            android:layout_height="180dip"
-            android:layout_alignParentTop="true"
-            android:layout_toRightOf="@id/lockPattern"
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
             android:layout_marginLeft="25dip">
 
             <LinearLayout
@@ -69,25 +69,24 @@
 
         </ScrollView>
 
-        <LinearLayout
-            style="@style/SecurityPreferenceButtonContainer"
-            android:layout_alignParentRight="true"
-            android:layout_alignParentBottom="true"
-            android:orientation="horizontal">
+    </LinearLayout>
 
-            <!-- left / top button: skip, or re-try -->
-            <Button android:id="@+id/skip_button"
-                style="@style/SecurityPreferenceButton"
-                android:text="@string/lockpattern_tutorial_cancel_label"/>
+    <!-- Bottom: cancel/next buttons -->
+    <LinearLayout
+        style="@style/SecurityPreferenceButtonContainer"
+        android:orientation="horizontal">
 
-            <!-- right / bottom button: confirm or ok -->
-            <Button android:id="@+id/next_button"
-                style="@style/SecurityPreferenceButton"
-                android:text="@string/lockpattern_tutorial_continue_label"/>
+        <!-- left / top button: skip, or re-try -->
+        <Button android:id="@+id/skip_button"
+            style="@style/SecurityPreferenceButton"
+            android:text="@string/lockpattern_tutorial_cancel_label"/>
 
-        </LinearLayout>
+        <!-- right / bottom button: confirm or ok -->
+        <Button android:id="@+id/next_button"
+            style="@style/SecurityPreferenceButton"
+            android:text="@string/lockpattern_tutorial_continue_label"/>
 
-    </RelativeLayout>
+    </LinearLayout>
 
 </com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient>
 
diff --git a/res/layout/choose_lock_pattern_tutorial.xml b/res/layout/choose_lock_pattern_tutorial.xml
index 5f6ea56..742cef8 100644
--- a/res/layout/choose_lock_pattern_tutorial.xml
+++ b/res/layout/choose_lock_pattern_tutorial.xml
@@ -33,6 +33,7 @@
             android:orientation="vertical"
             android:padding="5dip">
 
+            <!-- Top: instructions -->
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -40,26 +41,27 @@
                 android:text="@string/lock_title"
                 android:paddingBottom="10dip"
                 style="?android:attr/textAppearanceLarge"
+                android:visibility="visible"
             />
 
             <TextView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:textAppearance="?android:attr/textAppearanceMedium"
-                android:textSize="18sp"
                 android:text="@string/lock_intro_message"
             />
 
+            <!-- bottom: lock pattern -->
+            <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
+                 android:layout_width="200dip"
+                 android:layout_height="200dip"
+                 android:layout_marginTop="10dip"
+                 android:layout_gravity="left"/>
+
         </LinearLayout>
 
     </ScrollView>
 
-    <!-- bottom: lock pattern. Note the size is match_parent in both axis since requested aspect
-         is square and the pattern view will choose the smaller of the two. -->
-    <com.android.internal.widget.LockPatternView android:id="@+id/lockPattern"
-         android:layout_width="match_parent"
-         android:layout_height="match_parent"/>
-
     <LinearLayout
         style="@style/SecurityPreferenceButtonContainer"
         android:orientation="horizontal">
diff --git a/res/layout/trusted_credential_details.xml b/res/layout/trusted_credential_details.xml
index c18d933..e220e1c 100644
--- a/res/layout/trusted_credential_details.xml
+++ b/res/layout/trusted_credential_details.xml
@@ -13,22 +13,11 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<LinearLayout
+<Button
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    >
-    <FrameLayout
-        android:id="@+id/cert_details"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        />
-    <Button
-        android:id="@+id/cert_remove_button"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:layout_gravity="right"
-        android:layout_margin="6dip"
-        />
-</LinearLayout>
+    android:id="@+id/cert_remove_button"
+    android:layout_height="wrap_content"
+    android:layout_width="wrap_content"
+    android:layout_gravity="right"
+    android:layout_margin="6dip"
+    />
diff --git a/res/layout/vpn_dialog.xml b/res/layout/vpn_dialog.xml
index 3e4b441..a4bb216 100644
--- a/res/layout/vpn_dialog.xml
+++ b/res/layout/vpn_dialog.xml
@@ -93,8 +93,8 @@
                         android:prompt="@string/vpn_ipsec_ca_cert" />
             </LinearLayout>
 
-            <TextView style="@style/vpn_label" android:text="@string/vpn_domains"/>
-            <EditText style="@style/vpn_value" android:id="@+id/domains"
+            <TextView style="@style/vpn_label" android:text="@string/vpn_search_domains"/>
+            <EditText style="@style/vpn_value" android:id="@+id/search_domains"
                     android:hint="@string/vpn_not_used"/>
 
             <!-- Not sure if we have time to make it. -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 93a7720..e6a5136 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -237,7 +237,11 @@
     <!--Bluetooth settings screen, summary text under individual Bluetooth devices that are hands free or a headset -->
     <string name="bluetooth_device">handsfree/headset</string>
     <!--Bluetooth settings screen, text that appears in heading bar when scanning for devices -->
-    <string name="progress_scanning">Scanning</string>
+    <string name="progress_scanning">Searching</string>
+    <!--Bluetooth settings screen, text that appears in heading bar when scanning for devices is finished, indicating that user can tap on a device to pair with it [CHAR LIMIT=20]-->
+    <string name="progress_tap_to_pair">Tap to pair</string>
+    <!--Bluetooth settings screen, text that appears when scanning for devices is finished and no nearby bluetooth device was found [CHAR LIMIT=40]-->
+    <string name="bluetooth_no_devices_found">No Bluetooth devices were found nearby.</string>
     <!-- Notification ticker text (shown in the status bar) when a Bluetooth device wants to pair with us -->
     <string name="bluetooth_notif_ticker">Bluetooth pairing request</string>
     <!-- Notification title when a Bluetooth device wants to pair with us -->
@@ -936,8 +940,10 @@
 
     <!-- Bluetooth settings: The title of the preference (list item) that initiates a scan for devices -->
     <string name="bluetooth_preference_scan_title">Scan for devices</string>
-    <!-- Bluetooth settings: The title of the action button that initiates a scan for nearby devices [CHAR LIMIT=20] -->
-    <string name="bluetooth_scan_nearby_devices">Scan</string>
+    <!-- Bluetooth settings: The title of the action button that initiates a search for nearby devices [CHAR LIMIT=20] -->
+    <string name="bluetooth_search_for_devices">Search for devices</string>
+    <!-- Bluetooth settings: The title of the action button while a search for nearby devices is in progress [CHAR LIMIT=20] -->
+    <string name="bluetooth_searching_for_devices">Searching\u2026</string>
     <!-- Bluetooth settings: The sub heading for device settings. [CHAR LIMIT=30] -->
     <string name="bluetooth_preference_device_settings">Device settings</string>
     <!-- Bluetooth settings: The sub heading for paired devices. [CHAR LIMIT=30] -->
@@ -1189,7 +1195,7 @@
 
     <!-- Wi-Fi Advanced Settings --> <skip />
     <!-- Wi-Fi settings screen, advanced, settings section.  This is a header shown above advanced wifi settings. -->
-    <string name="wifi_advanced_titlebar">Advanced</string>
+    <string name="wifi_advanced_titlebar">Advanced Wi-Fi</string>
     <!-- Wi-Fi settings screen, setting title for setting the band [CHAR LIMIT=50]-->
     <string name="wifi_setting_frequency_band_title">Wi-Fi frequency band</string>
     <!-- Wi-Fi settings screen, setting summary for setting the wifi frequency band [CHAR LIMIT=50]-->
@@ -1652,7 +1658,7 @@
     <!-- SD card & phone storage settings title. Displayed as a title when showing the total usage of media on the device. Below it will be a number like "123.4 MB" indicating used storage. [CHAR LIMIT=50] -->
     <string name="memory_media_usage">Media</string>
     <!-- SD card & phone storage settings title. Displayed as a title when showing the total usage of /sdcard/Download on the device. Below it will be a number like "123.4 MB" indicating used storage. [CHAR LIMIT=50] -->
-    <string name="memory_downloads_usage">Downloads</string>    
+    <string name="memory_downloads_usage">Downloads</string>
     <!-- SD card & phone storage settings title. Displayed as a title when showing the total usage of all pictures, videos in /sdcard/DCIM, /sdcard/Pictures folders on the device. Below it will be a number like "123.4 MB" indicating used storage. [CHAR LIMIT=50] -->
     <string name="memory_dcim_usage">Pictures, Videos</string>
     <!-- SD card & phone storage settings title. Displayed as a title when showing the total usage of audio files in /sdcard on the device. Below it will be a number like "123.4 MB" indicating used storage. [CHAR LIMIT=50] -->
@@ -2132,12 +2138,8 @@
         \n\nReady to start? Touch \u201CNext\u201D.
     </string>
     <!-- ChooseLockPatternTutorial, tutorial screen text -->
-    <string name="lock_intro_message" product="default"><font size="17">Protect your phone from unauthorized use by creating a personal screen unlock pattern.
-        \n<font height="17">\n</font><b>1</b>\u00A0 On the next screen, watch while an example pattern is drawn.
-        \n<font height="17">\n</font><b>2</b>\u00A0 When ready, draw your own personal unlock pattern. Experiment with different patterns but connect at least four dots.
-        \n<font height="17">\n</font><b>3</b>\u00A0 Redraw your pattern to confirm.
-        \n<font height="17">\n</font><b>Ready to start? Touch \u201CNext\u201D</b>.
-        \n<font height="3">\n</font>To leave your phone unprotected, touch \u201CCancel\u201D.</font>
+    <string name="lock_intro_message" product="default">Protect your phone from unauthorized use by creating a personal screen unlock pattern. Use your finger to connect at least four dots in any order on the next screen.
+        \n\nReady to start? Touch \u201CNext\u201D.
     </string>
 
     <!-- Applications Settings --> <skip />
@@ -3509,7 +3511,7 @@
     <!-- Selection label for the IPSec CA certificate of a VPN network. [CHAR LIMIT=40] -->
     <string name="vpn_ipsec_ca_cert">IPSec CA certificate</string>
     <!-- Input label for the DNS search domains of a VPN network. [CHAR LIMIT=40] -->
-    <string name="vpn_domains">DNS search domains</string>
+    <string name="vpn_search_domains">DNS search domains</string>
     <!-- Input label for the forwarding routes of a VPN network. [CHAR LIMIT=40] -->
     <string name="vpn_routes">Forwarding routes</string>
     <!-- Input label for the username of a VPN network. [CHAR LIMIT=40] -->
@@ -3517,7 +3519,7 @@
     <!-- Input label for the password of a VPN network. [CHAR LIMIT=40] -->
     <string name="vpn_password">Password</string>
     <!-- Checkbox label to save the username and the password for a VPN network. [CHAR LIMIT=40] -->
-    <string name="vpn_save_login">Save this information</string>
+    <string name="vpn_save_login">Save account information</string>
 
     <!-- Hint for an optional input of a VPN network. [CHAR LIMIT=40] -->
     <string name="vpn_not_used">(not used)</string>
diff --git a/res/xml/settings_headers.xml b/res/xml/settings_headers.xml
index 7e80db4..cd6191f 100644
--- a/res/xml/settings_headers.xml
+++ b/res/xml/settings_headers.xml
@@ -53,6 +53,7 @@
     <header
         android:id="@+id/wireless_settings"
         android:title="@string/radio_controls_title"
+        android:breadCrumbTitle="@string/wireless_networks_settings_title"
         android:fragment="com.android.settings.WirelessSettings"
         android:icon="@drawable/ic_settings_more_wireless" />
 
diff --git a/src/com/android/settings/ProgressCategory.java b/src/com/android/settings/ProgressCategory.java
index bedcc98..eee19bc 100644
--- a/src/com/android/settings/ProgressCategory.java
+++ b/src/com/android/settings/ProgressCategory.java
@@ -17,12 +17,15 @@
 package com.android.settings;
 
 import android.content.Context;
+import android.preference.Preference;
 import android.util.AttributeSet;
 import android.view.View;
+import android.widget.TextView;
 
 public class ProgressCategory extends ProgressCategoryBase {
 
     private boolean mProgress = false;
+    private Preference mNoDeviceFoundPreference;
 
     public ProgressCategory(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -32,12 +35,27 @@
     @Override
     public void onBindView(View view) {
         super.onBindView(view);
-        final View textView = view.findViewById(R.id.scanning_text);
+        final TextView textView = (TextView) view.findViewById(R.id.scanning_text);
         final View progressBar = view.findViewById(R.id.scanning_progress);
 
-        final int visibility = mProgress ? View.VISIBLE : View.INVISIBLE;
-        textView.setVisibility(visibility);
-        progressBar.setVisibility(visibility);
+        textView.setText(mProgress ? R.string.progress_scanning : R.string.progress_tap_to_pair);
+        boolean noDeviceFound = getPreferenceCount() == 0;
+        textView.setVisibility(noDeviceFound ? View.INVISIBLE : View.VISIBLE);
+        progressBar.setVisibility(mProgress ? View.VISIBLE : View.INVISIBLE);
+
+        if (mProgress) {
+            if (mNoDeviceFoundPreference != null) {
+                removePreference(mNoDeviceFoundPreference);
+            }
+        } else {
+            if (noDeviceFound) {
+                if (mNoDeviceFoundPreference == null) {
+                    mNoDeviceFoundPreference = new Preference(getContext());
+                    mNoDeviceFoundPreference.setSummary(R.string.bluetooth_no_devices_found);
+                }
+                addPreference(mNoDeviceFoundPreference);
+            }
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/TrustedCredentialsSettings.java b/src/com/android/settings/TrustedCredentialsSettings.java
index 340e93d..3e50440 100644
--- a/src/com/android/settings/TrustedCredentialsSettings.java
+++ b/src/com/android/settings/TrustedCredentialsSettings.java
@@ -309,7 +309,7 @@
     }
 
     private void showCertDialog(final CertHolder certHolder) {
-        View view = View.inflate(getActivity(), R.layout.trusted_credential_details, null);
+        View view = certHolder.mSslCert.inflateCertificateView(getActivity());
         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
         builder.setTitle(com.android.internal.R.string.ssl_certificate);
         builder.setView(view);
@@ -320,10 +320,12 @@
         });
         final Dialog certDialog = builder.create();
 
-        FrameLayout details = (FrameLayout) view.findViewById(R.id.cert_details);
-        details.addView(certHolder.mSslCert.inflateCertificateView(getActivity()));
-
-        Button removeButton = (Button) view.findViewById(R.id.cert_remove_button);
+        ViewGroup body = (ViewGroup) view.findViewById(com.android.internal.R.id.body);
+        LayoutInflater inflater = LayoutInflater.from(getActivity());
+        Button removeButton = (Button) inflater.inflate(R.layout.trusted_credential_details,
+                                                        body,
+                                                        false);
+        body.addView(removeButton);
         removeButton.setText(certHolder.mTab.getButtonLabel(certHolder));
         removeButton.setOnClickListener(new View.OnClickListener() {
             @Override public void onClick(View v) {
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 76bf623..cd37309 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -101,9 +101,12 @@
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         boolean bluetoothIsEnabled = mLocalAdapter.getBluetoothState() == BluetoothAdapter.STATE_ON;
-        menu.add(Menu.NONE, MENU_ID_SCAN, 0, R.string.bluetooth_scan_nearby_devices)
+        boolean isDiscovering = mLocalAdapter.isDiscovering();
+        int textId = isDiscovering ? R.string.bluetooth_searching_for_devices :
+            R.string.bluetooth_search_for_devices;
+        menu.add(Menu.NONE, MENU_ID_SCAN, 0, textId)
                 //.setIcon(R.drawable.ic_menu_scan_network)
-                .setEnabled(bluetoothIsEnabled && !mLocalAdapter.isDiscovering())
+                .setEnabled(bluetoothIsEnabled && !isDiscovering)
                 .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
         menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.bluetooth_menu_advanced)
                 //.setIcon(android.R.drawable.ic_menu_manage)
@@ -218,7 +221,7 @@
     @Override
     public void onScanningStateChanged(boolean started) {
         super.onScanningStateChanged(started);
-        // Update 'Scan' option enabled state
+        // Update options' enabled state
         getActivity().invalidateOptionsMenu();
     }
 
diff --git a/src/com/android/settings/vpn2/VpnDialog.java b/src/com/android/settings/vpn2/VpnDialog.java
index 92ad362..2914b1b 100644
--- a/src/com/android/settings/vpn2/VpnDialog.java
+++ b/src/com/android/settings/vpn2/VpnDialog.java
@@ -60,7 +60,7 @@
     private TextView mServer;
     private TextView mUsername;
     private TextView mPassword;
-    private TextView mDomains;
+    private TextView mSearchDomains;
     private TextView mRoutes;
     private CheckBox mMppe;
     private TextView mL2tpSecret;
@@ -92,7 +92,7 @@
         mServer = (TextView) mView.findViewById(R.id.server);
         mUsername = (TextView) mView.findViewById(R.id.username);
         mPassword = (TextView) mView.findViewById(R.id.password);
-        mDomains = (TextView) mView.findViewById(R.id.domains);
+        mSearchDomains = (TextView) mView.findViewById(R.id.search_domains);
         mRoutes = (TextView) mView.findViewById(R.id.routes);
         mMppe = (CheckBox) mView.findViewById(R.id.mppe);
         mL2tpSecret = (TextView) mView.findViewById(R.id.l2tp_secret);
@@ -108,7 +108,7 @@
         mServer.setText(mProfile.server);
         mUsername.setText(mProfile.username);
         mPassword.setText(getDummy(mProfile.password));
-        mDomains.setText(mProfile.domains);
+        mSearchDomains.setText(mProfile.searchDomains);
         mRoutes.setText(mProfile.routes);
         mMppe.setChecked(mProfile.mppe);
         mL2tpSecret.setText(getDummy(mProfile.l2tpSecret));
@@ -288,7 +288,7 @@
         profile.server = mServer.getText().toString().trim();
         profile.username = mUsername.getText().toString();
         profile.password = getSecret(mProfile.password, mPassword);
-        profile.domains = mDomains.getText().toString().trim();
+        profile.searchDomains = mSearchDomains.getText().toString().trim();
         profile.routes = mRoutes.getText().toString().trim();
 
         // Then, save type-specific fields.
diff --git a/src/com/android/settings/vpn2/VpnProfile.java b/src/com/android/settings/vpn2/VpnProfile.java
index 9e4c528..24c2f5f 100644
--- a/src/com/android/settings/vpn2/VpnProfile.java
+++ b/src/com/android/settings/vpn2/VpnProfile.java
@@ -42,14 +42,15 @@
     String server = "";         // 2
     String username = "";       // 3
     String password = "";       // 4
-    String domains = "";        // 5
-    String routes = "";         // 6
-    boolean mppe = false;       // 7
-    String l2tpSecret = "";     // 8
-    String ipsecIdentifier = "";// 9
-    String ipsecSecret = "";    // 10
-    String ipsecUserCert = "";  // 11
-    String ipsecCaCert = "";    // 12
+    String dnsServers = "";     // 5
+    String searchDomains = "";  // 6
+    String routes = "";         // 7
+    boolean mppe = false;       // 8
+    String l2tpSecret = "";     // 9
+    String ipsecIdentifier = "";// 10
+    String ipsecSecret = "";    // 11
+    String ipsecUserCert = "";  // 12
+    String ipsecCaCert = "";    // 13
 
     // Helper fields.
     boolean saveLogin = false;
@@ -65,8 +66,8 @@
             }
 
             String[] values = new String(value, Charsets.UTF_8).split("\0", -1);
-            // Currently it always has 13 fields.
-            if (values.length < 13) {
+            // Currently it always has 14 fields.
+            if (values.length < 14) {
                 return null;
             }
 
@@ -79,14 +80,15 @@
             profile.server = values[2];
             profile.username = values[3];
             profile.password = values[4];
-            profile.domains = values[5];
-            profile.routes = values[6];
-            profile.mppe = Boolean.valueOf(values[7]);
-            profile.l2tpSecret = values[8];
-            profile.ipsecIdentifier = values[9];
-            profile.ipsecSecret = values[10];
-            profile.ipsecUserCert = values[11];
-            profile.ipsecCaCert = values[12];
+            profile.dnsServers = values[5];
+            profile.searchDomains = values[6];
+            profile.routes = values[7];
+            profile.mppe = Boolean.valueOf(values[8]);
+            profile.l2tpSecret = values[9];
+            profile.ipsecIdentifier = values[10];
+            profile.ipsecSecret = values[11];
+            profile.ipsecUserCert = values[12];
+            profile.ipsecCaCert = values[13];
 
             profile.saveLogin = !profile.username.isEmpty() || !profile.password.isEmpty();
             return profile;
@@ -102,7 +104,8 @@
         builder.append('\0').append(server);
         builder.append('\0').append(saveLogin ? username : "");
         builder.append('\0').append(saveLogin ? password : "");
-        builder.append('\0').append(domains);
+        builder.append('\0').append(dnsServers);
+        builder.append('\0').append(searchDomains);
         builder.append('\0').append(routes);
         builder.append('\0').append(mppe);
         builder.append('\0').append(l2tpSecret);
