diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java
index cc87e1ab08eac9968cb83dd404f1e94d0b1f925f..77d16fbc6dc33a6ddfc66d6949f66bd0e58b716b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java
@@ -112,7 +112,6 @@ public class MailboxManagerImpl implements MailboxManager {
 	public void handleOwnerContactWithoutMailbox(MailboxInfo mailboxInfo) {
 		if (null == privateMailboxSession)
 			return;
-
 		ioExecutor.execute(
 				() -> privateMailboxSession.handleContactWithoutPrivateMailbox(mailboxInfo));
 	}
@@ -254,7 +253,6 @@ public class MailboxManagerImpl implements MailboxManager {
 		}
 
 		private void handleIncomingStream() throws IOException {
-
 			InputStream mailboxInputStream =
 					streamReaderFactory.createStreamReader(
 							reader.getInputStream(), incomingCtx);
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSyncRequestWriter.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSyncRequestWriter.java
index 647b03c683af14748c4bc86d9f535586f3e36600..5e8c57fda57c8342d7eea8f8992429d99ae83f21 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSyncRequestWriter.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSyncRequestWriter.java
@@ -29,9 +29,7 @@ class MailboxSyncRequestWriter extends OutputStream implements StreamWriter {
 		if (endOfStream)
 			throw new IOException("End of stream was already written");
 
-		endOfStream = true;
-
-		MailboxRequestSync req = new MailboxRequestSync(new byte[] {}, true);
+		MailboxRequestSync req = new MailboxRequestSync();
 		try {
 			mailboxProtocol.writeRequest(req);
 		} catch (InterruptedException e) {
@@ -59,7 +57,7 @@ class MailboxSyncRequestWriter extends OutputStream implements StreamWriter {
 		byte[] syncStream = bufferOS.toByteArray();
 		bufferOS.reset();
 
-		MailboxRequestSync req = new MailboxRequestSync(syncStream, false);
+		MailboxRequestSync req = new MailboxRequestSync(syncStream);
 		try {
 			mailboxProtocol.writeRequest(req);
 		} catch (InterruptedException e) {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxMessage.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxMessage.java
index 96396e17537333b11c45724760484863580fd87e..21de3d151c52c90b2f02c0eaf311e3c389903164 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxMessage.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxMessage.java
@@ -15,11 +15,11 @@ import java.net.ProtocolException;
  * <p>
  * Error Responses:
  * [TYPE, MESSAGE_ID, [false, ERROR_MSG]]
- * [long, long, [boolean, string]]
+ * [long, long, [string]]
  * <p>
  * Successful Responses (BODY depending on TYPE):
  * [TYPE, MESSAGE_ID, [true, [BODY]]]
- * [long, long, [boolean, [BdfList]]]
+ * [long, long, [null]]
  */
 public interface MailboxMessage {
 	static MailboxMessage parse(BdfList msg) throws ProtocolException {
@@ -55,11 +55,6 @@ public interface MailboxMessage {
 	 */
 	long getId();
 
-	/**
-	 * @return true if the message expects a response
-	 */
-	boolean hasResponse();
-
 	/**
 	 * @return Message TYPE
 	 */
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxProtocol.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxProtocol.java
index 940b6db9bd596bbf5070266451ea627feea4adc5..089526ef206a9cca642300febc02a42cdb579d41 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxProtocol.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxProtocol.java
@@ -65,7 +65,7 @@ public class MailboxProtocol implements Runnable {
 		}
 	}
 
-	public void writeRequest(MailboxMessage req)
+	public void writeRequest(MailboxRequest req)
 			throws InterruptedException, IOException {
 		if (req.hasResponse())
 			pendingRequests.put(req.getId(), (MailboxRequest) req);
@@ -259,7 +259,7 @@ public class MailboxProtocol implements Runnable {
 
 		// Signal the error to anyone waiting for a response
 		for (Entry<Long, MailboxRequest> entry : pendingRequests.entrySet()) {
-			MailboxResponse r = new MailboxResponse(entry.getKey(), false,
+			MailboxResponse r = new MailboxResponse(entry.getKey(),
 					"Connection closed");
 			entry.getValue().signalError(r.getErrorMessage());
 		}
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequest.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequest.java
index c0b02470758712fa9df44daf644017a3d9c00865..928bd379b46e93acee98c3d2dc2b30fd48a77ea2 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequest.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequest.java
@@ -61,6 +61,11 @@ public abstract class MailboxRequest implements MailboxMessage {
 		}
 	}
 
+	/**
+	 * @return true if the message expects a response
+	 */
+	abstract boolean hasResponse();
+
 	/**
 	 * Blocks until a response for this request has been received
 	 *
@@ -89,11 +94,11 @@ public abstract class MailboxRequest implements MailboxMessage {
 	}
 
 	public MailboxResponse createSuccessResponse() {
-		return new MailboxResponse(msgId, true, null);
+		return new MailboxResponse(msgId, null);
 	}
 
 	public MailboxResponse createErrorResponse(String error) {
-		return new MailboxResponse(msgId, false, error);
+		return new MailboxResponse(msgId, error);
 	}
 
 	protected abstract BdfList getRequestBody();
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestEnd.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestEnd.java
index 3add906944de60b6b3fc2fff4f04358a9b330fb2..2fc1a53da8ba39a2602aff5bd17b837035f66206 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestEnd.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestEnd.java
@@ -27,6 +27,7 @@ public class MailboxRequestEnd extends MailboxRequest {
 
 	@Override
 	public void parseBody(BdfList list) throws FormatException {
-		return;
+		if(list.size() != 0)
+			throw new FormatException();
 	}
 }
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestStore.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestStore.java
index 362119f3d3eb912c3614e69d960e222b3da2dd0a..6c7113ec39092c24534671dadb5873420f0988ab 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestStore.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestStore.java
@@ -43,6 +43,9 @@ public class MailboxRequestStore extends MailboxRequest {
 
 	@Override
 	public void parseBody(BdfList msg) throws FormatException {
+		if(msg.size() > 2)
+			throw new FormatException();
+
 		Long cId = msg.getOptionalLong(0);
 		if (cId != null) {
 			if (cId > Integer.MAX_VALUE || cId < Integer.MIN_VALUE)
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestSync.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestSync.java
index 9d5fa51c5c2265fee545817990910108e6b89453..28894111313e35324a268d5199442bde3bf4adb6 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestSync.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestSync.java
@@ -3,14 +3,19 @@ package org.briarproject.bramble.mailbox.protocol;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfList;
 
+import javax.annotation.Nullable;
+
 public class MailboxRequestSync extends MailboxRequest {
-	private byte[] encryptedStream;
-	private boolean endOfStream;
+	@Nullable
+	private byte[] syncStream;
 
-	public MailboxRequestSync(byte[] encryptedStream, boolean endOfStream) {
+	public MailboxRequestSync(byte[] syncStream) {
+		super(TYPE.SYNC);
+		this.syncStream = syncStream;
+	}
+	public MailboxRequestSync() {
 		super(TYPE.SYNC);
-		this.encryptedStream = encryptedStream;
-		this.endOfStream = endOfStream;
+		this.syncStream = null;
 	}
 
 	public MailboxRequestSync(BdfList lst) throws FormatException {
@@ -19,7 +24,7 @@ public class MailboxRequestSync extends MailboxRequest {
 
 	@Override
 	protected BdfList getRequestBody() {
-		return BdfList.of(encryptedStream, endOfStream);
+		return BdfList.of(syncStream);
 	}
 
 	@Override
@@ -29,15 +34,16 @@ public class MailboxRequestSync extends MailboxRequest {
 
 	@Override
 	public void parseBody(BdfList list) throws FormatException {
-		this.encryptedStream = list.getRaw(0);
-		this.endOfStream = list.getBoolean(1);
+		if(list.size() != 1)
+			throw new FormatException();
+		this.syncStream = list.getOptionalRaw(0);
 	}
 
 	public byte[] getSyncStream() {
-		return encryptedStream;
+		return syncStream;
 	}
 
 	public boolean isEndOfStream() {
-		return endOfStream;
+		return syncStream == null;
 	}
 }
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestTake.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestTake.java
index 9919f0c85571e214396483d1bc44a53d8daecb88..a0409538d13a9b5f9f8c7a37b8f78706850435c7 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestTake.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxRequestTake.java
@@ -28,6 +28,8 @@ public class MailboxRequestTake extends MailboxRequest {
 
 	@Override
 	public void parseBody(BdfList msg) throws FormatException {
+		if(msg.size() != 1)
+			throw new FormatException();
 		this.encryptedSyncStream = msg.getRaw(0);
 	}
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxResponse.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxResponse.java
index 0febf4634f14ae0fdcf8868713fd84d00ebcd7bd..873c16d0ff15a21146ab4cd315a47d123046b7af 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxResponse.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/protocol/MailboxResponse.java
@@ -8,16 +8,12 @@ import javax.annotation.Nullable;
 import static org.briarproject.bramble.mailbox.protocol.MailboxMessage.TYPE.RESPONSE;
 
 public class MailboxResponse implements MailboxMessage {
-
-
-	private boolean success;
+	@Nullable
 	private String errorMessage;
 	private long msgId;
 
-	public MailboxResponse(long msgId, boolean success,
-			@Nullable String errorMessage) {
+	public MailboxResponse(long msgId, @Nullable String errorMessage) {
 		this.msgId = msgId;
-		this.success = success;
 		this.errorMessage = errorMessage;
 	}
 
@@ -31,11 +27,6 @@ public class MailboxResponse implements MailboxMessage {
 		return msgId;
 	}
 
-	@Override
-	public boolean hasResponse() {
-		return false;
-	}
-
 	@Override
 	public TYPE getType() {
 		return RESPONSE;
@@ -43,21 +34,15 @@ public class MailboxResponse implements MailboxMessage {
 
 	@Override
 	public BdfList toBdfList() {
-		BdfList body;
-		if (!success)
-			body = BdfList.of(success, errorMessage);
-		else
-			body = BdfList.of(success);
-
-		return BdfList.of(RESPONSE.getValue(), msgId, body);
+		return BdfList.of(RESPONSE.getValue(), msgId, BdfList.of(errorMessage));
 	}
 
 
 	@Override
 	public void parseBody(BdfList list) throws FormatException {
-		success = list.getBoolean(0);
-		if (!success)
-			errorMessage = list.getString(1);
+		if(list.size() != 1)
+			throw new FormatException();
+		errorMessage = list.getOptionalString(0);
 	}
 
 	public String getErrorMessage() {
@@ -65,6 +50,6 @@ public class MailboxResponse implements MailboxMessage {
 	}
 
 	public boolean isSuccess() {
-		return success;
+		return errorMessage == null;
 	}
 }
\ No newline at end of file
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/protocol/MailboxProtocolIntegrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/protocol/MailboxProtocolIntegrationTest.java
index 66e7d4b9c727ad22ef55c3e71e27906c6c7e5ef1..f9de586ba03f86fc103f881fd00bab34a70b7c0e 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/protocol/MailboxProtocolIntegrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/protocol/MailboxProtocolIntegrationTest.java
@@ -297,7 +297,7 @@ public class MailboxProtocolIntegrationTest extends BrambleTestCase {
 	@Test
 	public void syncRequest() throws IOException, InterruptedException {
 		MailboxRequestSync req =
-				new MailboxRequestSync("Test".getBytes(), false);
+				new MailboxRequestSync("Test".getBytes());
 
 		mailboxProtocol.registerRequestHandler(new MailboxRequestHandler() {
 			@Override