diff --git a/src/com/android/contacts/DialtactsActivity.java b/src/com/android/contacts/DialtactsActivity.java
index dc69194..5ad57e4 100644
--- a/src/com/android/contacts/DialtactsActivity.java
+++ b/src/com/android/contacts/DialtactsActivity.java
@@ -151,7 +151,7 @@
     }
 
     private void setupContactsTab() {
-        Intent intent = new Intent(UI.LIST_DEFAULT);
+        Intent intent = new Intent(UI.LIST_ALL_CONTACTS_ACTION);
         intent.setClass(this, ContactBrowserActivity.class);
 
         mTabHost.addTab(mTabHost.newTabSpec("contacts")
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index de4bcc6..d894cdb 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -125,7 +125,6 @@
 
     private boolean mOptionsMenuContactsAvailable;
     private boolean mOptionsMenuGroupActionsEnabled;
-    private boolean mOptionsMenuCustomFilterChangeable;
 
     public ContactBrowserActivity() {
         mIntentResolver = new ContactsIntentResolver(this);
@@ -234,7 +233,6 @@
         }
 
         mOptionsMenuContactsAvailable = false;
-        mOptionsMenuCustomFilterChangeable = false;
         mOptionsMenuGroupActionsEnabled = false;
 
         mProviderStatus = -1;
@@ -635,7 +633,7 @@
             final MenuItem addContact = menu.findItem(R.id.menu_add);
             addContact.setActionView(mAddContactImageView);
             return true;
-        } else if (mRequest.getActionCode() == ContactsRequest.ACTION_DEFAULT ||
+        } else if (mRequest.getActionCode() == ContactsRequest.ACTION_ALL_CONTACTS ||
                 mRequest.getActionCode() == ContactsRequest.ACTION_STREQUENT) {
             inflater.inflate(R.menu.list, menu);
             return true;
@@ -663,10 +661,6 @@
             return true;
         }
 
-        if (mOptionsMenuCustomFilterChangeable != isCustomFilterChangeable()) {
-            return true;
-        }
-
         if (mListFragment != null && mListFragment.isOptionsMenuChanged()) {
             return true;
         }
@@ -690,13 +684,6 @@
             settings.setVisible(!ContactsPreferenceActivity.isEmpty(this));
         }
 
-        mOptionsMenuCustomFilterChangeable = isCustomFilterChangeable();
-
-        MenuItem displayGroups = menu.findItem(R.id.menu_display_groups);
-        if (displayGroups != null) {
-            displayGroups.setVisible(mOptionsMenuCustomFilterChangeable);
-        }
-
         mOptionsMenuGroupActionsEnabled = areGroupActionsEnabled();
 
         MenuItem renameGroup = menu.findItem(R.id.menu_rename_group);
@@ -725,10 +712,6 @@
         return groupActionsEnabled;
     }
 
-    public boolean isCustomFilterChangeable() {
-        return mRequest != null && mRequest.getActionCode() == ContactsRequest.ACTION_DEFAULT;
-    }
-
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
