diff --git a/res/layout/bookmarks.xml b/res/layout/bookmarks.xml
index 7eee4e9..1b1df80 100644
--- a/res/layout/bookmarks.xml
+++ b/res/layout/bookmarks.xml
@@ -4,9 +4,9 @@
      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.
@@ -77,6 +77,7 @@
             android:id="@+id/new_bmfolder_button"
             android:text="@string/new_folder"
             android:layout_width="0dip"
+            android:visibility="gone"
             android:layout_height="wrap_content"
              android:textSize="14sp"
             android:layout_weight="1"
@@ -84,4 +85,4 @@
             />
     </LinearLayout>
 
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/layout/browser_add_bookmark_content.xml b/res/layout/browser_add_bookmark_content.xml
index 2f774cf..cb51cca 100644
--- a/res/layout/browser_add_bookmark_content.xml
+++ b/res/layout/browser_add_bookmark_content.xml
@@ -192,6 +192,7 @@
                     <LinearLayout android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:orientation="horizontal"
+                        android:visibility="gone"
                         android:layout_marginBottom="8dp"
                         android:layout_gravity="center">
                         <ImageView
@@ -222,6 +223,7 @@
                             android:layout_height="wrap_content"
                             android:orientation="vertical"
                             android:paddingStart="16dp"
+                            android:visibility="gone"
                             android:paddingBottom="16dp">
                             <view class="com.android.browser.AddBookmarkPage$CustomListView"
                                 android:id="@+id/list"
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);
