diff --git a/briar-core/src/org/briarproject/data/ReaderImpl.java b/briar-core/src/org/briarproject/data/ReaderImpl.java
index aadeb448c4bc454c6d49bf0431a95b41b738a815..420ff25ed98572aa6f797ddee4a5e6b82cabdb45 100644
--- a/briar-core/src/org/briarproject/data/ReaderImpl.java
+++ b/briar-core/src/org/briarproject/data/ReaderImpl.java
@@ -1,6 +1,7 @@
 package org.briarproject.data;
 
 import static org.briarproject.data.Types.END;
+import static org.briarproject.data.Types.FALSE;
 import static org.briarproject.data.Types.FLOAT_64;
 import static org.briarproject.data.Types.INT_16;
 import static org.briarproject.data.Types.INT_32;
@@ -15,6 +16,7 @@ import static org.briarproject.data.Types.RAW_8;
 import static org.briarproject.data.Types.STRING_16;
 import static org.briarproject.data.Types.STRING_32;
 import static org.briarproject.data.Types.STRING_8;
+import static org.briarproject.data.Types.TRUE;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -133,24 +135,18 @@ class ReaderImpl implements Reader {
 	public boolean hasBoolean() throws IOException {
 		if(!hasLookahead) readLookahead();
 		if(eof) return false;
-		return next == Types.BOOLEAN;
+		return next == FALSE || next == TRUE;
 	}
 
 	public boolean readBoolean() throws IOException {
 		if(!hasBoolean()) throw new FormatException();
+		boolean bool = next == TRUE;
 		consumeLookahead();
-		return readBoolean(true);
-	}
-
-	private boolean readBoolean(boolean consume) throws IOException {
-		readIntoBuffer(1, consume);
-		if(buf[0] != 0 && buf[0] != 1) throw new FormatException();
-		return buf[0] == 1;
+		return bool;
 	}
 
 	public void skipBoolean() throws IOException {
 		if(!hasBoolean()) throw new FormatException();
-		skip(1);
 		hasLookahead = false;
 	}
 
diff --git a/briar-core/src/org/briarproject/data/Types.java b/briar-core/src/org/briarproject/data/Types.java
index ae64f4967388b5efde12d16d93d41edcc97b7087..5f5dbc5c9ffd09dfe403090fd50297a85a590d08 100644
--- a/briar-core/src/org/briarproject/data/Types.java
+++ b/briar-core/src/org/briarproject/data/Types.java
@@ -3,7 +3,8 @@ package org.briarproject.data;
 interface Types {
 
 	byte NULL = 0x00;
-	byte BOOLEAN = 0x11;
+	byte FALSE = 0x10;
+	byte TRUE = 0x11;
 	byte INT_8 = 0x21;
 	byte INT_16 = 0x22;
 	byte INT_32 = 0x24;
diff --git a/briar-core/src/org/briarproject/data/WriterImpl.java b/briar-core/src/org/briarproject/data/WriterImpl.java
index cd0d833f6df03af1ff0adf3055a7bf7a1879d504..e178bff9dd1d2a4157a4b4df9d58121f02b79efb 100644
--- a/briar-core/src/org/briarproject/data/WriterImpl.java
+++ b/briar-core/src/org/briarproject/data/WriterImpl.java
@@ -1,7 +1,7 @@
 package org.briarproject.data;
 
-import static org.briarproject.data.Types.BOOLEAN;
 import static org.briarproject.data.Types.END;
+import static org.briarproject.data.Types.FALSE;
 import static org.briarproject.data.Types.FLOAT_64;
 import static org.briarproject.data.Types.INT_16;
 import static org.briarproject.data.Types.INT_32;
@@ -16,6 +16,7 @@ import static org.briarproject.data.Types.RAW_8;
 import static org.briarproject.data.Types.STRING_16;
 import static org.briarproject.data.Types.STRING_32;
 import static org.briarproject.data.Types.STRING_8;
+import static org.briarproject.data.Types.TRUE;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -60,9 +61,8 @@ class WriterImpl implements Writer {
 	}
 
 	public void writeBoolean(boolean b) throws IOException {
-		write(BOOLEAN);
-		if(b) write((byte) 1);
-		else write((byte) 0);
+		if(b) write(TRUE);
+		else write(FALSE);
 	}
 
 	public void writeInteger(long i) throws IOException {
@@ -139,9 +139,9 @@ class WriterImpl implements Writer {
 	}
 
 	public void writeList(Collection<?> c) throws IOException {
-		write(Types.LIST);
+		write(LIST);
 		for(Object o : c) writeObject(o);
-		write(Types.END);
+		write(END);
 	}
 
 	private void writeObject(Object o) throws IOException {
diff --git a/briar-tests/src/org/briarproject/data/ReaderImplTest.java b/briar-tests/src/org/briarproject/data/ReaderImplTest.java
index 4fcd88949f390b6f44d38ce97524fc24f52b6825..1b14d3c17ebc2a5f674c68a3743666b832241526 100644
--- a/briar-tests/src/org/briarproject/data/ReaderImplTest.java
+++ b/briar-tests/src/org/briarproject/data/ReaderImplTest.java
@@ -37,7 +37,7 @@ public class ReaderImplTest extends BriarTestCase {
 
 	@Test
 	public void testReadBoolean() throws Exception {
-		setContents("11" + "00" + "11" + "01");
+		setContents("10" + "11");
 		assertFalse(r.readBoolean());
 		assertTrue(r.readBoolean());
 		assertTrue(r.eof());
@@ -45,7 +45,7 @@ public class ReaderImplTest extends BriarTestCase {
 
 	@Test
 	public void testSkipBoolean() throws Exception {
-		setContents("11" + "00" + "11" + "01");
+		setContents("10" + "11");
 		r.skipBoolean();
 		r.skipBoolean();
 		assertTrue(r.eof());
diff --git a/briar-tests/src/org/briarproject/data/WriterImplTest.java b/briar-tests/src/org/briarproject/data/WriterImplTest.java
index 3b3be5f491e07f9f6bb1b8955d305a80d23daee7..05cf0875a4b837c75ec5143f02b07cf474ef9ac4 100644
--- a/briar-tests/src/org/briarproject/data/WriterImplTest.java
+++ b/briar-tests/src/org/briarproject/data/WriterImplTest.java
@@ -36,8 +36,8 @@ public class WriterImplTest extends BriarTestCase {
 	public void testWriteBoolean() throws IOException {
 		w.writeBoolean(true);
 		w.writeBoolean(false);
-		// BOOLEAN tag, 1, BOOLEAN tag, 0
-		checkContents("11" + "01" + "11" + "00");
+		// TRUE tag, FALSE tag
+		checkContents("11" + "10");
 	}
 
 	@Test