diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index bc58a7e..0f2390c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -110,7 +110,6 @@
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.WIFI_SETTINGS" />
-                <action android:name="android.net.wifi.PICK_WIFI_NETWORK" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
@@ -125,6 +124,16 @@
                 android:value="com.android.settings.Settings$WirelessSettingsActivity" />
         </activity>
 
+        <activity android:name=".wifi.WifiPickerActivity"
+                  android:theme="@android:style/Theme.Holo"
+                  android:clearTaskOnLaunch="true">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.net.wifi.PICK_WIFI_NETWORK" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <activity android:name=".wifi.WifiSettingsForSetupWizardXL"
                   android:theme="@android:style/Theme.Holo.NoActionBar"
                   android:clearTaskOnLaunch="true"
diff --git a/res/layout-xlarge/date_time_settings_setupwizard.xml b/res/layout-xlarge/date_time_settings_setupwizard.xml
index 600cdbd..483b66a 100644
--- a/res/layout-xlarge/date_time_settings_setupwizard.xml
+++ b/res/layout-xlarge/date_time_settings_setupwizard.xml
@@ -158,10 +158,8 @@
 
     <Button
         android:id="@+id/next_button"
-        android:layout_width="208dip"
-        android:layout_height="48dip"
+        style="@style/setup_wizard_button"
         android:layout_alignParentBottom="true"
         android:layout_alignParentRight="true"
-        android:text="@string/next_label"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
+        android:text="@string/next_label" />
 </RelativeLayout>
diff --git a/res/layout-xlarge/wifi_settings_for_setup_wizard_xl.xml b/res/layout-xlarge/wifi_settings_for_setup_wizard_xl.xml
index d3af1f8..29427d4 100644
--- a/res/layout-xlarge/wifi_settings_for_setup_wizard_xl.xml
+++ b/res/layout-xlarge/wifi_settings_for_setup_wizard_xl.xml
@@ -19,46 +19,43 @@
     android:orientation="horizontal"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
-    android:paddingTop="120dip"
+    android:paddingTop="60dip"
     android:paddingLeft="128dip"
     android:paddingRight="128dip"
     android:paddingBottom="0dip" >
 
-    <RelativeLayout
-        android:id="@+id/title_bar"
+    <FrameLayout
+        android:id="@+id/top_padding_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:minHeight="48dip"
         android:layout_alignParentTop="true">
+        <!-- Set to gone when software keyboard appears -->
+        <View
+             android:id="@+id/top_padding"
+             android:layout_width="match_parent"
+             android:layout_height="94dip" />
+    </FrameLayout>
 
-        <TextView
-            android:id="@+id/wifi_setup_title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentLeft="true"
-            android:layout_centerVertical="true"
-            android:layout_marginLeft="16dip"
-            android:textSize="30dip"
-            android:textColor="#FF99cc00"
-            android:text="@string/wifi_setup_title"/>
-
-        <TextView
-            android:id="@+id/scanning_progress_text"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentRight="true"
-            android:layout_centerVertical="true"
-            android:layout_marginRight="16dip"
-            android:textAppearance="?android:attr/textAppearanceSmall"
-            android:textColor="#6699cc00" />
-    </RelativeLayout>
+    <TextView
+        android:id="@+id/wifi_setup_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:minHeight="48dip"
+        android:layout_alignParentLeft="true"
+        android:layout_centerVertical="true"
+        android:layout_marginLeft="16dip"
+        android:layout_below="@id/top_padding_layout"
+        android:textSize="30dip"
+        android:textColor="#ff99cc00"
+        android:text="@string/wifi_setup_title"
+        android:gravity="bottom"/>
 
     <!-- Divider -->
     <RelativeLayout
         android:id="@+id/top_divider"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_below="@id/title_bar">
+        android:layout_below="@id/wifi_setup_title">
         <ProgressBar
             android:id="@+id/scanning_progress_bar"
             android:layout_width="match_parent"
@@ -66,35 +63,19 @@
             style="?android:attr/progressBarStyleHorizontal" />
     </RelativeLayout>
 
-    <TextView
-        android:id="@+id/wifi_setup_status"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@+id/top_divider"
-        android:layout_alignParentLeft="true"
-        android:layout_marginLeft="16dip"
-        android:layout_marginTop="16dip"
-        android:layout_marginBottom="0dip"
-        android:text="@string/wifi_setup_status_select_network"
-        android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    <FrameLayout
+    <RelativeLayout
         android:id="@+id/content"
-        android:layout_width="wrap_content"
+        android:layout_width="716dip"
         android:layout_height="wrap_content"
-        android:minHeight="138dip"
-        android:layout_below="@+id/wifi_setup_status"
-        android:layout_alignParentLeft="true"
-        android:layout_marginTop="0dip"
-        android:layout_marginLeft="16dip"
-        android:layout_marginRight="16dip"
+        android:layout_below="@id/top_divider"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="10dip"
         android:layout_marginBottom="0dip">
 
         <FrameLayout
             android:id="@+id/wifi_setup"
-            android:layout_width="416dip"
-            android:layout_height="383dip"
-            android:paddingTop="16dip">
+            android:layout_width="match_parent"
+            android:layout_height="360dip">
             <fragment
                 class="com.android.settings.wifi.WifiSettings"
                 android:id="@+id/wifi_setup_fragment"
@@ -103,74 +84,76 @@
         </FrameLayout>
         <FrameLayout
             android:id="@+id/wifi_config_ui"
-            android:layout_width="416dip"
+            android:layout_width="wrap_content"
+            android:minWidth="406dip"
             android:layout_height="wrap_content"
-            android:paddingTop="16dip"
+            android:minHeight="176dip"
+            android:layout_alignParentLeft="true"
             android:visibility="gone" />
-    </FrameLayout>
+        <View
+            android:id="@+id/wifi_config_padding"
+            android:layout_width="match_parent"
+            android:layout_height="360dip"
+            android:visibility="gone" />
+    </RelativeLayout>
 
-    <LinearLayout
-        android:id="@+id/right_buttons"
-        android:layout_width="wrap_content"
+    <!-- Divider -->
+    <View
+        android:id="@+id/bottom_divider"
+        android:layout_width="match_parent"
+        android:layout_height="3dip"
+        android:layout_marginBottom="16dip"
+        android:layout_below="@id/content"
+        android:layout_alignLeft="@id/content"
+        android:background="@color/divider_color" />  <!-- TODO: fix this -->
+
+    <RelativeLayout
+        android:id="@+id/bottom_buttons"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="vertical"
+        android:layout_below="@id/bottom_divider"
+        android:layout_alignLeft="@id/bottom_divider"
         android:layout_alignParentRight="true"
-        android:layout_marginRight="16dip"
-        android:layout_alignBottom="@+id/content"
-        android:layout_marginBottom="16dip">
+        android:layout_alignParentBottom="true">
 
-        <Button android:id="@+id/wifi_setup_forget"
-                android:layout_width="208dip"
-                android:layout_height="48dip"
-                android:layout_marginLeft="16dip"
-                android:text="@string/wifi_setup_forget"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:visibility="gone" />
+        <Button
+            android:id="@+id/wifi_setup_add_network"
+            style="@style/setup_wizard_button"
+            android:layout_alignParentLeft="true"
+            android:text="@string/wifi_setup_add_network"
+            android:enabled="false" />
 
-        <Button android:id="@+id/wifi_setup_connect"
-                android:layout_width="208dip"
-                android:layout_height="48dip"
-                android:layout_marginTop="96dip"
-                android:layout_marginLeft="16dip"
-                android:text="@string/wifi_setup_connect"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:enabled="false"
-                android:visibility="gone" />
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:orientation="horizontal">
 
-        <Button android:id="@+id/wifi_setup_add_network"
-                android:layout_width="208dip"
-                android:layout_height="48dip"
-                android:layout_marginLeft="16dip"
-                android:text="@string/wifi_setup_add_network"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:enabled="false" />
+            <!-- This misleading name is for keeping consistency between non-XL
+                 layouts -->
+            <Button android:id="@+id/wifi_setup_cancel"
+                    style="@style/setup_wizard_button"
+                    android:text="@string/wifi_setup_back"
+                    android:visibility="gone" />
 
-        <Button android:id="@+id/wifi_setup_refresh_list"
-                android:layout_width="208dip"
-                android:layout_height="48dip"
-                android:layout_marginLeft="16dip"
-                android:text="@string/wifi_setup_refresh_list"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:enabled="false" />
+            <Button android:id="@+id/wifi_setup_connect"
+                    style="@style/setup_wizard_button"
+                    android:layout_marginLeft="16dip"
+                    android:text="@string/wifi_setup_connect"
+                    android:enabled="false"
+                    android:visibility="gone" />
 
-        <Button android:id="@+id/wifi_setup_skip_or_next"
-                android:layout_width="208dip"
-                android:layout_height="48dip"
-                android:layout_marginTop="96dip"
-                android:layout_marginLeft="16dip"
-                android:text="@string/wifi_setup_skip"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:enabled="false" />
-    </LinearLayout>
+            <Button android:id="@+id/wifi_setup_refresh_list"
+                    style="@style/setup_wizard_button"
+                    android:layout_marginLeft="16dip"
+                    android:text="@string/wifi_setup_refresh_list"
+                    android:enabled="false" />
 
-    <!-- This misleading name is for keeping consistency between non-XL layouts -->
-    <Button android:id="@+id/wifi_setup_cancel"
-            android:layout_width="208dip"
-            android:layout_height="48dip"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:layout_marginBottom="16dip"
-            android:layout_alignBottom="@+id/content"
-            android:layout_toLeftOf="@id/right_buttons"
-            android:text="@string/wifi_setup_back"
-            android:visibility="gone" />
+            <Button android:id="@+id/wifi_setup_skip_or_next"
+                    style="@style/setup_wizard_button"
+                    android:layout_marginLeft="16dip"
+                    android:text="@string/wifi_setup_skip"
+                    android:enabled="false" />
+        </LinearLayout>
+    </RelativeLayout>
 </RelativeLayout>
diff --git a/res/layout/installed_app_details.xml b/res/layout/installed_app_details.xml
index fff1975..0b68d47 100644
--- a/res/layout/installed_app_details.xml
+++ b/res/layout/installed_app_details.xml
@@ -132,6 +132,7 @@
                     android:maxLines="1" />
 
             </LinearLayout>
+
             <LinearLayout
                 android:id="@+id/info_size"
                 android:layout_width="match_parent"
@@ -169,6 +170,44 @@
                     android:maxLines="1" />
 
             </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:baselineAligned="true"
+                android:paddingTop="-1dip">
+                <TextView
+                    android:id="@+id/external_size_prefix"
+                    android:text="@string/external_size_label"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:maxLines="1"
+                    android:paddingTop="6dip"
+                    android:paddingLeft="6dip"/>
+                <ImageView
+                    android:id="@+id/info_size_dots"
+                    android:src="@drawable/dotted_line_480px"
+                    android:layout_width="0dip"
+                    android:layout_weight="1"
+                    android:layout_height="1px"
+                    android:layout_gravity="bottom"
+                    android:layout_marginLeft="1dip"
+                    android:layout_marginRight="1dip"
+                    android:layout_marginBottom="4dip"
+                    android:scaleType="center" />
+                <TextView
+                    android:id="@+id/external_size_text"
+                    android:textAppearance="?android:attr/textAppearanceMedium"
+                    android:paddingTop="6dip"
+                    android:paddingRight="6dip"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:maxLines="1" />
+
+            </LinearLayout>
+
             <!-- Clear data and install location buttons  -->
             <include
                 layout="@layout/two_buttons_panel"
diff --git a/res/layout/settings_actionbar.xml b/res/layout/settings_actionbar.xml
deleted file mode 100644
index 711a0a1..0000000
--- a/res/layout/settings_actionbar.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="horizontal"
-        android:padding="4dip"
-        android:gravity="center_vertical"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent">
-
-    <!-- ImageView
-            android:src="@mipmap/ic_launcher_settings"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:layout_marginLeft="4dip"
-            android:layout_marginRight="4dip"
-    /-->
-
-    <view class="com.android.settings.Settings$BreadCrumbs"
-            android:id="@+id/bread_crumbs"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:orientation="horizontal">
-
-        <TextView android:id="@+id/level_up_title"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:gravity="center_vertical"
-                style="?android:attr/textAppearanceMediumInverse"
-                />
-
-        <ImageView
-                android:id="@+id/level_divider"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:layout_marginTop="4dip"
-                android:layout_marginBottom="4dip"
-                android:layout_marginLeft="12dip"
-                android:layout_marginRight="12dip"
-                android:src="@drawable/nav_divider"/>
-
-        <TextView android:id="@+id/level_current_title"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:gravity="center_vertical"
-                style="?android:attr/textAppearanceMediumInverse"
-                />
-    </view>
-</LinearLayout>
diff --git a/res/layout/settings_top_level.xml b/res/layout/settings_top_level.xml
deleted file mode 100644
index b029915..0000000
--- a/res/layout/settings_top_level.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Top-level Settings layout with fragments. -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <FrameLayout android:id="@+id/prefs"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            />
-
-    <!-- button_bar -->
-    <RelativeLayout android:id="@+id/button_bar"
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android:layout_weight="0"
-        android:background="@android:drawable/bottom_bar"
-        android:visibility="gone">
-
-        <Button android:id="@+id/back_button"
-            android:layout_width="150dip"
-            android:layout_height="wrap_content"
-            android:layout_margin="5dip"
-            android:layout_alignParentLeft="true"
-            android:drawablePadding="3dip"
-        />
-        <LinearLayout
-            android:orientation="horizontal"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentRight="true">
-
-            <Button android:id="@+id/skip_button"
-                android:layout_width="150dip"
-                android:layout_height="wrap_content"
-                android:layout_margin="5dip"
-                android:text="@string/skip_button_label"
-                android:visibility="gone"
-            />
-
-            <Button android:id="@+id/next_button"
-                android:layout_width="150dip"
-                android:layout_height="wrap_content"
-                android:layout_margin="5dip"
-                android:drawableRight="@drawable/ic_btn_next"
-                android:drawablePadding="3dip"
-                android:text="@string/next_button_label"
-            />
-        </LinearLayout>
-    </RelativeLayout>
-</LinearLayout>
diff --git a/res/layout/wifi_config_ui_for_setup_wizard.xml b/res/layout/wifi_config_ui_for_setup_wizard.xml
index c96a15c..0154a3c 100644
--- a/res/layout/wifi_config_ui_for_setup_wizard.xml
+++ b/res/layout/wifi_config_ui_for_setup_wizard.xml
@@ -16,13 +16,15 @@
 <!-- All ids in this layout must be in wifi_dialog.xml -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
               android:orientation="vertical"
-              android:layout_width="fill_parent"
-              android:layout_height="fill_parent">
+              android:layout_width="match_parent"
+              android:layout_height="match_parent">
+    <!-- TODO: remove this once we confirm it is needless -->
     <LinearLayout
         android:id="@+id/wifi_general_info"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="vertical">
+        android:orientation="vertical"
+        android:visibility="gone">
         <TextView android:id="@+id/title"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
@@ -43,72 +45,76 @@
 
     <!-- UI components that should be shown appropriately -->
     <LinearLayout android:id="@+id/wps_fields"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:orientation="vertical"
                   android:visibility="gone">
         <TextView
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:text="@string/wifi_wps_pin" />
 
         <EditText android:id="@+id/wps_pin"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:singleLine="true"
                   android:inputType="textPassword" />
     </LinearLayout>
     <LinearLayout android:id="@+id/security_fields"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:orientation="vertical"
                   android:visibility="gone">
-        <TextView android:layout_width="fill_parent"
-                  android:layout_height="wrap_content"
-                  android:text="@string/wifi_password" />
-
-        <EditText android:id="@+id/password"
-                  android:layout_width="fill_parent"
-                  android:layout_height="wrap_content"
-                  android:singleLine="true"
-                  android:password="true" />
+        <LinearLayout android:layout_width="match_parent"
+                      android:layout_height="wrap_content"
+                      android:orientation="horizontal">
+            <TextView android:layout_width="wrap_content"
+                      android:minWidth="88dip"
+                      android:layout_height="wrap_content"
+                      android:text="@string/wifi_password" />
+            <EditText android:id="@+id/password"
+                      android:layout_width="320dip"
+                      android:layout_height="wrap_content"
+                      android:singleLine="true"
+                      android:password="true" />
+        </LinearLayout>
 
         <CheckBox android:id="@+id/show_password"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:text="@string/wifi_show_password" />
     </LinearLayout>
     <LinearLayout android:id="@+id/type"
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:orientation="vertical"
                  android:visibility="gone">
 
-       <TextView android:layout_width="fill_parent"
+       <TextView android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                  android:text="@string/wifi_ssid" />
 
        <EditText android:id="@+id/ssid"
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:singleLine="true"
                  android:inputType="textNoSuggestions" />
 
-       <TextView android:layout_width="fill_parent"
+       <TextView android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:text="@string/wifi_security" />
 
        <Spinner android:id="@+id/security"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:prompt="@string/wifi_security"
                 android:entries="@array/wifi_security" />
     </LinearLayout> <!-- android:id="@+id/type" -->
 
     <LinearLayout android:id="@+id/eap_not_supported"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
-                  android:layout_marginTop="32dip"
+                  android:minHeight="360dip"
                   android:orientation="vertical"
                   android:visibility="gone">
         <TextView android:layout_width="match_parent"
@@ -127,23 +133,23 @@
         android:visibility="gone">
 
     <LinearLayout android:id="@+id/info"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:orientation="vertical"/>
 
     <LinearLayout android:id="@+id/setup_fields"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:orientation="vertical"
                   android:visibility="gone">
 
         <TextView
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:text="@string/wifi_network_setup" />
 
         <Spinner android:id="@+id/network_setup"
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:prompt="@string/wifi_network_setup"
                  android:entries="@array/wifi_network_setup" />
@@ -152,18 +158,18 @@
 
     <!--
     <LinearLayout android:id="@+id/wps_fields"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:orientation="vertical"
                   android:visibility="gone">
 
         <TextView
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:text="@string/wifi_wps_pin" />
 
         <EditText android:id="@+id/wps_pin"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:singleLine="true"
                   android:inputType="textPassword" />
@@ -171,225 +177,225 @@
 
     <!--  android:id="@+id/security_fields" -->
     <LinearLayout
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:orientation="vertical"
                   android:visibility="gone">
 
         <LinearLayout android:id="@+id/eap"
-                      android:layout_width="fill_parent"
+                      android:layout_width="match_parent"
                       android:layout_height="wrap_content"
                       android:orientation="vertical"
                       android:visibility="gone">
 
             <TextView
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:text="@string/wifi_eap_method" />
 
             <Spinner android:id="@+id/method"
-                     android:layout_width="fill_parent"
+                     android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:prompt="@string/wifi_eap_method"
                      android:entries="@array/wifi_eap_method" />
 
             <TextView
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:text="@string/please_select_phase2" />
 
             <Spinner android:id="@+id/phase2"
-                     android:layout_width="fill_parent"
+                     android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:prompt="@string/please_select_phase2"
                      android:entries="@array/wifi_phase2_entries" />
 
             <TextView
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:text="@string/wifi_eap_ca_cert" />
 
             <Spinner android:id="@+id/ca_cert"
-                     android:layout_width="fill_parent"
+                     android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:prompt="@string/wifi_eap_ca_cert" />
 
             <TextView
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:text="@string/wifi_eap_user_cert" />
 
             <Spinner android:id="@+id/user_cert"
-                     android:layout_width="fill_parent"
+                     android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:prompt="@string/wifi_eap_user_cert" />
 
             <TextView
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:text="@string/wifi_eap_identity" />
 
             <EditText android:id="@+id/identity"
-                      android:layout_width="fill_parent"
+                      android:layout_width="match_parent"
                       android:layout_height="wrap_content"
                       android:singleLine="true"
                       android:inputType="textNoSuggestions" />
 
             <TextView
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:text="@string/wifi_eap_anonymous" />
 
             <EditText android:id="@+id/anonymous"
-                      android:layout_width="fill_parent"
+                      android:layout_width="match_parent"
                       android:layout_height="wrap_content"
                       android:singleLine="true"
                       android:inputType="textNoSuggestions" />
         </LinearLayout> <!-- android:id="@+id/eap" -->
 
-        <!-- <TextView android:layout_width="fill_parent"
+        <!-- <TextView android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:text="@string/wifi_password" />
 
         <EditText android:id="@+id/password"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:singleLine="true"
                   android:password="true" />
 
         <CheckBox android:id="@+id/show_password"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:text="@string/wifi_show_password" /> -->
     </LinearLayout>  <!-- android:id="@+id/security_fields" -->
 
     <LinearLayout android:id="@+id/ip_fields"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:orientation="vertical"
                   android:visibility="gone">
 
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/wifi_ip_settings" />
 
         <Spinner android:id="@+id/ip_settings"
-                 android:layout_width="fill_parent"
+                 android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:prompt="@string/wifi_ip_settings"
                  android:entries="@array/wifi_ip_settings" />
     </LinearLayout>
 
     <LinearLayout android:id="@+id/staticip"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:orientation="vertical"
                   android:visibility="gone">
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/wifi_ip_address" />
 
         <EditText android:id="@+id/ipaddress"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:singleLine="true"
                   android:inputType="textNoSuggestions" />
 
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/wifi_gateway" />
 
         <EditText android:id="@+id/gateway"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:singleLine="true"
                   android:inputType="textNoSuggestions" />
 
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/wifi_network_prefix_length" />
 
         <EditText android:id="@+id/network_prefix_length"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:singleLine="true"
                   android:inputType="textNoSuggestions" />
 
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/wifi_dns1" />
 
         <EditText android:id="@+id/dns1"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:singleLine="true"
                   android:inputType="textNoSuggestions" />
 
         <TextView
-            android:layout_width="fill_parent"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="@string/wifi_dns2" />
 
         <EditText android:id="@+id/dns2"
-                  android:layout_width="fill_parent"
+                  android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:singleLine="true"
                   android:inputType="textNoSuggestions" />
 
         <LinearLayout android:id="@+id/proxy_settings_fields"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical"
                 android:visibility="gone">
 
             <TextView android:id="@+id/proxy_settings_title"
-                    android:layout_width="fill_parent"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:text="@string/proxy_settings_title" />
 
             <Spinner android:id="@+id/proxy_settings"
-                    android:layout_width="fill_parent"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:prompt="@string/proxy_settings_title"
                     android:entries="@array/wifi_proxy_settings" />
         </LinearLayout>
 
         <LinearLayout android:id="@+id/proxy_fields"
-                android:layout_width="fill_parent"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical"
                 android:visibility="gone">
-            <TextView android:layout_width="fill_parent"
+            <TextView android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:text="@string/proxy_hostname_label" />
 
             <EditText android:id="@+id/proxy_hostname"
-                    android:layout_width="fill_parent"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:singleLine="true"
                     android:inputType="textNoSuggestions" />
 
-            <TextView android:layout_width="fill_parent"
+            <TextView android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:text="@string/proxy_port_label" />
 
             <EditText android:id="@+id/proxy_port"
-                    android:layout_width="fill_parent"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:singleLine="true"
                     android:inputType="textNoSuggestions" />
 
-            <TextView android:layout_width="fill_parent"
+            <TextView android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:text="@string/proxy_exclusionlist_label" />
 
             <EditText android:id="@+id/proxy_exclusionlist"
-                    android:layout_width="fill_parent"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:singleLine="true"
                     android:inputType="textNoSuggestions" />
diff --git a/res/values-xlarge/styles.xml b/res/values-xlarge/styles.xml
index 5e3fead..9b125ad 100644
--- a/res/values-xlarge/styles.xml
+++ b/res/values-xlarge/styles.xml
@@ -50,4 +50,11 @@
         <item name="android:orientation">vertical</item>
     </style>
 
-</resources>
\ No newline at end of file
+    <style name="setup_wizard_button">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:minWidth">208dip</item>
+        <item name="android:layout_height">48dip</item>
+        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
+    </style>
+
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4107951..26bead9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1969,6 +1969,10 @@
     <string name="application_size_label">Application</string>
     <!-- Manage applications, individual application info screen, label under Storage heading.  The amount of sapce taken up by the app's data (for example, downloaded emails or something like that) -->
     <string name="data_size_label">Data</string>
+    <!--  Manage applications, individual application info screen, label under Storage heading.  The amount of space taken up by the app's data on USB storage [CHARSIZE=40] -->
+    <string name="external_size_label" product="nosdcard">USB storage</string>
+    <!--  Manage applications, individual application info screen, label under Storage heading.  The amount of space taken up by the app's data on the SD card [CHARSIZE=40] -->
+    <string name="external_size_label" product="default">SD card</string>
     <!-- Manage applications, individual application info screen, button label under Storage heading. Button to remove the application from the system. -->
     <string name="uninstall_text">Uninstall</string>
     <!-- [CHAR LIMIT=25] Manage applications, individual application info screen, button label under Storage heading. Button to disable an existing application. -->
@@ -2958,8 +2962,22 @@
     <string name="sound_category_feedback_title">Feedback</string>
 
     <!-- Wifi Setup For Setup Wizard with XL screen -->
-    <!-- Title shown in Wifi Setup For Setup Wizard with XL screen -->
+    <!-- Title shown in Wifi Setup Wizard with XL screen -->
     <string name="wifi_setup_title">Wi-Fi setup</string>
+    <!-- Title shown in Wifi Setup Wizard with XL screen when
+         a user is configuring password for a network.
+         The argument should be the name of the network.
+         [CHAR LIMIT=50] -->
+    <string name="wifi_setup_title_editing_network">Connect to Wi-Fi network <xliff:g id="network_name" example="Happy Mobile">%s</xliff:g></string>
+    <!-- Title shown in Wifi Setup For Setup Wizard with XL screen when
+         the device is connecting a network the user specified.
+         The argument should be the name of the network.
+         [CHAR LIMIT=50] -->
+    <string name="wifi_setup_title_connecting_network">Connecting to Wi-Fi network <xliff:g id="network_name" example="Happy Mobile">%s</xliff:g>...</string>
+    <!-- Title shown in Wifi Setup For Setup Wizard with XL screen when
+         a user is adding a network.
+         [CHAR LIMIT=50] -->
+    <string name="wifi_setup_title_add_network">Add a network</string>
     <!-- Text message shown when Wifi is not connected.
          Used in Wifi Setup For Setup Wizard with XL screen. -->
     <string name="wifi_setup_not_connected">Not connected</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 969742f..c361fa9 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -109,4 +109,9 @@
         <item name="android:layout_height">wrap_content</item>
         <item name="android:orientation">vertical</item>
     </style>
+
+    <style name="setup_wizard_button">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
 </resources>
diff --git a/src/com/android/settings/ButtonBarHandler.java b/src/com/android/settings/ButtonBarHandler.java
new file mode 100644
index 0000000..d61da13
--- /dev/null
+++ b/src/com/android/settings/ButtonBarHandler.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings;
+
+import android.widget.Button;
+
+/**
+ * Interface letting {@link SettingsPreferenceFragment} access to bottom bar inside
+ * {@link android.preference.PreferenceActivity}.
+ */
+public interface ButtonBarHandler {
+    public boolean hasNextButton();
+    public Button getNextButton();
+}
\ No newline at end of file
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 613b082..11d8c57 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -34,7 +34,7 @@
 /**
  * Top-level settings activity to handle single pane and double pane UI layout.
  */
-public class Settings extends PreferenceActivity {
+public class Settings extends PreferenceActivity implements ButtonBarHandler {
 
     private static final String META_DATA_KEY_HEADER_ID =
             "com.android.settings.TOP_LEVEL_HEADER_ID";
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 0db4f8b..47e31ee 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -158,11 +158,11 @@
     }
 
     protected boolean hasNextButton() {
-        return ((Settings)getActivity()).hasNextButton();
+        return ((ButtonBarHandler)getActivity()).hasNextButton();
     }
 
     protected Button getNextButton() {
-        return ((Settings)getActivity()).getNextButton();
+        return ((ButtonBarHandler)getActivity()).getNextButton();
     }
 
     public void finish() {
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index 298f1b6..aef8b8a 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -55,6 +55,7 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -212,7 +213,6 @@
         String title = getString(R.string.sync_item_title, providerLabel);
         item.setTitle(title);
         item.setKey(authority);
-        getPreferenceScreen().addPreference(item);
         mCheckBoxes.add(item);
     }
 
@@ -472,6 +472,11 @@
                 }
             }
         }
+
+        Collections.sort(mCheckBoxes);
+        for (int i = 0, n = mCheckBoxes.size(); i < n; i++) {
+            getPreferenceScreen().addPreference(mCheckBoxes.get(i));
+        }
     }
 
     /**
diff --git a/src/com/android/settings/applications/ApplicationsState.java b/src/com/android/settings/applications/ApplicationsState.java
index 6e9f2a2..6de8c7f 100644
--- a/src/com/android/settings/applications/ApplicationsState.java
+++ b/src/com/android/settings/applications/ApplicationsState.java
@@ -71,6 +71,7 @@
         long cacheSize;
         long codeSize;
         long dataSize;
+        long externalSize;
     }
     
     public static class AppEntry extends SizeInfo {
@@ -626,9 +627,16 @@
 
     // --------------------------------------------------------------
 
-    private long getTotalSize(PackageStats ps) {
+    private long getTotalInternalSize(PackageStats ps) {
         if (ps != null) {
-            return ps.codeSize+ps.dataSize;
+            return ps.codeSize + ps.dataSize;
+        }
+        return SIZE_INVALID;
+    }
+
+    private long getTotalExternalSize(PackageStats ps) {
+        if (ps != null) {
+            return ps.externalDataSize + ps.externalMediaSize + ps.externalCacheSize;
         }
         return SIZE_INVALID;
     }
@@ -660,15 +668,18 @@
                         synchronized (entry) {
                             entry.sizeStale = false;
                             entry.sizeLoadStart = 0;
-                            long newSize = getTotalSize(stats);
+                            long externalSize = getTotalExternalSize(stats);
+                            long newSize = externalSize + getTotalInternalSize(stats);
                             if (entry.size != newSize ||
                                     entry.cacheSize != stats.cacheSize ||
                                     entry.codeSize != stats.codeSize ||
-                                    entry.dataSize != stats.dataSize) {
+                                    entry.dataSize != stats.dataSize ||
+                                    entry.externalSize != externalSize) {
                                 entry.size = newSize;
                                 entry.cacheSize = stats.cacheSize;
                                 entry.codeSize = stats.codeSize;
                                 entry.dataSize = stats.dataSize;
+                                entry.externalSize = externalSize;
                                 entry.sizeStr = getSizeStr(entry.size);
                                 if (DEBUG) Log.i(TAG, "Set size of " + entry.label + " " + entry
                                         + ": " + entry.sizeStr);
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index de897eb..06d97fc 100644
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -93,6 +93,7 @@
     private TextView mTotalSize;
     private TextView mAppSize;
     private TextView mDataSize;
+    private TextView mExternalSize;
     private ClearUserDataObserver mClearDataObserver;
     // Views related to cache info
     private TextView mCacheSize;
@@ -107,6 +108,7 @@
     private boolean mHaveSizes = false;
     private long mLastCodeSize = -1;
     private long mLastDataSize = -1;
+    private long mLastExternalSize = -1;
     private long mLastCacheSize = -1;
     private long mLastTotalSize = -1;
     
@@ -317,6 +319,7 @@
         mTotalSize = (TextView)view.findViewById(R.id.total_size_text);
         mAppSize = (TextView)view.findViewById(R.id.application_size_text);
         mDataSize = (TextView)view.findViewById(R.id.data_size_text);
+        mExternalSize = (TextView)view.findViewById(R.id.external_size_text);
         
         // Get Control button panel
         View btnPanel = view.findViewById(R.id.control_buttons_panel);
@@ -504,6 +507,10 @@
                 mLastDataSize = mAppEntry.dataSize;
                 mDataSize.setText(getSizeStr(mAppEntry.dataSize));
             }
+            if (mLastExternalSize != mAppEntry.externalSize) {
+                mLastExternalSize = mAppEntry.externalSize;
+                mExternalSize.setText(getSizeStr(mAppEntry.externalSize));
+            }
             if (mLastCacheSize != mAppEntry.cacheSize) {
                 mLastCacheSize = mAppEntry.cacheSize;
                 mCacheSize.setText(getSizeStr(mAppEntry.cacheSize));
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index 117bec5..a4808b0 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -21,29 +21,15 @@
 import com.android.settings.Utils;
 import com.android.settings.VoiceInputOutputSettings;
 
-import android.app.AlertDialog;
 import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
 import android.content.res.Configuration;
 import android.os.Bundle;
-import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
-import android.preference.PreferenceGroup;
 import android.preference.PreferenceScreen;
 import android.provider.Settings;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.inputmethod.InputMethodInfo;
 import android.view.inputmethod.InputMethodManager;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
 public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
         implements Preference.OnPreferenceChangeListener{
 
diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
index 6981927..03c5ea1 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.java
@@ -204,6 +204,7 @@
                     if (DEBUG) {
                         Log.d(TAG, "Current IME was uninstalled or disabled.");
                     }
+                    currentInputMethodId = null;
                 }
             }
             // If it's a disabled system ime, add it to the disabled list so that it
diff --git a/src/com/android/settings/wifi/WifiConfigUiBase.java b/src/com/android/settings/wifi/WifiConfigUiBase.java
index d930b58..11dcc00 100644
--- a/src/com/android/settings/wifi/WifiConfigUiBase.java
+++ b/src/com/android/settings/wifi/WifiConfigUiBase.java
@@ -22,7 +22,7 @@
 
 /**
  * Foundation interface glues between Activities and UIs like
- * {@link WifiDialog} or {@link WifiConfigPreference}.
+ * {@link WifiDialog} or {@link WifiConfigUiForSetupWizardXL}.
  */
 public interface WifiConfigUiBase {
     public Context getContext();
diff --git a/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java b/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java
index bbd8f80..bffcc61 100644
--- a/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java
+++ b/src/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.java
@@ -18,7 +18,6 @@
 
 import com.android.settings.R;
 
-import android.app.Activity;
 import android.content.Context;
 import android.os.Handler;
 import android.util.Log;
@@ -38,16 +37,17 @@
     private static final String TAG = "SetupWizard";
 
     private Button mConnectButton;
-    private Button mForgetButton;
     private Button mCancelButton;
 
-    private final Activity mActivity;
+    private final WifiSettingsForSetupWizardXL mActivity;
     private View mView;
     private WifiConfigController mController;
     private AccessPoint mAccessPoint;
     private boolean mEdit;
     private Handler mHandler = new Handler();
 
+    private final InputMethodManager mInputMethodManager;
+
     private LayoutInflater mInflater;
 
     /**
@@ -58,10 +58,10 @@
      * @param edit
      */
     public WifiConfigUiForSetupWizardXL(
-            Activity activity, ViewGroup parent, AccessPoint accessPoint, boolean edit) {
+            WifiSettingsForSetupWizardXL activity, ViewGroup parent,
+            AccessPoint accessPoint, boolean edit) {
         mActivity = activity;
         mConnectButton = (Button)activity.findViewById(R.id.wifi_setup_connect);
-        mForgetButton = (Button)activity.findViewById(R.id.wifi_setup_forget);
         mCancelButton = (Button)activity.findViewById(R.id.wifi_setup_cancel);
         mAccessPoint = accessPoint;
         mEdit = edit;
@@ -70,12 +70,14 @@
         mView = mInflater.inflate(R.layout.wifi_config_ui_for_setup_wizard, parent, true);
         mController = new WifiConfigController(this, mView, mAccessPoint, edit);
 
-        // Assumes R.id.password is inside security_fields.
-        // TODO: confirm it is ok to assume R.id.password is the only EditText to be focused, and
-        // R.id.security_fields is the only parent for possible EditTexts. Possibly we need to
-        // check parentand detect visibility manually.
+        mInputMethodManager = (InputMethodManager)
+                activity.getSystemService(Context.INPUT_METHOD_SERVICE);
+
         if (mView.findViewById(R.id.security_fields).getVisibility() == View.VISIBLE) {
             requestFocusAndShowKeyboard(R.id.password);
+        } else if (mView.findViewById(R.id.type).getVisibility() == View.VISIBLE) {
+            // Add Network flow.
+            requestFocusAndShowKeyboard(R.id.ssid);
         }
     }
 
@@ -90,13 +92,17 @@
         } else if (!(viewToBeFocused instanceof EditText)) {
             Log.w(TAG, "password field is not EditText");
         } else {
-            // After acquiring the focus, we show software keyboard.
-            viewToBeFocused.setOnFocusChangeListener(this);
-            final boolean requestFocusResult = viewToBeFocused.requestFocus();
-            Log.i(TAG, String.format("Focus request  %s.",
-                    (requestFocusResult ? "successful" : "failed")));
-            if (!requestFocusResult) {
-                viewToBeFocused.setOnFocusChangeListener(null);
+            if (viewToBeFocused.isFocused()) {
+                mInputMethodManager.showSoftInput(viewToBeFocused, 0);
+            } else {
+                // After acquiring the focus, we show software keyboard.
+                viewToBeFocused.setOnFocusChangeListener(this);
+                final boolean requestFocusResult = viewToBeFocused.requestFocus();
+                Log.i(TAG, String.format("Focus request  %s.",
+                        (requestFocusResult ? "successful" : "failed")));
+                if (!requestFocusResult) {
+                    viewToBeFocused.setOnFocusChangeListener(null);
+                }
             }
         }
     }
@@ -131,7 +137,7 @@
 
     @Override
     public Button getForgetButton() {
-        return mForgetButton;
+        return null;
     }
 
     @Override
@@ -143,16 +149,11 @@
     public void setSubmitButton(CharSequence text) {
         mConnectButton.setVisibility(View.VISIBLE);
         mConnectButton.setText(text);
-
-        // test
-        mForgetButton.setVisibility(View.GONE);
     }
 
     @Override
     public void setForgetButton(CharSequence text) {
         // In XL setup screen, we won't show Forget button for simplifying the UI.
-        // mForgetButton.setVisibility(View.VISIBLE);
-        // mForgetButton.setText(text);
     }
 
     @Override
@@ -177,12 +178,9 @@
         Log.d(TAG, "Ignoring setTitle");
     }
 
-    private static class FocusRunnable implements Runnable {
-        final InputMethodManager mInputMethodManager;
+    private class FocusRunnable implements Runnable {
         final View mViewToBeFocused;
-        public FocusRunnable(Context context, View viewToBeFocused) {
-            mInputMethodManager = (InputMethodManager)
-                    context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        public FocusRunnable(View viewToBeFocused) {
             mViewToBeFocused = viewToBeFocused;
         }
 
@@ -191,7 +189,9 @@
             // mInputMethodManager.focusIn(mViewToBeFocused);
             final boolean showSoftInputResult =
                     mInputMethodManager.showSoftInput(mViewToBeFocused, 0);
-            if (!showSoftInputResult) {
+            if (showSoftInputResult) {
+                mActivity.setPaddingVisibility(View.GONE);
+            } else {
                 Log.w(TAG, "Failed to show software keyboard ");
             }
         }
@@ -201,7 +201,7 @@
     public void onFocusChange(View view, boolean hasFocus) {
         view.setOnFocusChangeListener(null);
         if (hasFocus) {
-            mHandler.post(new FocusRunnable(mActivity, view));
+            mHandler.post(new FocusRunnable(view));
         }
     }
 }
\ No newline at end of file
diff --git a/src/com/android/settings/wifi/WifiPickerActivity.java b/src/com/android/settings/wifi/WifiPickerActivity.java
new file mode 100644
index 0000000..7b972fc
--- /dev/null
+++ b/src/com/android/settings/wifi/WifiPickerActivity.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.wifi;
+
+import com.android.settings.ButtonBarHandler;
+
+import android.content.Intent;
+import android.preference.PreferenceActivity;
+import android.widget.Button;
+
+public class WifiPickerActivity extends PreferenceActivity implements ButtonBarHandler {
+    @Override
+    public Intent getIntent() {
+        Intent modIntent = new Intent(super.getIntent());
+        modIntent.putExtra(EXTRA_SHOW_FRAGMENT, WifiSettings.class.getName());
+        modIntent.putExtra(EXTRA_NO_HEADERS, true);
+        return modIntent;
+    }
+
+    @Override
+    public boolean hasNextButton() {
+        // PreferenceActivity#hasNextButton() is protected, so we need to expose it here.
+        return super.hasNextButton();
+    }
+
+    @Override
+    public Button getNextButton() {
+        // PreferenceActivity#getNextButton() is protected, so we need to expose it here.
+        return super.getNextButton();
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index ffe48a9..ccc40fb 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -567,7 +567,7 @@
     public void onClick(DialogInterface dialogInterface, int button) {
         if (mInXlSetupWizard) {
             if (button == WifiDialog.BUTTON_FORGET && mSelectedAccessPoint != null) {
-                ((WifiSettingsForSetupWizardXL)getActivity()).onForgetButtonPressed();
+                forget();
             } else if (button == WifiDialog.BUTTON_SUBMIT) {
                 ((WifiSettingsForSetupWizardXL)getActivity()).onConnectButtonPressed();
             }
diff --git a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java
index 7fccce0..59d61ab 100644
--- a/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java
+++ b/src/com/android/settings/wifi/WifiSettingsForSetupWizardXL.java
@@ -29,10 +29,10 @@
 import android.preference.PreferenceCategory;
 import android.text.TextUtils;
 import android.util.Log;
-import android.view.View;
-import android.view.ContextMenu.ContextMenuInfo;
-import android.view.View.OnClickListener;
 import android.view.ContextMenu;
+import android.view.ContextMenu.ContextMenuInfo;
+import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.view.Window;
 import android.view.WindowManager;
@@ -69,16 +69,31 @@
 
     private WifiManager mWifiManager;
 
-    private TextView mProgressText;
+    /**
+     * Used for resizing a padding above title. Hiden when software keyboard is shown.
+     */
+    private View mTopPadding;
+
+    /**
+     * Used for resizing a padding inside Config UI. Hiden when software keyboard is shown.
+     */
+    private View mWifiConfigPadding;
+
+    private TextView mTitleView;
+    /**
+     * The name of a network currently connecting, or trying to connect.
+     * This may be empty ("") at first, and updated when configuration is changed.
+     */
+    private CharSequence mNetworkName = "";
+    private CharSequence mEditingTitle;
+
     private ProgressBar mProgressBar;
     private WifiSettings mWifiSettings;
-    private TextView mStatusText;
 
     private Button mAddNetworkButton;
     private Button mRefreshButton;
     private Button mSkipOrNextButton;
     private Button mConnectButton;
-    private Button mForgetButton;
     private Button mBackButton;
 
     // true when a user already pressed "Connect" button and waiting for connection.
@@ -130,14 +145,11 @@
     }
 
     public void setup() {
-        mProgressText = (TextView)findViewById(R.id.scanning_progress_text);
+        mTitleView = (TextView)findViewById(R.id.wifi_setup_title);
         mProgressBar = (ProgressBar)findViewById(R.id.scanning_progress_bar);
         mProgressBar.setMax(2);
-        mStatusText = (TextView)findViewById(R.id.wifi_setup_status);
 
-        mProgressText.setText(Summary.get(this, DetailedState.SCANNING));
         mProgressBar.setIndeterminate(true);
-        mStatusText.setText(R.string.wifi_setup_status_scanning);
 
         mAddNetworkButton = (Button)findViewById(R.id.wifi_setup_add_network);
         mAddNetworkButton.setOnClickListener(this);
@@ -147,11 +159,12 @@
         mSkipOrNextButton.setOnClickListener(this);
         mConnectButton = (Button)findViewById(R.id.wifi_setup_connect);
         mConnectButton.setOnClickListener(this);
-        mForgetButton = (Button)findViewById(R.id.wifi_setup_forget);
-        mForgetButton.setOnClickListener(this);
         mBackButton = (Button)findViewById(R.id.wifi_setup_cancel);
         mBackButton.setOnClickListener(this);
 
+        mTopPadding = findViewById(R.id.top_padding);
+        mWifiConfigPadding = findViewById(R.id.wifi_config_padding);
+
         // At first, Wifi module doesn't return SCANNING state (it's too early), so we manually
         // show it.
         showScanningStatus();
@@ -163,8 +176,8 @@
         mRefreshButton.setVisibility(View.VISIBLE);
         mSkipOrNextButton.setVisibility(View.VISIBLE);
         mConnectButton.setVisibility(View.GONE);
-        mForgetButton.setVisibility(View.GONE);
         mBackButton.setVisibility(View.GONE);
+        setPaddingVisibility(View.VISIBLE, View.GONE);
     }
 
     @Override
@@ -188,9 +201,6 @@
         } else if (view == mConnectButton) {
             if (DEBUG) Log.d(TAG, "Connect button pressed");
             onConnectButtonPressed();
-        } else if (view == mForgetButton) {
-            if (DEBUG) Log.d(TAG, "Forget button pressed");
-            onForgetButtonPressed();
         } else if (view == mBackButton) {
             if (DEBUG) Log.d(TAG, "Back button pressed");
             onBackButtonPressed();
@@ -222,7 +232,6 @@
             // no visible network on the list.
             if (mWifiSettings.getAccessPointsCount() == 0) {
                 mProgressBar.setIndeterminate(true);
-                mProgressText.setText(Summary.get(this, DetailedState.SCANNING));
             } else {
                 // Users already connected to a network, or see available networks.
                 mProgressBar.setIndeterminate(false);
@@ -234,14 +243,14 @@
             break;
         }
         case CONNECTED: {
+            hideSoftwareKeyboard();
+
             // If the device is already connected to a wifi without users' "Connect" request,
             // this can be false here. We want to treat it as "after connect action".
             mAfterConnectAction = true;
 
             mProgressBar.setIndeterminate(false);
             mProgressBar.setProgress(2);
-            mProgressText.setText(Summary.get(this, state));
-            mStatusText.setText(R.string.wifi_setup_status_proceed_to_next);
 
             mConnectButton.setVisibility(View.GONE);
             mAddNetworkButton.setVisibility(View.GONE);
@@ -250,8 +259,6 @@
             mSkipOrNextButton.setVisibility(View.VISIBLE);
             mSkipOrNextButton.setEnabled(true);
             mHandler.removeCallbacks(mSkipButtonEnabler);
-
-            mProgressText.setText(Summary.get(this, state));
             break;
         }
         default:  // DISCONNECTED, FAILED
@@ -264,31 +271,34 @@
         mProgressBar.setIndeterminate(false);
         mProgressBar.setProgress(0);
 
-        mProgressText.setText(stateString);
-
         mAddNetworkButton.setEnabled(true);
         mRefreshButton.setEnabled(true);
     }
 
     private void showConnectingStatus() {
+        // We save this title and show it when authentication failed.
+        mEditingTitle = mTitleView.getText();
+        showTitleForNetworkEditing();
         mProgressBar.setIndeterminate(false);
         mProgressBar.setProgress(1);
-        mStatusText.setText(R.string.wifi_setup_status_connecting);
-        mProgressText.setText(Summary.get(this, DetailedState.CONNECTING));
+        setPaddingVisibility(View.VISIBLE);
+    }
+
+    private void showTitleForNetworkEditing() {
+        if (TextUtils.isEmpty(mNetworkName) && mWifiConfig != null) {
+            mNetworkName = mWifiConfig.getController().getConfig().SSID;
+        }
+        mTitleView.setText(getString(R.string.wifi_setup_title_editing_network, mNetworkName));
     }
 
     private void showScanningStatus() {
         mProgressBar.setIndeterminate(true);
         ((Button)findViewById(R.id.wifi_setup_add_network)).setEnabled(false);
         ((Button)findViewById(R.id.wifi_setup_refresh_list)).setEnabled(false);
-        mProgressText.setText(Summary.get(this, DetailedState.SCANNING));
-        mStatusText.setText(R.string.wifi_setup_status_scanning);
     }
 
     private void onAddNetworkButtonPressed() {
-        // onConfigUiShown() will be called.
         mWifiSettings.onAddNetworkPressed();
-
     }
 
     /**
@@ -318,34 +328,39 @@
         mWifiConfig = new WifiConfigUiForSetupWizardXL(this, parent, selectedAccessPoint, edit);
         final View view = mWifiConfig.getView();
         if (selectedAccessPoint != null) {
-            view.findViewById(R.id.wifi_general_info).setVisibility(View.VISIBLE);
-            ((TextView)view.findViewById(R.id.title)).setText(selectedAccessPoint.getTitle());
-            ((TextView)view.findViewById(R.id.summary)).setText(selectedAccessPoint.getSummary());
+            mNetworkName = selectedAccessPoint.getTitle().toString();
+            mTitleView.setText(getString(R.string.wifi_setup_title_editing_network, mNetworkName));
         } else {
+            mNetworkName = "";
+            mTitleView.setText(R.string.wifi_setup_title_add_network);
             view.findViewById(R.id.wifi_general_info).setVisibility(View.GONE);
         }
 
         if (selectedAccessPoint != null &&
                 selectedAccessPoint.security == AccessPoint.SECURITY_NONE) {
-            mStatusText.setText(R.string.wifi_setup_status_unsecured_network);
+            // onConnectButtonPressed() will change visibility status.
+            mConnectButton.performClick();
         } else if (selectedAccessPoint != null &&
                 selectedAccessPoint.security == AccessPoint.SECURITY_EAP) {
-            mStatusText.setText(R.string.wifi_setup_status_eap_not_supported);
             mConnectButton.setVisibility(View.GONE);
+
+            mSkipOrNextButton.setVisibility(View.GONE);
+            mAddNetworkButton.setVisibility(View.GONE);
+            mRefreshButton.setVisibility(View.GONE);
+            mBackButton.setVisibility(View.VISIBLE);
         } else {
-            mStatusText.setText(R.string.wifi_setup_status_edit_network);
             mConnectButton.setVisibility(View.VISIBLE);
+
+            // WifiConfigController shows Connect button as "Save" when edit==true and a user
+            // tried to connect the network.
+            // In SetupWizard, we just show the button as "Connect" instead.
+            mConnectButton.setText(R.string.wifi_connect);
+
+            mSkipOrNextButton.setVisibility(View.GONE);
+            mAddNetworkButton.setVisibility(View.GONE);
+            mRefreshButton.setVisibility(View.GONE);
+            mBackButton.setVisibility(View.VISIBLE);
         }
-
-        // WifiConfigController shows Connect button as "Save" when edit==true and a user
-        // tried to connect the network.
-        // In SetupWizard, we just show the button as "Connect" instead.
-        mConnectButton.setText(R.string.wifi_connect);
-
-        mAddNetworkButton.setVisibility(View.GONE);
-        mRefreshButton.setVisibility(View.GONE);
-        mSkipOrNextButton.setVisibility(View.GONE);
-        mBackButton.setVisibility(View.VISIBLE);
     }
 
     // May be called when user press "connect" button in WifiDialog
@@ -388,21 +403,6 @@
         mRefreshButton.setVisibility(View.GONE);
     }
 
-    // May be called when user press "forget" button in WifiDialog
-    /* package */ void onForgetButtonPressed() {
-        mWifiSettings.forget();
-
-        refreshAccessPoints(false);
-        restoreFirstButtonVisibilityState();
-        mAddNetworkButton.setEnabled(true);
-        mRefreshButton.setEnabled(true);
-        mSkipOrNextButton.setEnabled(true);
-
-        mProgressBar.setIndeterminate(false);
-        mProgressBar.setProgress(0);
-        mProgressText.setText(getString(R.string.wifi_setup_not_connected));
-    }
-
     private void onBackButtonPressed() {
         if (mAfterConnectAction) {
             if (DEBUG) Log.d(TAG, "Back button pressed after connect action.");
@@ -421,7 +421,6 @@
         } else { // During user's Wifi configuration.
             mWifiSettings.resumeWifiScan();
 
-            mStatusText.setText(R.string.wifi_setup_status_select_network);
             restoreFirstButtonVisibilityState();
 
             mAddNetworkButton.setEnabled(true);
@@ -470,7 +469,8 @@
     }
 
     /**
-     * Called when {@link WifiSettings} received {@link WifiManager#SUPPLICANT_CHANGED_ACTION}.
+     * Called when {@link WifiSettings} received
+     * {@link WifiManager#SUPPLICANT_STATE_CHANGED_ACTION}.
      */
     /* package */ void onSupplicantStateChanged(Intent intent) {
         final int errorCode = intent.getIntExtra(WifiManager.EXTRA_SUPPLICANT_ERROR, -1);
@@ -485,11 +485,17 @@
      */
     private void onAuthenticationFailure() {
         mAfterConnectAction = false;
-        mStatusText.setText(R.string.wifi_setup_status_edit_network);
         mSkipOrNextButton.setVisibility(View.GONE);
         mConnectButton.setVisibility(View.VISIBLE);
         mConnectButton.setEnabled(true);
 
+        if (!TextUtils.isEmpty(mEditingTitle)) {
+            mTitleView.setText(mEditingTitle);
+        } else {
+            Log.w(TAG, "Title during editing/adding a network was empty.");
+            showTitleForNetworkEditing();
+        }
+
         // Restore View status which was tweaked on connection.
         final View wpsFieldView = findViewById(R.id.wps_fields);
         if (wpsFieldView != null) {
@@ -502,21 +508,36 @@
                 final View passwordView = findViewById(R.id.password);
                 if (passwordView != null) {
                     if (passwordView.isFocused()) {
-                        final InputMethodManager inputMethodManager = (InputMethodManager)
-                                getSystemService(Context.INPUT_METHOD_SERVICE);
-                        inputMethodManager.showSoftInput(passwordView, 0);
-                    } else {
-                        mWifiConfig.requestFocusAndShowKeyboard(R.id.password);
+                        setPaddingVisibility(View.GONE);
                     }
+                    mWifiConfig.requestFocusAndShowKeyboard(R.id.password);
                 }
             }
         }
         final View typeView = findViewById(R.id.type);
         if (typeView != null) {
             typeView.setVisibility(mPreviousTypeVisibility);
+            if (mPreviousTypeVisibility == View.VISIBLE && mWifiConfig != null) {
+                final View ssidView = findViewById(R.id.ssid);
+                if (ssidView != null) {
+                    if (ssidView.isFocused()) {
+                        setPaddingVisibility(View.GONE);
+                    }
+                    mWifiConfig.requestFocusAndShowKeyboard(R.id.ssid);
+                }
+            }
         }
     }
 
+    public void setPaddingVisibility(int visibility) {
+        setPaddingVisibility(visibility, visibility);
+    }
+
+    private void setPaddingVisibility(int topPaddingVisibility, int configVisibility) {
+        mTopPadding.setVisibility(topPaddingVisibility);
+        mWifiConfigPadding.setVisibility(configVisibility);
+    }
+
     /**
      * Called when WifiManager is requested to save a network. This method sholud include
      * WifiManager#saveNetwork() call.
