diff --git a/src/com/android/exchange/EasSyncService.java b/src/com/android/exchange/EasSyncService.java
index 8c481d4..91b105f 100644
--- a/src/com/android/exchange/EasSyncService.java
+++ b/src/com/android/exchange/EasSyncService.java
@@ -426,7 +426,7 @@
      * @throws IOException
      * @throws EasParserException
      */
-    public void runMain() throws IOException, EasParserException {
+    public void runAccountMailbox() throws IOException, EasParserException {
         // Initialize exit status to success
         mExitStatus = EmailServiceStatus.SUCCESS;
         try {
@@ -882,11 +882,14 @@
         // Make sure account and mailbox are always the latest from the database
         mAccount = Account.restoreAccountWithId(mContext, mAccount.mId);
         mMailbox = Mailbox.restoreMailboxWithId(mContext, mMailbox.mId);
+        // Whether or not we're the account mailbox
+        boolean accountMailbox = false;
         try {
             if (mMailbox == null || mAccount == null) {
                 return;
             } else if (mMailbox.mServerId.equals(Eas.ACCOUNT_MAILBOX)) {
-                runMain();
+                accountMailbox = true;
+                runAccountMailbox();
             } else {
                 EasSyncAdapter target;
                 mAccount = Account.restoreAccountWithId(mContext, mAccount.mId);
@@ -916,7 +919,12 @@
         } finally {
             userLog(mMailbox.mDisplayName + ": sync finished");
             SyncManager.done(this);
-
+            // If this is the account mailbox, wake up SyncManager
+            // Because this box has a "push" interval, it will be restarted immediately
+            // which will cause the folder list to be reloaded...
+            if (accountMailbox) {
+                SyncManager.kick();
+            }
             try {
                 int status;
                 switch (mExitStatus) {
diff --git a/src/com/android/exchange/SyncManager.java b/src/com/android/exchange/SyncManager.java
index 86529ee..183c394 100644
--- a/src/com/android/exchange/SyncManager.java
+++ b/src/com/android/exchange/SyncManager.java
@@ -184,8 +184,9 @@
                     synchronized(mSyncToken) {
                         AbstractSyncService svc =
                             INSTANCE.mServiceMap.get(c.getLong(Mailbox.CONTENT_ID_COLUMN));
-                        // TODO See if this is sufficient.  Low priority since there is no
-                        // user-driven "update folder list" in the UI
+                        // Tell the service we're done
+                        svc.stop();
+                        // Interrupt it so that it can stop
                         svc.mThread.interrupt();
                     }
                 }
