diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 2c99b6e..b2dd0f1 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -287,7 +287,7 @@
     @Override
     public void onClick(View v) {
         if (v == mButton) {
-            if (mFolderSelector.getVisibility() == View.VISIBLE) {
+            /*if (mFolderSelector.getVisibility() == View.VISIBLE) {
                 // We are showing the folder selector.
                 if (mIsFolderNamerShowing) {
                     completeOrCancelFolderNaming(false);
@@ -298,23 +298,23 @@
                 }
             } else {
                 // add for carrier which requires same title or address can not
-                // exist.
+                // exist.*/
                 if (mSaveToHomeScreen) {
                     if (save()) {
                         return;
                     }
                 } else {
                     onSaveWithConfirm();
-                }
+                //}
             }
         } else if (v == mCancelButton) {
-            if (mIsFolderNamerShowing) {
+            /*if (mIsFolderNamerShowing) {
                 completeOrCancelFolderNaming(true);
             } else if (mFolderSelector.getVisibility() == View.VISIBLE) {
                 switchToDefaultView(false);
-            } else {
+            } else {*/
                 finish();
-            }
+            //}
         } else if (v == mRemoveLink) {
             onDeleteWithConfirm();
         } else if (v == mFolderCancel) {
@@ -381,7 +381,7 @@
             descendInto(name, id);
         }
         setShowFolderNamer(false);
-        mAddNewFolder.setVisibility(View.VISIBLE);
+        mAddNewFolder.setVisibility(View.GONE);
         mAddSeparator.setVisibility(View.VISIBLE);
         getInputMethodManager().hideSoftInputFromWindow(
                 mFolderNamer.getWindowToken(), 0);
@@ -414,9 +414,9 @@
         // Set the list to the top in case it is scrolled.
         mListView.setSelection(0);
         mDefaultView.setVisibility(View.GONE);
-        mFolderSelector.setVisibility(View.VISIBLE);
+        mFolderSelector.setVisibility(View.GONE);
         mCrumbHolder.setVisibility(View.VISIBLE);
-        mAddNewFolder.setVisibility(View.VISIBLE);
+        mAddNewFolder.setVisibility(View.GONE);
         mAddSeparator.setVisibility(View.VISIBLE);
         getInputMethodManager().hideSoftInputFromWindow(
                 mListView.getWindowToken(), 0);
