diff --git a/api/net/sf/briar/api/serial/FormatRuntimeException.java b/api/net/sf/briar/api/serial/FormatRuntimeException.java
new file mode 100644
index 0000000000000000000000000000000000000000..5b855bc03e986b4b9a524ce3cbe9e5533b50fa64
--- /dev/null
+++ b/api/net/sf/briar/api/serial/FormatRuntimeException.java
@@ -0,0 +1,6 @@
+package net.sf.briar.api.serial;
+
+public class FormatRuntimeException extends RuntimeException {
+
+	private static final long serialVersionUID = -6548900875808933998L;
+}
diff --git a/components/net/sf/briar/serial/ReaderFactoryImpl.java b/components/net/sf/briar/serial/ReaderFactoryImpl.java
index 2f52c03e2e1161b96a8746141b83317b56e86c11..dd2a1a4da620ea50e2d6319c66e174a434a51ade 100644
--- a/components/net/sf/briar/serial/ReaderFactoryImpl.java
+++ b/components/net/sf/briar/serial/ReaderFactoryImpl.java
@@ -5,7 +5,7 @@ import java.io.InputStream;
 import net.sf.briar.api.serial.Reader;
 import net.sf.briar.api.serial.ReaderFactory;
 
-public class ReaderFactoryImpl implements ReaderFactory {
+class ReaderFactoryImpl implements ReaderFactory {
 
 	public Reader createReader(InputStream in) {
 		return new ReaderImpl(in);
diff --git a/components/net/sf/briar/serial/ReaderImpl.java b/components/net/sf/briar/serial/ReaderImpl.java
index cffaf557a414d9a20fd3c2897c5bb58a3042b79e..fbbdba4bd016e22773bc0c6b044ba741bb39cce8 100644
--- a/components/net/sf/briar/serial/ReaderImpl.java
+++ b/components/net/sf/briar/serial/ReaderImpl.java
@@ -11,10 +11,11 @@ import java.util.Map.Entry;
 import java.util.NoSuchElementException;
 
 import net.sf.briar.api.serial.FormatException;
+import net.sf.briar.api.serial.FormatRuntimeException;
 import net.sf.briar.api.serial.Reader;
 import net.sf.briar.api.serial.Tag;
 
-public class ReaderImpl implements Reader {
+class ReaderImpl implements Reader {
 
 	private static final int TOO_LARGE_TO_KEEP = 4096;
 
@@ -23,7 +24,7 @@ public class ReaderImpl implements Reader {
 	private byte next;
 	private byte[] stringBuffer = null;
 
-	public ReaderImpl(InputStream in) {
+	ReaderImpl(InputStream in) {
 		this.in = in;
 	}
 
@@ -398,6 +399,8 @@ public class ReaderImpl implements Reader {
 			remaining--;
 			try {
 				return readObject(e);
+			} catch(FormatException ex) {
+				throw new FormatRuntimeException();
 			} catch(IOException ex) {
 				throw new RuntimeException(ex);
 			}
@@ -434,6 +437,8 @@ public class ReaderImpl implements Reader {
 					hasNext = false;
 				}
 				return next;
+			} catch(FormatException ex) {
+				throw new FormatRuntimeException();
 			} catch(IOException ex) {
 				throw new RuntimeException(ex);
 			}
@@ -467,6 +472,8 @@ public class ReaderImpl implements Reader {
 			remaining--;
 			try {
 				return new MapEntry<K, V>(readObject(k), readObject(v));
+			} catch(FormatException ex) {
+				throw new FormatRuntimeException();
 			} catch(IOException ex) {
 				throw new RuntimeException(ex);
 			}
@@ -507,6 +514,8 @@ public class ReaderImpl implements Reader {
 					hasNext = false;
 				}
 				return next;
+			} catch(FormatException ex) {
+				throw new FormatRuntimeException();
 			} catch(IOException ex) {
 				throw new RuntimeException(ex);
 			}
diff --git a/components/net/sf/briar/serial/WriterFactoryImpl.java b/components/net/sf/briar/serial/WriterFactoryImpl.java
index de01ca18f4e24c05be122356b7362b25304fda18..63563fdf34666b8811806640bb1eaec0930e678e 100644
--- a/components/net/sf/briar/serial/WriterFactoryImpl.java
+++ b/components/net/sf/briar/serial/WriterFactoryImpl.java
@@ -5,7 +5,7 @@ import java.io.OutputStream;
 import net.sf.briar.api.serial.Writer;
 import net.sf.briar.api.serial.WriterFactory;
 
-public class WriterFactoryImpl implements WriterFactory {
+class WriterFactoryImpl implements WriterFactory {
 
 	public Writer createWriter(OutputStream out) {
 		return new WriterImpl(out);
diff --git a/components/net/sf/briar/serial/WriterImpl.java b/components/net/sf/briar/serial/WriterImpl.java
index cb692846b0e2801eb63cdd99e89316344383728e..aca49adc175b18fe8093ec434044e55bbec24833 100644
--- a/components/net/sf/briar/serial/WriterImpl.java
+++ b/components/net/sf/briar/serial/WriterImpl.java
@@ -10,11 +10,11 @@ import net.sf.briar.api.serial.Raw;
 import net.sf.briar.api.serial.Tag;
 import net.sf.briar.api.serial.Writer;
 
-public class WriterImpl implements Writer {
+class WriterImpl implements Writer {
 
 	private final OutputStream out;
 
-	public WriterImpl(OutputStream out) {
+	WriterImpl(OutputStream out) {
 		this.out = out;
 	}