Move Account into its own top-level class

Change-Id: Ide7c991b7d4d418dbe17164421425bf898ba64ee
diff --git a/emailcommon/src/com/android/emailcommon/provider/Account.java b/emailcommon/src/com/android/emailcommon/provider/Account.java
new file mode 100644
index 0000000..e7de948
--- /dev/null
+++ b/emailcommon/src/com/android/emailcommon/provider/Account.java
@@ -0,0 +1,938 @@
+package com.android.emailcommon.provider;
+
+import android.content.ContentProviderOperation;
+import android.content.ContentProviderResult;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.OperationApplicationException;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.os.RemoteException;
+
+import com.android.emailcommon.provider.EmailContent.AccountColumns;
+import com.android.emailcommon.provider.EmailContent.MailboxColumns;
+import com.android.emailcommon.provider.EmailContent.Message;
+import com.android.emailcommon.provider.EmailContent.MessageColumns;
+import com.android.emailcommon.utility.Utility;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+public final class Account extends EmailContent implements AccountColumns, Parcelable {
+    public static final String TABLE_NAME = "Account";
+    @SuppressWarnings("hiding")
+    public static final Uri CONTENT_URI = Uri.parse(EmailContent.CONTENT_URI + "/account");
+    public static final Uri ADD_TO_FIELD_URI =
+        Uri.parse(EmailContent.CONTENT_URI + "/accountIdAddToField");
+    public static final Uri RESET_NEW_MESSAGE_COUNT_URI =
+        Uri.parse(EmailContent.CONTENT_URI + "/resetNewMessageCount");
+    public static final Uri NOTIFIER_URI =
+        Uri.parse(EmailContent.CONTENT_NOTIFIER_URI + "/account");
+
+    // Define all pseudo account IDs here to avoid conflict with one another.
+    /**
+     * Pseudo account ID to represent a "combined account" that includes messages and mailboxes
+     * from all defined accounts.
+     *
+     * <em>IMPORTANT</em>: This must never be stored to the database.
+     */
+    public static final long ACCOUNT_ID_COMBINED_VIEW = 0x1000000000000000L;
+    /**
+     * Pseudo account ID to represent "no account". This may be used any time the account ID
+     * may not be known or when we want to specifically select "no" account.
+     *
+     * <em>IMPORTANT</em>: This must never be stored to the database.
+     */
+    public static final long NO_ACCOUNT = -1L;
+
+    // Whether or not the user has asked for notifications of new mail in this account
+    public final static int FLAGS_NOTIFY_NEW_MAIL = 1<<0;
+    // Whether or not the user has asked for vibration notifications with all new mail
+    public final static int FLAGS_VIBRATE_ALWAYS = 1<<1;
+    // Bit mask for the account's deletion policy (see DELETE_POLICY_x below)
+    public static final int FLAGS_DELETE_POLICY_MASK = 1<<2 | 1<<3;
+    public static final int FLAGS_DELETE_POLICY_SHIFT = 2;
+    // Whether the account is in the process of being created; any account reconciliation code
+    // MUST ignore accounts with this bit set; in addition, ContentObservers for this data
+    // SHOULD consider the state of this flag during operation
+    public static final int FLAGS_INCOMPLETE = 1<<4;
+    // Security hold is used when the device is not in compliance with security policies
+    // required by the server; in this state, the user MUST be alerted to the need to update
+    // security settings.  Sync adapters SHOULD NOT attempt to sync when this flag is set.
+    public static final int FLAGS_SECURITY_HOLD = 1<<5;
+    // Whether or not the user has asked for vibration notifications when the ringer is silent
+    public static final int FLAGS_VIBRATE_WHEN_SILENT = 1<<6;
+    // Whether the account supports "smart forward" (i.e. the server appends the original
+    // message along with any attachments to the outgoing message)
+    public static final int FLAGS_SUPPORTS_SMART_FORWARD = 1<<7;
+    // Whether the account should try to cache attachments in the background
+    public static final int FLAGS_BACKGROUND_ATTACHMENTS = 1<<8;
+    // Available to sync adapter
+    public static final int FLAGS_SYNC_ADAPTER = 1<<9;
+    // Sync disabled is a status commanded by the server; the sync adapter SHOULD NOT try to
+    // sync mailboxes in this account automatically.  A manual sync request to sync a mailbox
+    // with sync disabled SHOULD try to sync and report any failure result via the UI.
+    public static final int FLAGS_SYNC_DISABLED = 1<<10;
+
+    // Deletion policy (see FLAGS_DELETE_POLICY_MASK, above)
+    public static final int DELETE_POLICY_NEVER = 0;
+    public static final int DELETE_POLICY_7DAYS = 1<<0;        // not supported
+    public static final int DELETE_POLICY_ON_DELETE = 1<<1;
+
+    // Sentinel values for the mSyncInterval field of both Account records
+    public static final int CHECK_INTERVAL_NEVER = -1;
+    public static final int CHECK_INTERVAL_PUSH = -2;
+
+    public String mDisplayName;
+    public String mEmailAddress;
+    public String mSyncKey;
+    public int mSyncLookback;
+    public int mSyncInterval;
+    public long mHostAuthKeyRecv;
+    public long mHostAuthKeySend;
+    public int mFlags;
+    public boolean mIsDefault;          // note: callers should use getDefaultAccountId()
+    public String mCompatibilityUuid;
+    public String mSenderName;
+    public String mRingtoneUri;
+    public String mProtocolVersion;
+    public int mNewMessageCount;
+    public String mSecuritySyncKey;
+    public String mSignature;
+    public long mPolicyKey;
+
+    // Convenience for creating/working with an account
+    public transient HostAuth mHostAuthRecv;
+    public transient HostAuth mHostAuthSend;
+    public transient Policy mPolicy;
+    // Might hold the corresponding AccountManager account structure
+    public transient android.accounts.Account mAmAccount;
+
+    public static final int CONTENT_ID_COLUMN = 0;
+    public static final int CONTENT_DISPLAY_NAME_COLUMN = 1;
+    public static final int CONTENT_EMAIL_ADDRESS_COLUMN = 2;
+    public static final int CONTENT_SYNC_KEY_COLUMN = 3;
+    public static final int CONTENT_SYNC_LOOKBACK_COLUMN = 4;
+    public static final int CONTENT_SYNC_INTERVAL_COLUMN = 5;
+    public static final int CONTENT_HOST_AUTH_KEY_RECV_COLUMN = 6;
+    public static final int CONTENT_HOST_AUTH_KEY_SEND_COLUMN = 7;
+    public static final int CONTENT_FLAGS_COLUMN = 8;
+    public static final int CONTENT_IS_DEFAULT_COLUMN = 9;
+    public static final int CONTENT_COMPATIBILITY_UUID_COLUMN = 10;
+    public static final int CONTENT_SENDER_NAME_COLUMN = 11;
+    public static final int CONTENT_RINGTONE_URI_COLUMN = 12;
+    public static final int CONTENT_PROTOCOL_VERSION_COLUMN = 13;
+    public static final int CONTENT_NEW_MESSAGE_COUNT_COLUMN = 14;
+    public static final int CONTENT_SECURITY_SYNC_KEY_COLUMN = 15;
+    public static final int CONTENT_SIGNATURE_COLUMN = 16;
+    public static final int CONTENT_POLICY_KEY = 17;
+
+    public static final String[] CONTENT_PROJECTION = new String[] {
+        RECORD_ID, AccountColumns.DISPLAY_NAME,
+        AccountColumns.EMAIL_ADDRESS, AccountColumns.SYNC_KEY, AccountColumns.SYNC_LOOKBACK,
+        AccountColumns.SYNC_INTERVAL, AccountColumns.HOST_AUTH_KEY_RECV,
+        AccountColumns.HOST_AUTH_KEY_SEND, AccountColumns.FLAGS, AccountColumns.IS_DEFAULT,
+        AccountColumns.COMPATIBILITY_UUID, AccountColumns.SENDER_NAME,
+        AccountColumns.RINGTONE_URI, AccountColumns.PROTOCOL_VERSION,
+        AccountColumns.NEW_MESSAGE_COUNT, AccountColumns.SECURITY_SYNC_KEY,
+        AccountColumns.SIGNATURE, AccountColumns.POLICY_KEY
+    };
+
+    public static final int CONTENT_MAILBOX_TYPE_COLUMN = 1;
+
+    /**
+     * This projection is for listing account id's only
+     */
+    public static final String[] ID_TYPE_PROJECTION = new String[] {
+        RECORD_ID, MailboxColumns.TYPE
+    };
+
+    public static final int ACCOUNT_FLAGS_COLUMN_ID = 0;
+    public static final int ACCOUNT_FLAGS_COLUMN_FLAGS = 1;
+    public static final String[] ACCOUNT_FLAGS_PROJECTION = new String[] {
+            AccountColumns.ID, AccountColumns.FLAGS};
+
+    public static final String MAILBOX_SELECTION =
+        MessageColumns.MAILBOX_KEY + " =?";
+
+    public static final String UNREAD_COUNT_SELECTION =
+        MessageColumns.MAILBOX_KEY + " =? and " + MessageColumns.FLAG_READ + "= 0";
+
+    private static final String UUID_SELECTION = AccountColumns.COMPATIBILITY_UUID + " =?";
+
+    public static final String SECURITY_NONZERO_SELECTION =
+        Account.POLICY_KEY + " IS NOT NULL AND " + Account.POLICY_KEY + "!=0";
+
+    private static final String FIND_INBOX_SELECTION =
+            MailboxColumns.TYPE + " = " + Mailbox.TYPE_INBOX +
+            " AND " + MailboxColumns.ACCOUNT_KEY + " =?";
+
+    /**
+     * This projection is for searching for the default account
+     */
+    private static final String[] DEFAULT_ID_PROJECTION = new String[] {
+        RECORD_ID, IS_DEFAULT
+    };
+
+    /**
+     * no public constructor since this is a utility class
+     */
+    public Account() {
+        mBaseUri = CONTENT_URI;
+
+        // other defaults (policy)
+        mRingtoneUri = "content://settings/system/notification_sound";
+        mSyncInterval = -1;
+        mSyncLookback = -1;
+        mFlags = FLAGS_NOTIFY_NEW_MAIL;
+        mCompatibilityUuid = UUID.randomUUID().toString();
+    }
+
+    public static Account restoreAccountWithId(Context context, long id) {
+        return EmailContent.restoreContentWithId(context, Account.class,
+                Account.CONTENT_URI, Account.CONTENT_PROJECTION, id);
+    }
+
+    /**
+     * Returns {@code true} if the given account ID is a "normal" account. Normal accounts
+     * always have an ID greater than {@code 0} and not equal to any pseudo account IDs
+     * (such as {@link #ACCOUNT_ID_COMBINED_VIEW})
+     */
+    public static boolean isNormalAccount(long accountId) {
+        return (accountId > 0L) && (accountId != ACCOUNT_ID_COMBINED_VIEW);
+    }
+
+    /**
+     * Refresh an account that has already been loaded.  This is slightly less expensive
+     * that generating a brand-new account object.
+     */
+    public void refresh(Context context) {
+        Cursor c = context.getContentResolver().query(getUri(), Account.CONTENT_PROJECTION,
+                null, null, null);
+        try {
+            c.moveToFirst();
+            restore(c);
+        } finally {
+            if (c != null) {
+                c.close();
+            }
+        }
+    }
+
+    @Override
+    public void restore(Cursor cursor) {
+        mId = cursor.getLong(CONTENT_ID_COLUMN);
+        mBaseUri = CONTENT_URI;
+        mDisplayName = cursor.getString(CONTENT_DISPLAY_NAME_COLUMN);
+        mEmailAddress = cursor.getString(CONTENT_EMAIL_ADDRESS_COLUMN);
+        mSyncKey = cursor.getString(CONTENT_SYNC_KEY_COLUMN);
+        mSyncLookback = cursor.getInt(CONTENT_SYNC_LOOKBACK_COLUMN);
+        mSyncInterval = cursor.getInt(CONTENT_SYNC_INTERVAL_COLUMN);
+        mHostAuthKeyRecv = cursor.getLong(CONTENT_HOST_AUTH_KEY_RECV_COLUMN);
+        mHostAuthKeySend = cursor.getLong(CONTENT_HOST_AUTH_KEY_SEND_COLUMN);
+        mFlags = cursor.getInt(CONTENT_FLAGS_COLUMN);
+        mIsDefault = cursor.getInt(CONTENT_IS_DEFAULT_COLUMN) == 1;
+        mCompatibilityUuid = cursor.getString(CONTENT_COMPATIBILITY_UUID_COLUMN);
+        mSenderName = cursor.getString(CONTENT_SENDER_NAME_COLUMN);
+        mRingtoneUri = cursor.getString(CONTENT_RINGTONE_URI_COLUMN);
+        mProtocolVersion = cursor.getString(CONTENT_PROTOCOL_VERSION_COLUMN);
+        mNewMessageCount = cursor.getInt(CONTENT_NEW_MESSAGE_COUNT_COLUMN);
+        mSecuritySyncKey = cursor.getString(CONTENT_SECURITY_SYNC_KEY_COLUMN);
+        mSignature = cursor.getString(CONTENT_SIGNATURE_COLUMN);
+        mPolicyKey = cursor.getLong(CONTENT_POLICY_KEY);
+    }
+
+    private long getId(Uri u) {
+        return Long.parseLong(u.getPathSegments().get(1));
+    }
+
+    /**
+     * @return the user-visible name for the account
+     */
+    public String getDisplayName() {
+        return mDisplayName;
+    }
+
+    /**
+     * Set the description.  Be sure to call save() to commit to database.
+     * @param description the new description
+     */
+    public void setDisplayName(String description) {
+        mDisplayName = description;
+    }
+
+    /**
+     * @return the email address for this account
+     */
+    public String getEmailAddress() {
+        return mEmailAddress;
+    }
+
+    /**
+     * Set the Email address for this account.  Be sure to call save() to commit to database.
+     * @param emailAddress the new email address for this account
+     */
+    public void setEmailAddress(String emailAddress) {
+        mEmailAddress = emailAddress;
+    }
+
+    /**
+     * @return the sender's name for this account
+     */
+    public String getSenderName() {
+        return mSenderName;
+    }
+
+    /**
+     * Set the sender's name.  Be sure to call save() to commit to database.
+     * @param name the new sender name
+     */
+    public void setSenderName(String name) {
+        mSenderName = name;
+    }
+
+    public String getSignature() {
+        return mSignature;
+    }
+
+    public void setSignature(String signature) {
+        mSignature = signature;
+    }
+
+    /**
+     * @return the minutes per check (for polling)
+     * TODO define sentinel values for "never", "push", etc.  See Account.java
+     */
+    public int getSyncInterval() {
+        return mSyncInterval;
+    }
+
+    /**
+     * Set the minutes per check (for polling).  Be sure to call save() to commit to database.
+     * TODO define sentinel values for "never", "push", etc.  See Account.java
+     * @param minutes the number of minutes between polling checks
+     */
+    public void setSyncInterval(int minutes) {
+        mSyncInterval = minutes;
+    }
+
+    /**
+     * @return One of the {@code Account.SYNC_WINDOW_*} constants that represents the sync
+     *     lookback window.
+     * TODO define sentinel values for "all", "1 month", etc.  See Account.java
+     */
+    public int getSyncLookback() {
+        return mSyncLookback;
+    }
+
+    /**
+     * Set the sync lookback window.  Be sure to call save() to commit to database.
+     * TODO define sentinel values for "all", "1 month", etc.  See Account.java
+     * @param value One of the {@code Account.SYNC_WINDOW_*} constants
+     */
+    public void setSyncLookback(int value) {
+        mSyncLookback = value;
+    }
+
+    /**
+     * @return the flags for this account
+     * @see #FLAGS_NOTIFY_NEW_MAIL
+     * @see #FLAGS_VIBRATE_ALWAYS
+     * @see #FLAGS_VIBRATE_WHEN_SILENT
+     */
+    public int getFlags() {
+        return mFlags;
+    }
+
+    /**
+     * Set the flags for this account
+     * @see #FLAGS_NOTIFY_NEW_MAIL
+     * @see #FLAGS_VIBRATE_ALWAYS
+     * @see #FLAGS_VIBRATE_WHEN_SILENT
+     * @param newFlags the new value for the flags
+     */
+    public void setFlags(int newFlags) {
+        mFlags = newFlags;
+    }
+
+    /**
+     * @return the ringtone Uri for this account
+     */
+    public String getRingtone() {
+        return mRingtoneUri;
+    }
+
+    /**
+     * Set the ringtone Uri for this account
+     * @param newUri the new URI string for the ringtone for this account
+     */
+    public void setRingtone(String newUri) {
+        mRingtoneUri = newUri;
+    }
+
+    /**
+     * Set the "delete policy" as a simple 0,1,2 value set.
+     * @param newPolicy the new delete policy
+     */
+    public void setDeletePolicy(int newPolicy) {
+        mFlags &= ~FLAGS_DELETE_POLICY_MASK;
+        mFlags |= (newPolicy << FLAGS_DELETE_POLICY_SHIFT) & FLAGS_DELETE_POLICY_MASK;
+    }
+
+    /**
+     * Return the "delete policy" as a simple 0,1,2 value set.
+     * @return the current delete policy
+     */
+    public int getDeletePolicy() {
+        return (mFlags & FLAGS_DELETE_POLICY_MASK) >> FLAGS_DELETE_POLICY_SHIFT;
+    }
+
+    /**
+     * Return the Uuid associated with this account.  This is primarily for compatibility
+     * with accounts set up by previous versions, because there are externals references
+     * to the Uuid (e.g. desktop shortcuts).
+     */
+    public String getUuid() {
+        return mCompatibilityUuid;
+    }
+
+    public HostAuth getOrCreateHostAuthSend(Context context) {
+        if (mHostAuthSend == null) {
+            if (mHostAuthKeySend != 0) {
+                mHostAuthSend = HostAuth.restoreHostAuthWithId(context, mHostAuthKeySend);
+            } else {
+                mHostAuthSend = new HostAuth();
+            }
+        }
+        return mHostAuthSend;
+    }
+
+    public HostAuth getOrCreateHostAuthRecv(Context context) {
+        if (mHostAuthRecv == null) {
+            if (mHostAuthKeyRecv != 0) {
+                mHostAuthRecv = HostAuth.restoreHostAuthWithId(context, mHostAuthKeyRecv);
+            } else {
+                mHostAuthRecv = new HostAuth();
+            }
+        }
+        return mHostAuthRecv;
+    }
+
+    /**
+     * For compatibility while converting to provider model, generate a "local store URI"
+     *
+     * @return a string in the form of a Uri, as used by the other parts of the email app
+     */
+    public String getLocalStoreUri(Context context) {
+        return "local://localhost/" + context.getDatabasePath(getUuid() + ".db");
+    }
+
+    /**
+     * @return true if the instance is of an EAS account.
+     *
+     * NOTE This method accesses the DB if {@link #mHostAuthRecv} hasn't been restored yet.
+     * Use caution when you use this on the main thread.
+     */
+    public boolean isEasAccount(Context context) {
+        return "eas".equals(getProtocol(context));
+    }
+
+    /**
+     * @return true if the account supports "move messages".
+     */
+    public static boolean supportsMoveMessages(Context context, long accountId) {
+        String protocol = getProtocol(context, accountId);
+        return "eas".equals(protocol) || "imap".equals(protocol);
+    }
+
+    /**
+     * Set the account to be the default account.  If this is set to "true", when the account
+     * is saved, all other accounts will have the same value set to "false".
+     * @param newDefaultState the new default state - if true, others will be cleared.
+     */
+    public void setDefaultAccount(boolean newDefaultState) {
+        mIsDefault = newDefaultState;
+    }
+
+    /**
+     * Helper method for finding the default account.
+     */
+    static private long getDefaultAccountWhere(Context context, String where) {
+        return Utility.getFirstRowLong(context, CONTENT_URI,
+                DEFAULT_ID_PROJECTION,
+                where, null, null, 0, Long.valueOf(-1));
+    }
+
+    /**
+     * @return {@link Uri} to this {@link Account} in the
+     * {@code content://com.android.email.provider/account/UUID} format, which is safe to use
+     * for desktop shortcuts.
+     *
+     * <p>We don't want to store _id in shortcuts, because
+     * {@link com.android.email.provider.AccountBackupRestore} won't preserve it.
+     */
+    public Uri getShortcutSafeUri() {
+        return getShortcutSafeUriFromUuid(mCompatibilityUuid);
+    }
+
+    /**
+     * @return {@link Uri} to an {@link Account} with a {@code uuid}.
+     */
+    public static Uri getShortcutSafeUriFromUuid(String uuid) {
+        return CONTENT_URI.buildUpon().appendEncodedPath(uuid).build();
+    }
+
+    /**
+     * Parse {@link Uri} in the {@code content://com.android.email.provider/account/ID} format
+     * where ID = account id (used on Eclair, Android 2.0-2.1) or UUID, and return _id of
+     * the {@link Account} associated with it.
+     *
+     * @param context context to access DB
+     * @param uri URI of interest
+     * @return _id of the {@link Account} associated with ID, or -1 if none found.
+     */
+    public static long getAccountIdFromShortcutSafeUri(Context context, Uri uri) {
+        // Make sure the URI is in the correct format.
+        if (!"content".equals(uri.getScheme())
+                || !AUTHORITY.equals(uri.getAuthority())) {
+            return -1;
+        }
+
+        final List<String> ps = uri.getPathSegments();
+        if (ps.size() != 2 || !"account".equals(ps.get(0))) {
+            return -1;
+        }
+
+        // Now get the ID part.
+        final String id = ps.get(1);
+
+        // First, see if ID can be parsed as long.  (Eclair-style)
+        // (UUIDs have '-' in them, so they are always non-parsable.)
+        try {
+            return Long.parseLong(id);
+        } catch (NumberFormatException ok) {
+            // OK, it's not a long.  Continue...
+        }
+
+        // Now id is a UUId.
+        return getAccountIdFromUuid(context, id);
+    }
+
+    /**
+     * @return ID of the account with the given UUID.
+     */
+    public static long getAccountIdFromUuid(Context context, String uuid) {
+        return Utility.getFirstRowLong(context,
+                CONTENT_URI, ID_PROJECTION,
+                UUID_SELECTION, new String[] {uuid}, null, 0, -1L);
+    }
+
+    /**
+     * Return the id of the default account.  If one hasn't been explicitly specified, return
+     * the first one in the database.  For any account saved in the DB, this must be used
+     * to check for the default account - the mIsDefault field is set lazily and may be
+     * incorrect.
+     * @param context the caller's context
+     * @return the id of the default account, or -1 if there are no accounts
+     */
+    static public long getDefaultAccountId(Context context) {
+        long id = getDefaultAccountWhere(context, AccountColumns.IS_DEFAULT + "=1");
+        if (id == -1) {
+            id = getDefaultAccountWhere(context, null);
+        }
+        return id;
+    }
+
+    /**
+     * Given an account id, return the account's protocol
+     * @param context the caller's context
+     * @param accountId the id of the account to be examined
+     * @return the account's protocol (or null if the Account or HostAuth do not exist)
+     */
+    public static String getProtocol(Context context, long accountId) {
+        Account account = Account.restoreAccountWithId(context, accountId);
+        if (account != null) {
+            return account.getProtocol(context);
+         }
+        return null;
+    }
+
+    /**
+     * Return the account's protocol
+     * @param context the caller's context
+     * @return the account's protocol (or null if the HostAuth doesn't not exist)
+     */
+    public String getProtocol(Context context) {
+        HostAuth hostAuth = HostAuth.restoreHostAuthWithId(context, mHostAuthKeyRecv);
+        if (hostAuth != null) {
+            return hostAuth.mProtocol;
+        }
+        return null;
+    }
+
+    /**
+     * Return the account ID for a message with a given id
+     *
+     * @param context the caller's context
+     * @param messageId the id of the message
+     * @return the account ID, or -1 if the account doesn't exist
+     */
+    public static long getAccountIdForMessageId(Context context, long messageId) {
+        return Message.getKeyColumnLong(context, messageId, MessageColumns.ACCOUNT_KEY);
+    }
+
+    /**
+     * Return the account for a message with a given id
+     * @param context the caller's context
+     * @param messageId the id of the message
+     * @return the account, or null if the account doesn't exist
+     */
+    public static Account getAccountForMessageId(Context context, long messageId) {
+        long accountId = getAccountIdForMessageId(context, messageId);
+        if (accountId != -1) {
+            return Account.restoreAccountWithId(context, accountId);
+        }
+        return null;
+    }
+
+    /**
+     * @return true if an {@code accountId} is assigned to any existing account.
+     */
+    public static boolean isValidId(Context context, long accountId) {
+        return null != Utility.getFirstRowLong(context, CONTENT_URI, ID_PROJECTION,
+                ID_SELECTION, new String[] {Long.toString(accountId)}, null,
+                ID_PROJECTION_COLUMN);
+    }
+
+    /**
+     * Check a single account for security hold status.
+     */
+    public static boolean isSecurityHold(Context context, long accountId) {
+        return (Utility.getFirstRowLong(context,
+                ContentUris.withAppendedId(Account.CONTENT_URI, accountId),
+                ACCOUNT_FLAGS_PROJECTION, null, null, null, ACCOUNT_FLAGS_COLUMN_FLAGS, 0L)
+                & Account.FLAGS_SECURITY_HOLD) != 0;
+    }
+
+    /**
+     * @return id of the "inbox" mailbox, or -1 if not found.
+     */
+    public static long getInboxId(Context context, long accountId) {
+        return Utility.getFirstRowLong(context, Mailbox.CONTENT_URI, ID_PROJECTION,
+                FIND_INBOX_SELECTION, new String[] {Long.toString(accountId)}, null,
+                ID_PROJECTION_COLUMN, -1L);
+    }
+
+    /**
+     * Clear all account hold flags that are set.
+     *
+     * (This will trigger watchers, and in particular will cause EAS to try and resync the
+     * account(s).)
+     */
+    public static void clearSecurityHoldOnAllAccounts(Context context) {
+        ContentResolver resolver = context.getContentResolver();
+        Cursor c = resolver.query(Account.CONTENT_URI, ACCOUNT_FLAGS_PROJECTION,
+                SECURITY_NONZERO_SELECTION, null, null);
+        try {
+            while (c.moveToNext()) {
+                int flags = c.getInt(ACCOUNT_FLAGS_COLUMN_FLAGS);
+
+                if (0 != (flags & FLAGS_SECURITY_HOLD)) {
+                    ContentValues cv = new ContentValues();
+                    cv.put(AccountColumns.FLAGS, flags & ~FLAGS_SECURITY_HOLD);
+                    long accountId = c.getLong(ACCOUNT_FLAGS_COLUMN_ID);
+                    Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, accountId);
+                    resolver.update(uri, cv, null, null);
+                }
+            }
+        } finally {
+            c.close();
+        }
+    }
+
+    /**
+     * Override update to enforce a single default account, and do it atomically
+     */
+    @Override
+    public int update(Context context, ContentValues cv) {
+        if (mPolicy != null && mPolicyKey <= 0) {
+            // If a policy is set and there's no policy, link it to the account
+            Policy.setAccountPolicy(context, this, mPolicy, null);
+        }
+        if (cv.containsKey(AccountColumns.IS_DEFAULT) &&
+                cv.getAsBoolean(AccountColumns.IS_DEFAULT)) {
+            ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
+            ContentValues cv1 = new ContentValues();
+            cv1.put(AccountColumns.IS_DEFAULT, false);
+            // Clear the default flag in all accounts
+            ops.add(ContentProviderOperation.newUpdate(CONTENT_URI).withValues(cv1).build());
+            // Update this account
+            ops.add(ContentProviderOperation
+                    .newUpdate(ContentUris.withAppendedId(CONTENT_URI, mId))
+                    .withValues(cv).build());
+            try {
+                context.getContentResolver().applyBatch(AUTHORITY, ops);
+                return 1;
+            } catch (RemoteException e) {
+                // There is nothing to be done here; fail by returning 0
+            } catch (OperationApplicationException e) {
+                // There is nothing to be done here; fail by returning 0
+            }
+            return 0;
+        }
+        return super.update(context, cv);
+    }
+
+    /*
+     * Override this so that we can store the HostAuth's first and link them to the Account
+     * (non-Javadoc)
+     * @see com.android.email.provider.EmailContent#save(android.content.Context)
+     */
+    @Override
+    public Uri save(Context context) {
+        if (isSaved()) {
+            throw new UnsupportedOperationException();
+        }
+        // This logic is in place so I can (a) short circuit the expensive stuff when
+        // possible, and (b) override (and throw) if anyone tries to call save() or update()
+        // directly for Account, which are unsupported.
+        if (mHostAuthRecv == null && mHostAuthSend == null && mIsDefault == false &&
+                mPolicy != null) {
+            return super.save(context);
+        }
+
+        int index = 0;
+        int recvIndex = -1;
+        int sendIndex = -1;
+        int policyIndex = -1;
+
+        // Create operations for saving the send and recv hostAuths
+        // Also, remember which operation in the array they represent
+        ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
+        if (mHostAuthRecv != null) {
+            recvIndex = index++;
+            ops.add(ContentProviderOperation.newInsert(mHostAuthRecv.mBaseUri)
+                    .withValues(mHostAuthRecv.toContentValues())
+                    .build());
+        }
+        if (mHostAuthSend != null) {
+            sendIndex = index++;
+            ops.add(ContentProviderOperation.newInsert(mHostAuthSend.mBaseUri)
+                    .withValues(mHostAuthSend.toContentValues())
+                    .build());
+        }
+        if (mPolicy != null) {
+            policyIndex = index++;
+            ops.add(ContentProviderOperation.newInsert(mPolicy.mBaseUri)
+                    .withValues(mPolicy.toContentValues())
+                    .build());
+        }
+
+        // Create operations for making this the only default account
+        // Note, these are always updates because they change existing accounts
+        if (mIsDefault) {
+            index++;
+            ContentValues cv1 = new ContentValues();
+            cv1.put(AccountColumns.IS_DEFAULT, 0);
+            ops.add(ContentProviderOperation.newUpdate(CONTENT_URI).withValues(cv1).build());
+        }
+
+        // Now do the Account
+        ContentValues cv = null;
+        if (recvIndex >= 0 || sendIndex >= 0) {
+            cv = new ContentValues();
+            if (recvIndex >= 0) {
+                cv.put(Account.HOST_AUTH_KEY_RECV, recvIndex);
+            }
+            if (sendIndex >= 0) {
+                cv.put(Account.HOST_AUTH_KEY_SEND, sendIndex);
+            }
+            if (policyIndex >= 0) {
+                cv.put(Account.POLICY_KEY, policyIndex);
+            }
+        }
+
+        ContentProviderOperation.Builder b = ContentProviderOperation.newInsert(mBaseUri);
+        b.withValues(toContentValues());
+        if (cv != null) {
+            b.withValueBackReferences(cv);
+        }
+        ops.add(b.build());
+
+        try {
+            ContentProviderResult[] results =
+                context.getContentResolver().applyBatch(AUTHORITY, ops);
+            // If saving, set the mId's of the various saved objects
+            if (recvIndex >= 0) {
+                long newId = getId(results[recvIndex].uri);
+                mHostAuthKeyRecv = newId;
+                mHostAuthRecv.mId = newId;
+            }
+            if (sendIndex >= 0) {
+                long newId = getId(results[sendIndex].uri);
+                mHostAuthKeySend = newId;
+                mHostAuthSend.mId = newId;
+            }
+            if (policyIndex >= 0) {
+                long newId = getId(results[policyIndex].uri);
+                mPolicyKey = newId;
+                mPolicy.mId = newId;
+            }
+            Uri u = results[index].uri;
+            mId = getId(u);
+            return u;
+        } catch (RemoteException e) {
+            // There is nothing to be done here; fail by returning null
+        } catch (OperationApplicationException e) {
+            // There is nothing to be done here; fail by returning null
+        }
+        return null;
+    }
+
+    @Override
+    public ContentValues toContentValues() {
+        ContentValues values = new ContentValues();
+        values.put(AccountColumns.DISPLAY_NAME, mDisplayName);
+        values.put(AccountColumns.EMAIL_ADDRESS, mEmailAddress);
+        values.put(AccountColumns.SYNC_KEY, mSyncKey);
+        values.put(AccountColumns.SYNC_LOOKBACK, mSyncLookback);
+        values.put(AccountColumns.SYNC_INTERVAL, mSyncInterval);
+        values.put(AccountColumns.HOST_AUTH_KEY_RECV, mHostAuthKeyRecv);
+        values.put(AccountColumns.HOST_AUTH_KEY_SEND, mHostAuthKeySend);
+        values.put(AccountColumns.FLAGS, mFlags);
+        values.put(AccountColumns.IS_DEFAULT, mIsDefault);
+        values.put(AccountColumns.COMPATIBILITY_UUID, mCompatibilityUuid);
+        values.put(AccountColumns.SENDER_NAME, mSenderName);
+        values.put(AccountColumns.RINGTONE_URI, mRingtoneUri);
+        values.put(AccountColumns.PROTOCOL_VERSION, mProtocolVersion);
+        values.put(AccountColumns.NEW_MESSAGE_COUNT, mNewMessageCount);
+        values.put(AccountColumns.SECURITY_SYNC_KEY, mSecuritySyncKey);
+        values.put(AccountColumns.SIGNATURE, mSignature);
+        values.put(AccountColumns.POLICY_KEY, mPolicyKey);
+        return values;
+    }
+
+    /**
+     * Supports Parcelable
+     */
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    /**
+     * Supports Parcelable
+     */
+    public static final Parcelable.Creator<Account> CREATOR
+            = new Parcelable.Creator<Account>() {
+        @Override
+        public Account createFromParcel(Parcel in) {
+            return new Account(in);
+        }
+
+        @Override
+        public Account[] newArray(int size) {
+            return new Account[size];
+        }
+    };
+
+    /**
+     * Supports Parcelable
+     */
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        // mBaseUri is not parceled
+        dest.writeLong(mId);
+        dest.writeString(mDisplayName);
+        dest.writeString(mEmailAddress);
+        dest.writeString(mSyncKey);
+        dest.writeInt(mSyncLookback);
+        dest.writeInt(mSyncInterval);
+        dest.writeLong(mHostAuthKeyRecv);
+        dest.writeLong(mHostAuthKeySend);
+        dest.writeInt(mFlags);
+        dest.writeByte(mIsDefault ? (byte)1 : (byte)0);
+        dest.writeString(mCompatibilityUuid);
+        dest.writeString(mSenderName);
+        dest.writeString(mRingtoneUri);
+        dest.writeString(mProtocolVersion);
+        dest.writeInt(mNewMessageCount);
+        dest.writeString(mSecuritySyncKey);
+        dest.writeString(mSignature);
+        dest.writeLong(mPolicyKey);
+
+        if (mHostAuthRecv != null) {
+            dest.writeByte((byte)1);
+            mHostAuthRecv.writeToParcel(dest, flags);
+        } else {
+            dest.writeByte((byte)0);
+        }
+
+        if (mHostAuthSend != null) {
+            dest.writeByte((byte)1);
+            mHostAuthSend.writeToParcel(dest, flags);
+        } else {
+            dest.writeByte((byte)0);
+        }
+    }
+
+    /**
+     * Supports Parcelable
+     */
+    public Account(Parcel in) {
+        mBaseUri = Account.CONTENT_URI;
+        mId = in.readLong();
+        mDisplayName = in.readString();
+        mEmailAddress = in.readString();
+        mSyncKey = in.readString();
+        mSyncLookback = in.readInt();
+        mSyncInterval = in.readInt();
+        mHostAuthKeyRecv = in.readLong();
+        mHostAuthKeySend = in.readLong();
+        mFlags = in.readInt();
+        mIsDefault = in.readByte() == 1;
+        mCompatibilityUuid = in.readString();
+        mSenderName = in.readString();
+        mRingtoneUri = in.readString();
+        mProtocolVersion = in.readString();
+        mNewMessageCount = in.readInt();
+        mSecuritySyncKey = in.readString();
+        mSignature = in.readString();
+        mPolicyKey = in.readLong();
+
+        mHostAuthRecv = null;
+        if (in.readByte() == 1) {
+            mHostAuthRecv = new HostAuth(in);
+        }
+
+        mHostAuthSend = null;
+        if (in.readByte() == 1) {
+            mHostAuthSend = new HostAuth(in);
+        }
+    }
+
+    /**
+     * For debugger support only - DO NOT use for code.
+     */
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder('[');
+        if (mHostAuthRecv != null && mHostAuthRecv.mProtocol != null) {
+            sb.append(mHostAuthRecv.mProtocol);
+            sb.append(':');
+        }
+        if (mDisplayName != null)   sb.append(mDisplayName);
+        sb.append(':');
+        if (mEmailAddress != null)  sb.append(mEmailAddress);
+        sb.append(':');
+        if (mSenderName != null)    sb.append(mSenderName);
+        sb.append(']');
+        return sb.toString();
+    }
+
+}
\ No newline at end of file
diff --git a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
index 77d8067..670ec1f 100644
--- a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
+++ b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
@@ -16,9 +16,6 @@
 
 package com.android.emailcommon.provider;
 
-import com.android.emailcommon.utility.TextUtilities;
-import com.android.emailcommon.utility.Utility;
-
 import android.content.ContentProviderOperation;
 import android.content.ContentProviderResult;
 import android.content.ContentResolver;
@@ -33,10 +30,11 @@
 import android.os.Parcelable;
 import android.os.RemoteException;
 
+import com.android.emailcommon.utility.TextUtilities;
+import com.android.emailcommon.utility.Utility;
+
 import java.io.File;
 import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
 
 
 /**
@@ -971,963 +969,6 @@
         }
     }
 
-    public interface AccountColumns {
-        public static final String ID = "_id";
-        // The display name of the account (user-settable)
-        public static final String DISPLAY_NAME = "displayName";
-        // The email address corresponding to this account
-        public static final String EMAIL_ADDRESS = "emailAddress";
-        // A server-based sync key on an account-wide basis (EAS needs this)
-        public static final String SYNC_KEY = "syncKey";
-        // The default sync lookback period for this account
-        public static final String SYNC_LOOKBACK = "syncLookback";
-        // The default sync frequency for this account, in minutes
-        public static final String SYNC_INTERVAL = "syncInterval";
-        // A foreign key into the account manager, having host, login, password, port, and ssl flags
-        public static final String HOST_AUTH_KEY_RECV = "hostAuthKeyRecv";
-        // (optional) A foreign key into the account manager, having host, login, password, port,
-        // and ssl flags
-        public static final String HOST_AUTH_KEY_SEND = "hostAuthKeySend";
-        // Flags
-        public static final String FLAGS = "flags";
-        // Default account
-        public static final String IS_DEFAULT = "isDefault";
-        // Old-Style UUID for compatibility with previous versions
-        public static final String COMPATIBILITY_UUID = "compatibilityUuid";
-        // User name (for outgoing messages)
-        public static final String SENDER_NAME = "senderName";
-        // Ringtone
-        public static final String RINGTONE_URI = "ringtoneUri";
-        // Protocol version (arbitrary string, used by EAS currently)
-        public static final String PROTOCOL_VERSION = "protocolVersion";
-        // The number of new messages (reported by the sync/download engines
-        public static final String NEW_MESSAGE_COUNT = "newMessageCount";
-        // Legacy flags defining security (provisioning) requirements of this account; this
-        // information is now found in the Policy table; POLICY_KEY (below) is the foreign key
-        @Deprecated
-        public static final String SECURITY_FLAGS = "securityFlags";
-        // Server-based sync key for the security policies currently enforced
-        public static final String SECURITY_SYNC_KEY = "securitySyncKey";
-        // Signature to use with this account
-        public static final String SIGNATURE = "signature";
-        // A foreign key into the Policy table
-        public static final String POLICY_KEY = "policyKey";
-    }
-
-    public static final class Account extends EmailContent implements AccountColumns, Parcelable {
-        public static final String TABLE_NAME = "Account";
-        @SuppressWarnings("hiding")
-        public static final Uri CONTENT_URI = Uri.parse(EmailContent.CONTENT_URI + "/account");
-        public static final Uri ADD_TO_FIELD_URI =
-            Uri.parse(EmailContent.CONTENT_URI + "/accountIdAddToField");
-        public static final Uri RESET_NEW_MESSAGE_COUNT_URI =
-            Uri.parse(EmailContent.CONTENT_URI + "/resetNewMessageCount");
-        public static final Uri NOTIFIER_URI =
-            Uri.parse(EmailContent.CONTENT_NOTIFIER_URI + "/account");
-
-        // Define all pseudo account IDs here to avoid conflict with one another.
-        /**
-         * Pseudo account ID to represent a "combined account" that includes messages and mailboxes
-         * from all defined accounts.
-         *
-         * <em>IMPORTANT</em>: This must never be stored to the database.
-         */
-        public static final long ACCOUNT_ID_COMBINED_VIEW = 0x1000000000000000L;
-        /**
-         * Pseudo account ID to represent "no account". This may be used any time the account ID
-         * may not be known or when we want to specifically select "no" account.
-         *
-         * <em>IMPORTANT</em>: This must never be stored to the database.
-         */
-        public static final long NO_ACCOUNT = -1L;
-
-        // Whether or not the user has asked for notifications of new mail in this account
-        public final static int FLAGS_NOTIFY_NEW_MAIL = 1<<0;
-        // Whether or not the user has asked for vibration notifications with all new mail
-        public final static int FLAGS_VIBRATE_ALWAYS = 1<<1;
-        // Bit mask for the account's deletion policy (see DELETE_POLICY_x below)
-        public static final int FLAGS_DELETE_POLICY_MASK = 1<<2 | 1<<3;
-        public static final int FLAGS_DELETE_POLICY_SHIFT = 2;
-        // Whether the account is in the process of being created; any account reconciliation code
-        // MUST ignore accounts with this bit set; in addition, ContentObservers for this data
-        // SHOULD consider the state of this flag during operation
-        public static final int FLAGS_INCOMPLETE = 1<<4;
-        // Security hold is used when the device is not in compliance with security policies
-        // required by the server; in this state, the user MUST be alerted to the need to update
-        // security settings.  Sync adapters SHOULD NOT attempt to sync when this flag is set.
-        public static final int FLAGS_SECURITY_HOLD = 1<<5;
-        // Whether or not the user has asked for vibration notifications when the ringer is silent
-        public static final int FLAGS_VIBRATE_WHEN_SILENT = 1<<6;
-        // Whether the account supports "smart forward" (i.e. the server appends the original
-        // message along with any attachments to the outgoing message)
-        public static final int FLAGS_SUPPORTS_SMART_FORWARD = 1<<7;
-        // Whether the account should try to cache attachments in the background
-        public static final int FLAGS_BACKGROUND_ATTACHMENTS = 1<<8;
-        // Available to sync adapter
-        public static final int FLAGS_SYNC_ADAPTER = 1<<9;
-        // Sync disabled is a status commanded by the server; the sync adapter SHOULD NOT try to
-        // sync mailboxes in this account automatically.  A manual sync request to sync a mailbox
-        // with sync disabled SHOULD try to sync and report any failure result via the UI.
-        public static final int FLAGS_SYNC_DISABLED = 1<<10;
-
-        // Deletion policy (see FLAGS_DELETE_POLICY_MASK, above)
-        public static final int DELETE_POLICY_NEVER = 0;
-        public static final int DELETE_POLICY_7DAYS = 1<<0;        // not supported
-        public static final int DELETE_POLICY_ON_DELETE = 1<<1;
-
-        // Sentinel values for the mSyncInterval field of both Account records
-        public static final int CHECK_INTERVAL_NEVER = -1;
-        public static final int CHECK_INTERVAL_PUSH = -2;
-
-        public String mDisplayName;
-        public String mEmailAddress;
-        public String mSyncKey;
-        public int mSyncLookback;
-        public int mSyncInterval;
-        public long mHostAuthKeyRecv;
-        public long mHostAuthKeySend;
-        public int mFlags;
-        public boolean mIsDefault;          // note: callers should use getDefaultAccountId()
-        public String mCompatibilityUuid;
-        public String mSenderName;
-        public String mRingtoneUri;
-        public String mProtocolVersion;
-        public int mNewMessageCount;
-        public String mSecuritySyncKey;
-        public String mSignature;
-        public long mPolicyKey;
-
-        // Convenience for creating/working with an account
-        public transient HostAuth mHostAuthRecv;
-        public transient HostAuth mHostAuthSend;
-        public transient Policy mPolicy;
-        // Might hold the corresponding AccountManager account structure
-        public transient android.accounts.Account mAmAccount;
-
-        public static final int CONTENT_ID_COLUMN = 0;
-        public static final int CONTENT_DISPLAY_NAME_COLUMN = 1;
-        public static final int CONTENT_EMAIL_ADDRESS_COLUMN = 2;
-        public static final int CONTENT_SYNC_KEY_COLUMN = 3;
-        public static final int CONTENT_SYNC_LOOKBACK_COLUMN = 4;
-        public static final int CONTENT_SYNC_INTERVAL_COLUMN = 5;
-        public static final int CONTENT_HOST_AUTH_KEY_RECV_COLUMN = 6;
-        public static final int CONTENT_HOST_AUTH_KEY_SEND_COLUMN = 7;
-        public static final int CONTENT_FLAGS_COLUMN = 8;
-        public static final int CONTENT_IS_DEFAULT_COLUMN = 9;
-        public static final int CONTENT_COMPATIBILITY_UUID_COLUMN = 10;
-        public static final int CONTENT_SENDER_NAME_COLUMN = 11;
-        public static final int CONTENT_RINGTONE_URI_COLUMN = 12;
-        public static final int CONTENT_PROTOCOL_VERSION_COLUMN = 13;
-        public static final int CONTENT_NEW_MESSAGE_COUNT_COLUMN = 14;
-        public static final int CONTENT_SECURITY_SYNC_KEY_COLUMN = 15;
-        public static final int CONTENT_SIGNATURE_COLUMN = 16;
-        public static final int CONTENT_POLICY_KEY = 17;
-
-        public static final String[] CONTENT_PROJECTION = new String[] {
-            RECORD_ID, AccountColumns.DISPLAY_NAME,
-            AccountColumns.EMAIL_ADDRESS, AccountColumns.SYNC_KEY, AccountColumns.SYNC_LOOKBACK,
-            AccountColumns.SYNC_INTERVAL, AccountColumns.HOST_AUTH_KEY_RECV,
-            AccountColumns.HOST_AUTH_KEY_SEND, AccountColumns.FLAGS, AccountColumns.IS_DEFAULT,
-            AccountColumns.COMPATIBILITY_UUID, AccountColumns.SENDER_NAME,
-            AccountColumns.RINGTONE_URI, AccountColumns.PROTOCOL_VERSION,
-            AccountColumns.NEW_MESSAGE_COUNT, AccountColumns.SECURITY_SYNC_KEY,
-            AccountColumns.SIGNATURE, AccountColumns.POLICY_KEY
-        };
-
-        public static final int CONTENT_MAILBOX_TYPE_COLUMN = 1;
-
-        /**
-         * This projection is for listing account id's only
-         */
-        public static final String[] ID_TYPE_PROJECTION = new String[] {
-            RECORD_ID, MailboxColumns.TYPE
-        };
-
-        public static final int ACCOUNT_FLAGS_COLUMN_ID = 0;
-        public static final int ACCOUNT_FLAGS_COLUMN_FLAGS = 1;
-        public static final String[] ACCOUNT_FLAGS_PROJECTION = new String[] {
-                AccountColumns.ID, AccountColumns.FLAGS};
-
-        public static final String MAILBOX_SELECTION =
-            MessageColumns.MAILBOX_KEY + " =?";
-
-        public static final String UNREAD_COUNT_SELECTION =
-            MessageColumns.MAILBOX_KEY + " =? and " + MessageColumns.FLAG_READ + "= 0";
-
-        private static final String UUID_SELECTION = AccountColumns.COMPATIBILITY_UUID + " =?";
-
-        public static final String SECURITY_NONZERO_SELECTION =
-            Account.POLICY_KEY + " IS NOT NULL AND " + Account.POLICY_KEY + "!=0";
-
-        private static final String FIND_INBOX_SELECTION =
-                MailboxColumns.TYPE + " = " + Mailbox.TYPE_INBOX +
-                " AND " + MailboxColumns.ACCOUNT_KEY + " =?";
-
-        /**
-         * This projection is for searching for the default account
-         */
-        private static final String[] DEFAULT_ID_PROJECTION = new String[] {
-            RECORD_ID, IS_DEFAULT
-        };
-
-        /**
-         * no public constructor since this is a utility class
-         */
-        public Account() {
-            mBaseUri = CONTENT_URI;
-
-            // other defaults (policy)
-            mRingtoneUri = "content://settings/system/notification_sound";
-            mSyncInterval = -1;
-            mSyncLookback = -1;
-            mFlags = FLAGS_NOTIFY_NEW_MAIL;
-            mCompatibilityUuid = UUID.randomUUID().toString();
-        }
-
-        public static Account restoreAccountWithId(Context context, long id) {
-            return EmailContent.restoreContentWithId(context, Account.class,
-                    Account.CONTENT_URI, Account.CONTENT_PROJECTION, id);
-        }
-
-        /**
-         * Returns {@code true} if the given account ID is a "normal" account. Normal accounts
-         * always have an ID greater than {@code 0} and not equal to any pseudo account IDs
-         * (such as {@link #ACCOUNT_ID_COMBINED_VIEW})
-         */
-        public static boolean isNormalAccount(long accountId) {
-            return (accountId > 0L) && (accountId != ACCOUNT_ID_COMBINED_VIEW);
-        }
-
-        /**
-         * Refresh an account that has already been loaded.  This is slightly less expensive
-         * that generating a brand-new account object.
-         */
-        public void refresh(Context context) {
-            Cursor c = context.getContentResolver().query(getUri(), Account.CONTENT_PROJECTION,
-                    null, null, null);
-            try {
-                c.moveToFirst();
-                restore(c);
-            } finally {
-                if (c != null) {
-                    c.close();
-                }
-            }
-        }
-
-        @Override
-        public void restore(Cursor cursor) {
-            mId = cursor.getLong(CONTENT_ID_COLUMN);
-            mBaseUri = CONTENT_URI;
-            mDisplayName = cursor.getString(CONTENT_DISPLAY_NAME_COLUMN);
-            mEmailAddress = cursor.getString(CONTENT_EMAIL_ADDRESS_COLUMN);
-            mSyncKey = cursor.getString(CONTENT_SYNC_KEY_COLUMN);
-            mSyncLookback = cursor.getInt(CONTENT_SYNC_LOOKBACK_COLUMN);
-            mSyncInterval = cursor.getInt(CONTENT_SYNC_INTERVAL_COLUMN);
-            mHostAuthKeyRecv = cursor.getLong(CONTENT_HOST_AUTH_KEY_RECV_COLUMN);
-            mHostAuthKeySend = cursor.getLong(CONTENT_HOST_AUTH_KEY_SEND_COLUMN);
-            mFlags = cursor.getInt(CONTENT_FLAGS_COLUMN);
-            mIsDefault = cursor.getInt(CONTENT_IS_DEFAULT_COLUMN) == 1;
-            mCompatibilityUuid = cursor.getString(CONTENT_COMPATIBILITY_UUID_COLUMN);
-            mSenderName = cursor.getString(CONTENT_SENDER_NAME_COLUMN);
-            mRingtoneUri = cursor.getString(CONTENT_RINGTONE_URI_COLUMN);
-            mProtocolVersion = cursor.getString(CONTENT_PROTOCOL_VERSION_COLUMN);
-            mNewMessageCount = cursor.getInt(CONTENT_NEW_MESSAGE_COUNT_COLUMN);
-            mSecuritySyncKey = cursor.getString(CONTENT_SECURITY_SYNC_KEY_COLUMN);
-            mSignature = cursor.getString(CONTENT_SIGNATURE_COLUMN);
-            mPolicyKey = cursor.getLong(CONTENT_POLICY_KEY);
-        }
-
-        private long getId(Uri u) {
-            return Long.parseLong(u.getPathSegments().get(1));
-        }
-
-        /**
-         * @return the user-visible name for the account
-         */
-        public String getDisplayName() {
-            return mDisplayName;
-        }
-
-        /**
-         * Set the description.  Be sure to call save() to commit to database.
-         * @param description the new description
-         */
-        public void setDisplayName(String description) {
-            mDisplayName = description;
-        }
-
-        /**
-         * @return the email address for this account
-         */
-        public String getEmailAddress() {
-            return mEmailAddress;
-        }
-
-        /**
-         * Set the Email address for this account.  Be sure to call save() to commit to database.
-         * @param emailAddress the new email address for this account
-         */
-        public void setEmailAddress(String emailAddress) {
-            mEmailAddress = emailAddress;
-        }
-
-        /**
-         * @return the sender's name for this account
-         */
-        public String getSenderName() {
-            return mSenderName;
-        }
-
-        /**
-         * Set the sender's name.  Be sure to call save() to commit to database.
-         * @param name the new sender name
-         */
-        public void setSenderName(String name) {
-            mSenderName = name;
-        }
-
-        public String getSignature() {
-            return mSignature;
-        }
-
-        public void setSignature(String signature) {
-            mSignature = signature;
-        }
-
-        /**
-         * @return the minutes per check (for polling)
-         * TODO define sentinel values for "never", "push", etc.  See Account.java
-         */
-        public int getSyncInterval() {
-            return mSyncInterval;
-        }
-
-        /**
-         * Set the minutes per check (for polling).  Be sure to call save() to commit to database.
-         * TODO define sentinel values for "never", "push", etc.  See Account.java
-         * @param minutes the number of minutes between polling checks
-         */
-        public void setSyncInterval(int minutes) {
-            mSyncInterval = minutes;
-        }
-
-        /**
-         * @return One of the {@code Account.SYNC_WINDOW_*} constants that represents the sync
-         *     lookback window.
-         * TODO define sentinel values for "all", "1 month", etc.  See Account.java
-         */
-        public int getSyncLookback() {
-            return mSyncLookback;
-        }
-
-        /**
-         * Set the sync lookback window.  Be sure to call save() to commit to database.
-         * TODO define sentinel values for "all", "1 month", etc.  See Account.java
-         * @param value One of the {@code Account.SYNC_WINDOW_*} constants
-         */
-        public void setSyncLookback(int value) {
-            mSyncLookback = value;
-        }
-
-        /**
-         * @return the flags for this account
-         * @see #FLAGS_NOTIFY_NEW_MAIL
-         * @see #FLAGS_VIBRATE_ALWAYS
-         * @see #FLAGS_VIBRATE_WHEN_SILENT
-         */
-        public int getFlags() {
-            return mFlags;
-        }
-
-        /**
-         * Set the flags for this account
-         * @see #FLAGS_NOTIFY_NEW_MAIL
-         * @see #FLAGS_VIBRATE_ALWAYS
-         * @see #FLAGS_VIBRATE_WHEN_SILENT
-         * @param newFlags the new value for the flags
-         */
-        public void setFlags(int newFlags) {
-            mFlags = newFlags;
-        }
-
-        /**
-         * @return the ringtone Uri for this account
-         */
-        public String getRingtone() {
-            return mRingtoneUri;
-        }
-
-        /**
-         * Set the ringtone Uri for this account
-         * @param newUri the new URI string for the ringtone for this account
-         */
-        public void setRingtone(String newUri) {
-            mRingtoneUri = newUri;
-        }
-
-        /**
-         * Set the "delete policy" as a simple 0,1,2 value set.
-         * @param newPolicy the new delete policy
-         */
-        public void setDeletePolicy(int newPolicy) {
-            mFlags &= ~FLAGS_DELETE_POLICY_MASK;
-            mFlags |= (newPolicy << FLAGS_DELETE_POLICY_SHIFT) & FLAGS_DELETE_POLICY_MASK;
-        }
-
-        /**
-         * Return the "delete policy" as a simple 0,1,2 value set.
-         * @return the current delete policy
-         */
-        public int getDeletePolicy() {
-            return (mFlags & FLAGS_DELETE_POLICY_MASK) >> FLAGS_DELETE_POLICY_SHIFT;
-        }
-
-        /**
-         * Return the Uuid associated with this account.  This is primarily for compatibility
-         * with accounts set up by previous versions, because there are externals references
-         * to the Uuid (e.g. desktop shortcuts).
-         */
-        public String getUuid() {
-            return mCompatibilityUuid;
-        }
-
-        public HostAuth getOrCreateHostAuthSend(Context context) {
-            if (mHostAuthSend == null) {
-                if (mHostAuthKeySend != 0) {
-                    mHostAuthSend = HostAuth.restoreHostAuthWithId(context, mHostAuthKeySend);
-                } else {
-                    mHostAuthSend = new HostAuth();
-                }
-            }
-            return mHostAuthSend;
-        }
-
-        public HostAuth getOrCreateHostAuthRecv(Context context) {
-            if (mHostAuthRecv == null) {
-                if (mHostAuthKeyRecv != 0) {
-                    mHostAuthRecv = HostAuth.restoreHostAuthWithId(context, mHostAuthKeyRecv);
-                } else {
-                    mHostAuthRecv = new HostAuth();
-                }
-            }
-            return mHostAuthRecv;
-        }
-
-        /**
-         * For compatibility while converting to provider model, generate a "local store URI"
-         *
-         * @return a string in the form of a Uri, as used by the other parts of the email app
-         */
-        public String getLocalStoreUri(Context context) {
-            return "local://localhost/" + context.getDatabasePath(getUuid() + ".db");
-        }
-
-        /**
-         * @return true if the instance is of an EAS account.
-         *
-         * NOTE This method accesses the DB if {@link #mHostAuthRecv} hasn't been restored yet.
-         * Use caution when you use this on the main thread.
-         */
-        public boolean isEasAccount(Context context) {
-            return "eas".equals(getProtocol(context));
-        }
-
-        /**
-         * @return true if the account supports "move messages".
-         */
-        public static boolean supportsMoveMessages(Context context, long accountId) {
-            String protocol = getProtocol(context, accountId);
-            return "eas".equals(protocol) || "imap".equals(protocol);
-        }
-
-        /**
-         * Set the account to be the default account.  If this is set to "true", when the account
-         * is saved, all other accounts will have the same value set to "false".
-         * @param newDefaultState the new default state - if true, others will be cleared.
-         */
-        public void setDefaultAccount(boolean newDefaultState) {
-            mIsDefault = newDefaultState;
-        }
-
-        /**
-         * Helper method for finding the default account.
-         */
-        static private long getDefaultAccountWhere(Context context, String where) {
-            return Utility.getFirstRowLong(context, CONTENT_URI,
-                    DEFAULT_ID_PROJECTION,
-                    where, null, null, 0, Long.valueOf(-1));
-        }
-
-        /**
-         * @return {@link Uri} to this {@link Account} in the
-         * {@code content://com.android.email.provider/account/UUID} format, which is safe to use
-         * for desktop shortcuts.
-         *
-         * <p>We don't want to store _id in shortcuts, because
-         * {@link com.android.email.provider.AccountBackupRestore} won't preserve it.
-         */
-        public Uri getShortcutSafeUri() {
-            return getShortcutSafeUriFromUuid(mCompatibilityUuid);
-        }
-
-        /**
-         * @return {@link Uri} to an {@link Account} with a {@code uuid}.
-         */
-        public static Uri getShortcutSafeUriFromUuid(String uuid) {
-            return CONTENT_URI.buildUpon().appendEncodedPath(uuid).build();
-        }
-
-        /**
-         * Parse {@link Uri} in the {@code content://com.android.email.provider/account/ID} format
-         * where ID = account id (used on Eclair, Android 2.0-2.1) or UUID, and return _id of
-         * the {@link Account} associated with it.
-         *
-         * @param context context to access DB
-         * @param uri URI of interest
-         * @return _id of the {@link Account} associated with ID, or -1 if none found.
-         */
-        public static long getAccountIdFromShortcutSafeUri(Context context, Uri uri) {
-            // Make sure the URI is in the correct format.
-            if (!"content".equals(uri.getScheme())
-                    || !AUTHORITY.equals(uri.getAuthority())) {
-                return -1;
-            }
-
-            final List<String> ps = uri.getPathSegments();
-            if (ps.size() != 2 || !"account".equals(ps.get(0))) {
-                return -1;
-            }
-
-            // Now get the ID part.
-            final String id = ps.get(1);
-
-            // First, see if ID can be parsed as long.  (Eclair-style)
-            // (UUIDs have '-' in them, so they are always non-parsable.)
-            try {
-                return Long.parseLong(id);
-            } catch (NumberFormatException ok) {
-                // OK, it's not a long.  Continue...
-            }
-
-            // Now id is a UUId.
-            return getAccountIdFromUuid(context, id);
-        }
-
-        /**
-         * @return ID of the account with the given UUID.
-         */
-        public static long getAccountIdFromUuid(Context context, String uuid) {
-            return Utility.getFirstRowLong(context,
-                    CONTENT_URI, ID_PROJECTION,
-                    UUID_SELECTION, new String[] {uuid}, null, 0, -1L);
-        }
-
-        /**
-         * Return the id of the default account.  If one hasn't been explicitly specified, return
-         * the first one in the database.  For any account saved in the DB, this must be used
-         * to check for the default account - the mIsDefault field is set lazily and may be
-         * incorrect.
-         * @param context the caller's context
-         * @return the id of the default account, or -1 if there are no accounts
-         */
-        static public long getDefaultAccountId(Context context) {
-            long id = getDefaultAccountWhere(context, AccountColumns.IS_DEFAULT + "=1");
-            if (id == -1) {
-                id = getDefaultAccountWhere(context, null);
-            }
-            return id;
-        }
-
-        /**
-         * Given an account id, return the account's protocol
-         * @param context the caller's context
-         * @param accountId the id of the account to be examined
-         * @return the account's protocol (or null if the Account or HostAuth do not exist)
-         */
-        public static String getProtocol(Context context, long accountId) {
-            Account account = Account.restoreAccountWithId(context, accountId);
-            if (account != null) {
-                return account.getProtocol(context);
-             }
-            return null;
-        }
-
-        /**
-         * Return the account's protocol
-         * @param context the caller's context
-         * @return the account's protocol (or null if the HostAuth doesn't not exist)
-         */
-        public String getProtocol(Context context) {
-            HostAuth hostAuth = HostAuth.restoreHostAuthWithId(context, mHostAuthKeyRecv);
-            if (hostAuth != null) {
-                return hostAuth.mProtocol;
-            }
-            return null;
-        }
-
-        /**
-         * Return the account ID for a message with a given id
-         *
-         * @param context the caller's context
-         * @param messageId the id of the message
-         * @return the account ID, or -1 if the account doesn't exist
-         */
-        public static long getAccountIdForMessageId(Context context, long messageId) {
-            return Message.getKeyColumnLong(context, messageId, MessageColumns.ACCOUNT_KEY);
-        }
-
-        /**
-         * Return the account for a message with a given id
-         * @param context the caller's context
-         * @param messageId the id of the message
-         * @return the account, or null if the account doesn't exist
-         */
-        public static Account getAccountForMessageId(Context context, long messageId) {
-            long accountId = getAccountIdForMessageId(context, messageId);
-            if (accountId != -1) {
-                return Account.restoreAccountWithId(context, accountId);
-            }
-            return null;
-        }
-
-        /**
-         * @return true if an {@code accountId} is assigned to any existing account.
-         */
-        public static boolean isValidId(Context context, long accountId) {
-            return null != Utility.getFirstRowLong(context, CONTENT_URI, ID_PROJECTION,
-                    ID_SELECTION, new String[] {Long.toString(accountId)}, null,
-                    ID_PROJECTION_COLUMN);
-        }
-
-        /**
-         * Check a single account for security hold status.
-         */
-        public static boolean isSecurityHold(Context context, long accountId) {
-            return (Utility.getFirstRowLong(context,
-                    ContentUris.withAppendedId(Account.CONTENT_URI, accountId),
-                    ACCOUNT_FLAGS_PROJECTION, null, null, null, ACCOUNT_FLAGS_COLUMN_FLAGS, 0L)
-                    & Account.FLAGS_SECURITY_HOLD) != 0;
-        }
-
-        /**
-         * @return id of the "inbox" mailbox, or -1 if not found.
-         */
-        public static long getInboxId(Context context, long accountId) {
-            return Utility.getFirstRowLong(context, Mailbox.CONTENT_URI, ID_PROJECTION,
-                    FIND_INBOX_SELECTION, new String[] {Long.toString(accountId)}, null,
-                    ID_PROJECTION_COLUMN, -1L);
-        }
-
-        /**
-         * Clear all account hold flags that are set.
-         *
-         * (This will trigger watchers, and in particular will cause EAS to try and resync the
-         * account(s).)
-         */
-        public static void clearSecurityHoldOnAllAccounts(Context context) {
-            ContentResolver resolver = context.getContentResolver();
-            Cursor c = resolver.query(Account.CONTENT_URI, ACCOUNT_FLAGS_PROJECTION,
-                    SECURITY_NONZERO_SELECTION, null, null);
-            try {
-                while (c.moveToNext()) {
-                    int flags = c.getInt(ACCOUNT_FLAGS_COLUMN_FLAGS);
-
-                    if (0 != (flags & FLAGS_SECURITY_HOLD)) {
-                        ContentValues cv = new ContentValues();
-                        cv.put(AccountColumns.FLAGS, flags & ~FLAGS_SECURITY_HOLD);
-                        long accountId = c.getLong(ACCOUNT_FLAGS_COLUMN_ID);
-                        Uri uri = ContentUris.withAppendedId(Account.CONTENT_URI, accountId);
-                        resolver.update(uri, cv, null, null);
-                    }
-                }
-            } finally {
-                c.close();
-            }
-        }
-
-        /**
-         * Override update to enforce a single default account, and do it atomically
-         */
-        @Override
-        public int update(Context context, ContentValues cv) {
-            if (mPolicy != null && mPolicyKey <= 0) {
-                // If a policy is set and there's no policy, link it to the account
-                Policy.setAccountPolicy(context, this, mPolicy, null);
-            }
-            if (cv.containsKey(AccountColumns.IS_DEFAULT) &&
-                    cv.getAsBoolean(AccountColumns.IS_DEFAULT)) {
-                ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
-                ContentValues cv1 = new ContentValues();
-                cv1.put(AccountColumns.IS_DEFAULT, false);
-                // Clear the default flag in all accounts
-                ops.add(ContentProviderOperation.newUpdate(CONTENT_URI).withValues(cv1).build());
-                // Update this account
-                ops.add(ContentProviderOperation
-                        .newUpdate(ContentUris.withAppendedId(CONTENT_URI, mId))
-                        .withValues(cv).build());
-                try {
-                    context.getContentResolver().applyBatch(AUTHORITY, ops);
-                    return 1;
-                } catch (RemoteException e) {
-                    // There is nothing to be done here; fail by returning 0
-                } catch (OperationApplicationException e) {
-                    // There is nothing to be done here; fail by returning 0
-                }
-                return 0;
-            }
-            return super.update(context, cv);
-        }
-
-        /*
-         * Override this so that we can store the HostAuth's first and link them to the Account
-         * (non-Javadoc)
-         * @see com.android.email.provider.EmailContent#save(android.content.Context)
-         */
-        @Override
-        public Uri save(Context context) {
-            if (isSaved()) {
-                throw new UnsupportedOperationException();
-            }
-            // This logic is in place so I can (a) short circuit the expensive stuff when
-            // possible, and (b) override (and throw) if anyone tries to call save() or update()
-            // directly for Account, which are unsupported.
-            if (mHostAuthRecv == null && mHostAuthSend == null && mIsDefault == false &&
-                    mPolicy != null) {
-                return super.save(context);
-            }
-
-            int index = 0;
-            int recvIndex = -1;
-            int sendIndex = -1;
-            int policyIndex = -1;
-
-            // Create operations for saving the send and recv hostAuths
-            // Also, remember which operation in the array they represent
-            ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
-            if (mHostAuthRecv != null) {
-                recvIndex = index++;
-                ops.add(ContentProviderOperation.newInsert(mHostAuthRecv.mBaseUri)
-                        .withValues(mHostAuthRecv.toContentValues())
-                        .build());
-            }
-            if (mHostAuthSend != null) {
-                sendIndex = index++;
-                ops.add(ContentProviderOperation.newInsert(mHostAuthSend.mBaseUri)
-                        .withValues(mHostAuthSend.toContentValues())
-                        .build());
-            }
-            if (mPolicy != null) {
-                policyIndex = index++;
-                ops.add(ContentProviderOperation.newInsert(mPolicy.mBaseUri)
-                        .withValues(mPolicy.toContentValues())
-                        .build());
-            }
-
-            // Create operations for making this the only default account
-            // Note, these are always updates because they change existing accounts
-            if (mIsDefault) {
-                index++;
-                ContentValues cv1 = new ContentValues();
-                cv1.put(AccountColumns.IS_DEFAULT, 0);
-                ops.add(ContentProviderOperation.newUpdate(CONTENT_URI).withValues(cv1).build());
-            }
-
-            // Now do the Account
-            ContentValues cv = null;
-            if (recvIndex >= 0 || sendIndex >= 0) {
-                cv = new ContentValues();
-                if (recvIndex >= 0) {
-                    cv.put(Account.HOST_AUTH_KEY_RECV, recvIndex);
-                }
-                if (sendIndex >= 0) {
-                    cv.put(Account.HOST_AUTH_KEY_SEND, sendIndex);
-                }
-                if (policyIndex >= 0) {
-                    cv.put(Account.POLICY_KEY, policyIndex);
-                }
-            }
-
-            ContentProviderOperation.Builder b = ContentProviderOperation.newInsert(mBaseUri);
-            b.withValues(toContentValues());
-            if (cv != null) {
-                b.withValueBackReferences(cv);
-            }
-            ops.add(b.build());
-
-            try {
-                ContentProviderResult[] results =
-                    context.getContentResolver().applyBatch(AUTHORITY, ops);
-                // If saving, set the mId's of the various saved objects
-                if (recvIndex >= 0) {
-                    long newId = getId(results[recvIndex].uri);
-                    mHostAuthKeyRecv = newId;
-                    mHostAuthRecv.mId = newId;
-                }
-                if (sendIndex >= 0) {
-                    long newId = getId(results[sendIndex].uri);
-                    mHostAuthKeySend = newId;
-                    mHostAuthSend.mId = newId;
-                }
-                if (policyIndex >= 0) {
-                    long newId = getId(results[policyIndex].uri);
-                    mPolicyKey = newId;
-                    mPolicy.mId = newId;
-                }
-                Uri u = results[index].uri;
-                mId = getId(u);
-                return u;
-            } catch (RemoteException e) {
-                // There is nothing to be done here; fail by returning null
-            } catch (OperationApplicationException e) {
-                // There is nothing to be done here; fail by returning null
-            }
-            return null;
-        }
-
-        @Override
-        public ContentValues toContentValues() {
-            ContentValues values = new ContentValues();
-            values.put(AccountColumns.DISPLAY_NAME, mDisplayName);
-            values.put(AccountColumns.EMAIL_ADDRESS, mEmailAddress);
-            values.put(AccountColumns.SYNC_KEY, mSyncKey);
-            values.put(AccountColumns.SYNC_LOOKBACK, mSyncLookback);
-            values.put(AccountColumns.SYNC_INTERVAL, mSyncInterval);
-            values.put(AccountColumns.HOST_AUTH_KEY_RECV, mHostAuthKeyRecv);
-            values.put(AccountColumns.HOST_AUTH_KEY_SEND, mHostAuthKeySend);
-            values.put(AccountColumns.FLAGS, mFlags);
-            values.put(AccountColumns.IS_DEFAULT, mIsDefault);
-            values.put(AccountColumns.COMPATIBILITY_UUID, mCompatibilityUuid);
-            values.put(AccountColumns.SENDER_NAME, mSenderName);
-            values.put(AccountColumns.RINGTONE_URI, mRingtoneUri);
-            values.put(AccountColumns.PROTOCOL_VERSION, mProtocolVersion);
-            values.put(AccountColumns.NEW_MESSAGE_COUNT, mNewMessageCount);
-            values.put(AccountColumns.SECURITY_SYNC_KEY, mSecuritySyncKey);
-            values.put(AccountColumns.SIGNATURE, mSignature);
-            values.put(AccountColumns.POLICY_KEY, mPolicyKey);
-            return values;
-        }
-
-        /**
-         * Supports Parcelable
-         */
-        @Override
-        public int describeContents() {
-            return 0;
-        }
-
-        /**
-         * Supports Parcelable
-         */
-        public static final Parcelable.Creator<EmailContent.Account> CREATOR
-                = new Parcelable.Creator<EmailContent.Account>() {
-            @Override
-            public EmailContent.Account createFromParcel(Parcel in) {
-                return new EmailContent.Account(in);
-            }
-
-            @Override
-            public EmailContent.Account[] newArray(int size) {
-                return new EmailContent.Account[size];
-            }
-        };
-
-        /**
-         * Supports Parcelable
-         */
-        @Override
-        public void writeToParcel(Parcel dest, int flags) {
-            // mBaseUri is not parceled
-            dest.writeLong(mId);
-            dest.writeString(mDisplayName);
-            dest.writeString(mEmailAddress);
-            dest.writeString(mSyncKey);
-            dest.writeInt(mSyncLookback);
-            dest.writeInt(mSyncInterval);
-            dest.writeLong(mHostAuthKeyRecv);
-            dest.writeLong(mHostAuthKeySend);
-            dest.writeInt(mFlags);
-            dest.writeByte(mIsDefault ? (byte)1 : (byte)0);
-            dest.writeString(mCompatibilityUuid);
-            dest.writeString(mSenderName);
-            dest.writeString(mRingtoneUri);
-            dest.writeString(mProtocolVersion);
-            dest.writeInt(mNewMessageCount);
-            dest.writeString(mSecuritySyncKey);
-            dest.writeString(mSignature);
-            dest.writeLong(mPolicyKey);
-
-            if (mHostAuthRecv != null) {
-                dest.writeByte((byte)1);
-                mHostAuthRecv.writeToParcel(dest, flags);
-            } else {
-                dest.writeByte((byte)0);
-            }
-
-            if (mHostAuthSend != null) {
-                dest.writeByte((byte)1);
-                mHostAuthSend.writeToParcel(dest, flags);
-            } else {
-                dest.writeByte((byte)0);
-            }
-        }
-
-        /**
-         * Supports Parcelable
-         */
-        public Account(Parcel in) {
-            mBaseUri = EmailContent.Account.CONTENT_URI;
-            mId = in.readLong();
-            mDisplayName = in.readString();
-            mEmailAddress = in.readString();
-            mSyncKey = in.readString();
-            mSyncLookback = in.readInt();
-            mSyncInterval = in.readInt();
-            mHostAuthKeyRecv = in.readLong();
-            mHostAuthKeySend = in.readLong();
-            mFlags = in.readInt();
-            mIsDefault = in.readByte() == 1;
-            mCompatibilityUuid = in.readString();
-            mSenderName = in.readString();
-            mRingtoneUri = in.readString();
-            mProtocolVersion = in.readString();
-            mNewMessageCount = in.readInt();
-            mSecuritySyncKey = in.readString();
-            mSignature = in.readString();
-            mPolicyKey = in.readLong();
-
-            mHostAuthRecv = null;
-            if (in.readByte() == 1) {
-                mHostAuthRecv = new HostAuth(in);
-            }
-
-            mHostAuthSend = null;
-            if (in.readByte() == 1) {
-                mHostAuthSend = new HostAuth(in);
-            }
-        }
-
-        /**
-         * For debugger support only - DO NOT use for code.
-         */
-        @Override
-        public String toString() {
-            StringBuilder sb = new StringBuilder('[');
-            if (mHostAuthRecv != null && mHostAuthRecv.mProtocol != null) {
-                sb.append(mHostAuthRecv.mProtocol);
-                sb.append(':');
-            }
-            if (mDisplayName != null)   sb.append(mDisplayName);
-            sb.append(':');
-            if (mEmailAddress != null)  sb.append(mEmailAddress);
-            sb.append(':');
-            if (mSenderName != null)    sb.append(mSenderName);
-            sb.append(']');
-            return sb.toString();
-        }
-
-    }
-
     public interface AttachmentColumns {
         public static final String ID = "_id";
         // The display name of the attachment
@@ -2215,6 +1256,49 @@
         }
     }
 
+    public interface AccountColumns {
+        public static final String ID = "_id";
+        // The display name of the account (user-settable)
+        public static final String DISPLAY_NAME = "displayName";
+        // The email address corresponding to this account
+        public static final String EMAIL_ADDRESS = "emailAddress";
+        // A server-based sync key on an account-wide basis (EAS needs this)
+        public static final String SYNC_KEY = "syncKey";
+        // The default sync lookback period for this account
+        public static final String SYNC_LOOKBACK = "syncLookback";
+        // The default sync frequency for this account, in minutes
+        public static final String SYNC_INTERVAL = "syncInterval";
+        // A foreign key into the account manager, having host, login, password, port, and ssl flags
+        public static final String HOST_AUTH_KEY_RECV = "hostAuthKeyRecv";
+        // (optional) A foreign key into the account manager, having host, login, password, port,
+        // and ssl flags
+        public static final String HOST_AUTH_KEY_SEND = "hostAuthKeySend";
+        // Flags
+        public static final String FLAGS = "flags";
+        // Default account
+        public static final String IS_DEFAULT = "isDefault";
+        // Old-Style UUID for compatibility with previous versions
+        public static final String COMPATIBILITY_UUID = "compatibilityUuid";
+        // User name (for outgoing messages)
+        public static final String SENDER_NAME = "senderName";
+        // Ringtone
+        public static final String RINGTONE_URI = "ringtoneUri";
+        // Protocol version (arbitrary string, used by EAS currently)
+        public static final String PROTOCOL_VERSION = "protocolVersion";
+        // The number of new messages (reported by the sync/download engines
+        public static final String NEW_MESSAGE_COUNT = "newMessageCount";
+        // Legacy flags defining security (provisioning) requirements of this account; this
+        // information is now found in the Policy table; POLICY_KEY (below) is the foreign key
+        @Deprecated
+        public static final String SECURITY_FLAGS = "securityFlags";
+        // Server-based sync key for the security policies currently enforced
+        public static final String SECURITY_SYNC_KEY = "securitySyncKey";
+        // Signature to use with this account
+        public static final String SIGNATURE = "signature";
+        // A foreign key into the Policy table
+        public static final String POLICY_KEY = "policyKey";
+    }
+
     public interface MailboxColumns {
         public static final String ID = "_id";
         // The display name of this mailbox [INDEX]
diff --git a/emailcommon/src/com/android/emailcommon/service/PolicyServiceProxy.java b/emailcommon/src/com/android/emailcommon/service/PolicyServiceProxy.java
index 53d7a24..860e185 100644
--- a/emailcommon/src/com/android/emailcommon/service/PolicyServiceProxy.java
+++ b/emailcommon/src/com/android/emailcommon/service/PolicyServiceProxy.java
@@ -16,7 +16,7 @@
 
 package com.android.emailcommon.service;
 
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Policy;
 
 import android.content.Context;
diff --git a/emailcommon/src/com/android/emailcommon/utility/AccountReconciler.java b/emailcommon/src/com/android/emailcommon/utility/AccountReconciler.java
index 3b158f0..dd38658 100644
--- a/emailcommon/src/com/android/emailcommon/utility/AccountReconciler.java
+++ b/emailcommon/src/com/android/emailcommon/utility/AccountReconciler.java
@@ -17,7 +17,7 @@
 package com.android.emailcommon.utility;
 
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.google.common.annotations.VisibleForTesting;
 
 import android.accounts.AccountManager;
diff --git a/emailcommon/src/com/android/emailcommon/utility/Utility.java b/emailcommon/src/com/android/emailcommon/utility/Utility.java
index f941cf0..b492927 100644
--- a/emailcommon/src/com/android/emailcommon/utility/Utility.java
+++ b/emailcommon/src/com/android/emailcommon/utility/Utility.java
@@ -17,8 +17,8 @@
 package com.android.emailcommon.utility;
 
 import com.android.emailcommon.Logging;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.AttachmentColumns;
@@ -806,11 +806,11 @@
         @Override
         protected final Long[] doInBackground(Void... params) {
             ArrayList<Long> ids = new ArrayList<Long>();
-            Cursor c = mContext.getContentResolver().query(EmailContent.Account.CONTENT_URI,
-                    EmailContent.Account.ID_PROJECTION, null, null, null);
+            Cursor c = mContext.getContentResolver().query(Account.CONTENT_URI,
+                    Account.ID_PROJECTION, null, null, null);
             try {
                 while (c.moveToNext()) {
-                    ids.add(c.getLong(EmailContent.Account.ID_PROJECTION_COLUMN));
+                    ids.add(c.getLong(Account.ID_PROJECTION_COLUMN));
                 }
             } finally {
                 c.close();
diff --git a/src/com/android/email/Controller.java b/src/com/android/email/Controller.java
index b2dd9be..98b6f33 100644
--- a/src/com/android/email/Controller.java
+++ b/src/com/android/email/Controller.java
@@ -39,8 +39,8 @@
 import com.android.emailcommon.mail.AuthenticationFailedException;
 import com.android.emailcommon.mail.Folder.MessageRetrievalListener;
 import com.android.emailcommon.mail.MessagingException;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.Body;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
@@ -405,7 +405,7 @@
                 public void run() {
                     // TODO shouldn't be passing fully-build accounts & mailboxes into APIs
                     Account account =
-                        EmailContent.Account.restoreAccountWithId(mProviderContext, accountId);
+                        Account.restoreAccountWithId(mProviderContext, accountId);
                     Mailbox mailbox =
                         Mailbox.restoreMailboxWithId(mProviderContext, mailboxId);
                     if (account == null || mailbox == null) {
@@ -536,7 +536,7 @@
         Mailbox box = new Mailbox();
         box.mAccountKey = accountId;
         box.mType = mailboxType;
-        box.mSyncInterval = EmailContent.Account.CHECK_INTERVAL_NEVER;
+        box.mSyncInterval = Account.CHECK_INTERVAL_NEVER;
         box.mFlagVisible = true;
         box.mServerId = box.mDisplayName = getMailboxServerName(mailboxType);
         // All system mailboxes are off the top-level & can hold mail
@@ -582,8 +582,8 @@
 
     private void sendPendingMessagesSmtp(long accountId) {
         // for IMAP & POP only, (attempt to) send the message now
-        final EmailContent.Account account =
-                EmailContent.Account.restoreAccountWithId(mProviderContext, accountId);
+        final Account account =
+                Account.restoreAccountWithId(mProviderContext, accountId);
         if (account == null) {
             return;
         }
@@ -993,7 +993,7 @@
     /**
      * Simple helper to determine if legacy MessagingController should be used
      */
-    public boolean isMessagingController(EmailContent.Account account) {
+    public boolean isMessagingController(Account account) {
         if (account == null) return false;
         return isMessagingController(account.mId);
     }
@@ -1051,7 +1051,7 @@
             }
 
             Uri uri = ContentUris.withAppendedId(
-                    EmailContent.Account.CONTENT_URI, accountId);
+                    Account.CONTENT_URI, accountId);
             context.getContentResolver().delete(uri, null, null);
 
             backupAccounts(context);
diff --git a/src/com/android/email/Email.java b/src/com/android/email/Email.java
index d7cd4fd..c896f9e 100644
--- a/src/com/android/email/Email.java
+++ b/src/com/android/email/Email.java
@@ -24,7 +24,7 @@
 import com.android.email.widget.WidgetConfiguration;
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.TempDirectory;
-import com.android.emailcommon.provider.EmailContent;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.service.EmailServiceProxy;
 import com.android.emailcommon.utility.EmailAsyncTask;
 import com.android.emailcommon.utility.Utility;
@@ -113,8 +113,8 @@
         Cursor c = null;
         try {
             c = context.getContentResolver().query(
-                    EmailContent.Account.CONTENT_URI,
-                    EmailContent.Account.ID_PROJECTION,
+                    Account.CONTENT_URI,
+                    Account.ID_PROJECTION,
                     null, null, null);
             boolean enable = c.getCount() > 0;
             setServicesEnabled(context, enable);
diff --git a/src/com/android/email/EmailAddressAdapter.java b/src/com/android/email/EmailAddressAdapter.java
index 3da0beb..cd41bec 100644
--- a/src/com/android/email/EmailAddressAdapter.java
+++ b/src/com/android/email/EmailAddressAdapter.java
@@ -17,7 +17,7 @@
 package com.android.email;
 
 import com.android.common.contacts.BaseEmailAddressAdapter;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 
 import android.content.Context;
 import android.text.TextUtils;
diff --git a/src/com/android/email/MessagingController.java b/src/com/android/email/MessagingController.java
index d48d13e..51f65f4 100644
--- a/src/com/android/email/MessagingController.java
+++ b/src/com/android/email/MessagingController.java
@@ -34,8 +34,8 @@
 import com.android.emailcommon.mail.Message;
 import com.android.emailcommon.mail.MessagingException;
 import com.android.emailcommon.mail.Part;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.AttachmentColumns;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
@@ -301,7 +301,7 @@
      * @param folder
      * @param listener
      */
-    public void synchronizeMailbox(final EmailContent.Account account,
+    public void synchronizeMailbox(final Account account,
             final Mailbox folder, MessagingListener listener) {
         /*
          * We don't ever sync the Outbox.
@@ -324,7 +324,7 @@
      * @param account
      * @param folder
      */
-    private void synchronizeMailboxSynchronous(final EmailContent.Account account,
+    private void synchronizeMailboxSynchronous(final Account account,
             final Mailbox folder) {
         mListeners.synchronizeMailboxStarted(account.mId, folder.mId);
         if ((folder.mFlags & Mailbox.FLAG_HOLDS_MAIL) == 0) {
@@ -408,7 +408,7 @@
      * @throws MessagingException
      */
     private SyncResults synchronizeMailboxGeneric(
-            final EmailContent.Account account, final Mailbox folder)
+            final Account account, final Mailbox folder)
             throws MessagingException {
 
         /*
@@ -761,7 +761,7 @@
      * @param loadStatus when complete, the message will be marked with this status (e.g.
      *        EmailContent.Message.LOADED)
      */
-    public void copyOneMessageToProvider(Message message, EmailContent.Account account,
+    public void copyOneMessageToProvider(Message message, Account account,
             Mailbox folder, int loadStatus) {
         EmailContent.Message localMessage = null;
         Cursor c = null;
@@ -854,8 +854,8 @@
         put("processPendingActions", null, new Runnable() {
             public void run() {
                 try {
-                    EmailContent.Account account =
-                        EmailContent.Account.restoreAccountWithId(mContext, accountId);
+                    Account account =
+                        Account.restoreAccountWithId(mContext, accountId);
                     if (account == null) {
                         return;
                     }
@@ -889,7 +889,7 @@
      * @param account the account to scan for pending actions
      * @throws MessagingException
      */
-    private void processPendingActionsSynchronous(EmailContent.Account account)
+    private void processPendingActionsSynchronous(Account account)
            throws MessagingException {
         ContentResolver resolver = mContext.getContentResolver();
         String[] accountIdArgs = new String[] { Long.toString(account.mId) };
@@ -912,7 +912,7 @@
      * @param resolver
      * @param accountIdArgs
      */
-    private void processPendingDeletesSynchronous(EmailContent.Account account,
+    private void processPendingDeletesSynchronous(Account account,
             ContentResolver resolver, String[] accountIdArgs) {
         Cursor deletes = resolver.query(EmailContent.Message.DELETED_CONTENT_URI,
                 EmailContent.Message.CONTENT_PROJECTION,
@@ -986,7 +986,7 @@
      * @param resolver
      * @param accountIdArgs
      */
-    private void processPendingUploadsSynchronous(EmailContent.Account account,
+    private void processPendingUploadsSynchronous(Account account,
             ContentResolver resolver, String[] accountIdArgs) {
         // Find the Sent folder (since that's all we're uploading for now
         Cursor mailboxes = resolver.query(Mailbox.CONTENT_URI, Mailbox.ID_PROJECTION,
@@ -1088,7 +1088,7 @@
      * @param resolver
      * @param accountIdArgs
      */
-    private void processPendingUpdatesSynchronous(EmailContent.Account account,
+    private void processPendingUpdatesSynchronous(Account account,
             ContentResolver resolver, String[] accountIdArgs) {
         Cursor updates = resolver.query(EmailContent.Message.UPDATED_CONTENT_URI,
                 EmailContent.Message.CONTENT_PROJECTION,
@@ -1183,7 +1183,7 @@
      * @param messageId
      */
     private void processUploadMessage(ContentResolver resolver, Store remoteStore,
-            EmailContent.Account account, Mailbox mailbox, long messageId)
+            Account account, Mailbox mailbox, long messageId)
             throws MessagingException {
         EmailContent.Message newMessage =
             EmailContent.Message.restoreMessageWithId(mContext, messageId);
@@ -1322,7 +1322,7 @@
      * @param newMessage The message that was moved to the mailbox
      */
     private void processPendingMoveToTrash(Store remoteStore,
-            EmailContent.Account account, Mailbox newMailbox, EmailContent.Message oldMessage,
+            Account account, Mailbox newMailbox, EmailContent.Message oldMessage,
             final EmailContent.Message newMessage) throws MessagingException {
 
         // 0. No remote move if the message is local-only
@@ -1441,7 +1441,7 @@
      * @param oldMessage The message that was deleted from the trash
      */
     private void processPendingDeleteFromTrash(Store remoteStore,
-            EmailContent.Account account, Mailbox oldMailbox, EmailContent.Message oldMessage)
+            Account account, Mailbox oldMailbox, EmailContent.Message oldMessage)
             throws MessagingException {
 
         // 1. We only support delete-from-trash here
@@ -1485,7 +1485,7 @@
      * @param message The message we're appending
      * @return true if successfully uploaded
      */
-    private boolean processPendingAppend(Store remoteStore, EmailContent.Account account,
+    private boolean processPendingAppend(Store remoteStore, Account account,
             Mailbox newMailbox, EmailContent.Message message)
             throws MessagingException {
 
@@ -1633,8 +1633,8 @@
                     // 2. Open the remote folder.
                     // TODO all of these could be narrower projections
                     // TODO combine with common code in loadAttachment
-                    EmailContent.Account account =
-                        EmailContent.Account.restoreAccountWithId(mContext, message.mAccountKey);
+                    Account account =
+                        Account.restoreAccountWithId(mContext, message.mAccountKey);
                     Mailbox mailbox =
                         Mailbox.restoreMailboxWithId(mContext, message.mMailboxKey);
                     if (account == null || mailbox == null) {
@@ -1716,8 +1716,8 @@
 
                     // 2. Open the remote folder.
                     // TODO all of these could be narrower projections
-                    EmailContent.Account account =
-                        EmailContent.Account.restoreAccountWithId(mContext, accountId);
+                    Account account =
+                        Account.restoreAccountWithId(mContext, accountId);
                     Mailbox mailbox =
                         Mailbox.restoreMailboxWithId(mContext, mailboxId);
                     EmailContent.Message message =
@@ -1793,7 +1793,7 @@
      * @param account
      * @param listener
      */
-    public void sendPendingMessages(final EmailContent.Account account, final long sentFolderId,
+    public void sendPendingMessages(final Account account, final long sentFolderId,
             MessagingListener listener) {
         put("sendPendingMessages", listener, new Runnable() {
             public void run() {
@@ -1806,7 +1806,7 @@
      * Attempt to send all messages sitting in the given account's outbox. Optionally,
      * if the server requires it, the message will be moved to the given sent folder.
      */
-    public void sendPendingMessagesSynchronous(final EmailContent.Account account,
+    public void sendPendingMessagesSynchronous(final Account account,
             long sentFolderId) {
         NotificationController nc = NotificationController.getInstance(mContext);
         // 1.  Loop through all messages in the account's outbox
@@ -1919,8 +1919,8 @@
                 // here if we somehow don't have a sent folder, but this should never happen
                 // because the call to sendMessage() would have built one previously.
                 long inboxId = -1;
-                EmailContent.Account account =
-                    EmailContent.Account.restoreAccountWithId(mContext, accountId);
+                Account account =
+                    Account.restoreAccountWithId(mContext, accountId);
                 if (account != null) {
                     long sentboxId = Mailbox.findMailboxOfType(mContext, accountId,
                             Mailbox.TYPE_SENT);
diff --git a/src/com/android/email/NotificationController.java b/src/com/android/email/NotificationController.java
index f7c0094..b947e6f 100644
--- a/src/com/android/email/NotificationController.java
+++ b/src/com/android/email/NotificationController.java
@@ -22,8 +22,8 @@
 import com.android.email.activity.setup.AccountSettings;
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.mail.Address;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
 import com.android.emailcommon.provider.EmailContent.Message;
diff --git a/src/com/android/email/SecurityPolicy.java b/src/com/android/email/SecurityPolicy.java
index f8c4826..d53c2e0 100644
--- a/src/com/android/email/SecurityPolicy.java
+++ b/src/com/android/email/SecurityPolicy.java
@@ -18,8 +18,8 @@
 
 import com.android.email.service.EmailBroadcastProcessorService;
 import com.android.emailcommon.Logging;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.provider.EmailContent.PolicyColumns;
 import com.android.emailcommon.provider.Policy;
@@ -517,7 +517,7 @@
      * @param accountId the account for which sync cannot proceed
      */
     public void policiesRequired(long accountId) {
-        Account account = EmailContent.Account.restoreAccountWithId(mContext, accountId);
+        Account account = Account.restoreAccountWithId(mContext, accountId);
         // In case the account has been deleted, just return
         if (account == null) return;
         if (Email.DEBUG) {
diff --git a/src/com/android/email/activity/AccountSelectorAdapter.java b/src/com/android/email/activity/AccountSelectorAdapter.java
index 4607678..6d41f60 100644
--- a/src/com/android/email/activity/AccountSelectorAdapter.java
+++ b/src/com/android/email/activity/AccountSelectorAdapter.java
@@ -21,8 +21,7 @@
 import com.android.email.R;
 import com.android.email.data.ClosingMatrixCursor;
 import com.android.email.data.ThrottlingCursorLoader;
-import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.Utility;
@@ -80,7 +79,7 @@
 
     /** Sort order.  Show the default account first. */
     private static final String ORDER_BY =
-            EmailContent.Account.IS_DEFAULT + " desc, " + EmailContent.Account.RECORD_ID;
+            Account.IS_DEFAULT + " desc, " + Account.RECORD_ID;
 
     private final LayoutInflater mInflater;
     @SuppressWarnings("hiding")
@@ -274,7 +273,7 @@
         private final long mAccountId;
         public AccountsLoader(Context context, long accountId) {
             // Super class loads a regular account cursor, but we replace it in loadInBackground().
-            super(context, EmailContent.Account.CONTENT_URI, ACCOUNT_PROJECTION, null, null,
+            super(context, Account.CONTENT_URI, ACCOUNT_PROJECTION, null, null,
                     ORDER_BY);
             mContext = context;
             mAccountId = accountId;
diff --git a/src/com/android/email/activity/ActionBarController.java b/src/com/android/email/activity/ActionBarController.java
index 13e4efc..978c549 100644
--- a/src/com/android/email/activity/ActionBarController.java
+++ b/src/com/android/email/activity/ActionBarController.java
@@ -18,7 +18,7 @@
 
 import com.android.email.R;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
 
 import android.app.ActionBar;
diff --git a/src/com/android/email/activity/ActivityHelper.java b/src/com/android/email/activity/ActivityHelper.java
index 9784366..cbd1d5b 100644
--- a/src/com/android/email/activity/ActivityHelper.java
+++ b/src/com/android/email/activity/ActivityHelper.java
@@ -19,8 +19,8 @@
 import com.android.email.Controller;
 import com.android.email.Email;
 import com.android.email.R;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.utility.EmailAsyncTask;
 import com.android.emailcommon.utility.Utility;
 
diff --git a/src/com/android/email/activity/EmailActivity.java b/src/com/android/email/activity/EmailActivity.java
index 00c9c33..fb5d760 100644
--- a/src/com/android/email/activity/EmailActivity.java
+++ b/src/com/android/email/activity/EmailActivity.java
@@ -23,7 +23,7 @@
 import com.android.email.R;
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
diff --git a/src/com/android/email/activity/IntentUtilities.java b/src/com/android/email/activity/IntentUtilities.java
index 95a1934..f45f145 100644
--- a/src/com/android/email/activity/IntentUtilities.java
+++ b/src/com/android/email/activity/IntentUtilities.java
@@ -16,7 +16,6 @@
 
 package com.android.email.activity;
 
-import com.android.emailcommon.provider.EmailContent.Account;
 
 import android.app.Activity;
 import android.content.Context;
diff --git a/src/com/android/email/activity/MailboxFinder.java b/src/com/android/email/activity/MailboxFinder.java
index 07d41a3..e3c3283 100644
--- a/src/com/android/email/activity/MailboxFinder.java
+++ b/src/com/android/email/activity/MailboxFinder.java
@@ -21,7 +21,7 @@
 import com.android.email.Email;
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.Utility;
 
diff --git a/src/com/android/email/activity/MailboxFragmentAdapter.java b/src/com/android/email/activity/MailboxFragmentAdapter.java
index 9d8f437..e5b7e6b 100644
--- a/src/com/android/email/activity/MailboxFragmentAdapter.java
+++ b/src/com/android/email/activity/MailboxFragmentAdapter.java
@@ -25,8 +25,8 @@
 import com.android.email.data.ClosingMatrixCursor;
 import com.android.email.data.ThrottlingCursorLoader;
 import com.android.emailcommon.Logging;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
 import com.android.emailcommon.provider.EmailContent.Message;
diff --git a/src/com/android/email/activity/MailboxListFragment.java b/src/com/android/email/activity/MailboxListFragment.java
index d419263..5d3c794 100644
--- a/src/com/android/email/activity/MailboxListFragment.java
+++ b/src/com/android/email/activity/MailboxListFragment.java
@@ -22,7 +22,7 @@
 import com.android.email.RefreshManager;
 import com.android.email.provider.EmailProvider;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.EmailAsyncTask;
 import com.android.emailcommon.utility.Utility;
diff --git a/src/com/android/email/activity/MailboxListItem.java b/src/com/android/email/activity/MailboxListItem.java
index d0c52ac..e343960 100644
--- a/src/com/android/email/activity/MailboxListItem.java
+++ b/src/com/android/email/activity/MailboxListItem.java
@@ -17,7 +17,7 @@
 package com.android.email.activity;
 
 import com.android.email.R;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
 
 import android.content.Context;
diff --git a/src/com/android/email/activity/MailboxMoveToAdapter.java b/src/com/android/email/activity/MailboxMoveToAdapter.java
index 2c95729..2a44793 100644
--- a/src/com/android/email/activity/MailboxMoveToAdapter.java
+++ b/src/com/android/email/activity/MailboxMoveToAdapter.java
@@ -21,7 +21,7 @@
 import com.android.email.data.ThrottlingCursorLoader;
 import com.android.email.mail.Store;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.Utility;
diff --git a/src/com/android/email/activity/MessageCompose.java b/src/com/android/email/activity/MessageCompose.java
index 8212060..9f2add5 100644
--- a/src/com/android/email/activity/MessageCompose.java
+++ b/src/com/android/email/activity/MessageCompose.java
@@ -25,7 +25,7 @@
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.internet.MimeUtility;
 import com.android.emailcommon.mail.Address;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.Body;
 import com.android.emailcommon.provider.EmailContent.BodyColumns;
diff --git a/src/com/android/email/activity/MessageFileView.java b/src/com/android/email/activity/MessageFileView.java
index 0105477..dc90ba5 100644
--- a/src/com/android/email/activity/MessageFileView.java
+++ b/src/com/android/email/activity/MessageFileView.java
@@ -18,7 +18,7 @@
 
 import com.android.email.R;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.utility.EmailAsyncTask;
 import com.android.emailcommon.utility.Utility;
 import com.google.common.annotations.VisibleForTesting;
diff --git a/src/com/android/email/activity/MessageList.java b/src/com/android/email/activity/MessageList.java
index c219555..17bbc05 100644
--- a/src/com/android/email/activity/MessageList.java
+++ b/src/com/android/email/activity/MessageList.java
@@ -17,7 +17,7 @@
 package com.android.email.activity;
 
 import com.android.email.R;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.utility.EmailAsyncTask;
 import com.android.emailcommon.utility.Utility;
 import com.google.common.annotations.VisibleForTesting;
diff --git a/src/com/android/email/activity/MessageListFragment.java b/src/com/android/email/activity/MessageListFragment.java
index 2960554..d3c489c 100644
--- a/src/com/android/email/activity/MessageListFragment.java
+++ b/src/com/android/email/activity/MessageListFragment.java
@@ -23,7 +23,7 @@
 import com.android.email.RefreshManager;
 import com.android.email.provider.EmailProvider;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.EmailAsyncTask;
diff --git a/src/com/android/email/activity/MessageViewFragment.java b/src/com/android/email/activity/MessageViewFragment.java
index 261d6e5..73d03b2 100644
--- a/src/com/android/email/activity/MessageViewFragment.java
+++ b/src/com/android/email/activity/MessageViewFragment.java
@@ -20,7 +20,7 @@
 import com.android.email.R;
 import com.android.emailcommon.mail.MeetingInfo;
 import com.android.emailcommon.mail.PackedString;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.service.EmailServiceConstants;
diff --git a/src/com/android/email/activity/MessagesAdapter.java b/src/com/android/email/activity/MessagesAdapter.java
index 7595fe7..2299d4e 100644
--- a/src/com/android/email/activity/MessagesAdapter.java
+++ b/src/com/android/email/activity/MessagesAdapter.java
@@ -20,8 +20,8 @@
 import com.android.email.ResourceHelper;
 import com.android.email.data.ThrottlingCursorLoader;
 import com.android.emailcommon.Logging;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.EmailContent.MessageColumns;
 import com.android.emailcommon.provider.Mailbox;
diff --git a/src/com/android/email/activity/MoveMessageToDialog.java b/src/com/android/email/activity/MoveMessageToDialog.java
index 1bfaeee..207896a 100644
--- a/src/com/android/email/activity/MoveMessageToDialog.java
+++ b/src/com/android/email/activity/MoveMessageToDialog.java
@@ -19,7 +19,7 @@
 import com.android.email.Email;
 import com.android.email.R;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.Utility;
diff --git a/src/com/android/email/activity/ShortcutPicker.java b/src/com/android/email/activity/ShortcutPicker.java
index d0d0047..10d26a1 100644
--- a/src/com/android/email/activity/ShortcutPicker.java
+++ b/src/com/android/email/activity/ShortcutPicker.java
@@ -20,7 +20,7 @@
 import com.android.email.activity.ShortcutPickerFragment.AccountShortcutPickerFragment;
 import com.android.email.activity.ShortcutPickerFragment.PickerCallback;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 
 import android.app.Activity;
diff --git a/src/com/android/email/activity/ShortcutPickerFragment.java b/src/com/android/email/activity/ShortcutPickerFragment.java
index ad7a4bf..91267a3 100644
--- a/src/com/android/email/activity/ShortcutPickerFragment.java
+++ b/src/com/android/email/activity/ShortcutPickerFragment.java
@@ -17,7 +17,7 @@
 package com.android.email.activity;
 
 import com.android.email.R;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
 import com.android.emailcommon.provider.HostAuth;
diff --git a/src/com/android/email/activity/UIControllerBase.java b/src/com/android/email/activity/UIControllerBase.java
index 5f55bd6..af6a0b6 100644
--- a/src/com/android/email/activity/UIControllerBase.java
+++ b/src/com/android/email/activity/UIControllerBase.java
@@ -21,7 +21,7 @@
 import com.android.email.RefreshManager;
 import com.android.email.activity.setup.AccountSettings;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.EmailAsyncTask;
diff --git a/src/com/android/email/activity/UIControllerOnePane.java b/src/com/android/email/activity/UIControllerOnePane.java
index 8d481aa..a51ca74 100644
--- a/src/com/android/email/activity/UIControllerOnePane.java
+++ b/src/com/android/email/activity/UIControllerOnePane.java
@@ -21,7 +21,7 @@
 import com.android.email.activity.MailboxFinder.Callback;
 import com.android.email.activity.setup.AccountSecurity;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.Utility;
diff --git a/src/com/android/email/activity/UIControllerTwoPane.java b/src/com/android/email/activity/UIControllerTwoPane.java
index c825cc8..15ecf86 100644
--- a/src/com/android/email/activity/UIControllerTwoPane.java
+++ b/src/com/android/email/activity/UIControllerTwoPane.java
@@ -24,7 +24,7 @@
 import com.android.email.activity.MailboxFinder.Callback;
 import com.android.email.activity.setup.AccountSecurity;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.EmailAsyncTask;
diff --git a/src/com/android/email/activity/Welcome.java b/src/com/android/email/activity/Welcome.java
index 4eff8fb..78cfe91 100644
--- a/src/com/android/email/activity/Welcome.java
+++ b/src/com/android/email/activity/Welcome.java
@@ -22,8 +22,8 @@
 import com.android.email.activity.setup.AccountSetupBasics;
 import com.android.email.provider.AccountBackupRestore;
 import com.android.email.service.MailService;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.utility.EmailAsyncTask;
 import com.android.emailcommon.utility.Utility;
 import com.google.common.annotations.VisibleForTesting;
@@ -236,7 +236,7 @@
                 }
             } else {
                 // Use the default (without showing the toast)
-                accountId = EmailContent.Account.getDefaultAccountId(context);
+                accountId = Account.getDefaultAccountId(context);
             }
             if (accountId != Account.NO_ACCOUNT) {
                 // Okay, the given account is valid.
@@ -244,7 +244,7 @@
             } else {
                 // No, it's invalid.  Show the warning toast and use the default.
                 Utility.showToast(context, R.string.toast_account_not_found);
-                return EmailContent.Account.getDefaultAccountId(context);
+                return Account.getDefaultAccountId(context);
             }
         }
 
@@ -254,7 +254,7 @@
             MailService.reconcilePopImapAccountsSync(mFromActivity);
 
             final int numAccount =
-                    EmailContent.count(mFromActivity, EmailContent.Account.CONTENT_URI);
+                    EmailContent.count(mFromActivity, Account.CONTENT_URI);
             if (numAccount == 0) {
                 AccountSetupBasics.actionNewAccount(mFromActivity);
             } else {
diff --git a/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java b/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java
index 900e428..c92edfb 100644
--- a/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java
+++ b/src/com/android/email/activity/setup/AccountCheckSettingsFragment.java
@@ -21,7 +21,7 @@
 import com.android.email.mail.Store;
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.provider.Policy;
 import com.android.emailcommon.service.EmailServiceProxy;
diff --git a/src/com/android/email/activity/setup/AccountSecurity.java b/src/com/android/email/activity/setup/AccountSecurity.java
index db3a08d..0738bc6 100644
--- a/src/com/android/email/activity/setup/AccountSecurity.java
+++ b/src/com/android/email/activity/setup/AccountSecurity.java
@@ -20,7 +20,7 @@
 import com.android.email.R;
 import com.android.email.SecurityPolicy;
 import com.android.email.activity.ActivityHelper;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.utility.Utility;
 
diff --git a/src/com/android/email/activity/setup/AccountServerBaseFragment.java b/src/com/android/email/activity/setup/AccountServerBaseFragment.java
index efe4c59..3da71cf 100644
--- a/src/com/android/email/activity/setup/AccountServerBaseFragment.java
+++ b/src/com/android/email/activity/setup/AccountServerBaseFragment.java
@@ -18,8 +18,7 @@
 
 import com.android.email.R;
 import com.android.email.activity.UiUtilities;
-import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.utility.Utility;
 
@@ -282,7 +281,7 @@
 
         @Override
         protected Account doInBackground(Void... params) {
-            EmailContent.Account account = Utility.findExistingAccount(mContext, mAccountId,
+            Account account = Utility.findExistingAccount(mContext, mAccountId,
                     mCheckHost, mCheckLogin);
             return account;
         }
diff --git a/src/com/android/email/activity/setup/AccountSettings.java b/src/com/android/email/activity/setup/AccountSettings.java
index cad994f..92b3395 100644
--- a/src/com/android/email/activity/setup/AccountSettings.java
+++ b/src/com/android/email/activity/setup/AccountSettings.java
@@ -23,8 +23,7 @@
 import com.android.email.mail.Sender;
 import com.android.email.mail.Store;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.utility.Utility;
 
@@ -434,8 +433,8 @@
             long deletingAccountId = params[0];
 
             Cursor c = getContentResolver().query(
-                    EmailContent.Account.CONTENT_URI,
-                    EmailContent.Account.CONTENT_PROJECTION, null, null, null);
+                    Account.CONTENT_URI,
+                    Account.CONTENT_PROJECTION, null, null, null);
             try {
                 int index = 0;
                 int headerCount = c.getCount();
diff --git a/src/com/android/email/activity/setup/AccountSettingsFragment.java b/src/com/android/email/activity/setup/AccountSettingsFragment.java
index 4913d05..55b798e 100644
--- a/src/com/android/email/activity/setup/AccountSettingsFragment.java
+++ b/src/com/android/email/activity/setup/AccountSettingsFragment.java
@@ -48,8 +48,8 @@
 import com.android.emailcommon.CalendarProviderStub;
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.mail.MessagingException;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.utility.Utility;
 
diff --git a/src/com/android/email/activity/setup/AccountSettingsUtils.java b/src/com/android/email/activity/setup/AccountSettingsUtils.java
index 1744d4e..45e912f 100644
--- a/src/com/android/email/activity/setup/AccountSettingsUtils.java
+++ b/src/com/android/email/activity/setup/AccountSettingsUtils.java
@@ -20,7 +20,7 @@
 import com.android.email.VendorPolicyLoader;
 import com.android.email.provider.AccountBackupRestore;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 
 import android.content.ContentValues;
@@ -47,7 +47,7 @@
      * @param context the context of the caller
      * @param account the account whose settings will be committed
      */
-    public static void commitSettings(Context context, EmailContent.Account account) {
+    public static void commitSettings(Context context, Account account) {
         if (!account.isSaved()) {
             account.save(context);
         } else {
@@ -62,7 +62,7 @@
      * Returns a set of content values to commit account changes (not including the foreign keys
      * for the two host auth's and policy) to the database.  Does not actually commit anything.
      */
-    public static ContentValues getAccountContentValues(EmailContent.Account account) {
+    public static ContentValues getAccountContentValues(Account account) {
         ContentValues cv = new ContentValues();
         cv.put(AccountColumns.IS_DEFAULT, account.mIsDefault);
         cv.put(AccountColumns.DISPLAY_NAME, account.getDisplayName());
diff --git a/src/com/android/email/activity/setup/AccountSetupAccountType.java b/src/com/android/email/activity/setup/AccountSetupAccountType.java
index a53a72f..0c18266 100644
--- a/src/com/android/email/activity/setup/AccountSetupAccountType.java
+++ b/src/com/android/email/activity/setup/AccountSetupAccountType.java
@@ -28,7 +28,7 @@
 import com.android.email.VendorPolicyLoader;
 import com.android.email.activity.ActivityHelper;
 import com.android.email.activity.UiUtilities;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 /**
diff --git a/src/com/android/email/activity/setup/AccountSetupBasics.java b/src/com/android/email/activity/setup/AccountSetupBasics.java
index 73f4a8e..5454144 100644
--- a/src/com/android/email/activity/setup/AccountSetupBasics.java
+++ b/src/com/android/email/activity/setup/AccountSetupBasics.java
@@ -25,8 +25,8 @@
 import com.android.email.activity.setup.AccountSettingsUtils.Provider;
 import com.android.email.mail.Store;
 import com.android.emailcommon.Logging;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.utility.Utility;
 
@@ -468,7 +468,7 @@
 
         @Override
         protected Account doInBackground(Void... params) {
-            EmailContent.Account account = Utility.findExistingAccount(mContext, -1,
+            Account account = Utility.findExistingAccount(mContext, -1,
                     mCheckHost, mCheckLogin);
             return account;
         }
@@ -605,7 +605,7 @@
         if (Store.STORE_SCHEME_IMAP.equals(protocol)) {
             // Delete policy must be set explicitly, because IMAP does not provide a UI selection
             // for it. This logic needs to be followed in the auto setup flow as well.
-            account.setDeletePolicy(EmailContent.Account.DELETE_POLICY_ON_DELETE);
+            account.setDeletePolicy(Account.DELETE_POLICY_ON_DELETE);
         }
 
         if (Store.STORE_SCHEME_EAS.equals(protocol)) {
@@ -649,7 +649,7 @@
 
         @Override
         protected Integer doInBackground(Void... params) {
-            return EmailContent.count(AccountSetupBasics.this, EmailContent.Account.CONTENT_URI);
+            return EmailContent.count(AccountSetupBasics.this, Account.CONTENT_URI);
         }
 
         @Override
diff --git a/src/com/android/email/activity/setup/AccountSetupExchange.java b/src/com/android/email/activity/setup/AccountSetupExchange.java
index 12d7b6a..828aeb0 100644
--- a/src/com/android/email/activity/setup/AccountSetupExchange.java
+++ b/src/com/android/email/activity/setup/AccountSetupExchange.java
@@ -19,7 +19,7 @@
 import com.android.email.R;
 import com.android.email.activity.ActivityHelper;
 import com.android.email.activity.UiUtilities;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import android.app.Activity;
diff --git a/src/com/android/email/activity/setup/AccountSetupExchangeFragment.java b/src/com/android/email/activity/setup/AccountSetupExchangeFragment.java
index ed1565b..27fe600 100644
--- a/src/com/android/email/activity/setup/AccountSetupExchangeFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupExchangeFragment.java
@@ -24,8 +24,7 @@
 import com.android.email.provider.AccountBackupRestore;
 import com.android.emailcommon.Device;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.utility.Utility;
 
@@ -368,7 +367,7 @@
      */
     @Override
     public void onNext() {
-        EmailContent.Account account = SetupData.getAccount();
+        Account account = SetupData.getAccount();
 
         String userName = mUsernameView.getText().toString().trim();
         if (userName.startsWith("\\")) {
diff --git a/src/com/android/email/activity/setup/AccountSetupIncoming.java b/src/com/android/email/activity/setup/AccountSetupIncoming.java
index 080cbdc..ba5a256 100644
--- a/src/com/android/email/activity/setup/AccountSetupIncoming.java
+++ b/src/com/android/email/activity/setup/AccountSetupIncoming.java
@@ -19,7 +19,7 @@
 import com.android.email.R;
 import com.android.email.activity.ActivityHelper;
 import com.android.email.activity.UiUtilities;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 
 import android.app.Activity;
 import android.app.FragmentTransaction;
diff --git a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
index a47382b..16e68a6 100644
--- a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
@@ -38,7 +38,7 @@
 import com.android.email.mail.Store;
 import com.android.email.provider.AccountBackupRestore;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.utility.Utility;
 
diff --git a/src/com/android/email/activity/setup/AccountSetupNames.java b/src/com/android/email/activity/setup/AccountSetupNames.java
index 9964e01..0c69231 100644
--- a/src/com/android/email/activity/setup/AccountSetupNames.java
+++ b/src/com/android/email/activity/setup/AccountSetupNames.java
@@ -21,7 +21,7 @@
 import com.android.email.activity.UiUtilities;
 import com.android.email.activity.Welcome;
 import com.android.email.provider.AccountBackupRestore;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 
 import android.app.Activity;
diff --git a/src/com/android/email/activity/setup/AccountSetupOptions.java b/src/com/android/email/activity/setup/AccountSetupOptions.java
index 41e0f51..ad110d5 100644
--- a/src/com/android/email/activity/setup/AccountSetupOptions.java
+++ b/src/com/android/email/activity/setup/AccountSetupOptions.java
@@ -42,8 +42,7 @@
 import com.android.email.activity.UiUtilities;
 import com.android.email.service.MailService;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.service.SyncWindow;
 import com.android.emailcommon.utility.Utility;
@@ -137,7 +136,7 @@
             mDefaultView.setChecked(true);
         }
         mNotifyView.setChecked(
-                (account.getFlags() & EmailContent.Account.FLAGS_NOTIFY_NEW_MAIL) != 0);
+                (account.getFlags() & Account.FLAGS_NOTIFY_NEW_MAIL) != 0);
         SpinnerOption.setSpinnerOptionValue(mCheckFrequencyView, account.getSyncInterval());
 
         // Setup any additional items to support EAS & EAS flow mode
diff --git a/src/com/android/email/activity/setup/AccountSetupOutgoing.java b/src/com/android/email/activity/setup/AccountSetupOutgoing.java
index e542c18..3c5f8bf 100644
--- a/src/com/android/email/activity/setup/AccountSetupOutgoing.java
+++ b/src/com/android/email/activity/setup/AccountSetupOutgoing.java
@@ -19,7 +19,7 @@
 import com.android.email.R;
 import com.android.email.activity.ActivityHelper;
 import com.android.email.activity.UiUtilities;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 
 import android.app.Activity;
 import android.app.FragmentTransaction;
diff --git a/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java b/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java
index 649df41..0908f50 100644
--- a/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupOutgoingFragment.java
@@ -39,8 +39,7 @@
 import com.android.email.activity.UiUtilities;
 import com.android.email.provider.AccountBackupRestore;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.utility.Utility;
 
@@ -347,7 +346,7 @@
      */
     @Override
     public void onNext() {
-        EmailContent.Account account = SetupData.getAccount();
+        Account account = SetupData.getAccount();
         HostAuth sendAuth = account.getOrCreateHostAuthSend(mContext);
 
         String userName = mUsernameView.getText().toString().trim();
diff --git a/src/com/android/email/activity/setup/SetupData.java b/src/com/android/email/activity/setup/SetupData.java
index 685d046..4606884 100644
--- a/src/com/android/email/activity/setup/SetupData.java
+++ b/src/com/android/email/activity/setup/SetupData.java
@@ -16,7 +16,7 @@
 
 package com.android.email.activity.setup;
 
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Policy;
 
 import android.accounts.AccountAuthenticatorResponse;
diff --git a/src/com/android/email/mail/Sender.java b/src/com/android/email/mail/Sender.java
index 8d712c8..bd68d66 100644
--- a/src/com/android/email/mail/Sender.java
+++ b/src/com/android/email/mail/Sender.java
@@ -19,7 +19,7 @@
 import com.android.email.R;
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import org.xmlpull.v1.XmlPullParserException;
diff --git a/src/com/android/email/mail/Store.java b/src/com/android/email/mail/Store.java
index 01d1c55..8a8ea59 100644
--- a/src/com/android/email/mail/Store.java
+++ b/src/com/android/email/mail/Store.java
@@ -26,8 +26,8 @@
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.mail.Folder;
 import com.android.emailcommon.mail.MessagingException;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.provider.Mailbox;
 import com.google.common.annotations.VisibleForTesting;
diff --git a/src/com/android/email/mail/store/ExchangeStore.java b/src/com/android/email/mail/store/ExchangeStore.java
index 5f1da8c..d34c7d7 100644
--- a/src/com/android/email/mail/store/ExchangeStore.java
+++ b/src/com/android/email/mail/store/ExchangeStore.java
@@ -20,8 +20,8 @@
 import com.android.email.mail.Store;
 import com.android.emailcommon.mail.Folder;
 import com.android.emailcommon.mail.MessagingException;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.service.EmailServiceProxy;
 import com.android.emailcommon.service.IEmailService;
diff --git a/src/com/android/email/mail/store/ImapStore.java b/src/com/android/email/mail/store/ImapStore.java
index 53474a1..9102f41 100644
--- a/src/com/android/email/mail/store/ImapStore.java
+++ b/src/com/android/email/mail/store/ImapStore.java
@@ -32,7 +32,7 @@
 import com.android.emailcommon.mail.Folder;
 import com.android.emailcommon.mail.Message;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.service.EmailServiceProxy;
diff --git a/src/com/android/email/mail/store/Pop3Store.java b/src/com/android/email/mail/store/Pop3Store.java
index 6bc37d0..aa661f6 100644
--- a/src/com/android/email/mail/store/Pop3Store.java
+++ b/src/com/android/email/mail/store/Pop3Store.java
@@ -29,7 +29,7 @@
 import com.android.emailcommon.mail.Message;
 import com.android.emailcommon.mail.MessagingException;
 import com.android.emailcommon.mail.Folder.OpenMode;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.service.EmailServiceProxy;
diff --git a/src/com/android/email/mail/transport/ExchangeSender.java b/src/com/android/email/mail/transport/ExchangeSender.java
index bacfbdf..87ba812 100644
--- a/src/com/android/email/mail/transport/ExchangeSender.java
+++ b/src/com/android/email/mail/transport/ExchangeSender.java
@@ -18,7 +18,7 @@
 
 import com.android.email.mail.Sender;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 
 import android.content.Context;
 
diff --git a/src/com/android/email/mail/transport/SmtpSender.java b/src/com/android/email/mail/transport/SmtpSender.java
index 06fc71f..8371534 100644
--- a/src/com/android/email/mail/transport/SmtpSender.java
+++ b/src/com/android/email/mail/transport/SmtpSender.java
@@ -25,7 +25,7 @@
 import com.android.emailcommon.mail.AuthenticationFailedException;
 import com.android.emailcommon.mail.CertificateValidationException;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.HostAuth;
 
diff --git a/src/com/android/email/provider/AccountBackupRestore.java b/src/com/android/email/provider/AccountBackupRestore.java
index f8ef5ff..16c1600 100644
--- a/src/com/android/email/provider/AccountBackupRestore.java
+++ b/src/com/android/email/provider/AccountBackupRestore.java
@@ -19,8 +19,8 @@
 import com.android.email.Email;
 import com.android.email.Preferences;
 import com.android.emailcommon.Logging;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 
 import android.content.ContentResolver;
 import android.content.Context;
diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java
index a73ea7e..d3d043d 100644
--- a/src/com/android/email/provider/EmailProvider.java
+++ b/src/com/android/email/provider/EmailProvider.java
@@ -22,8 +22,8 @@
 import com.android.emailcommon.AccountManagerTypes;
 import com.android.emailcommon.CalendarProviderStub;
 import com.android.emailcommon.Logging;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.AttachmentColumns;
@@ -204,7 +204,7 @@
     // TABLE_NAMES MUST remain in the order of the BASE constants above (e.g. ACCOUNT_BASE = 0x0000,
     // MESSAGE_BASE = 0x1000, etc.)
     private static final String[] TABLE_NAMES = {
-        EmailContent.Account.TABLE_NAME,
+        Account.TABLE_NAME,
         Mailbox.TABLE_NAME,
         EmailContent.Message.TABLE_NAME,
         EmailContent.Attachment.TABLE_NAME,
diff --git a/src/com/android/email/service/AttachmentDownloadService.java b/src/com/android/email/service/AttachmentDownloadService.java
index e7824e1..e6c9478 100644
--- a/src/com/android/email/service/AttachmentDownloadService.java
+++ b/src/com/android/email/service/AttachmentDownloadService.java
@@ -21,8 +21,8 @@
 import com.android.email.Email;
 import com.android.email.EmailConnectivityManager;
 import com.android.email.NotificationController;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.service.EmailServiceProxy;
diff --git a/src/com/android/email/service/EmailBroadcastProcessorService.java b/src/com/android/email/service/EmailBroadcastProcessorService.java
index 07e10d8..b86c43d 100644
--- a/src/com/android/email/service/EmailBroadcastProcessorService.java
+++ b/src/com/android/email/service/EmailBroadcastProcessorService.java
@@ -25,7 +25,7 @@
 import com.android.email.mail.Store;
 import com.android.email.widget.WidgetManager;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.provider.HostAuth;
 
diff --git a/src/com/android/email/service/MailService.java b/src/com/android/email/service/MailService.java
index 5fb3747..e1da6e2 100644
--- a/src/com/android/email/service/MailService.java
+++ b/src/com/android/email/service/MailService.java
@@ -24,8 +24,8 @@
 import com.android.email.provider.AccountBackupRestore;
 import com.android.emailcommon.AccountManagerTypes;
 import com.android.emailcommon.mail.MessagingException;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.AccountReconciler;
@@ -752,7 +752,7 @@
         }
     }
 
-    public static void setupAccountManagerAccount(Context context, EmailContent.Account account,
+    public static void setupAccountManagerAccount(Context context, Account account,
             boolean email, boolean calendar, boolean contacts,
             AccountManagerCallback<Bundle> callback) {
         Bundle options = new Bundle();
diff --git a/src/com/android/email/service/PopImapSyncAdapterService.java b/src/com/android/email/service/PopImapSyncAdapterService.java
index 0ff871b..ac47bba 100644
--- a/src/com/android/email/service/PopImapSyncAdapterService.java
+++ b/src/com/android/email/service/PopImapSyncAdapterService.java
@@ -16,10 +16,6 @@
 
 package com.android.email.service;
 
-import com.android.email.Controller;
-import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.Mailbox;
-
 import android.accounts.Account;
 import android.accounts.OperationCanceledException;
 import android.app.Service;
@@ -34,6 +30,11 @@
 import android.os.IBinder;
 import android.util.Log;
 
+import com.android.email.Controller;
+import com.android.emailcommon.provider.EmailContent;
+import com.android.emailcommon.provider.EmailContent.AccountColumns;
+import com.android.emailcommon.provider.Mailbox;
+
 public class PopImapSyncAdapterService extends Service {
     private static final String TAG = "PopImapSyncAdapterService";
     private static SyncAdapterImpl sSyncAdapter = null;
@@ -86,12 +87,13 @@
         if (extras.getBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, false)) {
             String emailAddress = account.name;
             // Find an EmailProvider account with the Account's email address
-            Cursor c = context.getContentResolver().query(EmailContent.Account.CONTENT_URI,
-                    EmailContent.ID_PROJECTION, EmailContent.Account.EMAIL_ADDRESS + "=?",
+            Cursor c = context.getContentResolver().query(
+                    com.android.emailcommon.provider.Account.CONTENT_URI,
+                    EmailContent.ID_PROJECTION, AccountColumns.EMAIL_ADDRESS + "=?",
                     new String[] {emailAddress}, null);
             if (c.moveToNext()) {
                 // If we have one, find the inbox and start it syncing
-                long accountId = c.getLong(EmailContent.Account.ID_PROJECTION_COLUMN);
+                long accountId = c.getLong(EmailContent.ID_PROJECTION_COLUMN);
                 long mailboxId = Mailbox.findMailboxOfType(context, accountId,
                         Mailbox.TYPE_INBOX);
                 if (mailboxId > 0) {
diff --git a/src/com/android/email/widget/EmailWidget.java b/src/com/android/email/widget/EmailWidget.java
index d0a49f0..44670be 100644
--- a/src/com/android/email/widget/EmailWidget.java
+++ b/src/com/android/email/widget/EmailWidget.java
@@ -24,7 +24,7 @@
 import com.android.email.activity.Welcome;
 import com.android.email.provider.WidgetProvider.WidgetService;
 import com.android.emailcommon.Logging;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.EmailAsyncTask;
diff --git a/src/com/android/email/widget/EmailWidgetLoader.java b/src/com/android/email/widget/EmailWidgetLoader.java
index 4c959db2..71e3608 100644
--- a/src/com/android/email/widget/EmailWidgetLoader.java
+++ b/src/com/android/email/widget/EmailWidgetLoader.java
@@ -18,8 +18,8 @@
 
 import com.android.email.R;
 import com.android.email.data.ThrottlingCursorLoader;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.EmailContent.MessageColumns;
 import com.android.emailcommon.provider.Mailbox;
diff --git a/src/com/android/email/widget/WidgetConfiguration.java b/src/com/android/email/widget/WidgetConfiguration.java
index 0f96b40..4609478 100644
--- a/src/com/android/email/widget/WidgetConfiguration.java
+++ b/src/com/android/email/widget/WidgetConfiguration.java
@@ -27,7 +27,7 @@
 import com.android.email.activity.ShortcutPickerFragment;
 import com.android.email.activity.ShortcutPickerFragment.AccountShortcutPickerFragment;
 import com.android.email.activity.ShortcutPickerFragment.PickerCallback;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 
 /**
  * Activity to configure the Email widget.
diff --git a/src/com/android/email/widget/WidgetManager.java b/src/com/android/email/widget/WidgetManager.java
index 878e525..87d0259 100644
--- a/src/com/android/email/widget/WidgetManager.java
+++ b/src/com/android/email/widget/WidgetManager.java
@@ -18,8 +18,8 @@
 
 import com.android.email.Email;
 import com.android.emailcommon.Logging;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
-import com.android.emailcommon.provider.EmailContent.Account;
 
 import android.content.Context;
 import android.content.SharedPreferences;
diff --git a/tests/src/com/android/email/AccountTestCase.java b/tests/src/com/android/email/AccountTestCase.java
index c7c5b23..d450ec0 100644
--- a/tests/src/com/android/email/AccountTestCase.java
+++ b/tests/src/com/android/email/AccountTestCase.java
@@ -19,8 +19,8 @@
 import com.android.email.provider.EmailProvider;
 import com.android.email.provider.ProviderTestUtils;
 import com.android.emailcommon.AccountManagerTypes;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 
 import android.accounts.AccountManager;
 import android.accounts.AccountManagerFuture;
diff --git a/tests/src/com/android/email/ControllerProviderOpsTests.java b/tests/src/com/android/email/ControllerProviderOpsTests.java
index a801e0a..a027c7c 100644
--- a/tests/src/com/android/email/ControllerProviderOpsTests.java
+++ b/tests/src/com/android/email/ControllerProviderOpsTests.java
@@ -19,8 +19,8 @@
 import com.android.email.provider.ContentCache;
 import com.android.email.provider.EmailProvider;
 import com.android.email.provider.ProviderTestUtils;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Body;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.HostAuth;
diff --git a/tests/src/com/android/email/MessagingControllerUnitTests.java b/tests/src/com/android/email/MessagingControllerUnitTests.java
index 15977ce..c4372b8 100644
--- a/tests/src/com/android/email/MessagingControllerUnitTests.java
+++ b/tests/src/com/android/email/MessagingControllerUnitTests.java
@@ -17,7 +17,7 @@
 package com.android.email;
 
 import com.android.emailcommon.mail.MockFolder;
-import com.android.emailcommon.provider.EmailContent;
+import com.android.emailcommon.provider.Account;
 
 import android.content.ContentUris;
 import android.net.Uri;
@@ -33,7 +33,7 @@
 public class MessagingControllerUnitTests extends AndroidTestCase {
 
     private long mAccountId;
-    private EmailContent.Account mAccount;
+    private Account mAccount;
     
     /**
      * Delete any dummy accounts we set up for this test
@@ -44,7 +44,7 @@
         
         if (mAccount != null) {
             Uri uri = ContentUris.withAppendedId(
-                    EmailContent.Account.CONTENT_URI, mAccountId);
+                    Account.CONTENT_URI, mAccountId);
             getContext().getContentResolver().delete(uri, null, null);
         }
     }
@@ -76,7 +76,7 @@
      * Create a dummy account with minimal fields
      */
     private void createTestAccount() {
-        mAccount = new EmailContent.Account();
+        mAccount = new Account();
         mAccount.save(getContext());
         
         mAccountId = mAccount.mId;
diff --git a/tests/src/com/android/email/NotificationControllerTest.java b/tests/src/com/android/email/NotificationControllerTest.java
index e4a65ac..b5ba163 100644
--- a/tests/src/com/android/email/NotificationControllerTest.java
+++ b/tests/src/com/android/email/NotificationControllerTest.java
@@ -17,7 +17,7 @@
 package com.android.email;
 
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 
diff --git a/tests/src/com/android/email/RefreshManagerTest.java b/tests/src/com/android/email/RefreshManagerTest.java
index 694a6e4..853c354 100644
--- a/tests/src/com/android/email/RefreshManagerTest.java
+++ b/tests/src/com/android/email/RefreshManagerTest.java
@@ -19,7 +19,7 @@
 import com.android.email.provider.ProviderTestUtils;
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 
 import android.content.Context;
 import android.test.InstrumentationTestCase;
diff --git a/tests/src/com/android/email/SecurityPolicyTests.java b/tests/src/com/android/email/SecurityPolicyTests.java
index a614c82..4dcb73f 100644
--- a/tests/src/com/android/email/SecurityPolicyTests.java
+++ b/tests/src/com/android/email/SecurityPolicyTests.java
@@ -19,8 +19,8 @@
 import com.android.email.provider.ContentCache;
 import com.android.email.provider.EmailProvider;
 import com.android.email.provider.ProviderTestUtils;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.provider.Policy;
diff --git a/tests/src/com/android/email/UtilityLargeTest.java b/tests/src/com/android/email/UtilityLargeTest.java
index 3a7162f..a752563 100644
--- a/tests/src/com/android/email/UtilityLargeTest.java
+++ b/tests/src/com/android/email/UtilityLargeTest.java
@@ -17,7 +17,7 @@
 package com.android.email;
 
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.utility.Utility;
 
 import android.content.Context;
diff --git a/tests/src/com/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java b/tests/src/com/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
index 43f57a0..c881a1c 100644
--- a/tests/src/com/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
+++ b/tests/src/com/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
@@ -18,7 +18,7 @@
 
 import com.android.email.DBTestHelper;
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 
 import android.content.Context;
 import android.content.Loader;
diff --git a/tests/src/com/android/email/activity/FindParentMailboxTaskTest.java b/tests/src/com/android/email/activity/FindParentMailboxTaskTest.java
index 4e28b91..1a1340d 100644
--- a/tests/src/com/android/email/activity/FindParentMailboxTaskTest.java
+++ b/tests/src/com/android/email/activity/FindParentMailboxTaskTest.java
@@ -18,7 +18,7 @@
 
 import com.android.email.DBTestHelper;
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
 
 import android.content.Context;
diff --git a/tests/src/com/android/email/activity/MailboxFinderTest.java b/tests/src/com/android/email/activity/MailboxFinderTest.java
index b254c62..ba1ee59 100644
--- a/tests/src/com/android/email/activity/MailboxFinderTest.java
+++ b/tests/src/com/android/email/activity/MailboxFinderTest.java
@@ -22,7 +22,7 @@
 import com.android.email.TestUtils;
 import com.android.email.provider.ProviderTestUtils;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
 
 import android.content.Context;
diff --git a/tests/src/com/android/email/activity/MailboxFragmentAdapterTest.java b/tests/src/com/android/email/activity/MailboxFragmentAdapterTest.java
index a86b389..2bf19d1 100644
--- a/tests/src/com/android/email/activity/MailboxFragmentAdapterTest.java
+++ b/tests/src/com/android/email/activity/MailboxFragmentAdapterTest.java
@@ -18,8 +18,8 @@
 
 import com.android.email.provider.EmailProvider;
 import com.android.email.provider.ProviderTestUtils;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
 
diff --git a/tests/src/com/android/email/activity/MessageComposeTests.java b/tests/src/com/android/email/activity/MessageComposeTests.java
index 269bd9f..7d5eee3 100644
--- a/tests/src/com/android/email/activity/MessageComposeTests.java
+++ b/tests/src/com/android/email/activity/MessageComposeTests.java
@@ -23,7 +23,7 @@
 import com.android.emailcommon.Logging;
 import com.android.emailcommon.mail.Address;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.google.android.collect.Lists;
diff --git a/tests/src/com/android/email/activity/MessageListTests.java b/tests/src/com/android/email/activity/MessageListTests.java
index d282806..76d921d 100644
--- a/tests/src/com/android/email/activity/MessageListTests.java
+++ b/tests/src/com/android/email/activity/MessageListTests.java
@@ -18,7 +18,7 @@
 
 import com.android.email.DBTestHelper;
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 
 import android.content.Context;
 import android.content.Intent;
diff --git a/tests/src/com/android/email/activity/MessagesAdapterTests.java b/tests/src/com/android/email/activity/MessagesAdapterTests.java
index 1de3c1c..243230a 100644
--- a/tests/src/com/android/email/activity/MessagesAdapterTests.java
+++ b/tests/src/com/android/email/activity/MessagesAdapterTests.java
@@ -18,7 +18,7 @@
 
 import com.android.email.DBTestHelper;
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.Mailbox;
 
 import android.content.Context;
diff --git a/tests/src/com/android/email/activity/WelcomeTests.java b/tests/src/com/android/email/activity/WelcomeTests.java
index 98144eb..c9f1446 100644
--- a/tests/src/com/android/email/activity/WelcomeTests.java
+++ b/tests/src/com/android/email/activity/WelcomeTests.java
@@ -18,7 +18,7 @@
 
 import com.android.email.DBTestHelper;
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 
 import android.content.Context;
 import android.test.AndroidTestCase;
diff --git a/tests/src/com/android/email/activity/setup/AccountSettingsTests.java b/tests/src/com/android/email/activity/setup/AccountSettingsTests.java
index 1c0a03b..15e0cc6 100644
--- a/tests/src/com/android/email/activity/setup/AccountSettingsTests.java
+++ b/tests/src/com/android/email/activity/setup/AccountSettingsTests.java
@@ -17,7 +17,7 @@
 package com.android.email.activity.setup;
 
 import com.android.email.mail.Store;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import android.content.ContentUris;
diff --git a/tests/src/com/android/email/activity/setup/AccountSetupAccountTypeTests.java b/tests/src/com/android/email/activity/setup/AccountSetupAccountTypeTests.java
index 86f394a..e035edc 100644
--- a/tests/src/com/android/email/activity/setup/AccountSetupAccountTypeTests.java
+++ b/tests/src/com/android/email/activity/setup/AccountSetupAccountTypeTests.java
@@ -25,7 +25,7 @@
 import android.view.View;
 
 import com.android.email.R;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import java.net.URISyntaxException;
diff --git a/tests/src/com/android/email/activity/setup/AccountSetupExchangeTests.java b/tests/src/com/android/email/activity/setup/AccountSetupExchangeTests.java
index be76e07..711d739 100644
--- a/tests/src/com/android/email/activity/setup/AccountSetupExchangeTests.java
+++ b/tests/src/com/android/email/activity/setup/AccountSetupExchangeTests.java
@@ -27,8 +27,7 @@
 
 import com.android.email.R;
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import java.net.URISyntaxException;
@@ -229,7 +228,7 @@
      * Create an intent with the Account in it
      */
     private Intent getTestIntent(String storeUriString) throws URISyntaxException {
-        EmailContent.Account account = new EmailContent.Account();
+        Account account = new Account();
         Context context = getInstrumentation().getTargetContext();
         HostAuth auth = account.getOrCreateHostAuthRecv(context);
         HostAuth.setHostAuthFromString(auth, storeUriString);
diff --git a/tests/src/com/android/email/activity/setup/AccountSetupIncomingTests.java b/tests/src/com/android/email/activity/setup/AccountSetupIncomingTests.java
index 5395c4f..5a5786b 100644
--- a/tests/src/com/android/email/activity/setup/AccountSetupIncomingTests.java
+++ b/tests/src/com/android/email/activity/setup/AccountSetupIncomingTests.java
@@ -17,7 +17,7 @@
 package com.android.email.activity.setup;
 
 import com.android.email.R;
-import com.android.emailcommon.provider.EmailContent;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import android.content.Context;
@@ -186,7 +186,7 @@
      */
     private Intent getTestIntent(String storeUriString)
             throws URISyntaxException {
-        EmailContent.Account account = new EmailContent.Account();
+        Account account = new Account();
         Context context = getInstrumentation().getTargetContext();
         HostAuth auth = account.getOrCreateHostAuthRecv(context);
         HostAuth.setHostAuthFromString(auth, storeUriString);
diff --git a/tests/src/com/android/email/activity/setup/AccountSetupOptionsTests.java b/tests/src/com/android/email/activity/setup/AccountSetupOptionsTests.java
index e86105b..9094084 100644
--- a/tests/src/com/android/email/activity/setup/AccountSetupOptionsTests.java
+++ b/tests/src/com/android/email/activity/setup/AccountSetupOptionsTests.java
@@ -18,7 +18,7 @@
 
 import com.android.email.R;
 import com.android.email.mail.Store;
-import com.android.emailcommon.provider.EmailContent;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import android.content.Context;
@@ -59,7 +59,7 @@
 
         getActivityAndFields();
 
-        boolean hasPush = frequencySpinnerHasValue(EmailContent.Account.CHECK_INTERVAL_PUSH);
+        boolean hasPush = frequencySpinnerHasValue(Account.CHECK_INTERVAL_PUSH);
         assertFalse(hasPush);
     }
 
@@ -73,7 +73,7 @@
 
         getActivityAndFields();
 
-        boolean hasPush = frequencySpinnerHasValue(EmailContent.Account.CHECK_INTERVAL_PUSH);
+        boolean hasPush = frequencySpinnerHasValue(Account.CHECK_INTERVAL_PUSH);
         assertFalse(hasPush);
     }
 
@@ -93,7 +93,7 @@
 
         getActivityAndFields();
 
-        boolean hasPush = frequencySpinnerHasValue(EmailContent.Account.CHECK_INTERVAL_PUSH);
+        boolean hasPush = frequencySpinnerHasValue(Account.CHECK_INTERVAL_PUSH);
         assertTrue(hasPush);
     }
 
@@ -176,7 +176,7 @@
      */
     private Intent getTestIntent(String name, String storeUri)
             throws URISyntaxException {
-        EmailContent.Account account = new EmailContent.Account();
+        Account account = new Account();
         account.setSenderName(name);
         Context context = getInstrumentation().getTargetContext();
         HostAuth auth = account.getOrCreateHostAuthRecv(context);
diff --git a/tests/src/com/android/email/activity/setup/AccountSetupOutgoingTests.java b/tests/src/com/android/email/activity/setup/AccountSetupOutgoingTests.java
index 42e268a..ff7832d 100644
--- a/tests/src/com/android/email/activity/setup/AccountSetupOutgoingTests.java
+++ b/tests/src/com/android/email/activity/setup/AccountSetupOutgoingTests.java
@@ -17,7 +17,7 @@
 package com.android.email.activity.setup;
 
 import com.android.email.R;
-import com.android.emailcommon.provider.EmailContent;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import android.content.Context;
@@ -182,7 +182,7 @@
      */
     private Intent getTestIntent(String senderUriString)
             throws URISyntaxException {
-        EmailContent.Account account = new EmailContent.Account();
+        Account account = new Account();
         Context context = getInstrumentation().getTargetContext();
         HostAuth auth = account.getOrCreateHostAuthSend(context);
         HostAuth.setHostAuthFromString(auth, senderUriString);
diff --git a/tests/src/com/android/email/mail/StoreTests.java b/tests/src/com/android/email/mail/StoreTests.java
index 12286bd..631886e 100644
--- a/tests/src/com/android/email/mail/StoreTests.java
+++ b/tests/src/com/android/email/mail/StoreTests.java
@@ -25,8 +25,8 @@
 import com.android.email.provider.EmailProvider;
 import com.android.email.provider.ProviderTestUtils;
 import com.android.emailcommon.mail.MessagingException;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.provider.Mailbox;
 
diff --git a/tests/src/com/android/email/mail/store/ImapStoreUnitTests.java b/tests/src/com/android/email/mail/store/ImapStoreUnitTests.java
index 9379d78..8db8fca 100644
--- a/tests/src/com/android/email/mail/store/ImapStoreUnitTests.java
+++ b/tests/src/com/android/email/mail/store/ImapStoreUnitTests.java
@@ -42,7 +42,7 @@
 import com.android.emailcommon.mail.Message.RecipientType;
 import com.android.emailcommon.mail.MessagingException;
 import com.android.emailcommon.mail.Part;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.provider.Mailbox;
 import com.android.emailcommon.utility.Utility;
diff --git a/tests/src/com/android/email/mail/store/Pop3StoreUnitTests.java b/tests/src/com/android/email/mail/store/Pop3StoreUnitTests.java
index 39b3002..ec6e9ea 100644
--- a/tests/src/com/android/email/mail/store/Pop3StoreUnitTests.java
+++ b/tests/src/com/android/email/mail/store/Pop3StoreUnitTests.java
@@ -29,7 +29,7 @@
 import com.android.emailcommon.mail.Message;
 import com.android.emailcommon.mail.Message.RecipientType;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import android.test.InstrumentationTestCase;
diff --git a/tests/src/com/android/email/mail/transport/SmtpSenderUnitTests.java b/tests/src/com/android/email/mail/transport/SmtpSenderUnitTests.java
index 945335f..82fa7c3 100644
--- a/tests/src/com/android/email/mail/transport/SmtpSenderUnitTests.java
+++ b/tests/src/com/android/email/mail/transport/SmtpSenderUnitTests.java
@@ -21,7 +21,7 @@
 import com.android.email.provider.EmailProvider;
 import com.android.emailcommon.mail.Address;
 import com.android.emailcommon.mail.MessagingException;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.Body;
 import com.android.emailcommon.provider.EmailContent.Message;
diff --git a/tests/src/com/android/email/provider/AccountBackupRestoreTests.java b/tests/src/com/android/email/provider/AccountBackupRestoreTests.java
index a970552..6c41753 100644
--- a/tests/src/com/android/email/provider/AccountBackupRestoreTests.java
+++ b/tests/src/com/android/email/provider/AccountBackupRestoreTests.java
@@ -16,8 +16,8 @@
 
 package com.android.email.provider;
 
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.HostAuth;
 
 import android.content.ContentResolver;
diff --git a/tests/src/com/android/email/provider/AttachmentProviderTests.java b/tests/src/com/android/email/provider/AttachmentProviderTests.java
index d13f321..e02ccf7 100644
--- a/tests/src/com/android/email/provider/AttachmentProviderTests.java
+++ b/tests/src/com/android/email/provider/AttachmentProviderTests.java
@@ -19,8 +19,8 @@
 import com.android.email.AttachmentInfo;
 import com.android.email.R;
 import com.android.emailcommon.mail.MessagingException;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
diff --git a/tests/src/com/android/email/provider/ContentCacheTests.java b/tests/src/com/android/email/provider/ContentCacheTests.java
index 8b141fd..aea697e 100644
--- a/tests/src/com/android/email/provider/ContentCacheTests.java
+++ b/tests/src/com/android/email/provider/ContentCacheTests.java
@@ -19,8 +19,8 @@
 import com.android.email.provider.ContentCache.CacheToken;
 import com.android.email.provider.ContentCache.CachedCursor;
 import com.android.email.provider.ContentCache.TokenList;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.Mailbox;
 
 import android.content.ContentResolver;
diff --git a/tests/src/com/android/email/provider/PolicyTests.java b/tests/src/com/android/email/provider/PolicyTests.java
index 0a6f7a2..a8f7f3b 100644
--- a/tests/src/com/android/email/provider/PolicyTests.java
+++ b/tests/src/com/android/email/provider/PolicyTests.java
@@ -16,8 +16,8 @@
 
 package com.android.email.provider;
 
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.AttachmentColumns;
 import com.android.emailcommon.provider.EmailContent.Message;
diff --git a/tests/src/com/android/email/provider/ProviderTestUtils.java b/tests/src/com/android/email/provider/ProviderTestUtils.java
index d6277ac..20491b5 100644
--- a/tests/src/com/android/email/provider/ProviderTestUtils.java
+++ b/tests/src/com/android/email/provider/ProviderTestUtils.java
@@ -17,8 +17,8 @@
 package com.android.email.provider;
 
 import com.android.emailcommon.internet.Rfc822Output;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.Body;
 import com.android.emailcommon.provider.EmailContent.Message;
@@ -54,7 +54,7 @@
         account.mEmailAddress = name + "@android.com";
         account.mSyncKey = "sync-key-" + name;
         account.mSyncLookback = 1;
-        account.mSyncInterval = EmailContent.Account.CHECK_INTERVAL_NEVER;
+        account.mSyncInterval = Account.CHECK_INTERVAL_NEVER;
         account.mHostAuthKeyRecv = 0;
         account.mHostAuthKeySend = 0;
         account.mFlags = 4;
@@ -78,7 +78,7 @@
      */
     public static void deleteAccount(Context context, long accountId) {
         context.getContentResolver().delete(ContentUris.withAppendedId(
-                EmailContent.Account.CONTENT_URI, accountId), null, null);
+                Account.CONTENT_URI, accountId), null, null);
     }
 
     /**
@@ -139,7 +139,7 @@
         box.mDelimiter = delimiter;
         box.mSyncKey = "sync-key-" + name;
         box.mSyncLookback = 2;
-        box.mSyncInterval = EmailContent.Account.CHECK_INTERVAL_NEVER;
+        box.mSyncInterval = Account.CHECK_INTERVAL_NEVER;
         box.mSyncTime = 3;
         box.mFlagVisible = true;
         box.mFlags = 5;
diff --git a/tests/src/com/android/email/provider/ProviderTests.java b/tests/src/com/android/email/provider/ProviderTests.java
index 0ce3da7..2a013ec 100644
--- a/tests/src/com/android/email/provider/ProviderTests.java
+++ b/tests/src/com/android/email/provider/ProviderTests.java
@@ -17,8 +17,8 @@
 package com.android.email.provider;
 
 import com.android.emailcommon.AccountManagerTypes;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.AttachmentColumns;
@@ -135,7 +135,7 @@
         Account account1 = ProviderTestUtils.setupAccount("account-save", true, mMockContext);
         long account1Id = account1.mId;
 
-        Account account2 = EmailContent.Account.restoreAccountWithId(mMockContext, account1Id);
+        Account account2 = Account.restoreAccountWithId(mMockContext, account1Id);
 
         ProviderTestUtils.assertAccountEqual("testAccountSave", account1, account2);
     }
@@ -154,7 +154,7 @@
         long account1Id = account1.mId;
 
         // Confirm account reads back correctly
-        Account account1get = EmailContent.Account.restoreAccountWithId(mMockContext, account1Id);
+        Account account1get = Account.restoreAccountWithId(mMockContext, account1Id);
         ProviderTestUtils.assertAccountEqual("testAccountSave", account1, account1get);
 
         // Confirm hostauth fields can be accessed & read back correctly
@@ -2083,7 +2083,7 @@
         box.mDelimiter = '/';
         box.mSyncKey = "sync-key";
         box.mSyncLookback = 2;
-        box.mSyncInterval = EmailContent.Account.CHECK_INTERVAL_NEVER;
+        box.mSyncInterval = Account.CHECK_INTERVAL_NEVER;
         box.mSyncTime = 3;
         box.mFlagVisible = true;
         box.mFlags = 5;
diff --git a/tests/src/com/android/email/service/AttachmentDownloadServiceTests.java b/tests/src/com/android/email/service/AttachmentDownloadServiceTests.java
index 127ef37..712cced 100644
--- a/tests/src/com/android/email/service/AttachmentDownloadServiceTests.java
+++ b/tests/src/com/android/email/service/AttachmentDownloadServiceTests.java
@@ -22,7 +22,7 @@
 import com.android.email.provider.ProviderTestUtils;
 import com.android.email.service.AttachmentDownloadService.DownloadRequest;
 import com.android.email.service.AttachmentDownloadService.DownloadSet;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.Mailbox;
diff --git a/tests/src/com/android/email/service/EmailBroadcastProcessorServiceTests.java b/tests/src/com/android/email/service/EmailBroadcastProcessorServiceTests.java
index 76ff7cb..29c61fd 100644
--- a/tests/src/com/android/email/service/EmailBroadcastProcessorServiceTests.java
+++ b/tests/src/com/android/email/service/EmailBroadcastProcessorServiceTests.java
@@ -18,7 +18,7 @@
 
 import com.android.email.AccountTestCase;
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.utility.Utility;
diff --git a/tests/src/com/android/email/service/MailServiceTests.java b/tests/src/com/android/email/service/MailServiceTests.java
index 71ce790..ae27647 100644
--- a/tests/src/com/android/email/service/MailServiceTests.java
+++ b/tests/src/com/android/email/service/MailServiceTests.java
@@ -22,8 +22,8 @@
 import com.android.email.provider.ProviderTestUtils;
 import com.android.email.service.MailService.AccountSyncReport;
 import com.android.emailcommon.AccountManagerTypes;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.HostAuth;
 import com.android.emailcommon.utility.Utility;
 
diff --git a/tests/src/com/android/emailcommon/mail/MessageTestUtils.java b/tests/src/com/android/emailcommon/mail/MessageTestUtils.java
index 8ccc5da..643e682 100644
--- a/tests/src/com/android/emailcommon/mail/MessageTestUtils.java
+++ b/tests/src/com/android/emailcommon/mail/MessageTestUtils.java
@@ -21,7 +21,7 @@
 import com.android.emailcommon.internet.MimeMessage;
 import com.android.emailcommon.internet.MimeMultipart;
 import com.android.emailcommon.internet.TextBody;
-import com.android.emailcommon.provider.EmailContent;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.utility.AttachmentUtilities;
 
 import android.net.Uri;
@@ -62,7 +62,7 @@
      * @param account Account object
      * @return AttachmentProvider content URI
      */
-    public static Uri contentUri(long attachmentId, EmailContent.Account account) {
+    public static Uri contentUri(long attachmentId, Account account) {
         return AttachmentUtilities.getAttachmentUri(account.mId, attachmentId);
     }
 
diff --git a/tests/src/com/android/emailcommon/provider/MailboxTests.java b/tests/src/com/android/emailcommon/provider/MailboxTests.java
index 2c36423..8a6dec4 100644
--- a/tests/src/com/android/emailcommon/provider/MailboxTests.java
+++ b/tests/src/com/android/emailcommon/provider/MailboxTests.java
@@ -19,7 +19,6 @@
 import com.android.email.provider.ContentCache;
 import com.android.email.provider.EmailProvider;
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.EmailContent.MessageColumns;
diff --git a/tests/src/com/android/emailcommon/utility/UtilityMediumTests.java b/tests/src/com/android/emailcommon/utility/UtilityMediumTests.java
index 5d7cc4c..976b072 100644
--- a/tests/src/com/android/emailcommon/utility/UtilityMediumTests.java
+++ b/tests/src/com/android/emailcommon/utility/UtilityMediumTests.java
@@ -18,8 +18,8 @@
 
 import com.android.email.provider.EmailProvider;
 import com.android.email.provider.ProviderTestUtils;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
-import com.android.emailcommon.provider.EmailContent.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.Message;
 import com.android.emailcommon.provider.EmailContent.MessageColumns;
diff --git a/tests/src/com/android/emailcommon/utility/UtilityUnitTests.java b/tests/src/com/android/emailcommon/utility/UtilityUnitTests.java
index d0edd55..1cf3f48 100644
--- a/tests/src/com/android/emailcommon/utility/UtilityUnitTests.java
+++ b/tests/src/com/android/emailcommon/utility/UtilityUnitTests.java
@@ -21,7 +21,7 @@
 import com.android.email.R;
 import com.android.email.TestUtils;
 import com.android.email.provider.ProviderTestUtils;
-import com.android.emailcommon.provider.EmailContent.Account;
+import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent.Attachment;
 import com.android.emailcommon.provider.EmailContent.MailboxColumns;
 import com.android.emailcommon.provider.EmailContent.Message;