diff --git a/src/com/android/exchange/Eas.java b/src/com/android/exchange/Eas.java
index 00509bb..93ce041 100644
--- a/src/com/android/exchange/Eas.java
+++ b/src/com/android/exchange/Eas.java
@@ -88,6 +88,30 @@
     public static final String MIME_BODY_PREFERENCE_TEXT = "0";
     public static final String MIME_BODY_PREFERENCE_MIME = "2";
 
+    // Mailbox Types
+    // Section 2.2.3.170.3 Type (FolderSync)
+    // http://msdn.microsoft.com/en-us/library/gg650877(v=exchg.80).aspx
+    public static final int MAILBOX_TYPE_USER_GENERIC = 1;
+    public static final int MAILBOX_TYPE_INBOX = 2;
+    public static final int MAILBOX_TYPE_DRAFTS = 3;
+    public static final int MAILBOX_TYPE_DELETED = 4;
+    public static final int MAILBOX_TYPE_SENT = 5;
+    public static final int MAILBOX_TYPE_OUTBOX = 6;
+//    public static final int MAILBOX_TYPE_TASKS = 7;
+    public static final int MAILBOX_TYPE_CALENDAR = 8;
+    public static final int MAILBOX_TYPE_CONTACTS = 9;
+//    public static final int MAILBOX_TYPE_NOTES = 10;
+//    public static final int MAILBOX_TYPE_JOURNAL = 11;
+    public static final int MAILBOX_TYPE_USER_MAIL = 12;
+    public static final int MAILBOX_TYPE_USER_CALENDAR = 13;
+    public static final int MAILBOX_TYPE_USER_CONTACTS = 14;
+//    public static final int MAILBOX_TYPE_USER_TASKS = 15;
+//    public static final int MAILBOX_TYPE_USER_JOURNAL = 16;
+//    public static final int MAILBOX_TYPE_USER_NOTES = 17;
+//    public static final int MAILBOX_TYPE_UNKNOWN = 18;
+//    public static final int MAILBOX_TYPE_RECIPIENT_INFORMATION_CACHE = 19;
+
+
     // These limits must never exceed about 500k which is half the max size of a Binder IPC buffer.
 
     // For EAS 12, we use HTML, so we want a larger size than in EAS 2.5
diff --git a/src/com/android/exchange/adapter/FolderSyncParser.java b/src/com/android/exchange/adapter/FolderSyncParser.java
index 46a9c6d..20ce279 100644
--- a/src/com/android/exchange/adapter/FolderSyncParser.java
+++ b/src/com/android/exchange/adapter/FolderSyncParser.java
@@ -73,25 +73,25 @@
     private static final SparseIntArray MAILBOX_TYPE_MAP;
     static {
         MAILBOX_TYPE_MAP = new SparseIntArray(11);
-        MAILBOX_TYPE_MAP.put(1,  Mailbox.TYPE_MAIL);       // User-created folder (generic)
-        MAILBOX_TYPE_MAP.put(2,  Mailbox.TYPE_INBOX);      // Default Inbox folder
-        MAILBOX_TYPE_MAP.put(3,  Mailbox.TYPE_DRAFTS);     // Default Drafts folder
-        MAILBOX_TYPE_MAP.put(4,  Mailbox.TYPE_TRASH);      // Default Deleted Items folder
-        MAILBOX_TYPE_MAP.put(5,  Mailbox.TYPE_SENT);       // Default Sent Items folder
-        MAILBOX_TYPE_MAP.put(6,  Mailbox.TYPE_OUTBOX);     // Default Outbox folder
-        //MAILBOX_TYPE_MAP.put(7,  Mailbox.TYPE_TASKS);      // Default Tasks folder
-        MAILBOX_TYPE_MAP.put(8,  Mailbox.TYPE_CALENDAR);   // Default Calendar folder
-        MAILBOX_TYPE_MAP.put(9,  Mailbox.TYPE_CONTACTS);   // Default Contacts folder
-        //MAILBOX_TYPE_MAP.put(10, Mailbox.TYPE_NONE);       // Default Notes folder
-        //MAILBOX_TYPE_MAP.put(11, Mailbox.TYPE_NONE);       // Default Journal folder
-        MAILBOX_TYPE_MAP.put(12, Mailbox.TYPE_MAIL);       // User-created Mail folder
-        MAILBOX_TYPE_MAP.put(13, Mailbox.TYPE_CALENDAR);   // User-created Calendar folder
-        MAILBOX_TYPE_MAP.put(14, Mailbox.TYPE_CONTACTS);   // User-created Contacts folder
-        //MAILBOX_TYPE_MAP.put(15, Mailbox.TYPE_TASKS);      // User-created Tasks folder
-        //MAILBOX_TYPE_MAP.put(16, Mailbox.TYPE_NONE);       // User-created Journal folder
-        //MAILBOX_TYPE_MAP.put(17, Mailbox.TYPE_NONE);       // User-created Notes folder
-        //MAILBOX_TYPE_MAP.put(18, Mailbox.TYPE_NONE);       // Unknown folder type
-        //MAILBOX_TYPE_MAP.put(19, Mailbox.TYPE_NONE);       // Recipient information cache
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_USER_GENERIC,  Mailbox.TYPE_MAIL);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_INBOX,  Mailbox.TYPE_INBOX);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_DRAFTS,  Mailbox.TYPE_DRAFTS);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_DELETED,  Mailbox.TYPE_TRASH);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_SENT,  Mailbox.TYPE_SENT);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_OUTBOX,  Mailbox.TYPE_OUTBOX);
+        //MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_TASKS,  Mailbox.TYPE_TASKS);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_CALENDAR,  Mailbox.TYPE_CALENDAR);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_CONTACTS,  Mailbox.TYPE_CONTACTS);
+        //MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_NOTES, Mailbox.TYPE_NONE);
+        //MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_JOURNAL, Mailbox.TYPE_NONE);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_USER_MAIL, Mailbox.TYPE_MAIL);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_USER_CALENDAR, Mailbox.TYPE_CALENDAR);
+        MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_USER_CONTACTS, Mailbox.TYPE_CONTACTS);
+        //MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_USER_TASKS, Mailbox.TYPE_TASKS);
+        //MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_USER_JOURNAL, Mailbox.TYPE_NONE);
+        //MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_USER_NOTES, Mailbox.TYPE_NONE);
+        //MAILBOX_TYPE_MAP.put(Eas.MAILBOX_TYPE_UNKNOWN, Mailbox.TYPE_NONE);
+        //MAILBOX_TYPE_MAP.put(MAILBOX_TYPE_RECIPIENT_INFORMATION_CACHE, Mailbox.TYPE_NONE);
     }
 
     /** Content selection for all mailboxes belonging to an account. */
@@ -474,6 +474,9 @@
         if (name != null && serverId != null && parentId != null) {
             final int mailboxType = MAILBOX_TYPE_MAP.get(type, Mailbox.TYPE_NONE);
             if (mailboxType != Mailbox.TYPE_NONE) {
+                if (type == Eas.MAILBOX_TYPE_CALENDAR && !name.contains(mAccount.mEmailAddress)) {
+                    name = mAccount.mEmailAddress;
+                }
                 addMailboxOp(name, serverId, parentId, mailboxType, true);
             }
         }
