diff --git a/briar-android/src/org/briarproject/android/ActivityModule.java b/briar-android/src/org/briarproject/android/ActivityModule.java
index 21a7d35ef0312f13904c567ca24c88924182231f..e55a32ec9534209882f97ac8758d6ba42b100ada 100644
--- a/briar-android/src/org/briarproject/android/ActivityModule.java
+++ b/briar-android/src/org/briarproject/android/ActivityModule.java
@@ -1,7 +1,6 @@
 package org.briarproject.android;
 
 import android.app.Activity;
-import android.content.Context;
 import android.content.SharedPreferences;
 
 import org.briarproject.android.blogs.BlogController;
@@ -26,6 +25,7 @@ import org.briarproject.android.forum.ForumControllerImpl;
 import dagger.Module;
 import dagger.Provides;
 
+import static android.content.Context.MODE_PRIVATE;
 import static org.briarproject.android.BriarService.BriarServiceConnection;
 
 @Module
@@ -52,36 +52,36 @@ public class ActivityModule {
 	@ActivityScope
 	@Provides
 	SetupController provideSetupController(
-			SetupControllerImpl setupControllerImpl) {
-		return setupControllerImpl;
+			SetupControllerImpl setupController) {
+		return setupController;
 	}
 
 	@ActivityScope
 	@Provides
 	ConfigController provideConfigController(
-			ConfigControllerImpl configControllerImpl) {
-		return configControllerImpl;
+			ConfigControllerImpl configController) {
+		return configController;
 	}
 
 	@ActivityScope
 	@Provides
 	SharedPreferences provideSharedPreferences(Activity activity) {
-		return activity.getSharedPreferences("db", Context.MODE_PRIVATE);
+		return activity.getSharedPreferences("db", MODE_PRIVATE);
 	}
 
 	@ActivityScope
 	@Provides
 	PasswordController providePasswordController(
-			PasswordControllerImpl passwordControllerImpl) {
-		return passwordControllerImpl;
+			PasswordControllerImpl passwordController) {
+		return passwordController;
 	}
 
 	@ActivityScope
 	@Provides
 	protected BriarController provideBriarController(
-			BriarControllerImpl briarControllerImpl) {
-		activity.addLifecycleController(briarControllerImpl);
-		return briarControllerImpl;
+			BriarControllerImpl briarController) {
+		activity.addLifecycleController(briarController);
+		return briarController;
 	}
 
 	@ActivityScope
diff --git a/briar-android/src/org/briarproject/android/blogs/BaseControllerImpl.java b/briar-android/src/org/briarproject/android/blogs/BaseControllerImpl.java
index f624023bd320b7d36fecd9fab90018c2a721d7b4..0015bc111e22d70032ce92114a1839cac71db4b5 100644
--- a/briar-android/src/org/briarproject/android/blogs/BaseControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/blogs/BaseControllerImpl.java
@@ -10,6 +10,7 @@ import org.briarproject.api.blogs.Blog;
 import org.briarproject.api.blogs.BlogCommentHeader;
 import org.briarproject.api.blogs.BlogManager;
 import org.briarproject.api.blogs.BlogPostHeader;
+import org.briarproject.api.db.DatabaseExecutor;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.event.BlogPostAddedEvent;
 import org.briarproject.api.event.Event;
@@ -17,6 +18,7 @@ import org.briarproject.api.event.EventBus;
 import org.briarproject.api.event.EventListener;
 import org.briarproject.api.identity.IdentityManager;
 import org.briarproject.api.identity.LocalAuthor;
+import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.sync.GroupId;
 import org.briarproject.api.sync.MessageId;
 
@@ -24,10 +26,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import javax.inject.Inject;
-
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 
@@ -37,15 +38,10 @@ abstract class BaseControllerImpl extends DbControllerImpl
 	private static final Logger LOG =
 			Logger.getLogger(BaseControllerImpl.class.getName());
 
-	@Inject
-	EventBus eventBus;
-	@Inject
-	AndroidNotificationManager notificationManager;
-	@Inject
-	IdentityManager identityManager;
-
-	@Inject
-	volatile BlogManager blogManager;
+	protected final EventBus eventBus;
+	protected final AndroidNotificationManager notificationManager;
+	protected final IdentityManager identityManager;
+	protected final BlogManager blogManager;
 
 	private final Map<MessageId, String> bodyCache = new ConcurrentHashMap<>();
 	private final Map<MessageId, BlogPostHeader> headerCache =
@@ -53,6 +49,17 @@ abstract class BaseControllerImpl extends DbControllerImpl
 
 	protected volatile OnBlogPostAddedListener listener;
 
+	BaseControllerImpl(@DatabaseExecutor Executor dbExecutor,
+			LifecycleManager lifecycleManager, EventBus eventBus,
+			AndroidNotificationManager notificationManager,
+			IdentityManager identityManager, BlogManager blogManager) {
+		super(dbExecutor, lifecycleManager);
+		this.eventBus = eventBus;
+		this.notificationManager = notificationManager;
+		this.identityManager = identityManager;
+		this.blogManager = blogManager;
+	}
+
 	@Override
 	@CallSuper
 	public void onStart() {
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
index 6dd1c6ab54d0a805585356bee90e866e0b2c4246..5394821f8751dce0fc439445c3ca645434026b56 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
@@ -2,19 +2,26 @@ package org.briarproject.android.blogs;
 
 import android.app.Activity;
 
+import org.briarproject.android.api.AndroidNotificationManager;
 import org.briarproject.android.controller.ActivityLifecycleController;
 import org.briarproject.android.controller.handler.ResultExceptionHandler;
 import org.briarproject.api.blogs.Blog;
+import org.briarproject.api.blogs.BlogManager;
+import org.briarproject.api.db.DatabaseExecutor;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.event.BlogPostAddedEvent;
 import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventBus;
 import org.briarproject.api.event.EventListener;
 import org.briarproject.api.event.GroupRemovedEvent;
+import org.briarproject.api.identity.IdentityManager;
 import org.briarproject.api.identity.LocalAuthor;
+import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.sync.GroupId;
 import org.briarproject.api.sync.MessageId;
 
 import java.util.Collection;
+import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import javax.inject.Inject;
@@ -30,7 +37,12 @@ public class BlogControllerImpl extends BaseControllerImpl
 	private volatile GroupId groupId = null;
 
 	@Inject
-	BlogControllerImpl() {
+	BlogControllerImpl(@DatabaseExecutor Executor dbExecutor,
+			LifecycleManager lifecycleManager, EventBus eventBus,
+			AndroidNotificationManager notificationManager,
+			IdentityManager identityManager, BlogManager blogManager) {
+		super(dbExecutor, lifecycleManager, eventBus, notificationManager,
+				identityManager, blogManager);
 	}
 
 	@Override
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedControllerImpl.java b/briar-android/src/org/briarproject/android/blogs/FeedControllerImpl.java
index 50074c0a7adf24bd36053d1eb7bbeeef3002b828..0d85144d8dd08e5389cfe62019216d876493fd6e 100644
--- a/briar-android/src/org/briarproject/android/blogs/FeedControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/blogs/FeedControllerImpl.java
@@ -1,15 +1,22 @@
 package org.briarproject.android.blogs;
 
+import org.briarproject.android.api.AndroidNotificationManager;
 import org.briarproject.android.controller.handler.ResultExceptionHandler;
 import org.briarproject.android.controller.handler.ResultHandler;
 import org.briarproject.api.blogs.Blog;
+import org.briarproject.api.blogs.BlogManager;
+import org.briarproject.api.db.DatabaseExecutor;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.db.NoSuchGroupException;
 import org.briarproject.api.db.NoSuchMessageException;
+import org.briarproject.api.event.EventBus;
 import org.briarproject.api.identity.Author;
+import org.briarproject.api.identity.IdentityManager;
+import org.briarproject.api.lifecycle.LifecycleManager;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import javax.inject.Inject;
@@ -24,7 +31,12 @@ public class FeedControllerImpl extends BaseControllerImpl
 			Logger.getLogger(FeedControllerImpl.class.getName());
 
 	@Inject
-	FeedControllerImpl() {
+	FeedControllerImpl(@DatabaseExecutor Executor dbExecutor,
+			LifecycleManager lifecycleManager, EventBus eventBus,
+			AndroidNotificationManager notificationManager,
+			IdentityManager identityManager, BlogManager blogManager) {
+		super(dbExecutor, lifecycleManager, eventBus, notificationManager,
+				identityManager, blogManager);
 	}
 
 	@Override
diff --git a/briar-android/src/org/briarproject/android/controller/ConfigController.java b/briar-android/src/org/briarproject/android/controller/ConfigController.java
index 38ad81121b4281272362b07d6cbf834519150f25..b8b7d7d17dff300b6a8a01a8ae51f46311e7eb55 100644
--- a/briar-android/src/org/briarproject/android/controller/ConfigController.java
+++ b/briar-android/src/org/briarproject/android/controller/ConfigController.java
@@ -6,6 +6,8 @@ public interface ConfigController {
 
 	String getEncryptedDatabaseKey();
 
+	void setEncryptedDatabaseKey(String hex);
+
 	void deleteAccount(Context ctx);
 
 	boolean accountExists();
diff --git a/briar-android/src/org/briarproject/android/controller/ConfigControllerImpl.java b/briar-android/src/org/briarproject/android/controller/ConfigControllerImpl.java
index 1f6c88e500f822b83a8fa967c2f2e5eaabff0371..3ed26016f4e32f161bf578a9daf7ca2f1b1b6ce3 100644
--- a/briar-android/src/org/briarproject/android/controller/ConfigControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/controller/ConfigControllerImpl.java
@@ -12,13 +12,14 @@ public class ConfigControllerImpl implements ConfigController {
 
 	private static final String PREF_DB_KEY = "key";
 
-	@Inject
-	protected SharedPreferences briarPrefs;
-	@Inject
-	protected volatile DatabaseConfig databaseConfig;
+	private final SharedPreferences briarPrefs;
+	protected final DatabaseConfig databaseConfig;
 
 	@Inject
-	public ConfigControllerImpl() {
+	ConfigControllerImpl(SharedPreferences briarPrefs,
+			DatabaseConfig databaseConfig) {
+		this.briarPrefs = briarPrefs;
+		this.databaseConfig = databaseConfig;
 
 	}
 
@@ -27,6 +28,13 @@ public class ConfigControllerImpl implements ConfigController {
 		return briarPrefs.getString(PREF_DB_KEY, null);
 	}
 
+	@Override
+	public void setEncryptedDatabaseKey(String hex) {
+		SharedPreferences.Editor editor = briarPrefs.edit();
+		editor.putString(PREF_DB_KEY, hex);
+		editor.apply();
+	}
+
 	@Override
 	public void deleteAccount(Context ctx) {
 		SharedPreferences.Editor editor = briarPrefs.edit();
diff --git a/briar-android/src/org/briarproject/android/controller/DbControllerImpl.java b/briar-android/src/org/briarproject/android/controller/DbControllerImpl.java
index 14f5d41aee85232372bddc96743962c10ad150c5..c13576819e54795b8a0606711918b16d62ac8413 100644
--- a/briar-android/src/org/briarproject/android/controller/DbControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/controller/DbControllerImpl.java
@@ -13,16 +13,14 @@ public class DbControllerImpl implements DbController {
 	private static final Logger LOG =
 			Logger.getLogger(DbControllerImpl.class.getName());
 
-	// Fields that are accessed from background threads must be volatile
-	@Inject
-	@DatabaseExecutor
-	protected volatile Executor dbExecutor;
-	@Inject
-	protected volatile LifecycleManager lifecycleManager;
+	private final Executor dbExecutor;
+	private final LifecycleManager lifecycleManager;
 
 	@Inject
-	public DbControllerImpl() {
-
+	public DbControllerImpl(@DatabaseExecutor Executor dbExecutor,
+			LifecycleManager lifecycleManager) {
+		this.dbExecutor = dbExecutor;
+		this.lifecycleManager = lifecycleManager;
 	}
 
 	@Override
diff --git a/briar-android/src/org/briarproject/android/controller/NavDrawerControllerImpl.java b/briar-android/src/org/briarproject/android/controller/NavDrawerControllerImpl.java
index 3cfa06d7720df6a95c74217cab5b6528dd61dd18..060f77933e3993d214d548d8b8a9810e7e0b05d9 100644
--- a/briar-android/src/org/briarproject/android/controller/NavDrawerControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/controller/NavDrawerControllerImpl.java
@@ -5,6 +5,7 @@ import android.app.Activity;
 import org.briarproject.android.api.ReferenceManager;
 import org.briarproject.android.controller.handler.ResultHandler;
 import org.briarproject.api.TransportId;
+import org.briarproject.api.db.DatabaseExecutor;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.event.Event;
 import org.briarproject.api.event.EventBus;
@@ -13,9 +14,11 @@ import org.briarproject.api.event.TransportDisabledEvent;
 import org.briarproject.api.event.TransportEnabledEvent;
 import org.briarproject.api.identity.IdentityManager;
 import org.briarproject.api.identity.LocalAuthor;
+import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.plugins.Plugin;
 import org.briarproject.api.plugins.PluginManager;
 
+import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import javax.inject.Inject;
@@ -29,22 +32,23 @@ public class NavDrawerControllerImpl extends DbControllerImpl
 	private static final Logger LOG =
 			Logger.getLogger(NavDrawerControllerImpl.class.getName());
 
-	@Inject
-	ReferenceManager referenceManager;
-	@Inject
-	PluginManager pluginManager;
-	@Inject
-	EventBus eventBus;
+	private final ReferenceManager referenceManager;
+	private final PluginManager pluginManager;
+	private final EventBus eventBus;
+	private final IdentityManager identityManager;
 
-	// Fields that are accessed from background threads must be volatile
-	@Inject
-	protected volatile IdentityManager identityManager;
-
-	private TransportStateListener listener;
+	private volatile TransportStateListener listener;
 
 	@Inject
-	public NavDrawerControllerImpl() {
-
+	NavDrawerControllerImpl(@DatabaseExecutor Executor dbExecutor,
+			LifecycleManager lifecycleManager,
+			ReferenceManager referenceManager, PluginManager pluginManager,
+			EventBus eventBus, IdentityManager identityManager) {
+		super(dbExecutor, lifecycleManager);
+		this.referenceManager = referenceManager;
+		this.pluginManager = pluginManager;
+		this.eventBus = eventBus;
+		this.identityManager = identityManager;
 	}
 
 	@Override
diff --git a/briar-android/src/org/briarproject/android/controller/PasswordControllerImpl.java b/briar-android/src/org/briarproject/android/controller/PasswordControllerImpl.java
index 23527c81fcd828a1956374c4ae906e5426e9e9ff..76768b49a7ab38c4ae017f28a270049c4df57fe5 100644
--- a/briar-android/src/org/briarproject/android/controller/PasswordControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/controller/PasswordControllerImpl.java
@@ -1,13 +1,12 @@
 package org.briarproject.android.controller;
 
-import android.app.Activity;
 import android.content.SharedPreferences;
 
 import org.briarproject.android.controller.handler.ResultHandler;
 import org.briarproject.api.crypto.CryptoComponent;
 import org.briarproject.api.crypto.CryptoExecutor;
 import org.briarproject.api.crypto.SecretKey;
-import org.briarproject.api.identity.LocalAuthor;
+import org.briarproject.api.db.DatabaseConfig;
 import org.briarproject.util.StringUtils;
 
 import java.util.concurrent.Executor;
@@ -23,21 +22,16 @@ public class PasswordControllerImpl extends ConfigControllerImpl
 	private static final Logger LOG =
 			Logger.getLogger(PasswordControllerImpl.class.getName());
 
-	private final static String PREF_DB_KEY = "key";
+	protected final Executor cryptoExecutor;
+	protected final CryptoComponent crypto;
 
 	@Inject
-	@CryptoExecutor
-	protected Executor cryptoExecutor;
-	@Inject
-	protected Activity activity;
-
-	// Fields that are accessed from background threads must be volatile
-	@Inject
-	protected CryptoComponent crypto;
-
-	@Inject
-	public PasswordControllerImpl() {
-
+	PasswordControllerImpl(SharedPreferences briarPrefs,
+			DatabaseConfig databaseConfig,
+			@CryptoExecutor Executor cryptoExecutor, CryptoComponent crypto) {
+		super(briarPrefs, databaseConfig);
+		this.cryptoExecutor = cryptoExecutor;
+		this.crypto = crypto;
 	}
 
 	@Override
@@ -71,7 +65,7 @@ public class PasswordControllerImpl extends ConfigControllerImpl
 				} else {
 					String hex =
 							encryptDatabaseKey(new SecretKey(key), newPassword);
-					storeEncryptedDatabaseKey(hex);
+					setEncryptedDatabaseKey(hex);
 					resultHandler.onResult(true);
 				}
 			}
@@ -94,10 +88,4 @@ public class PasswordControllerImpl extends ConfigControllerImpl
 			LOG.info("Key derivation took " + duration + " ms");
 		return StringUtils.toHexString(encrypted);
 	}
-
-	void storeEncryptedDatabaseKey(String hex) {
-		SharedPreferences.Editor editor = briarPrefs.edit();
-		editor.putString(PREF_DB_KEY, hex);
-		editor.apply();
-	}
 }
diff --git a/briar-android/src/org/briarproject/android/controller/SetupControllerImpl.java b/briar-android/src/org/briarproject/android/controller/SetupControllerImpl.java
index c194b313701ed538759f2f84d4144659edb519f8..b60d1072a81c1224e5f339997f91cadc452d90ce 100644
--- a/briar-android/src/org/briarproject/android/controller/SetupControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/controller/SetupControllerImpl.java
@@ -1,6 +1,5 @@
 package org.briarproject.android.controller;
 
-import android.app.Activity;
 import android.content.SharedPreferences;
 
 import org.briarproject.android.api.ReferenceManager;
@@ -13,7 +12,6 @@ import org.briarproject.api.crypto.SecretKey;
 import org.briarproject.api.db.DatabaseConfig;
 import org.briarproject.api.identity.AuthorFactory;
 import org.briarproject.api.identity.LocalAuthor;
-import org.briarproject.util.StringUtils;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
@@ -28,17 +26,20 @@ public class SetupControllerImpl extends PasswordControllerImpl
 	private static final Logger LOG =
 			Logger.getLogger(SetupControllerImpl.class.getName());
 
-	@Inject
-	protected PasswordStrengthEstimator strengthEstimator;
-
-	// Fields that are accessed from background threads must be volatile
-	@Inject
-	protected volatile AuthorFactory authorFactory;
-	@Inject
-	protected volatile ReferenceManager referenceManager;
+	private final PasswordStrengthEstimator strengthEstimator;
+	private final AuthorFactory authorFactory;
+	private final ReferenceManager referenceManager;
 
 	@Inject
-	public SetupControllerImpl() {
+	SetupControllerImpl(SharedPreferences briarPrefs,
+			DatabaseConfig databaseConfig,
+			@CryptoExecutor Executor cryptoExecutor, CryptoComponent crypto,
+			PasswordStrengthEstimator strengthEstimator,
+			AuthorFactory authorFactory, ReferenceManager referenceManager) {
+		super(briarPrefs, databaseConfig, cryptoExecutor, crypto);
+		this.strengthEstimator = strengthEstimator;
+		this.authorFactory = authorFactory;
+		this.referenceManager = referenceManager;
 
 	}
 
@@ -69,7 +70,7 @@ public class SetupControllerImpl extends PasswordControllerImpl
 				SecretKey key = crypto.generateSecretKey();
 				databaseConfig.setEncryptionKey(key);
 				String hex = encryptDatabaseKey(key, password);
-				storeEncryptedDatabaseKey(hex);
+				setEncryptedDatabaseKey(hex);
 				LocalAuthor localAuthor = createLocalAuthor(nickname);
 				long handle = referenceManager.putReference(localAuthor,
 						LocalAuthor.class);
diff --git a/briar-android/src/org/briarproject/android/forum/ForumControllerImpl.java b/briar-android/src/org/briarproject/android/forum/ForumControllerImpl.java
index 0a1cb23a39850ae7529f650c03a6fc447b68b0b5..b6a8ddce527efa65d6ff3585fb59e1716b8e5ef8 100644
--- a/briar-android/src/org/briarproject/android/forum/ForumControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/forum/ForumControllerImpl.java
@@ -11,6 +11,7 @@ import org.briarproject.api.crypto.CryptoComponent;
 import org.briarproject.api.crypto.CryptoExecutor;
 import org.briarproject.api.crypto.KeyParser;
 import org.briarproject.api.crypto.PrivateKey;
+import org.briarproject.api.db.DatabaseExecutor;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.event.Event;
 import org.briarproject.api.event.EventBus;
@@ -24,6 +25,7 @@ import org.briarproject.api.forum.ForumPostFactory;
 import org.briarproject.api.forum.ForumPostHeader;
 import org.briarproject.api.identity.IdentityManager;
 import org.briarproject.api.identity.LocalAuthor;
+import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.sync.GroupId;
 import org.briarproject.api.sync.MessageId;
 import org.briarproject.util.StringUtils;
@@ -51,31 +53,34 @@ public class ForumControllerImpl extends DbControllerImpl
 	private static final Logger LOG =
 			Logger.getLogger(ForumControllerImpl.class.getName());
 
-	@Inject
-	@CryptoExecutor
-	Executor cryptoExecutor;
-	@Inject
-	volatile ForumPostFactory forumPostFactory;
-	@Inject
-	volatile CryptoComponent crypto;
-	@Inject
-	volatile ForumManager forumManager;
-	@Inject
-	volatile EventBus eventBus;
-	@Inject
-	volatile IdentityManager identityManager;
+	private final Executor cryptoExecutor;
+	private final ForumPostFactory forumPostFactory;
+	private final CryptoComponent crypto;
+	private final ForumManager forumManager;
+	private final EventBus eventBus;
+	private final IdentityManager identityManager;
 
 	private final Map<MessageId, byte[]> bodyCache = new ConcurrentHashMap<>();
 	private final AtomicLong newestTimeStamp = new AtomicLong();
 
 	private volatile LocalAuthor localAuthor = null;
 	private volatile Forum forum = null;
-
-	private ForumPostListener listener;
+	private volatile ForumPostListener listener;
 
 	@Inject
-	ForumControllerImpl() {
-
+	ForumControllerImpl(@DatabaseExecutor Executor dbExecutor,
+			LifecycleManager lifecycleManager,
+			@CryptoExecutor Executor cryptoExecutor,
+			ForumPostFactory forumPostFactory, CryptoComponent crypto,
+			ForumManager forumManager, EventBus eventBus,
+			IdentityManager identityManager) {
+		super(dbExecutor, lifecycleManager);
+		this.cryptoExecutor = cryptoExecutor;
+		this.forumPostFactory = forumPostFactory;
+		this.crypto = crypto;
+		this.forumManager = forumManager;
+		this.eventBus = eventBus;
+		this.identityManager = identityManager;
 	}
 
 	@Override
diff --git a/briar-android/test/java/org/briarproject/android/forum/TestForumActivity.java b/briar-android/test/java/org/briarproject/android/forum/TestForumActivity.java
index d38e5a31f6dcf6adddb943297aad79fe40cdba24..8acbf3b8df67f46659570d38ffb60ff5daf697c8 100644
--- a/briar-android/test/java/org/briarproject/android/forum/TestForumActivity.java
+++ b/briar-android/test/java/org/briarproject/android/forum/TestForumActivity.java
@@ -19,11 +19,13 @@ public class TestForumActivity extends ForumActivity {
 		return forumAdapter;
 	}
 
+	@Override
 	protected ActivityModule getActivityModule() {
 		return new ActivityModule(this) {
+
 			@Override
 			protected BriarController provideBriarController(
-					BriarControllerImpl briarControllerImpl) {
+					BriarControllerImpl briarController) {
 				BriarController c = Mockito.mock(BriarController.class);
 				Mockito.when(c.hasEncryptionKey()).thenReturn(true);
 				return c;