diff --git a/res/drawable-hdpi/hotseat_bg_center.9.png b/res/drawable-hdpi/hotseat_bg_center.9.png
index 0567b77..468e766 100644
--- a/res/drawable-hdpi/hotseat_bg_center.9.png
+++ b/res/drawable-hdpi/hotseat_bg_center.9.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_bg_left.9.png b/res/drawable-hdpi/hotseat_bg_left.9.png
index aaf42c4..433a10e 100644
--- a/res/drawable-hdpi/hotseat_bg_left.9.png
+++ b/res/drawable-hdpi/hotseat_bg_left.9.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_bg_right.9.png b/res/drawable-hdpi/hotseat_bg_right.9.png
index 2b8149b..4ea2a73 100644
--- a/res/drawable-hdpi/hotseat_bg_right.9.png
+++ b/res/drawable-hdpi/hotseat_bg_right.9.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_browser_focused.png b/res/drawable-hdpi/hotseat_browser_focused.png
index 6044238..6717ad2 100644
--- a/res/drawable-hdpi/hotseat_browser_focused.png
+++ b/res/drawable-hdpi/hotseat_browser_focused.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_browser_normal.png b/res/drawable-hdpi/hotseat_browser_normal.png
index e6eb94e..d02fdd9 100644
--- a/res/drawable-hdpi/hotseat_browser_normal.png
+++ b/res/drawable-hdpi/hotseat_browser_normal.png
Binary files differ
diff --git a/res/drawable-hdpi/hotseat_browser_pressed.png b/res/drawable-hdpi/hotseat_browser_pressed.png
index 918afb4..71df2d1 100644
--- a/res/drawable-hdpi/hotseat_browser_pressed.png
+++ b/res/drawable-hdpi/hotseat_browser_pressed.png
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_center.9.png b/res/drawable-land-hdpi/hotseat_bg_center.9.png
index f6a59fa..958b4a4 100644
--- a/res/drawable-land-hdpi/hotseat_bg_center.9.png
+++ b/res/drawable-land-hdpi/hotseat_bg_center.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_left.9.png b/res/drawable-land-hdpi/hotseat_bg_left.9.png
index 8320e73..9ea8f9d 100644
--- a/res/drawable-land-hdpi/hotseat_bg_left.9.png
+++ b/res/drawable-land-hdpi/hotseat_bg_left.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_right.9.png b/res/drawable-land-hdpi/hotseat_bg_right.9.png
index 2d74f2b..ce8f1e2 100644
--- a/res/drawable-land-hdpi/hotseat_bg_right.9.png
+++ b/res/drawable-land-hdpi/hotseat_bg_right.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/hotseat_bg_center.9.png b/res/drawable-land-mdpi/hotseat_bg_center.9.png
new file mode 100644
index 0000000..691ab01
--- /dev/null
+++ b/res/drawable-land-mdpi/hotseat_bg_center.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/hotseat_bg_left.9.png b/res/drawable-land-mdpi/hotseat_bg_left.9.png
new file mode 100644
index 0000000..bd235f3
--- /dev/null
+++ b/res/drawable-land-mdpi/hotseat_bg_left.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/hotseat_bg_right.9.png b/res/drawable-land-mdpi/hotseat_bg_right.9.png
new file mode 100644
index 0000000..6d87f0d
--- /dev/null
+++ b/res/drawable-land-mdpi/hotseat_bg_right.9.png
Binary files differ
diff --git a/res/drawable-mdpi/home_button_focused.png b/res/drawable-mdpi/home_button_focused.png
index 29fcbd0..701772b 100644
--- a/res/drawable-mdpi/home_button_focused.png
+++ b/res/drawable-mdpi/home_button_focused.png
Binary files differ
diff --git a/res/drawable-mdpi/home_button_normal.png b/res/drawable-mdpi/home_button_normal.png
index 58ff958..cc7e3b0 100644
--- a/res/drawable-mdpi/home_button_normal.png
+++ b/res/drawable-mdpi/home_button_normal.png
Binary files differ
diff --git a/res/drawable-mdpi/home_button_pressed.png b/res/drawable-mdpi/home_button_pressed.png
index 32337d6..ee8ddbe 100644
--- a/res/drawable-mdpi/home_button_pressed.png
+++ b/res/drawable-mdpi/home_button_pressed.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_center.9.png b/res/drawable-mdpi/hotseat_bg_center.9.png
index a551652..28c3402 100644
--- a/res/drawable-mdpi/hotseat_bg_center.9.png
+++ b/res/drawable-mdpi/hotseat_bg_center.9.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_left.9.png b/res/drawable-mdpi/hotseat_bg_left.9.png
old mode 100755
new mode 100644
index cd46c6c..605eb1e
--- a/res/drawable-mdpi/hotseat_bg_left.9.png
+++ b/res/drawable-mdpi/hotseat_bg_left.9.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_right.9.png b/res/drawable-mdpi/hotseat_bg_right.9.png
index dba0961..5df3f00 100644
--- a/res/drawable-mdpi/hotseat_bg_right.9.png
+++ b/res/drawable-mdpi/hotseat_bg_right.9.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_browser_focused.png b/res/drawable-mdpi/hotseat_browser_focused.png
index de8defc..5b85840 100644
--- a/res/drawable-mdpi/hotseat_browser_focused.png
+++ b/res/drawable-mdpi/hotseat_browser_focused.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_browser_normal.png b/res/drawable-mdpi/hotseat_browser_normal.png
index 35205a2..4c662fd 100644
--- a/res/drawable-mdpi/hotseat_browser_normal.png
+++ b/res/drawable-mdpi/hotseat_browser_normal.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_browser_pressed.png b/res/drawable-mdpi/hotseat_browser_pressed.png
index d0a072e..ed10c18 100644
--- a/res/drawable-mdpi/hotseat_browser_pressed.png
+++ b/res/drawable-mdpi/hotseat_browser_pressed.png
Binary files differ
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 22b4825..1f13f1f 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -77,8 +77,9 @@
 
     <com.android.launcher2.DeleteZone
         android:id="@+id/delete_zone"
-        android:layout_width="@dimen/button_bar_height_portrait"
-        android:layout_height="match_parent"
+        android:layout_width="@dimen/delete_zone_size"
+        android:layout_height="@dimen/delete_zone_size"
+        android:paddingLeft="@dimen/delete_zone_padding"
         android:layout_marginBottom="@dimen/half_status_bar_height"
         android:layout_gravity="right|center_vertical"
 
@@ -94,13 +95,13 @@
         android:layout_width="@dimen/button_bar_height_portrait"
         android:layout_gravity="right|center_vertical"
         android:layout_marginBottom="@dimen/half_status_bar_height"
-        android:padding="4dip"
         >
 
         <com.android.launcher2.HandleView
             style="@style/HotseatButton"
             android:id="@+id/all_apps_button"
-            android:layout_centerInParent="true"
+            android:layout_centerVertical="true"
+            android:layout_alignParentRight="true"
 
             android:src="@drawable/all_apps_button"
             launcher:direction="vertical"
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index 3b181d1..8dc5092 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -71,8 +71,9 @@
 
     <com.android.launcher2.DeleteZone
         android:id="@+id/delete_zone"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/button_bar_height"
+        android:layout_width="@dimen/delete_zone_size"
+        android:layout_height="@dimen/delete_zone_size"
+        android:paddingTop="@dimen/delete_zone_padding"
         android:layout_gravity="bottom|center_horizontal"
 
         android:scaleType="center"
@@ -86,13 +87,14 @@
         android:layout_width="fill_parent"
         android:layout_height="@dimen/button_bar_height"
         android:layout_gravity="bottom|center_horizontal"
-        android:padding="4dip"
+        android:paddingTop="2dip"
         >
 
         <com.android.launcher2.HandleView
             style="@style/HotseatButton"
             android:id="@+id/all_apps_button"
-            android:layout_centerInParent="true"
+            android:layout_centerHorizontal="true"
+            android:layout_alignParentBottom="true"
 
             android:src="@drawable/all_apps_button"
             launcher:direction="horizontal"
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
new file mode 100644
index 0000000..1fcabb2
--- /dev/null
+++ b/res/values/arrays.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string-array name="hotseats" translatable="false">
+        <item>intent:#Intent;action=android.intent.action.MAIN;component=com.android.contacts/.ContactsLaunchActivity;end</item>
+        <item>*BROWSER*</item>
+    </string-array>
+    <array name="hotseat_icons" translatable="false">
+        <item>@drawable/hotseat_phone</item>
+        <item>@drawable/hotseat_browser</item>
+    </array>
+</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 5e3bb98..26cb7e6 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -27,4 +27,10 @@
     <!-- roughly half a status bar (for vertically centering the right-hand
          button cluster in landscape) -->
     <dimen name="half_status_bar_height">12dip</dimen>
+
+    <!-- height & width of the drop rectangle for the trash icon -->
+    <dimen name="delete_zone_size">70dip</dimen>
+    
+    <!-- delete_zone_size_full - button_bar_height_portrait -->
+    <dimen name="delete_zone_padding">14dip</dimen>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 73c6a8a..86c1b3c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -141,4 +141,10 @@
     <!-- Text to show user in place of a gadget when we can't display it properly -->
     <string name="gadget_error_text">Problem loading widget</string>
 
+    <!-- URL to use when detecting the current default browser. 
+         Attempts to mimic homepage_base in Browser; {CID} should be replaced
+         by the client-id, e.g. "android-google". -->
+    <string name="default_browser_url" translatable="false">
+        http://www.google.com/m?client=ms-{CID}&amp;source=android-home-hotseat</string>
+
 </resources>
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 5a2a7d3..132f0e9 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -35,8 +35,10 @@
 import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
 import android.content.res.Resources;
+import android.content.res.TypedArray;
 import android.database.ContentObserver;
 import android.graphics.Bitmap;
 import android.graphics.Rect;
@@ -74,6 +76,7 @@
 import android.appwidget.AppWidgetProviderInfo;
 
 import java.util.ArrayList;
+import java.util.List;
 import java.util.HashMap;
 import java.io.DataOutputStream;
 import java.io.FileNotFoundException;
@@ -203,13 +206,10 @@
     // Hotseats (quick-launch icons next to AllApps)
     // TODO: move these intial intents out to Uris in an XML resource
     private static final int NUM_HOTSEATS = 2;
-    private Intent[] mHotseats = new Intent[] {
-        new Intent(Intent.ACTION_MAIN)
-            .setComponent(ComponentName.unflattenFromString(
-                "com.android.contacts/.ContactsLaunchActivity")),
-        new Intent(Intent.ACTION_WEB_SEARCH, Uri.EMPTY),
-    };
-    private CharSequence[] mHotseatLabels = new CharSequence[2];
+    private String[] mHotseatConfig = null;
+    private Intent[] mHotseats = null;
+    private Drawable[] mHotseatIcons = null;
+    private CharSequence[] mHotseatLabels = null;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -368,37 +368,144 @@
         wpm.suggestDesiredDimensions(width * WALLPAPER_SCREENS_SPAN, height);
     }
 
+    // Note: This doesn't do all the client-id magic that BrowserProvider does
+    // in Browser. (http://b/2425179)
+    private Uri getDefaultBrowserUri() {
+        String url = getString(R.string.default_browser_url);
+        if (url.indexOf("{CID}") != -1) {
+            url = url.replace("{CID}", "android-google");
+        }
+        return Uri.parse(url);
+    }
+
+    // Load the Intent templates from arrays.xml to populate the hotseats. For
+    // each Intent, if it resolves to a single app, use that as the launch
+    // intent & use that app's label as the contentDescription. Otherwise,
+    // retain the ResolveActivity so the user can pick an app.
     private void loadHotseats() {
+        if (mHotseatConfig == null) {
+            mHotseatConfig = getResources().getStringArray(R.array.hotseats);
+            if (mHotseatConfig.length > 0) {
+                mHotseats = new Intent[mHotseatConfig.length];
+                mHotseatLabels = new CharSequence[mHotseatConfig.length];
+                mHotseatIcons = new Drawable[mHotseatConfig.length];
+            } else {
+                mHotseats = null;
+                mHotseatIcons = null;
+                mHotseatLabels = null;
+            }
+
+            TypedArray hotseatIconDrawables = getResources().obtainTypedArray(R.array.hotseat_icons);
+            for (int i=0; i<mHotseatConfig.length; i++) {
+                // load icon for this slot; currently unrelated to the actual activity
+                try {
+                    mHotseatIcons[i] = hotseatIconDrawables.getDrawable(i);
+                } catch (ArrayIndexOutOfBoundsException ex) {
+                    Log.w(TAG, "Missing hotseat_icons array item #" + i);
+                    mHotseatIcons[i] = null;
+                }
+            }
+            hotseatIconDrawables.recycle();
+        }
+
         PackageManager pm = getPackageManager();
-        for (int i=0; i<mHotseats.length; i++) {
-            Intent intent = mHotseats[i];
+        for (int i=0; i<mHotseatConfig.length; i++) {
+            Intent intent = null;
+            if (mHotseatConfig[i].equals("*BROWSER*")) {
+                // magic value meaning "launch user's default web browser"
+                // replace it with a generic web request so we can see if there is indeed a default
+                String defaultUri = getString(R.string.default_browser_url);
+                intent = new Intent(
+                        Intent.ACTION_VIEW,
+                        ((defaultUri != null)
+                            ? Uri.parse(defaultUri)
+                            : getDefaultBrowserUri())
+                    ).addCategory(Intent.CATEGORY_BROWSABLE);
+                // note: if the user launches this without a default set, she
+                // will always be taken to the default URL above; this is
+                // unavoidable as we must specify a valid URL in order for the
+                // chooser to appear, and once the user selects something, that 
+                // URL is unavoidably sent to the chosen app.
+            } else {
+                try {
+                    intent = Intent.parseUri(mHotseatConfig[i], 0);
+                } catch (java.net.URISyntaxException ex) {
+                    Log.w(TAG, "Invalid hotseat intent: " + mHotseatConfig[i]);
+                    // bogus; leave intent=null
+                }
+            }
+            
+            if (intent == null) {
+                mHotseats[i] = null;
+                mHotseatLabels[i] = getText(R.string.activity_not_found);
+                continue;
+            }
 
             if (LOGD) {
                 Log.d(TAG, "loadHotseats: hotseat " + i 
-                    + " initial intent=[" + intent.toUri(Intent.URI_INTENT_SCHEME)
+                    + " initial intent=[" 
+                    + intent.toUri(Intent.URI_INTENT_SCHEME)
                     + "]");
             }
 
-            // fix up the default intents
-            if (intent.getAction().equals(Intent.ACTION_WEB_SEARCH)
-                    && intent.getData().equals(Uri.EMPTY)) {
-                // use this to represent "default web browser"
-                intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/"));
+            ResolveInfo bestMatch = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
+            List<ResolveInfo> allMatches = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
+            if (LOGD) { 
+                Log.d(TAG, "Best match for intent: " + bestMatch);
+                Log.d(TAG, "All matches: ");
+                for (ResolveInfo ri : allMatches) {
+                    Log.d(TAG, "  --> " + ri);
+                }
             }
-            ComponentName com = intent.resolveActivity(pm);
-            mHotseats[i] = new Intent(Intent.ACTION_MAIN).setComponent(com);
+            // did this resolve to a single app, or the resolver?
+            if (allMatches.size() == 0 || bestMatch == null) {
+                // can't find any activity to handle this. let's leave the 
+                // intent as-is and let Launcher show a toast when it fails 
+                // to launch.
+                mHotseats[i] = intent;
 
-            // load the labels for accessibility
-            try {
-                ActivityInfo ai = pm.getActivityInfo(com, 0);
-                mHotseatLabels[i] = ai.loadLabel(pm);
-            } catch (PackageManager.NameNotFoundException ex) {
-                mHotseatLabels[i] = "";
+                // set accessibility text to "Not installed"
+                mHotseatLabels[i] = getText(R.string.activity_not_found);
+            } else {
+                boolean found = false;
+                for (ResolveInfo ri : allMatches) {
+                    if (bestMatch.activityInfo.name.equals(ri.activityInfo.name)
+                        && bestMatch.activityInfo.applicationInfo.packageName
+                            .equals(ri.activityInfo.applicationInfo.packageName)) {
+                        found = true;
+                        break;
+                    }
+                }
+                
+                if (!found) {
+                    if (LOGD) Log.d(TAG, "Multiple options, no default yet");
+                    // the bestMatch is probably the ResolveActivity, meaning the
+                    // user has not yet selected a default
+                    // so: we'll keep the original intent for now
+                    mHotseats[i] = intent;
+
+                    // set the accessibility text to "Select shortcut"
+                    mHotseatLabels[i] = getText(R.string.title_select_shortcut);
+                } else {
+                    // we have an app!
+                    // now reconstruct the intent to launch it through the front
+                    // door
+                    ComponentName com = new ComponentName(
+                        bestMatch.activityInfo.applicationInfo.packageName,
+                        bestMatch.activityInfo.name);
+                    mHotseats[i] = new Intent(Intent.ACTION_MAIN).setComponent(com);
+
+                    // load the app label for accessibility
+                    mHotseatLabels[i] = bestMatch.activityInfo.loadLabel(pm);
+                }
             }
 
             if (LOGD) {
                 Log.d(TAG, "loadHotseats: hotseat " + i 
-                    + " intent=[" + mHotseats[i].toUri(Intent.URI_INTENT_SCHEME)
+                    + " final intent=[" 
+                    + ((mHotseats[i] == null)
+                        ? "null"
+                        : mHotseats[i].toUri(Intent.URI_INTENT_SCHEME))
                     + "] label=[" + mHotseatLabels[i]
                     + "]"
                     );
@@ -622,8 +729,12 @@
         mHandleView.setOnClickListener(this);
         mHandleView.setOnLongClickListener(this);
 
-        findViewById(R.id.hotseat_left).setContentDescription(mHotseatLabels[0]);
-        findViewById(R.id.hotseat_right).setContentDescription(mHotseatLabels[1]);
+        ImageView hotseatLeft = (ImageView) findViewById(R.id.hotseat_left);
+        hotseatLeft.setContentDescription(mHotseatLabels[0]);
+        hotseatLeft.setImageDrawable(mHotseatIcons[0]);
+        ImageView hotseatRight = (ImageView) findViewById(R.id.hotseat_right);
+        hotseatRight.setContentDescription(mHotseatLabels[1]);
+        hotseatRight.setImageDrawable(mHotseatIcons[1]);
 
         mPreviousView = (ImageView) dragLayer.findViewById(R.id.previous_screen);
         mNextView = (ImageView) dragLayer.findViewById(R.id.next_screen);
@@ -678,7 +789,10 @@
             index = 1;
         }
 
-        if (index >= 0 && mHotseats[index] != null) {
+        // reload these every tap; you never know when they might change
+        loadHotseats();
+        if (index >= 0 && index < mHotseats.length && mHotseats[index] != null) {
+            Intent intent = mHotseats[index];
             startActivitySafely(
                 mHotseats[index],
                 "hotseat"
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index a521d67..d5b5859 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -1096,13 +1096,13 @@
                         }
 
                         final boolean first = i <= batchSize;
+                        final Callbacks callbacks = tryGetCallbacks(oldCallbacks);
                         final ArrayList<ApplicationInfo> added = mAllAppsList.added;
                         mAllAppsList.added = new ArrayList<ApplicationInfo>();
 
                         mHandler.post(new Runnable() {
                             public void run() {
                                 final long t = SystemClock.uptimeMillis();
-                                final Callbacks callbacks = tryGetCallbacks(oldCallbacks);
                                 if (callbacks != null) {
                                     if (first) {
                                         mBeforeFirstLoad = false;
