diff --git a/src/com/android/mail/compose/ComposeActivity.java b/src/com/android/mail/compose/ComposeActivity.java
index 4e8d032..6e9cd9b 100644
--- a/src/com/android/mail/compose/ComposeActivity.java
+++ b/src/com/android/mail/compose/ComposeActivity.java
@@ -16,7 +16,6 @@
 
 package com.android.mail.compose;
 
-import android.animation.LayoutTransition;
 import android.app.ActionBar;
 import android.app.ActionBar.OnNavigationListener;
 import android.app.Activity;
@@ -24,7 +23,6 @@
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.Fragment;
-import android.app.FragmentManager;
 import android.app.FragmentTransaction;
 import android.app.LoaderManager;
 import android.content.ContentResolver;
@@ -76,7 +74,6 @@
 import com.android.mail.providers.Account;
 import com.android.mail.providers.Address;
 import com.android.mail.providers.Attachment;
-import com.android.mail.providers.Folder;
 import com.android.mail.providers.MailAppProvider;
 import com.android.mail.providers.Message;
 import com.android.mail.providers.MessageModification;
@@ -97,8 +94,6 @@
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
-import org.json.JSONException;
-
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.ArrayList;
@@ -409,7 +404,7 @@
             // If none of the accounts are syncing, setup a watcher.
             boolean anySyncing = false;
             for (Account a : mAccounts) {
-                if (a.isAccountIntialized()) {
+                if (a.isAccountReady()) {
                     anySyncing = true;
                     break;
                 }
@@ -2851,7 +2846,7 @@
                     ArrayList<Account> initializedAccounts = new ArrayList<Account>();
                     do {
                         account = new Account(data);
-                        if (account.isAccountIntialized()) {
+                        if (account.isAccountReady()) {
                             initializedAccounts.add(account);
                         }
                         accounts.add(account);
diff --git a/src/com/android/mail/providers/Account.java b/src/com/android/mail/providers/Account.java
index a2bc3af..87a4d09 100644
--- a/src/com/android/mail/providers/Account.java
+++ b/src/com/android/mail/providers/Account.java
@@ -408,8 +408,21 @@
         return (capabilities & capability) != 0;
     }
 
-    public boolean isAccountIntialized() {
-        return (syncStatus & SyncStatus.INITIAL_SYNC_NEEDED) != SyncStatus.INITIAL_SYNC_NEEDED;
+    public boolean isAccountSyncRequired() {
+        return (syncStatus & SyncStatus.INITIAL_SYNC_NEEDED) == SyncStatus.INITIAL_SYNC_NEEDED;
+    }
+
+    public boolean isAccountInitializationRequired() {
+        return (syncStatus & SyncStatus.ACCOUNT_INITIALIZATION_REQUIRED) ==
+                SyncStatus.ACCOUNT_INITIALIZATION_REQUIRED;
+    }
+
+    /**
+     * Returns true when when the UI provider has indicated that the account has been initialized,
+     * and sync is not required.
+     */
+    public boolean isAccountReady() {
+        return !isAccountInitializationRequired() && !isAccountSyncRequired();
     }
 
     @Override
diff --git a/src/com/android/mail/providers/UIProvider.java b/src/com/android/mail/providers/UIProvider.java
index 4f1cb43..e28d6a5 100644
--- a/src/com/android/mail/providers/UIProvider.java
+++ b/src/com/android/mail/providers/UIProvider.java
@@ -73,6 +73,10 @@
          * Gmail account.
          */
         public static final int MANUAL_SYNC_REQUIRED = 1<<4;
+        /**
+         * Account initialization is required.
+         */
+        public static final int ACCOUNT_INITIALIZATION_REQUIRED = 1<<5;
 
         public static boolean isSyncInProgress(int syncStatus) {
             return 0 != (syncStatus & (BACKGROUND_SYNC |
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index 17646e0..dcfec6d 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -52,13 +52,11 @@
 import android.view.MenuItem;
 import android.view.MotionEvent;
 import android.view.View;
-import android.widget.ListView;
 import android.widget.Toast;
 
 import com.android.mail.ConversationListContext;
 import com.android.mail.R;
 import com.android.mail.browse.ConversationCursor;
-import com.android.mail.browse.ConversationItemView;
 import com.android.mail.browse.ConversationPagerController;
 import com.android.mail.browse.ConversationCursor.ConversationOperation;
 import com.android.mail.browse.MessageCursor.ConversationMessage;
@@ -1853,19 +1851,23 @@
                             mAccountObservers.notifyChanged();
                         }
 
-                        // Got an update for the current account
-                        final boolean inWaitingMode = inWaitMode();
-                        if (!updatedAccount.isAccountIntialized() && !inWaitingMode) {
-                            // Transition to waiting mode
-                            showWaitForInitialization();
-                        } else if (updatedAccount.isAccountIntialized()) {
-                            if (inWaitingMode) {
-                                // Dismiss waiting mode
-                                hideWaitForInitialization();
+                        // We only want to enter or exit waiting mode if the account has been
+                        // initialized
+                        if (!updatedAccount.isAccountInitializationRequired()) {
+                            // Got an update for the current account
+                            final boolean inWaitingMode = inWaitMode();
+                            if (updatedAccount.isAccountSyncRequired() && !inWaitingMode) {
+                                // Transition to waiting mode
+                                showWaitForInitialization();
+                            } else if (!updatedAccount.isAccountSyncRequired()) {
+                                if (inWaitingMode) {
+                                    // Dismiss waiting mode
+                                    hideWaitForInitialization();
+                                }
+                            } else if (updatedAccount.isAccountSyncRequired() && inWaitingMode) {
+                                // Update the WaitFragment's account object
+                                updateWaitMode();
                             }
-                        } else if (!updatedAccount.isAccountIntialized() && inWaitingMode) {
-                            // Update the WaitFragment's account object
-                            updateWaitMode();
                         }
                     } else {
                         LogUtils.e(LOG_TAG, "Got update for account: %s with current account: %s",
diff --git a/src/com/android/mail/ui/MailboxSelectionActivity.java b/src/com/android/mail/ui/MailboxSelectionActivity.java
index 5db9113..aed02ae 100644
--- a/src/com/android/mail/ui/MailboxSelectionActivity.java
+++ b/src/com/android/mail/ui/MailboxSelectionActivity.java
@@ -20,7 +20,6 @@
 import com.android.mail.providers.MailAppProvider;
 import com.android.mail.providers.UIProvider;
 import com.android.mail.utils.LogTag;
-import com.android.mail.utils.LogUtils;
 
 import java.util.ArrayList;
 
@@ -364,7 +363,7 @@
             ArrayList<Account> initializedAccounts = new ArrayList<Account>();
             do {
                 account = new Account(data);
-                if (account.isAccountIntialized()) {
+                if (account.isAccountReady()) {
                     initializedAccounts.add(account);
                 }
                 accounts.add(account);
diff --git a/src/com/android/mail/utils/AccountUtils.java b/src/com/android/mail/utils/AccountUtils.java
index 0db885d..7f7e5e4 100644
--- a/src/com/android/mail/utils/AccountUtils.java
+++ b/src/com/android/mail/utils/AccountUtils.java
@@ -18,9 +18,6 @@
 import com.android.mail.providers.Account;
 import com.android.mail.providers.MailAppProvider;
 import com.android.mail.providers.UIProvider;
-import com.android.mail.providers.UIProvider.SyncStatus;
-
-import android.accounts.AccountManagerCallback;
 
 import android.content.ContentResolver;
 import android.content.Context;
@@ -82,7 +79,7 @@
             if (accountsCursor != null) {
                 while (accountsCursor.moveToNext()) {
                     account = new Account(accountsCursor);
-                    if (account.isAccountIntialized()) {
+                    if (!account.isAccountSyncRequired()) {
                         accounts.add(account);
                     }
                 }
