diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java
index 957daaf7de489b380697df29a905b339643e467e..cbb5381ca951829d7339523a128c1ba8c08732ec 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java
@@ -14,7 +14,7 @@ public class BlogInvitationRequestReceivedEvent extends
 		InvitationRequestReceivedEvent<Blog> {
 
 	public BlogInvitationRequestReceivedEvent(Blog blog, ContactId contactId,
-			InvitationRequest request) {
+			InvitationRequest<Blog> request) {
 		super(blog, contactId, request);
 	}
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java
index a737e1a443de675adda8742ed8284a4c2f752139..8d1b0ea39ee5430e6a4df208d38b6c32a97ed64d 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java
@@ -3,7 +3,7 @@ package org.briarproject.briar.api.forum.event;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.forum.Forum;
-import org.briarproject.briar.api.forum.ForumInvitationRequest;
+import org.briarproject.briar.api.sharing.InvitationRequest;
 import org.briarproject.briar.api.sharing.event.InvitationRequestReceivedEvent;
 
 import javax.annotation.concurrent.Immutable;
@@ -14,7 +14,7 @@ public class ForumInvitationRequestReceivedEvent extends
 		InvitationRequestReceivedEvent<Forum> {
 
 	public ForumInvitationRequestReceivedEvent(Forum forum, ContactId contactId,
-			ForumInvitationRequest request) {
+			InvitationRequest<Forum> request) {
 		super(forum, contactId, request);
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
index ab4c1c373e7b81e3bfc506ed963053703e9dd5da..496b308fb59513dfc948b0a5d21d7c02d5b98196 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
@@ -31,7 +31,6 @@ import org.briarproject.briar.api.blog.BlogPostFactory;
 import org.briarproject.briar.api.blog.BlogPostHeader;
 import org.briarproject.briar.api.blog.MessageType;
 import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
-import org.briarproject.briar.api.client.ProtocolStateException;
 import org.briarproject.briar.client.BdfIncomingMessageHook;
 
 import java.security.GeneralSecurityException;
@@ -228,7 +227,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
 	private void removeBlog(Transaction txn, Blog b, boolean forced)
 			throws DbException {
 		if (!forced && !canBeRemoved(txn, b.getId()))
-			throw new ProtocolStateException();
+			throw new IllegalArgumentException();
 		for (RemoveBlogHook hook : removeHooks)
 			hook.removingBlog(txn, b);
 		db.removeGroup(txn, b.getGroup());
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java
index 606d6fa99d7ba7ebc84d0c18d35a2e77133397d9..0162f08decd3c553c0722aa1ba4a052e74b21300 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java
@@ -10,7 +10,8 @@ import org.briarproject.briar.api.client.SessionId;
 
 import javax.inject.Inject;
 
-public class BlogInvitationFactoryImpl implements InvitationFactory<Blog> {
+public class BlogInvitationFactoryImpl
+		implements InvitationFactory<Blog, BlogInvitationResponse> {
 
 	@Inject
 	BlogInvitationFactoryImpl() {
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java
index 79ba79d4a94491bd1207e6a7593346f104943ae0..aa279be427e7f03735917568679e7d9148dabc0c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java
@@ -12,13 +12,13 @@ import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.blog.Blog;
-import org.briarproject.briar.api.blog.BlogInvitationRequest;
 import org.briarproject.briar.api.blog.BlogInvitationResponse;
 import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.client.MessageTracker;
+import org.briarproject.briar.api.sharing.InvitationRequest;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
@@ -28,14 +28,15 @@ import javax.inject.Inject;
 class BlogProtocolEngineImpl extends ProtocolEngineImpl<Blog> {
 
 	private final BlogManager blogManager;
-	private final InvitationFactory<Blog> invitationFactory;
+	private final InvitationFactory<Blog, BlogInvitationResponse>
+			invitationFactory;
 
 	@Inject
 	BlogProtocolEngineImpl(DatabaseComponent db,
 			ClientHelper clientHelper, MessageEncoder messageEncoder,
 			MessageParser<Blog> messageParser, MessageTracker messageTracker,
 			Clock clock, BlogManager blogManager,
-			InvitationFactory<Blog> invitationFactory) {
+			InvitationFactory<Blog, BlogInvitationResponse> invitationFactory) {
 		super(db, clientHelper, messageEncoder, messageParser, messageTracker,
 				clock);
 		this.blogManager = blogManager;
@@ -45,8 +46,7 @@ class BlogProtocolEngineImpl extends ProtocolEngineImpl<Blog> {
 	@Override
 	Event getInvitationRequestReceivedEvent(InviteMessage<Blog> m,
 			ContactId contactId, boolean available, boolean canBeOpened) {
-		BlogInvitationRequest request =
-				(BlogInvitationRequest) invitationFactory
+		InvitationRequest<Blog> request = invitationFactory
 						.createInvitationRequest(false, false, true, false, m,
 								contactId, available, canBeOpened);
 		return new BlogInvitationRequestReceivedEvent(m.getShareable(),
@@ -56,24 +56,20 @@ class BlogProtocolEngineImpl extends ProtocolEngineImpl<Blog> {
 	@Override
 	Event getInvitationResponseReceivedEvent(AcceptMessage m,
 			ContactId contactId) {
-		BlogInvitationResponse response =
-				(BlogInvitationResponse) invitationFactory
-						.createInvitationResponse(m.getId(),
-								m.getContactGroupId(), m.getTimestamp(), false,
-								false, true, false, m.getShareableId(),
-								contactId, true);
+		BlogInvitationResponse response = invitationFactory
+				.createInvitationResponse(m.getId(), m.getContactGroupId(),
+						m.getTimestamp(), false, false, true, false,
+						m.getShareableId(), contactId, true);
 		return new BlogInvitationResponseReceivedEvent(contactId, response);
 	}
 
 	@Override
 	Event getInvitationResponseReceivedEvent(DeclineMessage m,
 			ContactId contactId) {
-		BlogInvitationResponse response =
-				(BlogInvitationResponse) invitationFactory
-						.createInvitationResponse(m.getId(),
-								m.getContactGroupId(), m.getTimestamp(), false,
-								false, true, false, m.getShareableId(),
-								contactId, true);
+		BlogInvitationResponse response = invitationFactory
+				.createInvitationResponse(m.getId(), m.getContactGroupId(),
+						m.getTimestamp(), false, false, true, false,
+						m.getShareableId(), contactId, true);
 		return new BlogInvitationResponseReceivedEvent(contactId, response);
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java
index 9133b49174575aaf37e18bc136bd09b931ddd080..26da642ba270e9166e533637eef3feb15737707b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java
@@ -13,6 +13,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.blog.Blog;
+import org.briarproject.briar.api.blog.BlogInvitationResponse;
 import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogManager.RemoveBlogHook;
 import org.briarproject.briar.api.blog.BlogSharingManager;
@@ -36,7 +37,7 @@ class BlogSharingManagerImpl extends SharingManagerImpl<Blog>
 			MessageTracker messageTracker,
 			ContactGroupFactory contactGroupFactory,
 			ProtocolEngine<Blog> engine,
-			InvitationFactory<Blog> invitationFactory,
+			InvitationFactory<Blog, BlogInvitationResponse> invitationFactory,
 			IdentityManager identityManager, BlogManager blogManager) {
 		super(db, clientHelper, metadataParser, messageParser, sessionEncoder,
 				sessionParser, messageTracker, contactGroupFactory, engine,
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java
index 591f25bc97af0dc93dc956e5d5943a2369d21d24..c59acfd00677e9d225cc0346ef07058adb0d5c5c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java
@@ -10,7 +10,8 @@ import org.briarproject.briar.api.forum.ForumInvitationResponse;
 
 import javax.inject.Inject;
 
-public class ForumInvitationFactoryImpl implements InvitationFactory<Forum> {
+public class ForumInvitationFactoryImpl
+		implements InvitationFactory<Forum, ForumInvitationResponse> {
 
 	@Inject
 	ForumInvitationFactoryImpl() {
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java
index 0dd97300b04208ef861fea585f3682dfc50377ea..11530af843eefe523e40fe0d9ab472f69c66eb64 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java
@@ -13,12 +13,12 @@ import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.client.MessageTracker;
 import org.briarproject.briar.api.forum.Forum;
-import org.briarproject.briar.api.forum.ForumInvitationRequest;
 import org.briarproject.briar.api.forum.ForumInvitationResponse;
 import org.briarproject.briar.api.forum.ForumManager;
 import org.briarproject.briar.api.forum.ForumSharingManager;
 import org.briarproject.briar.api.forum.event.ForumInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent;
+import org.briarproject.briar.api.sharing.InvitationRequest;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
@@ -28,14 +28,15 @@ import javax.inject.Inject;
 class ForumProtocolEngineImpl extends ProtocolEngineImpl<Forum> {
 
 	private final ForumManager forumManager;
-	private final InvitationFactory<Forum> invitationFactory;
+	private final InvitationFactory<Forum, ForumInvitationResponse>
+			invitationFactory;
 
 	@Inject
 	ForumProtocolEngineImpl(DatabaseComponent db,
 			ClientHelper clientHelper, MessageEncoder messageEncoder,
 			MessageParser<Forum> messageParser, MessageTracker messageTracker,
 			Clock clock, ForumManager forumManager,
-			InvitationFactory<Forum> invitationFactory) {
+			InvitationFactory<Forum, ForumInvitationResponse> invitationFactory) {
 		super(db, clientHelper, messageEncoder, messageParser, messageTracker,
 				clock);
 		this.forumManager = forumManager;
@@ -45,8 +46,7 @@ class ForumProtocolEngineImpl extends ProtocolEngineImpl<Forum> {
 	@Override
 	Event getInvitationRequestReceivedEvent(InviteMessage<Forum> m,
 			ContactId contactId, boolean available, boolean canBeOpened) {
-		ForumInvitationRequest request =
-				(ForumInvitationRequest) invitationFactory
+		InvitationRequest<Forum> request = invitationFactory
 						.createInvitationRequest(false, false, true, false, m,
 								contactId, available, canBeOpened);
 		return new ForumInvitationRequestReceivedEvent(m.getShareable(),
@@ -56,24 +56,20 @@ class ForumProtocolEngineImpl extends ProtocolEngineImpl<Forum> {
 	@Override
 	Event getInvitationResponseReceivedEvent(AcceptMessage m,
 			ContactId contactId) {
-		ForumInvitationResponse response =
-				(ForumInvitationResponse) invitationFactory
-						.createInvitationResponse(m.getId(),
-								m.getContactGroupId(), m.getTimestamp(), false,
-								false, true, false, m.getShareableId(),
-								contactId, true);
+		ForumInvitationResponse response = invitationFactory
+				.createInvitationResponse(m.getId(), m.getContactGroupId(),
+						m.getTimestamp(), false, false, true, false,
+						m.getShareableId(), contactId, true);
 		return new ForumInvitationResponseReceivedEvent(contactId, response);
 	}
 
 	@Override
 	Event getInvitationResponseReceivedEvent(DeclineMessage m,
 			ContactId contactId) {
-		ForumInvitationResponse response =
-				(ForumInvitationResponse) invitationFactory
-						.createInvitationResponse(m.getId(),
-								m.getContactGroupId(), m.getTimestamp(), false,
-								false, true, false, m.getShareableId(),
-								contactId, true);
+		ForumInvitationResponse response = invitationFactory
+				.createInvitationResponse(m.getId(), m.getContactGroupId(),
+						m.getTimestamp(), false, false, true, false,
+						m.getShareableId(), contactId, true);
 		return new ForumInvitationResponseReceivedEvent(contactId, response);
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingManagerImpl.java
index a2e8d18d9742ab3b5db1d81b05005a8c90a7b943..c91fac76e6b687d0ee892de225620bf24dfb844b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingManagerImpl.java
@@ -10,6 +10,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.briar.api.client.MessageTracker;
 import org.briarproject.briar.api.forum.Forum;
+import org.briarproject.briar.api.forum.ForumInvitationResponse;
 import org.briarproject.briar.api.forum.ForumManager.RemoveForumHook;
 import org.briarproject.briar.api.forum.ForumSharingManager;
 
@@ -26,7 +27,7 @@ class ForumSharingManagerImpl extends SharingManagerImpl<Forum>
 			MessageTracker messageTracker,
 			ContactGroupFactory contactGroupFactory,
 			ProtocolEngine<Forum> engine,
-			InvitationFactory<Forum> invitationFactory) {
+			InvitationFactory<Forum, ForumInvitationResponse> invitationFactory) {
 		super(db, clientHelper, metadataParser, messageParser, sessionEncoder,
 				sessionParser, messageTracker, contactGroupFactory, engine,
 				invitationFactory);
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/InvitationFactory.java b/briar-core/src/main/java/org/briarproject/briar/sharing/InvitationFactory.java
index ab9fa0e23df0ae810227d9352830cadcd5348b20..ef473ca7b9ff1fdb7f196dc10a09c3fe90dbc50e 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/InvitationFactory.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/InvitationFactory.java
@@ -7,13 +7,13 @@ import org.briarproject.briar.api.sharing.InvitationRequest;
 import org.briarproject.briar.api.sharing.InvitationResponse;
 import org.briarproject.briar.api.sharing.Shareable;
 
-public interface InvitationFactory<S extends Shareable> {
+public interface InvitationFactory<S extends Shareable, I extends InvitationResponse> {
 
 	InvitationRequest<S> createInvitationRequest(boolean local, boolean sent,
 			boolean seen, boolean read, InviteMessage<S> m, ContactId c,
 			boolean available, boolean canBeOpened);
 
-	InvitationResponse createInvitationResponse(MessageId id,
+	I createInvitationResponse(MessageId id,
 			GroupId contactGroupId, long time, boolean local, boolean sent,
 			boolean seen, boolean read, GroupId shareableId,
 			ContactId contactId, boolean accept);
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
index 4d8c60a9bc494c3a8fdbe5c493052bfe01e5b002..76ba8d1cf0789a34064507eafee760584af79a3f 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
@@ -23,7 +23,6 @@ import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.MessageStatus;
 import org.briarproject.briar.api.client.MessageTracker;
-import org.briarproject.briar.api.client.ProtocolStateException;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.sharing.InvitationMessage;
 import org.briarproject.briar.api.sharing.InvitationRequest;
@@ -61,14 +60,14 @@ abstract class SharingManagerImpl<S extends Shareable>
 	private final SessionParser sessionParser;
 	private final ContactGroupFactory contactGroupFactory;
 	private final ProtocolEngine<S> engine;
-	private final InvitationFactory<S> invitationFactory;
+	private final InvitationFactory<S, ?> invitationFactory;
 
 	SharingManagerImpl(DatabaseComponent db, ClientHelper clientHelper,
 			MetadataParser metadataParser, MessageParser<S> messageParser,
 			SessionEncoder sessionEncoder, SessionParser sessionParser,
 			MessageTracker messageTracker,
 			ContactGroupFactory contactGroupFactory, ProtocolEngine<S> engine,
-			InvitationFactory<S> invitationFactory) {
+			InvitationFactory<S, ?> invitationFactory) {
 		super(db, clientHelper, metadataParser, messageTracker);
 		this.messageParser = messageParser;
 		this.sessionEncoder = sessionEncoder;
@@ -214,7 +213,7 @@ abstract class SharingManagerImpl<S extends Shareable>
 		try {
 			Contact contact = db.getContact(txn, contactId);
 			if (!canBeShared(txn, shareableId, contact))
-				throw new ProtocolStateException();
+				throw new IllegalArgumentException();
 			// Look up the session, if there is one
 			GroupId contactGroupId = getContactGroup(contact).getId();
 			StoredSession ss = getSession(txn, contactGroupId, sessionId);
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 ecd8c0f61577443e6a9b4987375291401f8312cf..5d49e104d2df07fe696bf930cca1707e871b4362 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
@@ -9,10 +9,12 @@ import org.briarproject.bramble.api.sync.ValidationManager;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.blog.BlogFactory;
+import org.briarproject.briar.api.blog.BlogInvitationResponse;
 import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.forum.Forum;
 import org.briarproject.briar.api.forum.ForumFactory;
+import org.briarproject.briar.api.forum.ForumInvitationResponse;
 import org.briarproject.briar.api.forum.ForumManager;
 import org.briarproject.briar.api.forum.ForumSharingManager;
 import org.briarproject.briar.api.messaging.ConversationManager;
@@ -97,7 +99,7 @@ public class SharingModule {
 	}
 
 	@Provides
-	InvitationFactory<Blog> provideBlogInvitationFactory(
+	InvitationFactory<Blog, BlogInvitationResponse> provideBlogInvitationFactory(
 			BlogInvitationFactoryImpl blogInvitationFactory) {
 		return blogInvitationFactory;
 	}
@@ -149,7 +151,7 @@ public class SharingModule {
 	}
 
 	@Provides
-	InvitationFactory<Forum> provideForumInvitationFactory(
+	InvitationFactory<Forum, ForumInvitationResponse> provideForumInvitationFactory(
 			ForumInvitationFactoryImpl forumInvitationFactory) {
 		return forumInvitationFactory;
 	}
diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
index 7c7a681804af042470aa4285f7d3511cc62102c5..643fe482c3b939047029731aecce9773324221c7 100644
--- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
@@ -1,6 +1,5 @@
 package org.briarproject.briar.blog;
 
-import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.test.TestDatabaseModule;
 import org.briarproject.briar.api.blog.Blog;
@@ -170,7 +169,7 @@ public class BlogManagerIntegrationTest
 		assertFalse(blogManager1.canBeRemoved(blog0.getId()));
 
 		// the following two calls should throw a DbException now
-		thrown.expect(DbException.class);
+		thrown.expect(IllegalArgumentException.class);
 
 		blogManager0.removeBlog(blog1);
 		blogManager1.removeBlog(blog0);
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
index 32b3f9d5a5d8c206bc87f9cc8b3d4c3639b17b8a..31608a026130ef9d8514cf02b2b6c7fa42bed14e 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
@@ -17,7 +17,6 @@ import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent;
-import org.briarproject.briar.api.client.ProtocolStateException;
 import org.briarproject.briar.api.sharing.InvitationMessage;
 import org.briarproject.briar.test.BriarIntegrationTest;
 import org.briarproject.briar.test.BriarIntegrationTestComponent;
@@ -94,7 +93,7 @@ public class BlogSharingIntegrationTest
 		injectEagerSingletons(c2);
 	}
 
-	@Test(expected = ProtocolStateException.class)
+	@Test(expected = IllegalArgumentException.class)
 	public void testPersonalBlogCannotBeSharedWithOwner() throws Exception {
 		listenToEvents(true);
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
index 3452025b9d3acacb709622b61b3971b2f3e82760..537e2b64b8b45a5480767d124d15ea6510c2083b 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.test.TestDatabaseModule;
-import org.briarproject.briar.api.client.ProtocolStateException;
 import org.briarproject.briar.api.forum.Forum;
 import org.briarproject.briar.api.forum.ForumInvitationRequest;
 import org.briarproject.briar.api.forum.ForumInvitationResponse;
@@ -373,7 +372,7 @@ public class ForumSharingIntegrationTest
 		assertEquals(1, forumManager1.getForums().size());
 	}
 
-	@Test(expected = ProtocolStateException.class)
+	@Test(expected = IllegalArgumentException.class)
 	public void testSharingSameForumWithEachOther() throws Exception {
 		// initialize and let invitee accept all requests
 		listenToEvents(true);