diff --git a/res/drawable/search.9.png b/res/drawable/search.9.png
new file mode 100644
index 0000000..037e8f0
--- /dev/null
+++ b/res/drawable/search.9.png
Binary files differ
diff --git a/res/layout/tabs.xml b/res/layout/tabs.xml
index 4fa102b..908dd43 100644
--- a/res/layout/tabs.xml
+++ b/res/layout/tabs.xml
@@ -13,29 +13,40 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-
-<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@android:id/tabhost"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
     android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-
-    <LinearLayout
-        android:orientation="vertical"
+    android:layout_height="fill_parent"
+    >
+    <TextView android:id="@+id/search"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/search"
+        android:singleLine="true"
+        />
+    <TabHost
+        android:id="@android:id/tabhost"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent">
 
-        <TabWidget android:id="@android:id/tabs"
+        <LinearLayout
+            android:orientation="vertical"
             android:layout_width="fill_parent"
-            android:layout_height="wrap_content"
-            android:paddingLeft="1dip"
-            android:paddingRight="1dip"
-            android:paddingTop="4dip"
-        />
+            android:layout_height="fill_parent">
 
-        <FrameLayout android:id="@android:id/tabcontent"
-            android:layout_width="fill_parent"
-            android:layout_height="0dip"
-            android:layout_weight="1"
-        />
-    </LinearLayout>
-</TabHost>
\ No newline at end of file
+            <TabWidget android:id="@android:id/tabs"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:paddingLeft="1dip"
+                android:paddingRight="1dip"
+                android:paddingTop="4dip"
+            />
+
+            <FrameLayout android:id="@android:id/tabcontent"
+                android:layout_width="fill_parent"
+                android:layout_height="0dip"
+                android:layout_weight="1"
+            />
+        </LinearLayout>
+    </TabHost>
+</LinearLayout>
diff --git a/res/menu/browser.xml b/res/menu/browser.xml
index 088fb6e..32217eb 100644
--- a/res/menu/browser.xml
+++ b/res/menu/browser.xml
@@ -20,17 +20,17 @@
             android:title="@string/goto_dot" 
             android:alphabeticShortcut="l" 
             android:icon="@android:drawable/ic_menu_search"/>
-        <item android:id="@+id/bookmarks_menu_id"
-            android:title="@string/bookmarks" 
-            android:alphabeticShortcut="b" 
-            android:icon="@drawable/ic_menu_bookmark" />
+        <item android:id="@+id/stop_reload_menu_id"
+            android:alphabeticShortcut="r" />
         <item android:id="@+id/windows_menu_id"
             android:title="@string/view_tabs" 
             android:alphabeticShortcut="t" 
             android:titleCondensed="@string/view_tabs_condensed"
             android:icon="@drawable/ic_menu_windows" />
-        <item android:id="@+id/stop_reload_menu_id"
-            android:alphabeticShortcut="r" />
+        <item android:id="@+id/back_menu_id"
+            android:title="@string/back"
+            android:drawable="@*android:drawable/ic_menu_back"
+            android:alphabeticShortcut="j" />
         <item android:id="@+id/forward_menu_id"
             android:title="@string/forward" 
             android:alphabeticShortcut="k"
@@ -57,8 +57,6 @@
             android:visible="false" />
     </group>
     <group android:id="@+id/MAIN_SHORTCUT_MENU" android:visible="false">
-        <item android:id="@+id/back_menu_id"
-            android:alphabeticShortcut="j" />
         <item android:id="@+id/close_menu_id"
             android:alphabeticShortcut="w" />
         <item android:id="@+id/homepage_menu_id"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index fb4295c..eeb9f11 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -122,6 +122,8 @@
     <string name="stop">Stop</string>
     <!-- Menu item to reload or refresh the current page. -->
     <string name="reload">Refresh</string>
+    <!-- Menu item to go back to the previous page -->
+    <string name="back">Back</string>
     <!-- Menu item to go to the next page (only useful if the user has previously hit back.) -->
     <string name="forward">Forward</string>
     <!-- Button label to confirm saving a bookmark. -->
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 68ccf79..0bac3ea 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -833,7 +833,7 @@
 
             if (urlData.isEmpty()) {
                 if (mSettings.isLoginInitialized()) {
-                    webView.loadUrl(mSettings.getHomePage());
+                    bookmarksOrHistoryPicker(false);
                 } else {
                     waitForCredentials();
                 }
@@ -1590,20 +1590,13 @@
         }
         switch (item.getItemId()) {
             // -- Main menu
-            case R.id.goto_menu_id: {
-                String url = getTopWindow().getUrl();
-                startSearch(mSettings.getHomePage().equals(url) ? null : url, true,
-                        createGoogleSearchSourceBundle(GOOGLE_SEARCH_SOURCE_GOTO), false);
-                }
-                break;
-
-            case R.id.bookmarks_menu_id:
+            case R.id.goto_menu_id:
                 bookmarksOrHistoryPicker(false);
                 break;
 
             case R.id.windows_menu_id:
                 if (mTabControl.getTabCount() == 1) {
-                    openTabAndShow(mSettings.getHomePage(), null, false, null);
+                    openTabAndShow(EMPTY_URL_DATA, null, false, null);
                 } else {
                     tabPicker(true, mTabControl.getCurrentIndex(), false);
                 }
@@ -2078,8 +2071,10 @@
         // Load the url after the AnimatingView has captured the picture. This
         // prevents any bad layout or bad scale from being used during
         // animation.
-        if (!urlData.isEmpty()) {
-            dismissSubWindow(tab);
+        dismissSubWindow(tab);
+        if (urlData.isEmpty()) {
+            bookmarksOrHistoryPicker(false);
+        } else {
             urlData.loadIn(tab.getWebView());
         }
         map.put("msg", msg);
@@ -2143,7 +2138,9 @@
             // If the tab overview is up and there are animations, just load
             // the url.
             if (mTabOverview != null && mAnimationCount > 0) {
-                if (!urlData.isEmpty()) {
+                if (urlData.isEmpty()) {
+                    bookmarksOrHistoryPicker(false);
+                } else {
                     // We should not have a msg here since onCreateWindow
                     // checks the animation count and every other caller passes
                     // null.
@@ -2168,7 +2165,7 @@
                 sendAnimateFromOverview(tab, true, urlData, delay, msg);
                 return tab;
             }
-        } else if (!urlData.isEmpty()) {
+        } else {
             // We should not have a msg here.
             assert msg == null;
             if (mTabOverview != null && mAnimationCount == 0) {
@@ -2177,8 +2174,12 @@
             } else {
                 // Get rid of the subwindow if it exists
                 dismissSubWindow(currentTab);
-                // Load the given url.
-                urlData.loadIn(currentTab.getWebView());
+                if (!urlData.isEmpty()) {
+                    // Load the given url.
+                    urlData.loadIn(currentTab.getWebView());
+                } else {
+                    bookmarksOrHistoryPicker(false);
+                }
             }
         }
         return currentTab;
@@ -2665,7 +2666,7 @@
             // Send a message to open a new tab.
             mHandler.sendMessageDelayed(
                     mHandler.obtainMessage(OPEN_TAB_AND_SHOW,
-                        mSettings.getHomePage()), delay);
+                        null), delay);
         }
     }
 
@@ -4613,6 +4614,8 @@
                             sendAnimateFromOverview(newTab, false,
                                     EMPTY_URL_DATA, TAB_OVERVIEW_DELAY, null);
                         }
+                    } else if (intent.getBooleanExtra("open_search", false)) {
+                        onSearchRequested();
                     } else {
                         final TabControl.Tab currentTab =
                                 mTabControl.getCurrentTab();
@@ -4671,8 +4674,8 @@
                 // was clicked on.
                 if (mTabControl.getTabCount() == 0) {
                     current = mTabControl.createNewTab();
-                    sendAnimateFromOverview(current, true, new UrlData(
-                            mSettings.getHomePage()), TAB_OVERVIEW_DELAY, null);
+                    sendAnimateFromOverview(current, true, EMPTY_URL_DATA,
+                            TAB_OVERVIEW_DELAY, null);
                 } else {
                     final int index = position > 0 ? (position - 1) : 0;
                     current = mTabControl.getTab(index);
@@ -4706,7 +4709,7 @@
 
             // NEW_TAB means that the "New Tab" cell was clicked on.
             if (index == ImageGrid.NEW_TAB) {
-                openTabAndShow(mSettings.getHomePage(), null, false, null);
+                openTabAndShow(EMPTY_URL_DATA, null, false, null);
             } else {
                 sendAnimateFromOverview(mTabControl.getTab(index), false,
                         EMPTY_URL_DATA, 0, null);
diff --git a/src/com/android/browser/CombinedBookmarkHistoryActivity.java b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
index 7162c88..e5af46c 100644
--- a/src/com/android/browser/CombinedBookmarkHistoryActivity.java
+++ b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
@@ -80,6 +80,18 @@
         super.onCreate(savedInstanceState);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.tabs);
+
+        TextView searchBar = (TextView) findViewById(R.id.search);
+        searchBar.setText(getIntent().getStringExtra("url"));
+        searchBar.setOnClickListener(new View.OnClickListener() {
+            public void onClick(View v) {
+                Intent openSearchIntent = new Intent();
+                openSearchIntent.putExtra("open_search", true);
+                setResult(RESULT_OK, openSearchIntent);
+                finish();
+            }
+        });
+
         getTabHost().setOnTabChangedListener(this);
 
         Bundle extras = getIntent().getExtras();
