diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/account/AccountManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/account/AccountManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..4aa4fb2b5b34b34ebbc1156fdf40315a21b9fcb9
--- /dev/null
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/account/AccountManager.java
@@ -0,0 +1,6 @@
+package org.briarproject.bramble.api.account;
+
+public interface AccountManager {
+
+	boolean hasDatabaseKey();
+}
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java
index 07bc14eea22b5f93e68734cacd3bf778a9912148..d817c6d57e7e39dd4455a3f2050ec8f41a73ce67 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java
@@ -1,5 +1,6 @@
 package org.briarproject.bramble;
 
+import org.briarproject.bramble.account.AccountModule;
 import org.briarproject.bramble.client.ClientModule;
 import org.briarproject.bramble.contact.ContactModule;
 import org.briarproject.bramble.crypto.CryptoExecutorModule;
@@ -26,6 +27,7 @@ import org.briarproject.bramble.versioning.VersioningModule;
 import dagger.Module;
 
 @Module(includes = {
+		AccountModule.class,
 		ClientModule.class,
 		ContactModule.class,
 		CryptoModule.class,
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd4df479a3c27b6733cd1b55109421c97fca3fc5
--- /dev/null
+++ b/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java
@@ -0,0 +1,21 @@
+package org.briarproject.bramble.account;
+
+import org.briarproject.bramble.api.account.AccountManager;
+import org.briarproject.bramble.api.db.DatabaseConfig;
+
+import javax.inject.Inject;
+
+class AccountManagerImpl implements AccountManager {
+
+	private final DatabaseConfig databaseConfig;
+
+	@Inject
+	AccountManagerImpl(DatabaseConfig databaseConfig) {
+		this.databaseConfig = databaseConfig;
+	}
+
+	@Override
+	public boolean hasDatabaseKey() {
+		return databaseConfig.getEncryptionKey() != null;
+	}
+}
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/account/AccountModule.java b/bramble-core/src/main/java/org/briarproject/bramble/account/AccountModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..e8220176a8ab5863328988945125138ff89c2124
--- /dev/null
+++ b/bramble-core/src/main/java/org/briarproject/bramble/account/AccountModule.java
@@ -0,0 +1,18 @@
+package org.briarproject.bramble.account;
+
+import org.briarproject.bramble.api.account.AccountManager;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+
+@Module
+public class AccountModule {
+
+	@Provides
+	@Singleton
+	AccountManager provideAccountManager(AccountManagerImpl accountManager) {
+		return accountManager;
+	}
+}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
index 087aa5ea0cd7d6a2f6b76eb9c9b3a82d92e269fc..8935cfb7fd99c685a405d476139087755eb65bdd 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidComponent.java
@@ -5,6 +5,7 @@ import android.content.SharedPreferences;
 import org.briarproject.bramble.BrambleAndroidModule;
 import org.briarproject.bramble.BrambleCoreEagerSingletons;
 import org.briarproject.bramble.BrambleCoreModule;
+import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.contact.ContactExchangeTask;
 import org.briarproject.bramble.api.contact.ContactManager;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
@@ -151,6 +152,8 @@ public interface AndroidComponent
 	@IoExecutor
 	Executor ioExecutor();
 
+	AccountManager accountManager();
+
 	void inject(SignInReminderReceiver briarService);
 
 	void inject(BriarService briarService);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java b/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java
index f40d2a42bf6e8455eb0f43b39f4a63315eaf74fc..980e6cdfc599b67760626384686e77f2acea8a7d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java
@@ -17,7 +17,7 @@ import android.os.IBinder;
 import android.support.v4.app.NotificationCompat;
 import android.support.v4.content.ContextCompat;
 
-import org.briarproject.bramble.api.db.DatabaseConfig;
+import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.StartResult;
 import org.briarproject.bramble.api.system.AndroidExecutor;
@@ -75,12 +75,13 @@ public class BriarService extends Service {
 	private BroadcastReceiver receiver = null;
 
 	@Inject
-	protected DatabaseConfig databaseConfig;
+	AccountManager accountManager;
+
 	// Fields that are accessed from background threads must be volatile
 	@Inject
-	protected volatile LifecycleManager lifecycleManager;
+	volatile LifecycleManager lifecycleManager;
 	@Inject
-	protected volatile AndroidExecutor androidExecutor;
+	volatile AndroidExecutor androidExecutor;
 	private volatile boolean started = false;
 
 	@Override
@@ -96,7 +97,7 @@ public class BriarService extends Service {
 			stopSelf();
 			return;
 		}
-		if (databaseConfig.getEncryptionKey() == null) {
+		if (!accountManager.hasDatabaseKey()) {
 			LOG.info("No database key");
 			stopSelf();
 			return;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java
index 3d2d8361cb4f79ef0645058700dfff1d62aba354..cf71839f9f757d4ed0f2eadd950d5c3cef97f804 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java
@@ -61,7 +61,7 @@ public abstract class BriarActivity extends BaseActivity {
 	@Override
 	public void onStart() {
 		super.onStart();
-		if (!briarController.hasEncryptionKey() && !isFinishing()) {
+		if (!briarController.accountSignedIn() && !isFinishing()) {
 			Intent i = new Intent(this, PasswordActivity.class);
 			startActivityForResult(i, REQUEST_PASSWORD);
 		} else if (SDK_INT >= 23) {
@@ -138,7 +138,7 @@ public abstract class BriarActivity extends BaseActivity {
 	}
 
 	protected void signOut(boolean removeFromRecentApps) {
-		if (briarController.hasEncryptionKey()) {
+		if (briarController.accountSignedIn()) {
 			// Don't use UiResultHandler because we want the result even if
 			// this activity has been destroyed
 			briarController.signOut(result -> runOnUiThread(
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarController.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarController.java
index 350faeabaa0d8565b6a5ef5d477716a09cb1e2c3..e4e60c6926c4afdab326a952d88facd2368f80be 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarController.java
@@ -6,7 +6,7 @@ public interface BriarController extends ActivityLifecycleController {
 
 	void startAndBindService();
 
-	boolean hasEncryptionKey();
+	boolean accountSignedIn();
 
 	/**
 	 * Returns true via the handler when the app has dozed
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarControllerImpl.java
index a668a450d0b389652ce8ecb88a177ccce2d2014e..1271f4d212c29113f133f3e1a132cfc63c936b83 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarControllerImpl.java
@@ -5,7 +5,7 @@ import android.content.Intent;
 import android.os.IBinder;
 import android.support.annotation.CallSuper;
 
-import org.briarproject.bramble.api.db.DatabaseConfig;
+import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.settings.Settings;
@@ -33,8 +33,7 @@ public class BriarControllerImpl implements BriarController {
 	public static final String DOZE_ASK_AGAIN = "dozeAskAgain";
 
 	private final BriarServiceConnection serviceConnection;
-	private final DatabaseConfig databaseConfig;
-	@DatabaseExecutor
+	private final AccountManager accountManager;
 	private final Executor databaseExecutor;
 	private final SettingsManager settingsManager;
 	private final DozeWatchdog dozeWatchdog;
@@ -44,12 +43,12 @@ public class BriarControllerImpl implements BriarController {
 
 	@Inject
 	BriarControllerImpl(BriarServiceConnection serviceConnection,
-			DatabaseConfig databaseConfig,
+			AccountManager accountManager,
 			@DatabaseExecutor Executor databaseExecutor,
 			SettingsManager settingsManager, DozeWatchdog dozeWatchdog,
 			Activity activity) {
 		this.serviceConnection = serviceConnection;
-		this.databaseConfig = databaseConfig;
+		this.accountManager = accountManager;
 		this.databaseExecutor = databaseExecutor;
 		this.settingsManager = settingsManager;
 		this.dozeWatchdog = dozeWatchdog;
@@ -59,7 +58,7 @@ public class BriarControllerImpl implements BriarController {
 	@Override
 	@CallSuper
 	public void onActivityCreate(Activity activity) {
-		if (databaseConfig.getEncryptionKey() != null) startAndBindService();
+		if (accountManager.hasDatabaseKey()) startAndBindService();
 	}
 
 	@Override
@@ -84,8 +83,8 @@ public class BriarControllerImpl implements BriarController {
 	}
 
 	@Override
-	public boolean hasEncryptionKey() {
-		return databaseConfig.getEncryptionKey() != null;
+	public boolean accountSignedIn() {
+		return accountManager.hasDatabaseKey();
 	}
 
 	@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java
index 1e0bce3a26aeb5a027bf60c4c3af3256754402b8..cb0d2c3c3f996a40dd6ad0a8c570c243c9b07685 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/ConfigControllerImpl.java
@@ -4,6 +4,7 @@ import android.content.Context;
 import android.content.SharedPreferences;
 import android.support.v7.preference.PreferenceManager;
 
+import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.AndroidUtils;
@@ -34,12 +35,14 @@ public class ConfigControllerImpl implements ConfigController {
 
 	private final SharedPreferences briarPrefs;
 	private final File dbKeyFile, dbKeyBackupFile;
+	private final AccountManager accountManager;
 	protected final DatabaseConfig databaseConfig;
 
 	@Inject
 	public ConfigControllerImpl(SharedPreferences briarPrefs,
-			DatabaseConfig databaseConfig) {
+			AccountManager accountManager, DatabaseConfig databaseConfig) {
 		this.briarPrefs = briarPrefs;
+		this.accountManager = accountManager;
 		this.databaseConfig = databaseConfig;
 		File keyDir = databaseConfig.getDatabaseKeyDirectory();
 		dbKeyFile = new File(keyDir, DB_KEY_FILENAME);
@@ -166,6 +169,6 @@ public class ConfigControllerImpl implements ConfigController {
 
 	@Override
 	public boolean accountSignedIn() {
-		return databaseConfig.getEncryptionKey() != null;
+		return accountManager.hasDatabaseKey();
 	}
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java
index f4368dd9a0b21dd59d7106f93dacba44b692860c..5504132b427d48ed6ab423c72a72d528239950eb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordActivity.java
@@ -85,7 +85,7 @@ public class PasswordActivity extends BaseActivity {
 	public void onStart() {
 		super.onStart();
 		// If the user has already signed in, clean up this instance
-		if (briarController.hasEncryptionKey()) {
+		if (briarController.accountSignedIn()) {
 			setResult(RESULT_OK);
 			finish();
 		}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordControllerImpl.java
index 905797acc6eae94d09f1686da63db1dccacfc084..ca9634502a7a58917826a9885e95aa9f3ba782e7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordControllerImpl.java
@@ -2,6 +2,7 @@ package org.briarproject.briar.android.login;
 
 import android.content.SharedPreferences;
 
+import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.CryptoExecutor;
 import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator;
@@ -33,10 +34,10 @@ public class PasswordControllerImpl extends ConfigControllerImpl
 
 	@Inject
 	PasswordControllerImpl(SharedPreferences briarPrefs,
-			DatabaseConfig databaseConfig,
+			AccountManager accountManager, DatabaseConfig databaseConfig,
 			@CryptoExecutor Executor cryptoExecutor, CryptoComponent crypto,
 			PasswordStrengthEstimator strengthEstimator) {
-		super(briarPrefs, databaseConfig);
+		super(briarPrefs, accountManager, databaseConfig);
 		this.cryptoExecutor = cryptoExecutor;
 		this.crypto = crypto;
 		this.strengthEstimator = strengthEstimator;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupControllerImpl.java
index 4c56553ba390a39e4a6f063a572e5eb0741b50d4..30d039849c191699854e43090a981d89a3870af2 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/SetupControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/SetupControllerImpl.java
@@ -3,6 +3,7 @@ package org.briarproject.briar.android.login;
 import android.content.SharedPreferences;
 import android.support.annotation.Nullable;
 
+import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.CryptoExecutor;
 import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator;
@@ -33,12 +34,12 @@ public class SetupControllerImpl extends PasswordControllerImpl
 
 	@Inject
 	SetupControllerImpl(SharedPreferences briarPrefs,
-			DatabaseConfig databaseConfig,
+			AccountManager accountManager, DatabaseConfig databaseConfig,
 			@CryptoExecutor Executor cryptoExecutor, CryptoComponent crypto,
 			PasswordStrengthEstimator strengthEstimator,
 			IdentityManager identityManager) {
-		super(briarPrefs, databaseConfig, cryptoExecutor, crypto,
-				strengthEstimator);
+		super(briarPrefs, accountManager, databaseConfig, cryptoExecutor,
+				crypto, strengthEstimator);
 		this.identityManager = identityManager;
 	}
 
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/controller/ConfigControllerImplTest.java b/briar-android/src/test/java/org/briarproject/briar/android/controller/ConfigControllerImplTest.java
index 859792b3c9872de53ef0c8d03b430be30ef14f30..d8e4445c29a57d0ccd171e40e1e70658a5199a8a 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/controller/ConfigControllerImplTest.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/controller/ConfigControllerImplTest.java
@@ -3,6 +3,7 @@ package org.briarproject.briar.android.controller;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
 
+import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.bramble.test.BrambleMockTestCase;
 import org.jmock.Expectations;
@@ -26,6 +27,8 @@ public class ConfigControllerImplTest extends BrambleMockTestCase {
 
 	private final SharedPreferences prefs =
 			context.mock(SharedPreferences.class);
+	private final AccountManager accountManager =
+			context.mock(AccountManager.class);
 	private final DatabaseConfig databaseConfig =
 			context.mock(DatabaseConfig.class);
 	private final Editor editor = context.mock(Editor.class);
@@ -56,7 +59,7 @@ public class ConfigControllerImplTest extends BrambleMockTestCase {
 		assertFalse(keyFile.exists());
 		assertFalse(keyBackupFile.exists());
 
-		ConfigControllerImpl c = new ConfigControllerImpl(prefs,
+		ConfigControllerImpl c = new ConfigControllerImpl(prefs, accountManager,
 				databaseConfig);
 
 		assertEquals(encryptedKeyHex, c.getEncryptedDatabaseKey());
@@ -85,7 +88,7 @@ public class ConfigControllerImplTest extends BrambleMockTestCase {
 		assertFalse(keyBackupFile.exists());
 		assertEquals(encryptedKeyHex, loadDatabaseKey(keyFile));
 
-		ConfigControllerImpl c = new ConfigControllerImpl(prefs,
+		ConfigControllerImpl c = new ConfigControllerImpl(prefs, accountManager,
 				databaseConfig);
 
 		assertEquals(encryptedKeyHex, c.getEncryptedDatabaseKey());
@@ -113,7 +116,7 @@ public class ConfigControllerImplTest extends BrambleMockTestCase {
 		assertTrue(keyBackupFile.exists());
 		assertEquals(encryptedKeyHex, loadDatabaseKey(keyBackupFile));
 
-		ConfigControllerImpl c = new ConfigControllerImpl(prefs,
+		ConfigControllerImpl c = new ConfigControllerImpl(prefs, accountManager,
 				databaseConfig);
 
 		assertEquals(encryptedKeyHex, c.getEncryptedDatabaseKey());
@@ -135,7 +138,7 @@ public class ConfigControllerImplTest extends BrambleMockTestCase {
 		assertFalse(keyFile.exists());
 		assertFalse(keyBackupFile.exists());
 
-		ConfigControllerImpl c = new ConfigControllerImpl(prefs,
+		ConfigControllerImpl c = new ConfigControllerImpl(prefs, accountManager,
 				databaseConfig);
 
 		assertNull(c.getEncryptedDatabaseKey());
@@ -160,7 +163,7 @@ public class ConfigControllerImplTest extends BrambleMockTestCase {
 		assertFalse(keyBackupFile.exists());
 		assertEquals(oldEncryptedKeyHex, loadDatabaseKey(keyFile));
 
-		ConfigController c = new ConfigControllerImpl(prefs,
+		ConfigController c = new ConfigControllerImpl(prefs, accountManager,
 				databaseConfig);
 
 		assertTrue(c.storeEncryptedDatabaseKey(encryptedKeyHex));
@@ -187,7 +190,7 @@ public class ConfigControllerImplTest extends BrambleMockTestCase {
 		assertTrue(keyBackupFile.exists());
 		assertEquals(oldEncryptedKeyHex, loadDatabaseKey(keyBackupFile));
 
-		ConfigController c = new ConfigControllerImpl(prefs,
+		ConfigController c = new ConfigControllerImpl(prefs, accountManager,
 				databaseConfig);
 
 		assertTrue(c.storeEncryptedDatabaseKey(encryptedKeyHex));
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/forum/TestForumActivity.java b/briar-android/src/test/java/org/briarproject/briar/android/forum/TestForumActivity.java
index 72b8d66448bfcff0d92accabdd47bf68ddc5f76f..7a04b4517bc2765b0e0d6d2f9e85e219d748088b 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/forum/TestForumActivity.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/forum/TestForumActivity.java
@@ -45,7 +45,7 @@ public class TestForumActivity extends ForumActivity {
 			protected BriarController provideBriarController(
 					BriarControllerImpl briarController) {
 				BriarController c = Mockito.mock(BriarController.class);
-				Mockito.when(c.hasEncryptionKey()).thenReturn(true);
+				Mockito.when(c.accountSignedIn()).thenReturn(true);
 				return c;
 			}
 
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/login/PasswordControllerImplTest.java b/briar-android/src/test/java/org/briarproject/briar/android/login/PasswordControllerImplTest.java
index 427dfa772d1cb52b75e2264344e8f4c2c8cf66d3..dcc2685b64d82f4dbbc6c77e4600b83eb7398891 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/login/PasswordControllerImplTest.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/login/PasswordControllerImplTest.java
@@ -2,6 +2,7 @@ package org.briarproject.briar.android.login;
 
 import android.content.SharedPreferences;
 
+import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator;
 import org.briarproject.bramble.api.db.DatabaseConfig;
@@ -30,6 +31,8 @@ public class PasswordControllerImplTest extends BrambleMockTestCase {
 
 	private final SharedPreferences briarPrefs =
 			context.mock(SharedPreferences.class);
+	private final AccountManager accountManager =
+			context.mock(AccountManager.class);
 	private final DatabaseConfig databaseConfig =
 			context.mock(DatabaseConfig.class);
 	private final CryptoComponent crypto = context.mock(CryptoComponent.class);
@@ -70,7 +73,8 @@ public class PasswordControllerImplTest extends BrambleMockTestCase {
 		storeDatabaseKey(keyBackupFile, toHexString(oldEncryptedKey));
 
 		PasswordControllerImpl p = new PasswordControllerImpl(briarPrefs,
-				databaseConfig, cryptoExecutor, crypto, estimator);
+				accountManager, databaseConfig, cryptoExecutor, crypto,
+				estimator);
 
 		AtomicBoolean capturedResult = new AtomicBoolean(false);
 		p.changePassword(oldPassword, newPassword, capturedResult::set);
@@ -104,7 +108,8 @@ public class PasswordControllerImplTest extends BrambleMockTestCase {
 		storeDatabaseKey(keyBackupFile, toHexString(oldEncryptedKey));
 
 		PasswordControllerImpl p = new PasswordControllerImpl(briarPrefs,
-				databaseConfig, cryptoExecutor, crypto, estimator);
+				accountManager, databaseConfig, cryptoExecutor, crypto,
+				estimator);
 
 		AtomicBoolean capturedResult = new AtomicBoolean(true);
 		p.changePassword(oldPassword, newPassword, capturedResult::set);
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/login/SetupControllerImplTest.java b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupControllerImplTest.java
index f95aab6dd4329ca8d01034d9ee1fc77faf869790..dd88251476c131674d7e663cd095d4e8cea6dc06 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/login/SetupControllerImplTest.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/login/SetupControllerImplTest.java
@@ -3,6 +3,7 @@ package org.briarproject.briar.android.login;
 import android.content.SharedPreferences;
 import android.content.pm.ApplicationInfo;
 
+import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator;
 import org.briarproject.bramble.api.crypto.SecretKey;
@@ -37,6 +38,8 @@ public class SetupControllerImplTest extends BrambleMockTestCase {
 
 	private final SharedPreferences briarPrefs =
 			context.mock(SharedPreferences.class);
+	private final AccountManager accountManager =
+			context.mock(AccountManager.class);
 	private final DatabaseConfig databaseConfig =
 			context.mock(DatabaseConfig.class);
 	private final CryptoComponent crypto = context.mock(CryptoComponent.class);
@@ -101,8 +104,8 @@ public class SetupControllerImplTest extends BrambleMockTestCase {
 		assertFalse(keyBackupFile.exists());
 
 		SetupControllerImpl s = new SetupControllerImpl(briarPrefs,
-				databaseConfig, cryptoExecutor, crypto, estimator,
-				identityManager);
+				accountManager, databaseConfig, cryptoExecutor, crypto,
+				estimator, identityManager);
 		s.setSetupActivity(setupActivity);
 
 		AtomicBoolean called = new AtomicBoolean(false);
diff --git a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
index a3b74d4c25ce56f3e83f69de5e79d95b39b51999..d55b06d00b2972fb8bfd2d81ac313bc3a4abcd46 100644
--- a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
+++ b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTestComponent.java
@@ -1,5 +1,6 @@
 package org.briarproject.briar.test;
 
+import org.briarproject.bramble.account.AccountModule;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.contact.ContactManager;
 import org.briarproject.bramble.api.db.DatabaseComponent;
@@ -54,6 +55,7 @@ import dagger.Component;
 		TestDatabaseModule.class,
 		TestPluginConfigModule.class,
 		TestSecureRandomModule.class,
+		AccountModule.class,
 		BlogModule.class,
 		BriarClientModule.class,
 		ClientModule.class,