diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java
index d80042b41521aada66365f1bd21cdb1c620c114b..bc73714b785accb507afd689b5e8d9b3008ef688 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java
@@ -35,13 +35,15 @@ public interface ValidationManager {
 	/**
 	 * Sets the message validator for the given client.
 	 */
-	void registerMessageValidator(ClientId c, MessageValidator v);
+	void registerMessageValidator(ClientId c, int clientVersion,
+			MessageValidator v);
 
 	/**
 	 * Sets the incoming message hook for the given client. The hook will be
 	 * called once for each incoming message that passes validation.
 	 */
-	void registerIncomingMessageHook(ClientId c, IncomingMessageHook hook);
+	void registerIncomingMessageHook(ClientId c, int clientVersion,
+			IncomingMessageHook hook);
 
 	interface MessageValidator {
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java b/bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java
index 7f7da60cec2b8574786fa8ab63a901b676fdb940..93cbf28eb5cf045200a41e17ef7938b3e099ec1d 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java
@@ -15,6 +15,7 @@ import dagger.Module;
 import dagger.Provides;
 
 import static org.briarproject.bramble.api.properties.TransportPropertyManager.CLIENT_ID;
+import static org.briarproject.bramble.api.properties.TransportPropertyManager.CLIENT_VERSION;
 
 @Module
 public class PropertiesModule {
@@ -33,7 +34,8 @@ public class PropertiesModule {
 			Clock clock) {
 		TransportPropertyValidator validator = new TransportPropertyValidator(
 				clientHelper, metadataEncoder, clock);
-		validationManager.registerMessageValidator(CLIENT_ID, validator);
+		validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
+				validator);
 		return validator;
 	}
 
@@ -44,7 +46,7 @@ public class PropertiesModule {
 			ValidationManager validationManager, ContactManager contactManager,
 			TransportPropertyManagerImpl transportPropertyManager) {
 		lifecycleManager.registerClient(transportPropertyManager);
-		validationManager.registerIncomingMessageHook(CLIENT_ID,
+		validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
 				transportPropertyManager);
 		contactManager.registerContactHook(transportPropertyManager);
 		return transportPropertyManager;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/ClientVersion.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/ClientVersion.java
index 36a51a4e3edd6c7f4e038c1bcb6d3b00140dbf17..202176a65cfdccb5b9877a81a9194d847b569eeb 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/ClientVersion.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/ClientVersion.java
@@ -38,5 +38,10 @@ class ClientVersion implements Comparable<ClientVersion> {
 		if (compare != 0) return compare;
 		return clientVersion - c.clientVersion;
 	}
+
+	@Override
+	public String toString() {
+		return clientId.getString() + ":" + clientVersion;
+	}
 }
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncModule.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncModule.java
index 0acf9e4e806aea4aaa9296b4665ff202c08cd8eb..f83e4d64c2488899411104e7c446368bacb4c825 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncModule.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncModule.java
@@ -28,6 +28,7 @@ import dagger.Module;
 import dagger.Provides;
 
 import static org.briarproject.bramble.api.sync.ClientVersioningManager.CLIENT_ID;
+import static org.briarproject.bramble.api.sync.ClientVersioningManager.CLIENT_VERSION;
 
 @Module
 public class SyncModule {
@@ -110,7 +111,7 @@ public class SyncModule {
 		lifecycleManager.registerClient(clientVersioningManager);
 		lifecycleManager.registerService(clientVersioningManager);
 		contactManager.registerContactHook(clientVersioningManager);
-		validationManager.registerIncomingMessageHook(CLIENT_ID,
+		validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
 				clientVersioningManager);
 		return clientVersioningManager;
 	}
@@ -122,7 +123,8 @@ public class SyncModule {
 			Clock clock, ValidationManager validationManager) {
 		ClientVersioningValidator validator = new ClientVersioningValidator(
 				clientHelper, metadataEncoder, clock);
-		validationManager.registerMessageValidator(CLIENT_ID, validator);
+		validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
+				validator);
 		return validator;
 	}
 }
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/ValidationManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/ValidationManagerImpl.java
index a9c79c33215ca42702a6fed86fbff31429adc527..16ce78a4324a0d29d15e5c70a0877d9640664cf4 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/ValidationManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/ValidationManagerImpl.java
@@ -51,8 +51,8 @@ class ValidationManagerImpl implements ValidationManager, Service,
 	private final DatabaseComponent db;
 	private final Executor dbExecutor, validationExecutor;
 	private final MessageFactory messageFactory;
-	private final Map<ClientId, MessageValidator> validators;
-	private final Map<ClientId, IncomingMessageHook> hooks;
+	private final Map<ClientVersion, MessageValidator> validators;
+	private final Map<ClientVersion, IncomingMessageHook> hooks;
 	private final AtomicBoolean used = new AtomicBoolean(false);
 
 	@Inject
@@ -81,14 +81,15 @@ class ValidationManagerImpl implements ValidationManager, Service,
 	}
 
 	@Override
-	public void registerMessageValidator(ClientId c, MessageValidator v) {
-		validators.put(c, v);
+	public void registerMessageValidator(ClientId c, int clientVersion,
+			MessageValidator v) {
+		validators.put(new ClientVersion(c, clientVersion), v);
 	}
 
 	@Override
-	public void registerIncomingMessageHook(ClientId c,
+	public void registerIncomingMessageHook(ClientId c, int clientVersion,
 			IncomingMessageHook hook) {
-		hooks.put(c, hook);
+		hooks.put(new ClientVersion(c, clientVersion), hook);
 	}
 
 	private void validateOutstandingMessagesAsync() {
@@ -199,9 +200,11 @@ class ValidationManagerImpl implements ValidationManager, Service,
 						Message m = messageFactory.createMessage(id, raw);
 						Group g = db.getGroup(txn, m.getGroupId());
 						ClientId c = g.getClientId();
+						int clientVersion = g.getClientVersion();
 						Metadata meta =
 								db.getMessageMetadataForValidator(txn, id);
-						DeliveryResult result = deliverMessage(txn, m, c, meta);
+						DeliveryResult result =
+								deliverMessage(txn, m, c, clientVersion, meta);
 						if (result.valid) {
 							pending.addAll(getPendingDependents(txn, id));
 							if (result.share) {
@@ -237,14 +240,16 @@ class ValidationManagerImpl implements ValidationManager, Service,
 
 	@ValidationExecutor
 	private void validateMessage(Message m, Group g) {
-		MessageValidator v = validators.get(g.getClientId());
+		ClientVersion cv =
+				new ClientVersion(g.getClientId(), g.getClientVersion());
+		MessageValidator v = validators.get(cv);
 		if (v == null) {
-			if (LOG.isLoggable(WARNING))
-				LOG.warning("No validator for " + g.getClientId().getString());
+			if (LOG.isLoggable(WARNING)) LOG.warning("No validator for " + cv);
 		} else {
 			try {
 				MessageContext context = v.validateMessage(m, g);
-				storeMessageContextAsync(m, g.getClientId(), context);
+				storeMessageContextAsync(m, g.getClientId(),
+						g.getClientVersion(), context);
 			} catch (InvalidMessageException e) {
 				if (LOG.isLoggable(INFO))
 					LOG.log(INFO, e.toString(), e);
@@ -256,12 +261,13 @@ class ValidationManagerImpl implements ValidationManager, Service,
 	}
 
 	private void storeMessageContextAsync(Message m, ClientId c,
-			MessageContext result) {
-		dbExecutor.execute(() -> storeMessageContext(m, c, result));
+			int clientVersion, MessageContext result) {
+		dbExecutor.execute(() ->
+				storeMessageContext(m, c, clientVersion, result));
 	}
 
 	@DatabaseExecutor
-	private void storeMessageContext(Message m, ClientId c,
+	private void storeMessageContext(Message m, ClientId c, int clientVersion,
 			MessageContext context) {
 		try {
 			MessageId id = m.getId();
@@ -292,7 +298,8 @@ class ValidationManagerImpl implements ValidationManager, Service,
 					Metadata meta = context.getMetadata();
 					db.mergeMessageMetadata(txn, id, meta);
 					if (allDelivered) {
-						DeliveryResult result = deliverMessage(txn, m, c, meta);
+						DeliveryResult result =
+								deliverMessage(txn, m, c, clientVersion, meta);
 						if (result.valid) {
 							pending = getPendingDependents(txn, id);
 							if (result.share) {
@@ -324,10 +331,11 @@ class ValidationManagerImpl implements ValidationManager, Service,
 
 	@DatabaseExecutor
 	private DeliveryResult deliverMessage(Transaction txn, Message m,
-			ClientId c, Metadata meta) throws DbException {
+			ClientId c, int clientVersion, Metadata meta) throws DbException {
 		// Deliver the message to the client if it's registered a hook
 		boolean shareMsg = false;
-		IncomingMessageHook hook = hooks.get(c);
+		ClientVersion cv = new ClientVersion(c, clientVersion);
+		IncomingMessageHook hook = hooks.get(cv);
 		if (hook != null) {
 			try {
 				shareMsg = hook.incomingMessage(txn, m, meta);
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/sync/ValidationManagerImplTest.java b/bramble-core/src/test/java/org/briarproject/bramble/sync/ValidationManagerImplTest.java
index c6be26f21e7bcda9ecbfcfcb4519b359527ffc5e..3131c4fb5466bec6dd2b567dcc020b4a6f62049d 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/sync/ValidationManagerImplTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/sync/ValidationManagerImplTest.java
@@ -53,10 +53,11 @@ public class ValidationManagerImplTest extends BrambleMockTestCase {
 	private final Executor dbExecutor = new ImmediateExecutor();
 	private final Executor validationExecutor = new ImmediateExecutor();
 	private final ClientId clientId = getClientId();
+	private final int clientVersion = 123;
 	private final MessageId messageId = new MessageId(getRandomId());
 	private final MessageId messageId1 = new MessageId(getRandomId());
 	private final MessageId messageId2 = new MessageId(getRandomId());
-	private final Group group = getGroup(clientId, 123);
+	private final Group group = getGroup(clientId, clientVersion);
 	private final GroupId groupId = group.getId();
 	private final long timestamp = System.currentTimeMillis();
 	private final byte[] raw = new byte[123];
@@ -85,8 +86,8 @@ public class ValidationManagerImplTest extends BrambleMockTestCase {
 	public void setUp() {
 		vm = new ValidationManagerImpl(db, dbExecutor, validationExecutor,
 				messageFactory);
-		vm.registerMessageValidator(clientId, validator);
-		vm.registerIncomingMessageHook(clientId, hook);
+		vm.registerMessageValidator(clientId, clientVersion, validator);
+		vm.registerIncomingMessageHook(clientId, clientVersion, hook);
 	}
 
 	@Test
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogModule.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogModule.java
index af39a8fcd9134af40874bae4fa19b977d2aa1689..54f8b961417240ad9da546ca2f4db915263c4730 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogModule.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogModule.java
@@ -18,7 +18,8 @@ import javax.inject.Singleton;
 import dagger.Module;
 import dagger.Provides;
 
-import static org.briarproject.briar.blog.BlogManagerImpl.CLIENT_ID;
+import static org.briarproject.briar.api.blog.BlogManager.CLIENT_ID;
+import static org.briarproject.briar.api.blog.BlogManager.CLIENT_VERSION;
 
 @Module
 public class BlogModule {
@@ -35,10 +36,10 @@ public class BlogModule {
 	BlogManager provideBlogManager(BlogManagerImpl blogManager,
 			LifecycleManager lifecycleManager, ContactManager contactManager,
 			ValidationManager validationManager) {
-
 		lifecycleManager.registerClient(blogManager);
 		contactManager.registerContactHook(blogManager);
-		validationManager.registerIncomingMessageHook(CLIENT_ID, blogManager);
+		validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
+				blogManager);
 		return blogManager;
 	}
 
@@ -60,12 +61,11 @@ public class BlogModule {
 			MessageFactory messageFactory, BlogFactory blogFactory,
 			ClientHelper clientHelper, MetadataEncoder metadataEncoder,
 			Clock clock) {
-
 		BlogPostValidator validator = new BlogPostValidator(groupFactory,
 				messageFactory, blogFactory, clientHelper, metadataEncoder,
 				clock);
-		validationManager.registerMessageValidator(CLIENT_ID, validator);
-
+		validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
+				validator);
 		return validator;
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/forum/ForumModule.java b/briar-core/src/main/java/org/briarproject/briar/forum/ForumModule.java
index 9050dc272af580613adc29c430885636b33b60cb..a6732fadb061a4150efed90a2cbc7001261af2b5 100644
--- a/briar-core/src/main/java/org/briarproject/briar/forum/ForumModule.java
+++ b/briar-core/src/main/java/org/briarproject/briar/forum/ForumModule.java
@@ -15,6 +15,7 @@ import dagger.Module;
 import dagger.Provides;
 
 import static org.briarproject.briar.api.forum.ForumManager.CLIENT_ID;
+import static org.briarproject.briar.api.forum.ForumManager.CLIENT_VERSION;
 
 @Module
 public class ForumModule {
@@ -30,7 +31,7 @@ public class ForumModule {
 	@Singleton
 	ForumManager provideForumManager(ForumManagerImpl forumManager,
 			ValidationManager validationManager) {
-		validationManager.registerIncomingMessageHook(CLIENT_ID,
+		validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
 				forumManager);
 		return forumManager;
 	}
@@ -53,7 +54,8 @@ public class ForumModule {
 			MetadataEncoder metadataEncoder, Clock clock) {
 		ForumPostValidator validator = new ForumPostValidator(clientHelper,
 				metadataEncoder, clock);
-		validationManager.registerMessageValidator(CLIENT_ID, validator);
+		validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
+				validator);
 		return validator;
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionModule.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionModule.java
index 24c649c5fd6cbb0e4a1fe7ad838af2ff13ac4d20..a41215ae2fe40c192156c371603ee7a5eba6292c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionModule.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionModule.java
@@ -16,6 +16,7 @@ import dagger.Module;
 import dagger.Provides;
 
 import static org.briarproject.briar.api.introduction.IntroductionManager.CLIENT_ID;
+import static org.briarproject.briar.api.introduction.IntroductionManager.CLIENT_VERSION;
 
 @Module
 public class IntroductionModule {
@@ -32,13 +33,11 @@ public class IntroductionModule {
 	IntroductionValidator provideValidator(ValidationManager validationManager,
 			MessageEncoder messageEncoder, MetadataEncoder metadataEncoder,
 			ClientHelper clientHelper, Clock clock) {
-
 		IntroductionValidator introductionValidator =
 				new IntroductionValidator(messageEncoder, clientHelper,
 						metadataEncoder, clock);
-		validationManager.registerMessageValidator(CLIENT_ID,
+		validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
 				introductionValidator);
-
 		return introductionValidator;
 	}
 
@@ -52,9 +51,8 @@ public class IntroductionModule {
 		lifecycleManager.registerClient(introductionManager);
 		contactManager.registerContactHook(introductionManager);
 		validationManager.registerIncomingMessageHook(CLIENT_ID,
-				introductionManager);
+				CLIENT_VERSION, introductionManager);
 		conversationManager.registerConversationClient(introductionManager);
-
 		return introductionManager;
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java
index 492d3c4fac7e4c9ddde40f8843a5ae79054d26d7..c6c6bd1e6c3965bffa01c09bf55c44fc7d101a0b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java
+++ b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java
@@ -16,7 +16,8 @@ import javax.inject.Singleton;
 import dagger.Module;
 import dagger.Provides;
 
-import static org.briarproject.briar.messaging.MessagingManagerImpl.CLIENT_ID;
+import static org.briarproject.briar.api.messaging.MessagingManager.CLIENT_ID;
+import static org.briarproject.briar.api.messaging.MessagingManager.CLIENT_VERSION;
 
 @Module
 public class MessagingModule {
@@ -43,7 +44,8 @@ public class MessagingModule {
 			Clock clock) {
 		PrivateMessageValidator validator = new PrivateMessageValidator(
 				clientHelper, metadataEncoder, clock);
-		validationManager.registerMessageValidator(CLIENT_ID, validator);
+		validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
+				validator);
 		return validator;
 	}
 
@@ -55,8 +57,8 @@ public class MessagingModule {
 			MessagingManagerImpl messagingManager) {
 		lifecycleManager.registerClient(messagingManager);
 		contactManager.registerContactHook(messagingManager);
-		validationManager
-				.registerIncomingMessageHook(CLIENT_ID, messagingManager);
+		validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
+				messagingManager);
 		conversationManager.registerConversationClient(messagingManager);
 		return messagingManager;
 	}
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupModule.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupModule.java
index 8b2bb3b66e69d034978db9cb0d4e85f3cbb60712..c105df88d953dcaf691e4d408749b7dfd6220c18 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupModule.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupModule.java
@@ -16,6 +16,7 @@ import dagger.Module;
 import dagger.Provides;
 
 import static org.briarproject.briar.api.privategroup.PrivateGroupManager.CLIENT_ID;
+import static org.briarproject.briar.api.privategroup.PrivateGroupManager.CLIENT_VERSION;
 
 @Module
 public class PrivateGroupModule {
@@ -32,7 +33,8 @@ public class PrivateGroupModule {
 	PrivateGroupManager provideGroupManager(
 			PrivateGroupManagerImpl groupManager,
 			ValidationManager validationManager) {
-		validationManager.registerIncomingMessageHook(CLIENT_ID, groupManager);
+		validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
+				groupManager);
 		return groupManager;
 	}
 
@@ -58,7 +60,8 @@ public class PrivateGroupModule {
 		GroupMessageValidator validator = new GroupMessageValidator(
 				privateGroupFactory, clientHelper, metadataEncoder, clock,
 				groupInvitationFactory);
-		validationManager.registerMessageValidator(CLIENT_ID, validator);
+		validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
+				validator);
 		return validator;
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationModule.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationModule.java
index fbd5efbc132ff187344f5cc07a897a60a1e07ad0..178cafdd0956128adfb73fda060651f280f793c3 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationModule.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationModule.java
@@ -19,6 +19,7 @@ import dagger.Module;
 import dagger.Provides;
 
 import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager.CLIENT_ID;
+import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager.CLIENT_VERSION;
 
 @Module
 public class GroupInvitationModule {
@@ -39,7 +40,7 @@ public class GroupInvitationModule {
 			PrivateGroupManager privateGroupManager,
 			ConversationManager conversationManager) {
 		lifecycleManager.registerClient(groupInvitationManager);
-		validationManager.registerIncomingMessageHook(CLIENT_ID,
+		validationManager.registerIncomingMessageHook(CLIENT_ID, CLIENT_VERSION,
 				groupInvitationManager);
 		contactManager.registerContactHook(groupInvitationManager);
 		privateGroupManager.registerPrivateGroupHook(groupInvitationManager);
@@ -57,7 +58,8 @@ public class GroupInvitationModule {
 		GroupInvitationValidator validator = new GroupInvitationValidator(
 				clientHelper, metadataEncoder, clock, privateGroupFactory,
 				messageEncoder);
-		validationManager.registerMessageValidator(CLIENT_ID, validator);
+		validationManager.registerMessageValidator(CLIENT_ID, CLIENT_VERSION,
+				validator);
 		return validator;
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingModule.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingModule.java
index 64d4d0d37d6fdeb10feb672c9bbe59b6ae2ad4dd..4dfe78d8d33b8528cc38f9de660122fae04f3ca4 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingModule.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingModule.java
@@ -59,11 +59,11 @@ public class SharingModule {
 			ValidationManager validationManager, MessageEncoder messageEncoder,
 			ClientHelper clientHelper, MetadataEncoder metadataEncoder,
 			Clock clock, BlogFactory blogFactory) {
-		BlogSharingValidator validator =
-				new BlogSharingValidator(messageEncoder, clientHelper,
-						metadataEncoder, clock, blogFactory);
+		BlogSharingValidator validator = new BlogSharingValidator(
+				messageEncoder, clientHelper, metadataEncoder, clock,
+				blogFactory);
 		validationManager.registerMessageValidator(BlogSharingManager.CLIENT_ID,
-				validator);
+				BlogSharingManager.CLIENT_VERSION, validator);
 		return validator;
 	}
 
@@ -77,10 +77,10 @@ public class SharingModule {
 		lifecycleManager.registerClient(blogSharingManager);
 		contactManager.registerContactHook(blogSharingManager);
 		validationManager.registerIncomingMessageHook(
-				BlogSharingManager.CLIENT_ID, blogSharingManager);
+				BlogSharingManager.CLIENT_ID, BlogSharingManager.CLIENT_VERSION,
+				blogSharingManager);
 		conversationManager.registerConversationClient(blogSharingManager);
 		blogManager.registerRemoveBlogHook(blogSharingManager);
-
 		return blogSharingManager;
 	}
 
@@ -108,12 +108,12 @@ public class SharingModule {
 			ValidationManager validationManager, MessageEncoder messageEncoder,
 			ClientHelper clientHelper, MetadataEncoder metadataEncoder,
 			Clock clock, ForumFactory forumFactory) {
-		ForumSharingValidator validator =
-				new ForumSharingValidator(messageEncoder, clientHelper,
-						metadataEncoder, clock, forumFactory);
-		validationManager
-				.registerMessageValidator(ForumSharingManager.CLIENT_ID,
-						validator);
+		ForumSharingValidator validator = new ForumSharingValidator(
+				messageEncoder, clientHelper, metadataEncoder, clock,
+				forumFactory);
+		validationManager.registerMessageValidator(
+				ForumSharingManager.CLIENT_ID,
+				ForumSharingManager.CLIENT_VERSION, validator);
 		return validator;
 	}
 
@@ -124,14 +124,13 @@ public class SharingModule {
 			ValidationManager validationManager,
 			ConversationManager conversationManager, ForumManager forumManager,
 			ForumSharingManagerImpl forumSharingManager) {
-
 		lifecycleManager.registerClient(forumSharingManager);
 		contactManager.registerContactHook(forumSharingManager);
 		validationManager.registerIncomingMessageHook(
-				ForumSharingManager.CLIENT_ID, forumSharingManager);
+				ForumSharingManager.CLIENT_ID,
+				ForumSharingManager.CLIENT_VERSION, forumSharingManager);
 		conversationManager.registerConversationClient(forumSharingManager);
 		forumManager.registerRemoveForumHook(forumSharingManager);
-
 		return forumSharingManager;
 	}