diff --git a/briar-android-tests/src/test/java/org/briarproject/sync/ConstantsComponent.java b/briar-android-tests/src/test/java/org/briarproject/sync/ConstantsComponent.java
index 9a59db135dcabf3b7a6082c663b99914f6c5d5f5..6e8b2c7829fbe03fc476dc443a7a77b97a05838b 100644
--- a/briar-android-tests/src/test/java/org/briarproject/sync/ConstantsComponent.java
+++ b/briar-android-tests/src/test/java/org/briarproject/sync/ConstantsComponent.java
@@ -3,6 +3,7 @@ package org.briarproject.sync;
 import org.briarproject.TestDatabaseModule;
 import org.briarproject.TestLifecycleModule;
 import org.briarproject.TestSystemModule;
+import org.briarproject.clients.ClientsModule;
 import org.briarproject.contact.ContactModule;
 import org.briarproject.crypto.CryptoModule;
 import org.briarproject.data.DataModule;
@@ -22,7 +23,7 @@ import dagger.Component;
 		TestSystemModule.class, ContactModule.class, CryptoModule.class,
 		DatabaseModule.class, EventModule.class, SyncModule.class,
 		DataModule.class, TransportModule.class, ForumModule.class,
-		IdentityModule.class, MessagingModule.class})
+		IdentityModule.class, MessagingModule.class, ClientsModule.class})
 public interface ConstantsComponent {
 	void inject(ConstantsTest testCase);
 }
diff --git a/briar-android/src/org/briarproject/android/AndroidModule.java b/briar-android/src/org/briarproject/android/AndroidModule.java
index b258be889a26f7e28139743e93fb50beb6aae854..9343a31e82017fa39a9b3f2a32774ce119645a63 100644
--- a/briar-android/src/org/briarproject/android/AndroidModule.java
+++ b/briar-android/src/org/briarproject/android/AndroidModule.java
@@ -10,11 +10,14 @@ 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.messaging.MessagingManager;
 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 org.briarproject.messaging.PrivateMessageValidator;
+import org.briarproject.properties.TransportPropertyValidator;
 
 import java.io.File;
 
@@ -41,6 +44,14 @@ public class AndroidModule {
 		AndroidNotificationManager androidNotificationManager;
 		@Inject
 		TransportPropertyManager transportPropertyManager;
+		@Inject
+		MessagingManager messagingManager;
+		@Inject
+		PrivateMessageValidator privateMessageValidator;
+		@Inject
+		TransportPropertyValidator transportPropertyValidator;
+
+
 	}
 
 	static void injectEager(AndroidComponent c) {
diff --git a/briar-android/src/org/briarproject/android/BriarApplication.java b/briar-android/src/org/briarproject/android/BriarApplication.java
index e56688e697d513e9b5ab9e5898fbdaf9afd56560..ac670b9efabc03b0aee52b32b9d265449d22a4b7 100644
--- a/briar-android/src/org/briarproject/android/BriarApplication.java
+++ b/briar-android/src/org/briarproject/android/BriarApplication.java
@@ -6,8 +6,6 @@ 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 =
diff --git a/briar-core/src/org/briarproject/data/DataModule.java b/briar-core/src/org/briarproject/data/DataModule.java
index 5c77b8ac73a5998763bff55de5e1c060e4b916d4..8a8286511cc3446dca65a63d47d2ff5be246c00a 100644
--- a/briar-core/src/org/briarproject/data/DataModule.java
+++ b/briar-core/src/org/briarproject/data/DataModule.java
@@ -23,13 +23,13 @@ public class DataModule {
 	}
 
 	@Provides
-	MetadataParser provideMetaDataParser() {
-		return new MetadataParserImpl();
+	MetadataParser provideMetaDataParser(BdfReaderFactory bdfReaderFactory) {
+		return new MetadataParserImpl(bdfReaderFactory);
 	}
 
 	@Provides
-	MetadataEncoder provideMetaDataEncoider() {
-		return new MetadataEncoderImpl();
+	MetadataEncoder provideMetaDataEncoider(BdfWriterFactory bdfWriterFactory) {
+		return new MetadataEncoderImpl(bdfWriterFactory);
 	}
 
 }
diff --git a/briar-core/src/org/briarproject/data/MetadataEncoderImpl.java b/briar-core/src/org/briarproject/data/MetadataEncoderImpl.java
index c35ee3ddb834dd4dd140ee8bde58cabadd8173a4..d6cc64b145a970b68770d86c6ad74b0a63f4de8d 100644
--- a/briar-core/src/org/briarproject/data/MetadataEncoderImpl.java
+++ b/briar-core/src/org/briarproject/data/MetadataEncoderImpl.java
@@ -1,7 +1,5 @@
 package org.briarproject.data;
 
-import com.google.inject.Inject;
-
 import org.briarproject.api.Bytes;
 import org.briarproject.api.FormatException;
 import org.briarproject.api.data.BdfDictionary;
@@ -16,6 +14,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import javax.inject.Inject;
+
 import static org.briarproject.api.data.BdfDictionary.NULL_VALUE;
 import static org.briarproject.api.db.Metadata.REMOVE;
 
diff --git a/briar-core/src/org/briarproject/data/MetadataParserImpl.java b/briar-core/src/org/briarproject/data/MetadataParserImpl.java
index 7d59970b8c5451b1487c128c085229dc2cdcb11e..f387b2d0c5b244299653354d5b1e2644069cd9dd 100644
--- a/briar-core/src/org/briarproject/data/MetadataParserImpl.java
+++ b/briar-core/src/org/briarproject/data/MetadataParserImpl.java
@@ -1,7 +1,5 @@
 package org.briarproject.data;
 
-import com.google.inject.Inject;
-
 import org.briarproject.api.FormatException;
 import org.briarproject.api.data.BdfDictionary;
 import org.briarproject.api.data.BdfReader;
@@ -13,6 +11,8 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.util.Map.Entry;
 
+import javax.inject.Inject;
+
 import static org.briarproject.api.data.BdfDictionary.NULL_VALUE;
 import static org.briarproject.api.db.Metadata.REMOVE;
 
diff --git a/briar-core/src/org/briarproject/forum/ForumModule.java b/briar-core/src/org/briarproject/forum/ForumModule.java
index dba71334f03e8381ea55a3fd129a7542d84cc5e6..cbe2c7f19c39d50e018ffdbd73c58833c9d0339a 100644
--- a/briar-core/src/org/briarproject/forum/ForumModule.java
+++ b/briar-core/src/org/briarproject/forum/ForumModule.java
@@ -1,5 +1,6 @@
 package org.briarproject.forum;
 
+import org.briarproject.api.clients.ClientHelper;
 import org.briarproject.api.contact.ContactManager;
 import org.briarproject.api.crypto.CryptoComponent;
 import org.briarproject.api.data.BdfReaderFactory;
@@ -12,6 +13,7 @@ import org.briarproject.api.forum.ForumManager;
 import org.briarproject.api.forum.ForumPostFactory;
 import org.briarproject.api.forum.ForumSharingManager;
 import org.briarproject.api.identity.Author;
+import org.briarproject.api.identity.AuthorFactory;
 import org.briarproject.api.sync.MessageFactory;
 import org.briarproject.api.sync.ValidationManager;
 import org.briarproject.api.system.Clock;
@@ -40,23 +42,18 @@ public class ForumModule {
 
 	@Provides
 	ForumPostFactory provideForumPostFactory(CryptoComponent crypto,
-			MessageFactory messageFactory,
-			BdfWriterFactory bdfWriterFactory) {
-		return new ForumPostFactoryImpl(crypto, messageFactory,
-				bdfWriterFactory);
+			ClientHelper clientHelper) {
+		return new ForumPostFactoryImpl(crypto, clientHelper);
 	}
 
 	@Provides
 	@Singleton
 	ForumPostValidator provideForumPostValidator(
 			ValidationManager validationManager, CryptoComponent crypto,
-			BdfReaderFactory bdfReaderFactory,
-			BdfWriterFactory bdfWriterFactory,
-			ObjectReader<Author> authorReader, MetadataEncoder metadataEncoder,
-			Clock clock) {
+			AuthorFactory authorFactory, ClientHelper clientHelper,
+			MetadataEncoder metadataEncoder, Clock clock) {
 		ForumPostValidator validator = new ForumPostValidator(crypto,
-				bdfReaderFactory, bdfWriterFactory, authorReader,
-				metadataEncoder, clock);
+				authorFactory, clientHelper, metadataEncoder, clock);
 		validationManager.registerMessageValidator(
 				ForumManagerImpl.CLIENT_ID, validator);
 		return validator;
@@ -65,11 +62,10 @@ public class ForumModule {
 	@Provides
 	@Singleton
 	ForumListValidator provideForumListValidator(
-			ValidationManager validationManager,
-			BdfReaderFactory bdfReaderFactory,
-			MetadataEncoder metadataEncoder) {
-		ForumListValidator validator = new ForumListValidator(bdfReaderFactory,
-				metadataEncoder);
+			ValidationManager validationManager, ClientHelper clientHelper,
+			MetadataEncoder metadataEncoder, Clock clock) {
+		ForumListValidator validator = new ForumListValidator(clientHelper,
+				metadataEncoder, clock);
 		validationManager.registerMessageValidator(
 				ForumSharingManagerImpl.CLIENT_ID, validator);
 		return validator;
diff --git a/briar-core/src/org/briarproject/messaging/MessagingModule.java b/briar-core/src/org/briarproject/messaging/MessagingModule.java
index 6a68b0fe1aa65428a6dd0c39224a51f562c0a998..6f0921d828da38b35b5036384ab709a19f08b8f7 100644
--- a/briar-core/src/org/briarproject/messaging/MessagingModule.java
+++ b/briar-core/src/org/briarproject/messaging/MessagingModule.java
@@ -1,5 +1,6 @@
 package org.briarproject.messaging;
 
+import org.briarproject.api.clients.ClientHelper;
 import org.briarproject.api.contact.ContactManager;
 import org.briarproject.api.data.BdfReaderFactory;
 import org.briarproject.api.data.BdfWriterFactory;
@@ -25,19 +26,18 @@ public class MessagingModule {
 
 	@Provides
 	PrivateMessageFactory providePrivateMessageFactory(
-			MessageFactory messageFactory,
-			BdfWriterFactory bdfWriterFactory) {
-		return new PrivateMessageFactoryImpl(messageFactory, bdfWriterFactory);
+			ClientHelper clientHelper) {
+		return new PrivateMessageFactoryImpl(clientHelper);
 	}
 
 
 	@Provides
 	@Singleton
 	PrivateMessageValidator getValidator(ValidationManager validationManager,
-			BdfReaderFactory bdfReaderFactory, MetadataEncoder metadataEncoder,
+			ClientHelper clientHelper, MetadataEncoder metadataEncoder,
 			Clock clock) {
 		PrivateMessageValidator validator = new PrivateMessageValidator(
-				bdfReaderFactory, metadataEncoder, clock);
+				clientHelper, metadataEncoder, clock);
 		validationManager.registerMessageValidator(CLIENT_ID, validator);
 		return validator;
 	}
diff --git a/briar-core/src/org/briarproject/messaging/PrivateMessageValidator.java b/briar-core/src/org/briarproject/messaging/PrivateMessageValidator.java
index 550da3f9c77d7ab8eaebc9365105275a35cb23af..ad1fcb81b7a0d76350699c9e729ebeacbf247d1b 100644
--- a/briar-core/src/org/briarproject/messaging/PrivateMessageValidator.java
+++ b/briar-core/src/org/briarproject/messaging/PrivateMessageValidator.java
@@ -14,7 +14,7 @@ import org.briarproject.clients.BdfMessageValidator;
 import static org.briarproject.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
 import static org.briarproject.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH;
 
-class PrivateMessageValidator extends BdfMessageValidator {
+public class PrivateMessageValidator extends BdfMessageValidator {
 
 	PrivateMessageValidator(ClientHelper clientHelper,
 			MetadataEncoder metadataEncoder, Clock clock) {
diff --git a/briar-core/src/org/briarproject/properties/PropertiesModule.java b/briar-core/src/org/briarproject/properties/PropertiesModule.java
index 15fcf56aa568f72477f5e56b5433e739477c4984..e008146d23ba9ee1ea5365487cc4c5e241458ce5 100644
--- a/briar-core/src/org/briarproject/properties/PropertiesModule.java
+++ b/briar-core/src/org/briarproject/properties/PropertiesModule.java
@@ -1,5 +1,6 @@
 package org.briarproject.properties;
 
+import org.briarproject.api.clients.ClientHelper;
 import org.briarproject.api.contact.ContactManager;
 import org.briarproject.api.data.BdfReaderFactory;
 import org.briarproject.api.data.MetadataEncoder;
@@ -23,10 +24,10 @@ public class PropertiesModule {
 	@Provides
 	@Singleton
 	TransportPropertyValidator getValidator(ValidationManager validationManager,
-			BdfReaderFactory bdfReaderFactory, MetadataEncoder metadataEncoder,
+			ClientHelper clientHelper, MetadataEncoder metadataEncoder,
 			Clock clock) {
 		TransportPropertyValidator validator = new TransportPropertyValidator(
-				bdfReaderFactory, metadataEncoder, clock);
+				clientHelper, metadataEncoder, clock);
 		validationManager.registerMessageValidator(CLIENT_ID, validator);
 		return validator;
 	}
diff --git a/briar-core/src/org/briarproject/properties/TransportPropertyValidator.java b/briar-core/src/org/briarproject/properties/TransportPropertyValidator.java
index 55b913c7dd2f60aa935773158602a0fb27cf65a5..b26775d7360abed07d1b69ec9a80b946f79071cb 100644
--- a/briar-core/src/org/briarproject/properties/TransportPropertyValidator.java
+++ b/briar-core/src/org/briarproject/properties/TransportPropertyValidator.java
@@ -15,7 +15,7 @@ import static org.briarproject.api.TransportId.MAX_TRANSPORT_ID_LENGTH;
 import static org.briarproject.api.properties.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
 import static org.briarproject.api.properties.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
 
-class TransportPropertyValidator extends BdfMessageValidator {
+public class TransportPropertyValidator extends BdfMessageValidator {
 
 	TransportPropertyValidator(ClientHelper clientHelper,
 			MetadataEncoder metadataEncoder, Clock clock) {
diff --git a/briar-tests/src/org/briarproject/TestLifecycleModule.java b/briar-tests/src/org/briarproject/TestLifecycleModule.java
index 8df124d7d6f1fc4d2bae5df2dd77ce778a7155e9..6022af177ee0193c7891474f72352ba18b9bb82e 100644
--- a/briar-tests/src/org/briarproject/TestLifecycleModule.java
+++ b/briar-tests/src/org/briarproject/TestLifecycleModule.java
@@ -55,6 +55,7 @@ public class TestLifecycleModule {
 		};
 	}
 
+	@Provides
 	ShutdownManager provideShutdownManager() {
 		return new ShutdownManager() {
 			@Override