diff --git a/res/drawable/bookmark_shadow.9.png b/res/drawable/bookmark_shadow.9.png
new file mode 100644
index 0000000..3c706be
--- /dev/null
+++ b/res/drawable/bookmark_shadow.9.png
Binary files differ
diff --git a/res/drawable/minitab_focus.9.png b/res/drawable/minitab_focus.9.png
new file mode 100644
index 0000000..7c290e3
--- /dev/null
+++ b/res/drawable/minitab_focus.9.png
Binary files differ
diff --git a/res/drawable/minitab_press.9.png b/res/drawable/minitab_press.9.png
new file mode 100644
index 0000000..c7369e7
--- /dev/null
+++ b/res/drawable/minitab_press.9.png
Binary files differ
diff --git a/res/drawable/minitab_selected.9.png b/res/drawable/minitab_selected.9.png
new file mode 100644
index 0000000..849e124
--- /dev/null
+++ b/res/drawable/minitab_selected.9.png
Binary files differ
diff --git a/res/drawable/minitab_unselected.9.png b/res/drawable/minitab_unselected.9.png
new file mode 100644
index 0000000..e12b36d
--- /dev/null
+++ b/res/drawable/minitab_unselected.9.png
Binary files differ
diff --git a/res/drawable/tab_indicator.xml b/res/drawable/tab_indicator.xml
new file mode 100644
index 0000000..839532b
--- /dev/null
+++ b/res/drawable/tab_indicator.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_selected="true"
+        android:state_focused="false"
+        android:state_pressed="false"
+        android:drawable="@drawable/minitab_selected"
+        />
+    <item
+        android:state_selected="false"
+        android:state_focused="false"
+        android:state_pressed="false"
+        android:drawable="@drawable/minitab_unselected"
+        />
+    <item
+        android:state_focused="true"
+        android:state_selected="true"
+        android:state_pressed="false"
+        android:drawable="@drawable/minitab_focus"
+        />
+    <item
+        android:state_pressed="true"
+        android:state_selected="true"
+        android:state_focused="true"
+        android:drawable="@drawable/minitab_press"
+        />
+</selector>
diff --git a/res/layout/bookmark_thumbnail.xml b/res/layout/bookmark_thumbnail.xml
index c1e0cd2..b3d39a4 100644
--- a/res/layout/bookmark_thumbnail.xml
+++ b/res/layout/bookmark_thumbnail.xml
@@ -20,21 +20,36 @@
     android:padding="4dip"
     >
 
+    <!-- Keep the width in sync with BrowserBookmarksPage and
+            BrowserActivity.updateScreenshot -->
+    <TextView android:id="@+id/label"
+        android:layout_width="100dip"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textStyle="bold"
+        android:textColor="@color/white"
+        android:maxLines="1"
+        android:paddingTop="3dip"
+        android:paddingBottom="3dip"
+        android:paddingLeft="2dip"
+        android:paddingRight="2dip"
+        android:scrollHorizontally="true"
+        android:ellipsize="marquee"
+        />
+
     <ImageView android:id="@+id/thumb"
         android:src="@drawable/blank"
         android:scaleType="center"
         android:layout_width="100dip"
         android:layout_height="80dip"
+        android:background="@drawable/bookmark_shadow"
+        android:layout_below="@+id/label"
         />
 
-    <ImageView android:id="@+id/fav"
-        android:scaleType="fitCenter"
-        android:layout_width="20dip"
-        android:layout_height="20dip"
-        android:padding="2dip"
-        android:layout_alignBottom="@+id/thumb"
-        android:background="@drawable/fav_icn_background"
-        />
+    <!-- FIXME: Want to have a gradient over the thumb -->
+
+    <!-- This holds the star for addbookmark -->
     <LinearLayout android:id="@+id/holder"
         android:layout_height="wrap_content"
         android:layout_width="fill_parent"
@@ -59,22 +74,4 @@
             android:text="@string/add_bookmark_short"
             />
     </LinearLayout>
-    <!-- Keep the width in sync with BrowserBookmarksPage and
-            BrowserActivity.updateScreenshot -->
-    <TextView android:id="@+id/label"
-        android:layout_width="100dip"
-        android:layout_height="wrap_content"
-        android:layout_below="@+id/thumb"
-        android:layout_gravity="bottom"
-        android:textAppearance="?android:attr/textAppearanceSmall"
-        android:textStyle="bold"
-        android:textColor="@color/white"
-        android:maxLines="1"
-        android:paddingTop="3dip"
-        android:paddingBottom="3dip"
-        android:paddingLeft="2dip"
-        android:paddingRight="2dip"
-        android:scrollHorizontally="true"
-        android:ellipsize="marquee"
-        />
 </RelativeLayout>
diff --git a/res/layout/tab_header.xml b/res/layout/tab_header.xml
new file mode 100644
index 0000000..7187034
--- /dev/null
+++ b/res/layout/tab_header.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 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.
+-->
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/tab_indicator"
+    >
+    <TextView
+        android:id="@+id/tab_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="?android:attr/textColorPrimary"
+        android:layout_gravity="center"
+        />
+</FrameLayout>
diff --git a/res/layout/tabs.xml b/res/layout/tabs.xml
index 7cf5b5d..4fa102b 100644
--- a/res/layout/tabs.xml
+++ b/res/layout/tabs.xml
@@ -26,7 +26,7 @@
 
         <TabWidget android:id="@android:id/tabs"
             android:layout_width="fill_parent"
-            android:layout_height="68dip"
+            android:layout_height="wrap_content"
             android:paddingLeft="1dip"
             android:paddingRight="1dip"
             android:paddingTop="4dip"
diff --git a/res/menu/bookmarks.xml b/res/menu/bookmarks.xml
index 8a6e32e..f768c98 100644
--- a/res/menu/bookmarks.xml
+++ b/res/menu/bookmarks.xml
@@ -19,5 +19,5 @@
         android:icon="@android:drawable/ic_menu_add"
         android:title="@string/bookmark_page" />
     <item android:id="@+id/switch_mode_menu_id"
-        android:title="@string/switch_mode"/>
+        />
 </menu>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c600666..47f1a60 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -169,9 +169,12 @@
             currently on, but is not visible because the bookmarks page is 
             showing. -->
     <string name="bookmark_page">Bookmark last-viewed page</string>
-    <!-- Menu item in the page that displays all bookmarks.  Switches between
-            a vertical list view and a grid view which shows thumbnails -->
-    <string name="switch_mode">Switch viewing mode</string>
+    <!-- Menu item in the page that displays all bookmarks.  Switches to
+            a grid view which shows thumbnails -->
+    <string name="switch_to_thumbnails">Thumbnail view</string>
+    <!-- Menu item in the page that displays all bookmarks.  Switches to a
+            list view which shows titles -->
+    <string name="switch_to_list">List view</string>
     <!-- Summary text under the New Bookmark item on the Bookmarks screen.
             Tells the user that if they select this item, it will bring up a
             dialog to bookmark the page that the browser is currently viewing,
diff --git a/src/com/android/browser/BrowserBookmarksAdapter.java b/src/com/android/browser/BrowserBookmarksAdapter.java
index 75be45b..764daea 100644
--- a/src/com/android/browser/BrowserBookmarksAdapter.java
+++ b/src/com/android/browser/BrowserBookmarksAdapter.java
@@ -368,13 +368,11 @@
             }
             View holder = convertView.findViewById(R.id.holder);
             ImageView thumb = (ImageView) convertView.findViewById(R.id.thumb);
-            ImageView fav = (ImageView) convertView.findViewById(R.id.fav);
             TextView tv = (TextView) convertView.findViewById(R.id.label);
 
             if (0 == position && !mCreateShortcut) {
                 // This is to create a bookmark for the current page.
                 holder.setVisibility(View.VISIBLE);
-                fav.setVisibility(View.GONE);
                 tv.setText(mCurrentTitle);
                 // FIXME: Want to show the screenshot of the current page
                 thumb.setImageResource(R.drawable.blank);
@@ -393,15 +391,6 @@
                 thumb.setImageBitmap(
                         BitmapFactory.decodeByteArray(data, 0, data.length));
             }
-            // Now show the favicon
-            data = mCursor.getBlob(Browser.HISTORY_PROJECTION_FAVICON_INDEX);
-            if (data == null) {
-                fav.setVisibility(View.GONE);
-            } else {
-                fav.setVisibility(View.VISIBLE);
-                fav.setImageBitmap(
-                        BitmapFactory.decodeByteArray(data, 0, data.length));
-            }
 
             return convertView;
 
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 428aa92..5abdbb3 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -344,6 +344,14 @@
     }
 
     @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        menu.findItem(R.id.switch_mode_menu_id).setTitle(
+                mGridMode ? R.string.switch_to_list
+                : R.string.switch_to_thumbnails);
+        return true;
+    }
+
+    @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
         case R.id.new_context_menu_id:
diff --git a/src/com/android/browser/CombinedBookmarkHistoryActivity.java b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
index 963f179..26fd1ee 100644
--- a/src/com/android/browser/CombinedBookmarkHistoryActivity.java
+++ b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
@@ -27,6 +27,9 @@
 import android.webkit.WebIconDatabase.IconListener;
 import android.widget.TabHost;
 import android.widget.TabHost.TabSpec;
+import android.widget.TextView;
+import android.view.LayoutInflater;
+import android.view.View;
 import android.view.Window;
 
 import java.util.HashMap;
@@ -77,40 +80,39 @@
         super.onCreate(savedInstanceState);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         setContentView(R.layout.tabs);
-        TabHost tabHost = getTabHost();
-        tabHost.setOnTabChangedListener(this);
+        getTabHost().setOnTabChangedListener(this);
 
         Bundle extras = getIntent().getExtras();
         Resources resources = getResources();
 
         getIconListenerSet(getContentResolver());
+
         Intent bookmarksIntent = new Intent(this, BrowserBookmarksPage.class);
         bookmarksIntent.putExtras(extras);
-        tabHost.addTab(tabHost.newTabSpec(BOOKMARKS_TAB)
-                .setIndicator(resources.getString(R.string.tab_bookmarks),
-                resources.getDrawable(R.drawable.browser_bookmark_tab))
-                .setContent(bookmarksIntent));
+        createTab(bookmarksIntent, R.string.tab_bookmarks, BOOKMARKS_TAB);
 
         Intent visitedIntent = new Intent(this, MostVisitedActivity.class);
         visitedIntent.putExtras(extras);
-        tabHost.addTab(tabHost.newTabSpec(VISITED_TAB)
-                .setIndicator(resources.getString(R.string.tab_most_visited),
-                resources.getDrawable(R.drawable.browser_visited_tab))
-                .setContent(visitedIntent));
+        createTab(visitedIntent, R.string.tab_most_visited, VISITED_TAB);
 
         Intent historyIntent = new Intent(this, BrowserHistoryPage.class);
         historyIntent.putExtras(extras);
-        tabHost.addTab(tabHost.newTabSpec(HISTORY_TAB)
-                .setIndicator(resources.getString(R.string.tab_history),
-                resources.getDrawable(R.drawable.
-                browser_history_tab)).setContent(historyIntent));
+        createTab(historyIntent, R.string.tab_history, HISTORY_TAB);
 
         String defaultTab = extras.getString(STARTING_TAB);
         if (defaultTab != null) {
-            tabHost.setCurrentTab(2);
+            getTabHost().setCurrentTab(2);
         }
     }
 
+    private void createTab(Intent intent, int labelResId, String tab) {
+        LayoutInflater factory = LayoutInflater.from(this);
+        View tabHeader = factory.inflate(R.layout.tab_header, null);
+        TextView textView = (TextView) tabHeader.findViewById(R.id.tab_label);
+        textView.setText(labelResId);
+        TabHost tabHost = getTabHost();
+        tabHost.addTab(tabHost.newTabSpec(tab).setIndicator(tabHeader).setContent(intent));
+    }
     // Copied from DialTacts Activity
     /** {@inheritDoc} */
     public void onTabChanged(String tabId) {
