diff --git a/briar-android/src/org/briarproject/android/AndroidComponent.java b/briar-android/src/org/briarproject/android/AndroidComponent.java
index caf43416ae358fb2699326bae7b3e4c71fff8854..5be1919a35e652132ec666ee2d90860cfc17ee75 100644
--- a/briar-android/src/org/briarproject/android/AndroidComponent.java
+++ b/briar-android/src/org/briarproject/android/AndroidComponent.java
@@ -67,5 +67,7 @@ public interface AndroidComponent {
 	void inject(ContactListFragment fragment);
 	void inject(SettingsFragment fragment);
 	void inject(ForumListFragment fragment);
+	// Eager singleton load
+	void inject(AndroidModule.EagerSingletons init);
 
 }
diff --git a/briar-android/src/org/briarproject/android/AndroidModule.java b/briar-android/src/org/briarproject/android/AndroidModule.java
index 427b884b5acb07a4e0775c7e2d83ff690ae9abf8..b258be889a26f7e28139743e93fb50beb6aae854 100644
--- a/briar-android/src/org/briarproject/android/AndroidModule.java
+++ b/briar-android/src/org/briarproject/android/AndroidModule.java
@@ -1,20 +1,24 @@
 package org.briarproject.android;
 
 import android.app.Application;
-import android.content.SharedPreferences;
-import android.support.v7.preference.PreferenceManager;
 
 import org.briarproject.api.android.AndroidExecutor;
 import org.briarproject.api.android.AndroidNotificationManager;
 import org.briarproject.api.android.ReferenceManager;
+import org.briarproject.api.contact.ContactManager;
 import org.briarproject.api.crypto.SecretKey;
 import org.briarproject.api.db.DatabaseConfig;
 import org.briarproject.api.event.EventBus;
 import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.plugins.PluginManager;
+import org.briarproject.api.properties.TransportPropertyManager;
+import org.briarproject.api.sync.ValidationManager;
+import org.briarproject.api.transport.KeyManager;
 import org.briarproject.api.ui.UiCallback;
 
 import java.io.File;
 
+import javax.inject.Inject;
 import javax.inject.Singleton;
 
 import dagger.Module;
@@ -25,6 +29,24 @@ import static android.content.Context.MODE_PRIVATE;
 @Module
 public class AndroidModule {
 
+	static class EagerSingletons {
+		// Load all relevant eager singletons and their references
+		@Inject
+		KeyManager keyManager;
+		@Inject
+		ValidationManager validationManager;
+		@Inject
+		PluginManager pluginManager;
+		@Inject
+		AndroidNotificationManager androidNotificationManager;
+		@Inject
+		TransportPropertyManager transportPropertyManager;
+	}
+
+	static void injectEager(AndroidComponent c) {
+		c.inject(new EagerSingletons());
+	}
+
 	private final UiCallback uiCallback;
 
 	public AndroidModule() {
@@ -93,7 +115,6 @@ public class AndroidModule {
 		};
 	}
 
-
 	@Provides
 	@Singleton
 	AndroidNotificationManager provideAndroidNotificationManager(
diff --git a/briar-android/src/org/briarproject/android/BriarApplication.java b/briar-android/src/org/briarproject/android/BriarApplication.java
index 1478b6e2d5357e2e26f547e3c6b5021f66f16f89..e56688e697d513e9b5ab9e5898fbdaf9afd56560 100644
--- a/briar-android/src/org/briarproject/android/BriarApplication.java
+++ b/briar-android/src/org/briarproject/android/BriarApplication.java
@@ -6,6 +6,8 @@ import java.util.logging.Logger;
 import android.app.Application;
 import android.content.Context;
 
+import org.briarproject.event.EventModule;
+
 public class BriarApplication extends Application {
 
 	private static final Logger LOG =
@@ -16,7 +18,7 @@ public class BriarApplication extends Application {
 	@Override
 	public void onCreate() {
 		super.onCreate();
-		LOG.info("Created");
+		LOG.info("Application Created");
 		UncaughtExceptionHandler oldHandler =
 				Thread.getDefaultUncaughtExceptionHandler();
 		Context ctx = getApplicationContext();
@@ -27,6 +29,10 @@ public class BriarApplication extends Application {
 				.appModule(new AppModule(this))
 				.androidModule(new AndroidModule())
 				.build();
+		// We need to load the eager singletons directly after making the
+		// dependency graph
+		AndroidModule.injectEager(applicationComponent);
+
 	}
 
 	public AndroidComponent getApplicationComponent() {
diff --git a/briar-android/src/org/briarproject/android/SplashScreenActivity.java b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
index ef374c11301b64b1da8519c9631f80c1b49eb772..acc0652af68e218b0ebca6895a59d05a1031ce48 100644
--- a/briar-android/src/org/briarproject/android/SplashScreenActivity.java
+++ b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
@@ -8,6 +8,7 @@ import android.os.StrictMode;
 import android.os.StrictMode.ThreadPolicy;
 import android.os.StrictMode.VmPolicy;
 import android.support.v7.preference.PreferenceManager;
+import android.util.Log;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 
@@ -38,6 +39,8 @@ public class SplashScreenActivity extends BaseActivity {
 	@Inject
 	DatabaseConfig dbConfig;
 
+
+
 	public SplashScreenActivity() {
 		Logger.getLogger("").setLevel(DEFAULT_LOG_LEVEL);
 		enableStrictMode();
diff --git a/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java b/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java
index e4baf6e137430c65fd09e6f2fbfd68955b06be24..940de7e7594f83fff6a48fd6d1d0062ce8e8f048 100644
--- a/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java
+++ b/briar-android/src/org/briarproject/android/invitation/ChooseIdentityView.java
@@ -16,14 +16,11 @@ import org.briarproject.android.identity.CreateIdentityActivity;
 import org.briarproject.android.identity.LocalAuthorItem;
 import org.briarproject.android.identity.LocalAuthorItemComparator;
 import org.briarproject.android.identity.LocalAuthorSpinnerAdapter;
-import org.briarproject.api.crypto.CryptoComponent;
 import org.briarproject.api.identity.AuthorId;
 import org.briarproject.api.identity.LocalAuthor;
 
 import java.util.Collection;
 
-import javax.inject.Inject;
-
 import static android.bluetooth.BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE;
 import static android.bluetooth.BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION;
 import static org.briarproject.android.identity.LocalAuthorItem.NEW;
@@ -33,7 +30,6 @@ import static org.briarproject.android.invitation.AddContactActivity.REQUEST_CRE
 class ChooseIdentityView extends AddContactView
 implements OnItemSelectedListener, OnClickListener {
 
-	@Inject protected CryptoComponent crypto;
 	private LocalAuthorSpinnerAdapter adapter = null;
 	private Spinner spinner = null;
 
@@ -44,8 +40,6 @@ implements OnItemSelectedListener, OnClickListener {
 	void populate() {
 		removeAllViews();
 		Context ctx = getContext();
-		// TODO
-//		RoboGuice.injectMembers(ctx, this);
 
 		LayoutInflater inflater = (LayoutInflater) ctx.getSystemService
 				(Context.LAYOUT_INFLATER_SERVICE);
diff --git a/briar-core/src/org/briarproject/clients/ClientsModule.java b/briar-core/src/org/briarproject/clients/ClientsModule.java
index 10bcbc3c7101a66fc4f6f14f21fcdc20cf912cce..055143d43b799faaa5abff52d053e6b1be88fa7d 100644
--- a/briar-core/src/org/briarproject/clients/ClientsModule.java
+++ b/briar-core/src/org/briarproject/clients/ClientsModule.java
@@ -9,6 +9,10 @@ import org.briarproject.api.data.MetadataParser;
 import org.briarproject.api.db.DatabaseComponent;
 import org.briarproject.api.sync.GroupFactory;
 import org.briarproject.api.sync.MessageFactory;
+import org.briarproject.data.DataModule;
+import org.briarproject.db.DatabaseModule;
+import org.briarproject.messaging.MessagingModule;
+import org.briarproject.sync.SyncModule;
 
 import dagger.Module;
 import dagger.Provides;
diff --git a/briar-core/src/org/briarproject/contact/ContactModule.java b/briar-core/src/org/briarproject/contact/ContactModule.java
index f2009be57d6d1421ab1c8bbe325c5d41678ccb0e..e4927a74f27a5010418914d586ee75a2839829c3 100644
--- a/briar-core/src/org/briarproject/contact/ContactModule.java
+++ b/briar-core/src/org/briarproject/contact/ContactModule.java
@@ -3,6 +3,8 @@ package org.briarproject.contact;
 import org.briarproject.api.contact.ContactManager;
 import org.briarproject.api.identity.IdentityManager;
 import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.identity.IdentityModule;
+import org.briarproject.lifecycle.LifecycleModule;
 
 import javax.inject.Singleton;
 
diff --git a/briar-core/src/org/briarproject/crypto/CryptoModule.java b/briar-core/src/org/briarproject/crypto/CryptoModule.java
index 04e216b80bd667cadcb951ab10a0d67fd9b4d86f..c8b1d4845fc2602b277c918fd27b3a48d7aed238 100644
--- a/briar-core/src/org/briarproject/crypto/CryptoModule.java
+++ b/briar-core/src/org/briarproject/crypto/CryptoModule.java
@@ -7,6 +7,7 @@ import org.briarproject.api.crypto.StreamDecrypterFactory;
 import org.briarproject.api.crypto.StreamEncrypterFactory;
 import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.system.SeedProvider;
+import org.briarproject.lifecycle.LifecycleModule;
 
 import java.security.SecureRandom;
 import java.util.concurrent.BlockingQueue;
diff --git a/briar-core/src/org/briarproject/db/DatabaseModule.java b/briar-core/src/org/briarproject/db/DatabaseModule.java
index 74512c9c0f3824bf228338b1577848fb89cc7236..c177c9ae4b528774de226da471da8b92a7d4ac84 100644
--- a/briar-core/src/org/briarproject/db/DatabaseModule.java
+++ b/briar-core/src/org/briarproject/db/DatabaseModule.java
@@ -7,6 +7,9 @@ import org.briarproject.api.event.EventBus;
 import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.lifecycle.ShutdownManager;
 import org.briarproject.api.system.Clock;
+import org.briarproject.data.DataModule;
+import org.briarproject.event.EventModule;
+import org.briarproject.lifecycle.LifecycleModule;
 
 import java.security.SecureRandom;
 import java.sql.Connection;
@@ -17,6 +20,7 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.RejectedExecutionHandler;
 import java.util.concurrent.ThreadPoolExecutor;
 
+import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Singleton;
 
diff --git a/briar-core/src/org/briarproject/forum/ForumModule.java b/briar-core/src/org/briarproject/forum/ForumModule.java
index 5712c165eb2158377dfc0d46e8439ad54d4ed508..dba71334f03e8381ea55a3fd129a7542d84cc5e6 100644
--- a/briar-core/src/org/briarproject/forum/ForumModule.java
+++ b/briar-core/src/org/briarproject/forum/ForumModule.java
@@ -15,6 +15,11 @@ import org.briarproject.api.identity.Author;
 import org.briarproject.api.sync.MessageFactory;
 import org.briarproject.api.sync.ValidationManager;
 import org.briarproject.api.system.Clock;
+import org.briarproject.contact.ContactModule;
+import org.briarproject.crypto.CryptoModule;
+import org.briarproject.data.DataModule;
+import org.briarproject.db.DatabaseModule;
+import org.briarproject.sync.SyncModule;
 
 import javax.inject.Singleton;
 
diff --git a/briar-core/src/org/briarproject/identity/IdentityModule.java b/briar-core/src/org/briarproject/identity/IdentityModule.java
index 99e8eeb0f15d7e0e862c240124801cc230941db6..e2701561292b08e5b444f15f336741d84fcf9d00 100644
--- a/briar-core/src/org/briarproject/identity/IdentityModule.java
+++ b/briar-core/src/org/briarproject/identity/IdentityModule.java
@@ -9,6 +9,9 @@ import org.briarproject.api.identity.Author;
 import org.briarproject.api.identity.AuthorFactory;
 import org.briarproject.api.identity.IdentityManager;
 import org.briarproject.api.system.Clock;
+import org.briarproject.crypto.CryptoModule;
+import org.briarproject.data.DataModule;
+import org.briarproject.db.DatabaseModule;
 
 import javax.inject.Singleton;
 
diff --git a/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java b/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java
index 5685dd2a2d1f931aeed886ebf345cc991d7ff7ec..c6218f273035d0ed36d4120f7ac7ece38671a9de 100644
--- a/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java
+++ b/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java
@@ -17,6 +17,7 @@ import org.briarproject.api.lifecycle.IoExecutor;
 import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.lifecycle.ShutdownManager;
 import org.briarproject.api.system.Clock;
+import org.briarproject.event.EventModule;
 
 import dagger.Module;
 import dagger.Provides;
diff --git a/briar-core/src/org/briarproject/messaging/MessagingModule.java b/briar-core/src/org/briarproject/messaging/MessagingModule.java
index 89c748a59fd5c0e57712300343a10e5295cf8863..6a68b0fe1aa65428a6dd0c39224a51f562c0a998 100644
--- a/briar-core/src/org/briarproject/messaging/MessagingModule.java
+++ b/briar-core/src/org/briarproject/messaging/MessagingModule.java
@@ -9,6 +9,9 @@ import org.briarproject.api.messaging.PrivateMessageFactory;
 import org.briarproject.api.sync.MessageFactory;
 import org.briarproject.api.sync.ValidationManager;
 import org.briarproject.api.system.Clock;
+import org.briarproject.contact.ContactModule;
+import org.briarproject.data.DataModule;
+import org.briarproject.sync.SyncModule;
 
 import javax.inject.Singleton;
 
diff --git a/briar-core/src/org/briarproject/properties/PropertiesModule.java b/briar-core/src/org/briarproject/properties/PropertiesModule.java
index 057f685ba534c97a73f9233d8cf5e610a566edf8..15fcf56aa568f72477f5e56b5433e739477c4984 100644
--- a/briar-core/src/org/briarproject/properties/PropertiesModule.java
+++ b/briar-core/src/org/briarproject/properties/PropertiesModule.java
@@ -6,6 +6,9 @@ import org.briarproject.api.data.MetadataEncoder;
 import org.briarproject.api.properties.TransportPropertyManager;
 import org.briarproject.api.sync.ValidationManager;
 import org.briarproject.api.system.Clock;
+import org.briarproject.contact.ContactModule;
+import org.briarproject.data.DataModule;
+import org.briarproject.sync.SyncModule;
 
 import javax.inject.Singleton;
 
diff --git a/briar-core/src/org/briarproject/settings/SettingsModule.java b/briar-core/src/org/briarproject/settings/SettingsModule.java
index d8aa3b9158e4bfc2c267dc986e35f33601b3dd4b..b9edc99515f8f727f86351fec1c64b6305c64850 100644
--- a/briar-core/src/org/briarproject/settings/SettingsModule.java
+++ b/briar-core/src/org/briarproject/settings/SettingsModule.java
@@ -2,6 +2,7 @@ package org.briarproject.settings;
 
 import org.briarproject.api.db.DatabaseComponent;
 import org.briarproject.api.settings.SettingsManager;
+import org.briarproject.db.DatabaseModule;
 
 import dagger.Module;
 import dagger.Provides;
diff --git a/briar-core/src/org/briarproject/sync/SyncModule.java b/briar-core/src/org/briarproject/sync/SyncModule.java
index 654f029e6f2a0894d5fc622c9e962e5366cad3c5..6c286f8af4cb6a449de48b93122491b468a1d152 100644
--- a/briar-core/src/org/briarproject/sync/SyncModule.java
+++ b/briar-core/src/org/briarproject/sync/SyncModule.java
@@ -16,9 +16,14 @@ import org.briarproject.api.sync.PacketWriterFactory;
 import org.briarproject.api.sync.SyncSessionFactory;
 import org.briarproject.api.sync.ValidationManager;
 import org.briarproject.api.system.Clock;
+import org.briarproject.crypto.CryptoModule;
+import org.briarproject.db.DatabaseModule;
+import org.briarproject.event.EventModule;
+import org.briarproject.lifecycle.LifecycleModule;
 
 import java.util.concurrent.Executor;
 
+import javax.inject.Inject;
 import javax.inject.Singleton;
 
 import dagger.Module;
diff --git a/briar-core/src/org/briarproject/transport/TransportModule.java b/briar-core/src/org/briarproject/transport/TransportModule.java
index 090882d1ab7ed746766aa5e78f44bf14977d16dc..5a4ae89367449a46a113d2fcad02b344dc24cc06 100644
--- a/briar-core/src/org/briarproject/transport/TransportModule.java
+++ b/briar-core/src/org/briarproject/transport/TransportModule.java
@@ -7,6 +7,8 @@ import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.transport.KeyManager;
 import org.briarproject.api.transport.StreamReaderFactory;
 import org.briarproject.api.transport.StreamWriterFactory;
+import org.briarproject.event.EventModule;
+import org.briarproject.lifecycle.LifecycleModule;
 
 import javax.inject.Singleton;