diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 4a83f8a..cbc6ba0 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1966,7 +1966,6 @@
     }
 
     private void resetMenuItems(Menu menu) {
-        setMenuItemVisibility(menu, R.id.history_menu_id, true);
         setMenuItemVisibility(menu, R.id.find_menu_id, true);
 
         WebView w = getCurrentTopWebView();
@@ -2092,10 +2091,6 @@
                 bookmarksOrHistoryPicker(ComboViews.Bookmarks);
                 break;
 
-            case R.id.history_menu_id:
-                bookmarksOrHistoryPicker(ComboViews.History);
-                break;
-
             case R.id.snapshots_menu_id:
                 bookmarksOrHistoryPicker(ComboViews.Snapshots);
                 break;
diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java
index 80201da..d77d31c 100644
--- a/src/com/android/browser/NavScreen.java
+++ b/src/com/android/browser/NavScreen.java
@@ -238,10 +238,7 @@
             tabview.setOnClickListener(new OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    if (tabview.isClose(v)) {
-                        mScroller.animateOut(tabview);
-                        mTabViews.remove(tab);
-                    } else if (tabview.isTitle(v)) {
+                    if (tabview.isTitle(v)) {
                         switchToTab(tab);
                         close(position, false);
                         mUi.editUrl(false, true);
diff --git a/src/com/android/browser/NavTabView.java b/src/com/android/browser/NavTabView.java
index c79dafc..8be8c3d 100644
--- a/src/com/android/browser/NavTabView.java
+++ b/src/com/android/browser/NavTabView.java
@@ -34,7 +34,6 @@
 
     private ViewGroup mContent;
     private Tab mTab;
-    private ImageView mClose;
     private TextView mTitle;
     private View mTitleBar;
     ImageView mImage;
@@ -59,16 +58,11 @@
     private void init() {
         LayoutInflater.from(getContext()).inflate(R.layout.nav_tab_view, this);
         mContent = (ViewGroup) findViewById(R.id.nav_tab);
-        mClose = (ImageView) findViewById(R.id.closetab);
         mTitle = (TextView) findViewById(R.id.title);
         mTitleBar = findViewById(R.id.titlebar);
         mImage = (ImageView) findViewById(R.id.tab_preview);
     }
 
-    protected boolean isClose(View v) {
-        return v == mClose;
-    }
-
     protected boolean isTitle(View v) {
         return v == mTitleBar;
     }
@@ -95,7 +89,6 @@
         } else if (mTab.isPrivateBrowsingEnabled()) {
             mContent.setBackgroundResource(R.drawable.nav_tab_title_incognito);
             mTitle.setTextColor(getResources().getColor(R.color.white));
-            mClose.setImageResource(R.drawable.ic_action_close_inverted);
             setTitleIcon(R.drawable.ic_deco_incognito_normal);
         } else {
             setTitleIcon(0);
@@ -131,7 +124,6 @@
     public void setOnClickListener(OnClickListener listener) {
         mClickListener = listener;
         mTitleBar.setOnClickListener(mClickListener);
-        mClose.setOnClickListener(mClickListener);
         if (mImage != null) {
             mImage.setOnClickListener(mClickListener);
         }
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index 799891c..5591558 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -76,7 +76,6 @@
     protected ImageView mStopButton;
 
     private SiteTileView mFaviconTile;
-    private ImageView mMagnify;
     private View mVoiceButton;
     private ImageView mClearButton;
     private View mMore;
@@ -122,8 +121,6 @@
         mUrlInput.addTextChangedListener(this);
         mMore = findViewById(R.id.more_browser_settings);
         mMore.setOnClickListener(this);
-        mMagnify = (ImageView) findViewById(R.id.magnify);
-        mMagnify.setOnClickListener(this);
         mFaviconTile = (SiteTileView) findViewById(R.id.favicon_view);
         mFaviconTile.setOnClickListener(this);
         mVoiceButton = findViewById(R.id.voice);
@@ -359,8 +356,6 @@
             if (urlHasSitePrefs(url) && (wv != null && !wv.isShowingInterstitialPage()) ){
                 showSiteSpecificSettings();
             }
-        } else if (mMagnify == v) {
-            startEditingUrl(true, true);
         } else if (mVoiceButton == v) {
             mUiController.startVoiceRecognizer();
         } else if (mStopButton == v) {
@@ -760,14 +755,12 @@
         switch(state) {
             case STATE_NORMAL:
                 mFaviconTile.setVisibility(View.VISIBLE);
-                mMagnify.setVisibility(View.GONE);
                 mMore.setVisibility(View.VISIBLE);
                 if (mUiController != null) {
                     Tab currentTab = mUiController.getCurrentTab();
                     if (currentTab != null){
                         if (TextUtils.isEmpty(currentTab.getUrl())) {
                             mFaviconTile.setVisibility(View.GONE);
-                            mMagnify.setVisibility(View.VISIBLE);
                         }
                         setDisplayTitle(currentTab.getTitle(), currentTab.getUrl());
                     }
@@ -777,7 +770,6 @@
                 break;
             case STATE_HIGHLIGHTED:
                 mFaviconTile.setVisibility(View.GONE);
-                mMagnify.setVisibility(View.VISIBLE);
                 mClearButton.setVisibility(View.VISIBLE);
                 mMore.setVisibility(View.GONE);
                 if (mUiController != null) {
@@ -801,7 +793,6 @@
                     mClearButton.setVisibility(View.VISIBLE);
                 }
                 mFaviconTile.setVisibility(View.GONE);
-                mMagnify.setVisibility(View.VISIBLE);
                 mMore.setVisibility(View.GONE);
                 break;
         }
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index ab4174f..dd18c19 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -182,7 +182,6 @@
         }
 
         if (showingNavScreen()) {
-            setMenuItemVisibility(menu, R.id.history_menu_id, false);
             setMenuItemVisibility(menu, R.id.find_menu_id, false);
             menu.setGroupVisible(R.id.LIVE_MENU, false);
             setMenuItemVisibility(menu, R.id.save_snapshot_menu_id, false);
@@ -201,7 +200,6 @@
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (showingNavScreen()
-                && (item.getItemId() != R.id.history_menu_id)
                 && (item.getItemId() != R.id.snapshots_menu_id)) {
             hideNavScreen(mUiController.getTabControl().getCurrentPosition(), false);
         }
diff --git a/src/com/android/browser/preferences/SWEPreferenceFragment.java b/src/com/android/browser/preferences/SWEPreferenceFragment.java
index 77c39c7..7bfd0d1 100644
--- a/src/com/android/browser/preferences/SWEPreferenceFragment.java
+++ b/src/com/android/browser/preferences/SWEPreferenceFragment.java
@@ -83,10 +83,10 @@
     public void onResume() {
         super.onResume();
 
-        ActionBar bar = getActivity().getActionBar();
+        /*ActionBar bar = getActivity().getActionBar();
         if (bar != null) {
             bar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.accent)));
-        }
+        }*/
     }
 
     private final void findAndResizeSwitchPreferenceWidget(View parent) {
diff --git a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
index 23311b4..b5d748d 100644
--- a/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
+++ b/src/com/android/browser/preferences/SiteSpecificPreferencesFragment.java
@@ -606,15 +606,6 @@
                                 ActionBar.DISPLAY_SHOW_TITLE);
                         mBar.setHomeButtonEnabled(true);
                         mBar.setIcon(new BitmapDrawable(getResources(), bitmap));
-                        mBar.setBackgroundDrawable(new ColorDrawable(color));
-                        NavigationBarBase.setStatusAndNavigationBarColor(getActivity(),
-                                NavigationBarBase.adjustColor(color, 1, 1, 0.7f));
-                    }
-                } else {
-                    if (mIconColor != 0) {
-                        mBar.setBackgroundDrawable(new ColorDrawable(mIconColor));
-                        NavigationBarBase.setStatusAndNavigationBarColor(getActivity(),
-                                NavigationBarBase.adjustColor(mIconColor, 1, 1, 0.7f));
                     }
                 }
             }
@@ -626,8 +617,6 @@
         super.onPause();
         if (mBar != null) {
             mBar.setDisplayOptions(mOriginalActionBarOptions);
-            NavigationBarBase.setStatusAndNavigationBarColor(getActivity(),
-                    NavigationBarBase.getDefaultStatusBarColor());
         }
 
         // flush all the settings in pause to assure that writes happen
diff --git a/src/com/android/browser/preferences/WebsiteSettingsFragment.java b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
index bb4a8d3..c9dd04d 100644
--- a/src/com/android/browser/preferences/WebsiteSettingsFragment.java
+++ b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
@@ -323,7 +323,6 @@
             bar.setTitle(R.string.pref_extras_website_settings);
             bar.setDisplayHomeAsUpEnabled(false);
             bar.setHomeButtonEnabled(false);
-            bar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.accent)));
         }
     }
 
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index 7875844..53f567f 100644
--- a/src/com/android/browser/provider/BrowserProvider2.java
+++ b/src/com/android/browser/provider/BrowserProvider2.java
@@ -130,7 +130,7 @@
             qualifyColumn(TABLE_HISTORY, History.URL),
             bookmarkOrHistoryColumn(Combined.TITLE),
             bookmarkOrHistoryLiteral(Combined.URL,
-                    Integer.toString(R.drawable.ic_action_bookmark_normal),
+                    Integer.toString(R.drawable.ic_action_bookmark),
                     Integer.toString(R.drawable.ic_suggest_history_normal)),
             qualifyColumn(TABLE_HISTORY, History.DATE_LAST_VISITED)};
 
