diff --git a/res/menu/conversation_actions.xml b/res/menu/conversation_actions.xml
index 6dd6452..3f392b4 100644
--- a/res/menu/conversation_actions.xml
+++ b/res/menu/conversation_actions.xml
@@ -18,60 +18,69 @@
 <!-- Action bar items for the tablet when viewing a conversation -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Depends on AccountCapabilities.ARCHIVE -->
     <item
         android:id="@+id/y_button"
         android:title="@string/archive"
         android:showAsAction="ifRoom"
         android:icon="@drawable/archive"
         android:alphabeticShortcut="@string/trigger_y_char" />
-
+    <!-- Always available -->
     <item
         android:id="@+id/delete"
         android:title="@string/delete"
         android:showAsAction="ifRoom"
         android:icon="@drawable/trash" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/change_labels"
         android:title="@string/menu_change_labels"
         android:showAsAction="ifRoom"
         android:icon="@drawable/ic_menu_labels_holo_light" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/inside_conversation_unread"
         android:title="@string/mark_unread"
         android:showAsAction="ifRoom"
         android:icon="@drawable/ic_menu_mark_unread_holo_light" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/mark_important"
         android:title="@string/mark_important"
         android:icon="@drawable/ic_email_caret_double" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/mark_not_important"
         android:title="@string/mark_not_important"
         android:icon="@drawable/ic_email_caret_single"
         android:visible="false" />
 
+    <!-- Depends on AccountCapabilities.MUTE -->
     <item
         android:id="@+id/mute"
         android:title="@string/mute" />
-
+    <!-- Depends on AccountCapabilities.REPORT_SPAM -->
     <item
         android:id="@+id/report_spam"
         android:title="@string/report_spam"
         android:icon="@drawable/ic_spam_normal_holo_light" />
 
+    <!-- Always available -->
     <item android:id="@+id/preferences"
         android:title="@string/menu_preferences"
         android:icon="@android:drawable/ic_menu_preferences" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/help_info_menu_item"
         android:icon="@android:drawable/ic_menu_help"
         android:title="@string/help_and_info" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/feedback_menu_item"
         android:icon="@android:drawable/ic_menu_send"
diff --git a/res/menu/folder_list_menu.xml b/res/menu/folder_list_menu.xml
index 1a8c6bd..566b622 100644
--- a/res/menu/folder_list_menu.xml
+++ b/res/menu/folder_list_menu.xml
@@ -17,22 +17,25 @@
 -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
-
+    <!-- Always available -->
     <item android:id="@+id/label_options"
         android:title="@string/menu_manage_labels"
         android:showAsAction="ifRoom" />
 
+    <!-- Always available -->
     <item android:id="@+id/preferences"
         android:title="@string/menu_preferences"
         android:showAsAction="never"
         android:icon="@android:drawable/ic_menu_preferences" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/help_info_menu_item"
         android:icon="@android:drawable/ic_menu_help"
         android:showAsAction="never"
         android:title="@string/help_and_info" />
 
+    <!-- Always available -->
     <item
         android:id="@+id/feedback_menu_item"
         android:icon="@android:drawable/ic_menu_send"
diff --git a/src/com/android/mail/ui/MailActionBar.java b/src/com/android/mail/ui/MailActionBar.java
index 00a7575..9d76a07 100644
--- a/src/com/android/mail/ui/MailActionBar.java
+++ b/src/com/android/mail/ui/MailActionBar.java
@@ -114,9 +114,9 @@
     SpinnerAdapter mSpinner;
     private AccountRecentLabelSpinner mSpinnerView;
     /**
-     * We need to know what each account is capable of, so we can tailor the menu accordingly.
+     * The account currently being shown
      */
-    private int mAccountCapabilities;
+    private Account mAccount;
 
     // TODO(viki): This is a SnippetTextView in the Gmail source code. Resolve.
     private TextView mSubjectView;
@@ -199,8 +199,7 @@
                 // Get the capabilities associated with this account.
                 final Object item = mSpinner.getItem(position);
                 assert (item instanceof Account);
-                mAccountCapabilities = ((Account) item).capabilities;
-                Log.d("viki", "Account capabilities are " + mAccountCapabilities);
+                mAccount = (Account) item;
                 break;
         }
         return false;
@@ -266,11 +265,15 @@
             case ViewMode.CONVERSATION_LIST:
                 // Show compose, search, labels, and sync based on the account
                 // The only option that needs to be disabled is search
-                setVisibility (R.id.search,
-                        (mAccountCapabilities & AccountCapabilities.FOLDER_SERVER_SEARCH) != 0);
+                setVisibility(R.id.search, mAccount.supportsCapability(
+                        AccountCapabilities.FOLDER_SERVER_SEARCH));
                 break;
             case ViewMode.CONVERSATION:
-                // Do nothing?
+                setVisibility(R.id.y_button, mAccount.supportsCapability(
+                        AccountCapabilities.ARCHIVE));
+                setVisibility(R.id.report_spam, mAccount.supportsCapability(
+                        AccountCapabilities.REPORT_SPAM));
+                setVisibility(R.id.mute, mAccount.supportsCapability(AccountCapabilities.MUTE));
                 break;
             case ViewMode.SEARCH_RESULTS:
                 mActionBar.setDisplayHomeAsUpEnabled(true);
