diff --git a/briar-api/src/net/sf/briar/api/AuthorConstants.java b/briar-api/src/net/sf/briar/api/AuthorConstants.java
new file mode 100644
index 0000000000000000000000000000000000000000..f9a358d8a4ab2ea7a6c36c42dc030b4d81871323
--- /dev/null
+++ b/briar-api/src/net/sf/briar/api/AuthorConstants.java
@@ -0,0 +1,13 @@
+package net.sf.briar.api;
+
+public interface AuthorConstants {
+
+	/** The maximum length of an author's name in UTF-8 bytes. */
+	int MAX_AUTHOR_NAME_LENGTH = 50;
+
+	/** The maximum length of a public key in bytes. */
+	int MAX_PUBLIC_KEY_LENGTH = 97;
+
+	/** The maximum length of a signature in bytes. */
+	int MAX_SIGNATURE_LENGTH = 104;
+}
diff --git a/briar-api/src/net/sf/briar/api/TransportPropertyConstants.java b/briar-api/src/net/sf/briar/api/TransportPropertyConstants.java
new file mode 100644
index 0000000000000000000000000000000000000000..4967fe210717e9c3731e1d9103079af467e57630
--- /dev/null
+++ b/briar-api/src/net/sf/briar/api/TransportPropertyConstants.java
@@ -0,0 +1,10 @@
+package net.sf.briar.api;
+
+public interface TransportPropertyConstants {
+
+	/** The maximum number of properties per transport. */
+	int MAX_PROPERTIES_PER_TRANSPORT = 100;
+
+	/** The maximum length of a property's key or value in UTF-8 bytes. */
+	int MAX_PROPERTY_LENGTH = 100;
+}
diff --git a/briar-api/src/net/sf/briar/api/plugins/InvitationConstants.java b/briar-api/src/net/sf/briar/api/invitation/InvitationConstants.java
similarity index 88%
rename from briar-api/src/net/sf/briar/api/plugins/InvitationConstants.java
rename to briar-api/src/net/sf/briar/api/invitation/InvitationConstants.java
index 57c5a6beb6405ca3430fe09ea834fa6d6ac1e1ca..e5ecebf134c06bb30c7e087635a948b4914f1905 100644
--- a/briar-api/src/net/sf/briar/api/plugins/InvitationConstants.java
+++ b/briar-api/src/net/sf/briar/api/invitation/InvitationConstants.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.plugins;
+package net.sf.briar.api.invitation;
 
 public interface InvitationConstants {
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java b/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java
index 5373427cc004f02f8ff4416a0ca0c48b65882245..f6cd09977e74a48255d05e986c43be7738d58adb 100644
--- a/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java
+++ b/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java
@@ -14,21 +14,9 @@ public interface MessagingConstants {
 	/** The maximum number of groups a user may subscribe to. */
 	int MAX_SUBSCRIPTIONS = 3000;
 
-	/** The maximum number of properties per transport. */
-	int MAX_PROPERTIES_PER_TRANSPORT = 100;
-
-	/** The maximum length of a property's key or value in UTF-8 bytes. */
-	int MAX_PROPERTY_LENGTH = 100;
-
 	/** The maximum length of a group's name in UTF-8 bytes. */
 	int MAX_GROUP_NAME_LENGTH = 50;
 
-	/** The maximum length of a public key in bytes. */
-	int MAX_PUBLIC_KEY_LENGTH = 97;
-
-	/** The maximum length of an author's name in UTF-8 bytes. */
-	int MAX_AUTHOR_NAME_LENGTH = 50;
-
 	/**
 	 * The maximum length of a message body in bytes. To allow for future
 	 * changes in the protocol, this is smaller than the maximum packet length
@@ -42,9 +30,6 @@ public interface MessagingConstants {
 	/** The maximum length of a message's subject line in UTF-8 bytes. */
 	int MAX_SUBJECT_LENGTH = 100;
 
-	/** The maximum length of a signature in bytes. */
-	int MAX_SIGNATURE_LENGTH = 120;
-
 	/** The length of a message's random salt in bytes. */
 	int SALT_LENGTH = 8;
 
diff --git a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
index cbe3a978dc14d1901cd90d195d21921314c88f75..e8ae752a46e62e7276436265953aad7f788db038 100644
--- a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
+++ b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
@@ -2,7 +2,7 @@ package net.sf.briar.crypto;
 
 import static javax.crypto.Cipher.DECRYPT_MODE;
 import static javax.crypto.Cipher.ENCRYPT_MODE;
-import static net.sf.briar.api.plugins.InvitationConstants.CODE_BITS;
+import static net.sf.briar.api.invitation.InvitationConstants.CODE_BITS;
 import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
 import static net.sf.briar.util.ByteUtils.MAX_32_BIT_UNSIGNED;
 
diff --git a/briar-core/src/net/sf/briar/invitation/AliceConnector.java b/briar-core/src/net/sf/briar/invitation/AliceConnector.java
index fc3ae0fdf25f14c344f32c5825632295571f924a..5e72fc30e291518365228744154fde7177d84c4a 100644
--- a/briar-core/src/net/sf/briar/invitation/AliceConnector.java
+++ b/briar-core/src/net/sf/briar/invitation/AliceConnector.java
@@ -2,7 +2,7 @@ package net.sf.briar.invitation;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-core/src/net/sf/briar/invitation/BobConnector.java b/briar-core/src/net/sf/briar/invitation/BobConnector.java
index da574f2badb293ec39855bcbcc24e998915d6222..593c1017f4c7a99d2dd0e0836dda7072ae815e95 100644
--- a/briar-core/src/net/sf/briar/invitation/BobConnector.java
+++ b/briar-core/src/net/sf/briar/invitation/BobConnector.java
@@ -2,7 +2,7 @@ package net.sf.briar.invitation;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-core/src/net/sf/briar/invitation/Connector.java b/briar-core/src/net/sf/briar/invitation/Connector.java
index 4dcf3c3d0c21ce1f862baa32688143faa193d776..c9592538ab8f93dbbd59a8bd38a64bde0be68816 100644
--- a/briar-core/src/net/sf/briar/invitation/Connector.java
+++ b/briar-core/src/net/sf/briar/invitation/Connector.java
@@ -2,12 +2,13 @@ package net.sf.briar.invitation;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_AUTHOR_NAME_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SIGNATURE_LENGTH;
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
-import static net.sf.briar.api.plugins.InvitationConstants.HASH_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.HASH_LENGTH;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
@@ -259,6 +260,8 @@ abstract class Connector extends Thread {
 			r.setMaxStringLength(MAX_PROPERTY_LENGTH);
 			Map<String, String> p = r.readMap(String.class, String.class);
 			r.resetMaxStringLength();
+			if(p.size() > MAX_PROPERTIES_PER_TRANSPORT)
+				throw new FormatException();
 			remoteProps.put(id, new TransportProperties(p));
 		}
 		r.readListEnd();
diff --git a/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java b/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java
index 19033ca576a83f6214936fbdee3e8f0e015311cd..cc0602789d4cba4e5976f69fddf935a03e074de4 100644
--- a/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java
+++ b/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java
@@ -2,7 +2,7 @@ package net.sf.briar.invitation;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.plugins.InvitationConstants.CONFIRMATION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONFIRMATION_TIMEOUT;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-core/src/net/sf/briar/messaging/AuthorReader.java b/briar-core/src/net/sf/briar/messaging/AuthorReader.java
index 6a04f0d5e18ab318e185edef403eba0d8da4ca28..a2123b43787a106ca04022f2e8a2399d6704bf1b 100644
--- a/briar-core/src/net/sf/briar/messaging/AuthorReader.java
+++ b/briar-core/src/net/sf/briar/messaging/AuthorReader.java
@@ -1,7 +1,7 @@
 package net.sf.briar.messaging;
 
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_AUTHOR_NAME_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PUBLIC_KEY_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static net.sf.briar.api.messaging.Types.AUTHOR;
 
 import java.io.IOException;
diff --git a/briar-core/src/net/sf/briar/messaging/GroupReader.java b/briar-core/src/net/sf/briar/messaging/GroupReader.java
index c594a7f6ff7a5ecf636bd84055fd6f35529fe06a..ac3b20583d0f8afb6f2dd49d042dce6b0a638e00 100644
--- a/briar-core/src/net/sf/briar/messaging/GroupReader.java
+++ b/briar-core/src/net/sf/briar/messaging/GroupReader.java
@@ -1,7 +1,7 @@
 package net.sf.briar.messaging;
 
+import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PUBLIC_KEY_LENGTH;
 import static net.sf.briar.api.messaging.Types.GROUP;
 
 import java.io.IOException;
diff --git a/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
index 5eb28cc36462d5595ea9bbd28883b1bcef94d548..a04838b789014e0b8ce95ced7b497ca97af97f1d 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
@@ -1,9 +1,9 @@
 package net.sf.briar.messaging;
 
+import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_SUBJECT_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.SALT_LENGTH;
 import static net.sf.briar.api.messaging.Types.AUTHOR;
diff --git a/briar-core/src/net/sf/briar/messaging/MessageReader.java b/briar-core/src/net/sf/briar/messaging/MessageReader.java
index 5c39e0eede79cbdfcf25887044a3aec177b132d8..2a5397cd6798eb702afdc0a54fd43016e82b8c0c 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageReader.java
+++ b/briar-core/src/net/sf/briar/messaging/MessageReader.java
@@ -1,9 +1,9 @@
 package net.sf.briar.messaging;
 
+import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_SUBJECT_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.SALT_LENGTH;
 import static net.sf.briar.api.messaging.Types.MESSAGE;
diff --git a/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java b/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java
index f5eaa98e48be9a3d017fc7cdd2f6f44fbed3b7f6..682f1824d5874c2e33f1228dfe1248c07b04f952 100644
--- a/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java
@@ -1,8 +1,8 @@
 package net.sf.briar.messaging;
 
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTIES_PER_TRANSPORT;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTY_LENGTH;
 import static net.sf.briar.api.messaging.Types.ACK;
 import static net.sf.briar.api.messaging.Types.MESSAGE;
 import static net.sf.briar.api.messaging.Types.OFFER;
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
index 18000e59c12152ed9c015367cbe4c80344eb522f..9e396f1103ff827f78dd30e19874adcec91f3e67 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
@@ -24,9 +24,7 @@ import java.util.logging.Logger;
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.FormatException;
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.db.DbException;
 import net.sf.briar.api.db.event.ContactRemovedEvent;
 import net.sf.briar.api.db.event.DatabaseEvent;
@@ -97,8 +95,7 @@ abstract class DuplexConnection implements DatabaseListener {
 
 	private volatile PacketWriter writer = null;
 
-	DuplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@CryptoExecutor Executor cryptoExecutor,
+	DuplexConnection(Executor dbExecutor, Executor cryptoExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
index 61fe58c97a7ae61d036bc4ddbe853afaeda39cf3..1ec9ad384fa8665bf9ca2bc6f259b44923ceec5f 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
@@ -3,9 +3,7 @@ package net.sf.briar.messaging.duplex;
 import java.io.IOException;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.messaging.MessageVerifier;
 import net.sf.briar.api.messaging.PacketReaderFactory;
 import net.sf.briar.api.messaging.PacketWriterFactory;
@@ -19,8 +17,7 @@ import net.sf.briar.api.transport.ConnectionWriterFactory;
 
 class IncomingDuplexConnection extends DuplexConnection {
 
-	IncomingDuplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@CryptoExecutor Executor cryptoExecutor,
+	IncomingDuplexConnection(Executor dbExecutor, Executor cryptoExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
index e59adb983f933102ef8bafd437d005b01a5ce424..f1767773ceaaea6758acfe33c95e8dd71951344e 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
@@ -3,9 +3,7 @@ package net.sf.briar.messaging.duplex;
 import java.io.IOException;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.messaging.MessageVerifier;
 import net.sf.briar.api.messaging.PacketReaderFactory;
 import net.sf.briar.api.messaging.PacketWriterFactory;
@@ -19,8 +17,7 @@ import net.sf.briar.api.transport.ConnectionWriterFactory;
 
 class OutgoingDuplexConnection extends DuplexConnection {
 
-	OutgoingDuplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@CryptoExecutor Executor cryptoExecutor,
+	OutgoingDuplexConnection(Executor dbExecutor, Executor cryptoExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java b/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
index 2ec4cd2d3be0d9282d4d2f48b905af3b22614841..8f829064c9c82ace60a5909426d598b28633c3fa 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
+++ b/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
@@ -11,9 +11,7 @@ import java.util.logging.Logger;
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.FormatException;
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
 import net.sf.briar.api.db.DbException;
 import net.sf.briar.api.messaging.Ack;
 import net.sf.briar.api.messaging.Message;
@@ -50,8 +48,7 @@ class IncomingSimplexConnection {
 	private final ContactId contactId;
 	private final TransportId transportId;
 
-	IncomingSimplexConnection(@DatabaseExecutor Executor dbExecutor,
-			@CryptoExecutor Executor cryptoExecutor,
+	IncomingSimplexConnection(Executor dbExecutor, Executor cryptoExecutor,
 			MessageVerifier messageVerifier, DatabaseComponent db,
 			ConnectionRegistry connRegistry,
 			ConnectionReaderFactory connReaderFactory,
diff --git a/briar-core/src/net/sf/briar/plugins/PluginsModule.java b/briar-core/src/net/sf/briar/plugins/PluginsModule.java
index f6b18cf20b408a2a6f50f886016fc5dc0fa0d074..63c3ee0bb3db9946fa60e54ec6b421e4a36ca428 100644
--- a/briar-core/src/net/sf/briar/plugins/PluginsModule.java
+++ b/briar-core/src/net/sf/briar/plugins/PluginsModule.java
@@ -33,9 +33,9 @@ public class PluginsModule extends AbstractModule {
 	@Override
 	protected void configure() {
 		// The executor is unbounded, so tasks can be dependent or long-lived
+		ExecutorService e = Executors.newCachedThreadPool();
 		bind(ExecutorService.class).annotatedWith(
-				PluginExecutor.class).toInstance(
-						Executors.newCachedThreadPool());
+				PluginExecutor.class).toInstance(e);
 		bind(PluginManager.class).to(
 				PluginManagerImpl.class).in(Singleton.class);
 		bind(Poller.class).to(PollerImpl.class);
diff --git a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
index 61ae77f5196bb0dacd5307620e5a35dbb9f911ac..d9417b54ff06b857b4e44fce26ed615407cec375 100644
--- a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
@@ -30,7 +30,6 @@ import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
@@ -64,7 +63,7 @@ class BluetoothPlugin implements DuplexPlugin {
 	// Non-null if running has ever been true
 	private volatile LocalDevice localDevice = null;
 
-	BluetoothPlugin(@PluginExecutor Executor pluginExecutor, Clock clock,
+	BluetoothPlugin(Executor pluginExecutor, Clock clock,
 			SecureRandom secureRandom, DuplexPluginCallback callback,
 			long maxLatency, long pollingInterval) {
 		this.pluginExecutor = pluginExecutor;
diff --git a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
index 4a07399189a1962f785dbc3ef05b306e34cd71f1..48611f8fd10ccd07c42324add599dd0d25010cdd 100644
--- a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
@@ -6,7 +6,6 @@ import java.util.concurrent.Executor;
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.clock.SystemClock;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -20,7 +19,7 @@ public class BluetoothPluginFactory implements DuplexPluginFactory {
 	private final SecureRandom secureRandom;
 	private final Clock clock;
 
-	public BluetoothPluginFactory(@PluginExecutor Executor pluginExecutor,
+	public BluetoothPluginFactory(Executor pluginExecutor,
 			SecureRandom secureRandom) {
 		this.pluginExecutor = pluginExecutor;
 		this.secureRandom = secureRandom;
diff --git a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java
index 25e3b673d852062b342285010fded74dd4afe501..5af3422c981e01fa0ad8f1ec3e189b4f51aee25d 100644
--- a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java
@@ -28,7 +28,6 @@ import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.android.AndroidExecutor;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
@@ -70,10 +69,10 @@ class DroidtoothPlugin implements DuplexPlugin {
 	// Non-null if running has ever been true
 	private volatile BluetoothAdapter adapter = null;
 
-	DroidtoothPlugin(@PluginExecutor Executor pluginExecutor,
-			AndroidExecutor androidExecutor, Context appContext,
-			SecureRandom secureRandom, DuplexPluginCallback callback,
-			long maxLatency, long pollingInterval) {
+	DroidtoothPlugin(Executor pluginExecutor, AndroidExecutor androidExecutor,
+			Context appContext, SecureRandom secureRandom,
+			DuplexPluginCallback callback, long maxLatency,
+			long pollingInterval) {
 		this.pluginExecutor = pluginExecutor;
 		this.androidExecutor = androidExecutor;
 		this.appContext = appContext;
diff --git a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java
index 078b8b8cde8478bf6214964f7a876c1a0feea4e2..bb884bdd5a4665bf6e75bba408395ad5ab7e0dcc 100644
--- a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java
@@ -5,7 +5,6 @@ import java.util.concurrent.Executor;
 
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.android.AndroidExecutor;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -21,7 +20,7 @@ public class DroidtoothPluginFactory implements DuplexPluginFactory {
 	private final Context appContext;
 	private final SecureRandom secureRandom;
 
-	public DroidtoothPluginFactory(@PluginExecutor Executor pluginExecutor,
+	public DroidtoothPluginFactory(Executor pluginExecutor,
 			AndroidExecutor androidExecutor, Context appContext,
 			SecureRandom secureRandom) {
 		this.pluginExecutor = pluginExecutor;
diff --git a/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java b/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java
index d72d4ee8ba796e5759b8e2b61905f7f1db35ff66..8adc969260ac0c8c61307880b4dd4a0533a74d41 100644
--- a/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java
@@ -13,7 +13,6 @@ import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.simplex.SimplexPlugin;
 import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
 import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
@@ -37,7 +36,7 @@ public abstract class FilePlugin implements SimplexPlugin {
 	protected abstract void writerFinished(File f);
 	protected abstract void readerFinished(File f);
 
-	protected FilePlugin(@PluginExecutor Executor pluginExecutor,
+	protected FilePlugin(Executor pluginExecutor,
 			SimplexPluginCallback callback, long maxLatency) {
 		this.pluginExecutor = pluginExecutor;
 		this.callback = callback;
diff --git a/briar-core/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java b/briar-core/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
index df0df7e2c5bce4778298d963d8e00e436d27db65..b6d4b0f690bd92e7876f5812ef3855347d9f8948 100644
--- a/briar-core/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
+++ b/briar-core/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
@@ -8,8 +8,6 @@ import java.util.Collection;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.plugins.PluginExecutor;
-
 class PollingRemovableDriveMonitor implements RemovableDriveMonitor, Runnable {
 
 	private static final Logger LOG =
@@ -23,7 +21,7 @@ class PollingRemovableDriveMonitor implements RemovableDriveMonitor, Runnable {
 	private volatile boolean running = false;
 	private volatile Callback callback = null;
 
-	public PollingRemovableDriveMonitor(@PluginExecutor Executor pluginExecutor,
+	public PollingRemovableDriveMonitor(Executor pluginExecutor,
 			RemovableDriveFinder finder, long pollingInterval) {
 		this.pluginExecutor = pluginExecutor;
 		this.finder = finder;
diff --git a/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java b/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java
index 112377f23697c4153454a06382bb5163a822e336..f406993c1a18a7063c58ea936cdfc33bbbeceb75 100644
--- a/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java
@@ -13,7 +13,6 @@ import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
 import net.sf.briar.util.StringUtils;
 
@@ -32,7 +31,7 @@ implements RemovableDriveMonitor.Callback {
 	private final RemovableDriveFinder finder;
 	private final RemovableDriveMonitor monitor;
 
-	RemovableDrivePlugin(@PluginExecutor Executor pluginExecutor,
+	RemovableDrivePlugin(Executor pluginExecutor,
 			SimplexPluginCallback callback, RemovableDriveFinder finder,
 			RemovableDriveMonitor monitor, long maxLatency) {
 		super(pluginExecutor, callback, maxLatency);
diff --git a/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java b/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
index 41e909825db053f0da71a6bdf31ac8b85581822c..0823a13d310dc2147f2b49411c68a3da547008ee 100644
--- a/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
@@ -3,7 +3,6 @@ package net.sf.briar.plugins.file;
 import java.util.concurrent.Executor;
 
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.simplex.SimplexPlugin;
 import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
 import net.sf.briar.api.plugins.simplex.SimplexPluginFactory;
@@ -17,8 +16,7 @@ public class RemovableDrivePluginFactory implements SimplexPluginFactory {
 
 	private final Executor pluginExecutor;
 
-	public RemovableDrivePluginFactory(
-			@PluginExecutor Executor pluginExecutor) {
+	public RemovableDrivePluginFactory(Executor pluginExecutor) {
 		this.pluginExecutor = pluginExecutor;
 	}
 
diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java
index b0f245fb8005cbea01a6945948109da23563f607..5cf653eed4e9f8f780b7d2bc322c8ba31f56c4ac 100644
--- a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java
@@ -20,7 +20,6 @@ import net.sf.briar.api.ContactId;
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
@@ -47,10 +46,9 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback {
 	private volatile boolean running = false;
 	private volatile Modem modem = null;
 
-	ModemPlugin(@PluginExecutor Executor pluginExecutor,
-			ModemFactory modemFactory, SerialPortList serialPortList,
-			DuplexPluginCallback callback, long maxLatency,
-			long pollingInterval, boolean shuffle) {
+	ModemPlugin(Executor pluginExecutor, ModemFactory modemFactory,
+			SerialPortList serialPortList, DuplexPluginCallback callback,
+			long maxLatency, long pollingInterval, boolean shuffle) {
 		this.pluginExecutor = pluginExecutor;
 		this.modemFactory = modemFactory;
 		this.serialPortList = serialPortList;
diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java b/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
index d753fb88647f860532bd3962467680380b46bca6..c09e67d6f239012197527081ba800c85a7afb41d 100644
--- a/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
@@ -3,7 +3,6 @@ package net.sf.briar.plugins.modem;
 import java.util.concurrent.Executor;
 
 import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -19,7 +18,7 @@ public class ModemPluginFactory implements DuplexPluginFactory {
 	private final ModemFactory modemFactory;
 	private final SerialPortList serialPortList;
 
-	public ModemPluginFactory(@PluginExecutor Executor pluginExecutor,
+	public ModemPluginFactory(Executor pluginExecutor,
 			ReliabilityLayerFactory reliabilityFactory) {
 		this.pluginExecutor = pluginExecutor;
 		modemFactory = new ModemFactoryImpl(pluginExecutor, reliabilityFactory);
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
index d0df485d8e3de42dd27fcf0d4b024fe2393c8cb1..7662479d47330f6a3d6b574c1a7f7a8825851d42 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
@@ -25,7 +25,6 @@ import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
 import net.sf.briar.util.ByteUtils;
@@ -45,7 +44,7 @@ class LanTcpPlugin extends TcpPlugin {
 
 	private final Clock clock;
 
-	LanTcpPlugin(@PluginExecutor Executor pluginExecutor, Clock clock,
+	LanTcpPlugin(Executor pluginExecutor, Clock clock,
 			DuplexPluginCallback callback, long maxLatency,
 			long pollingInterval) {
 		super(pluginExecutor, callback, maxLatency, pollingInterval);
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java
index 89d836199f6b8464bd80976e611a0fa0ecd95d3d..73e0b216851e423f3de323955a736a54c94ed83b 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java
@@ -5,7 +5,6 @@ import java.util.concurrent.Executor;
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.clock.SystemClock;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -18,7 +17,7 @@ public class LanTcpPluginFactory implements DuplexPluginFactory {
 	private final Executor pluginExecutor;
 	private final Clock clock;
 
-	public LanTcpPluginFactory(@PluginExecutor Executor pluginExecutor) {
+	public LanTcpPluginFactory(Executor pluginExecutor) {
 		this.pluginExecutor = pluginExecutor;
 		clock = new SystemClock();
 	}
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java b/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
index bd129a6cc01c23480a16c8f5fdd8ad2479e545df..77e50e18f8986009cb826306983cbef3be44d9bb 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
@@ -18,7 +18,6 @@ import java.util.logging.Logger;
 
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
@@ -42,9 +41,8 @@ abstract class TcpPlugin implements DuplexPlugin {
 	 */
 	protected abstract List<SocketAddress> getLocalSocketAddresses();
 
-	protected TcpPlugin(@PluginExecutor Executor pluginExecutor,
-			DuplexPluginCallback callback, long maxLatency,
-			long pollingInterval) {
+	protected TcpPlugin(Executor pluginExecutor, DuplexPluginCallback callback,
+			long maxLatency, long pollingInterval) {
 		this.pluginExecutor = pluginExecutor;
 		this.callback = callback;
 		this.maxLatency = maxLatency;
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
index f133b5fa34e16679343c4fccb73c311aea3af8f4..e5396a4f1bef22a3f5c01de57d46f026cd5770b7 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
@@ -17,7 +17,6 @@ import java.util.logging.Logger;
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.TransportProperties;
 import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
 import net.sf.briar.util.StringUtils;
@@ -37,9 +36,8 @@ class WanTcpPlugin extends TcpPlugin {
 
 	private volatile MappingResult mappingResult;
 
-	WanTcpPlugin(@PluginExecutor Executor pluginExecutor,
-			DuplexPluginCallback callback, long maxLatency,
-			long pollingInterval, PortMapper portMapper) {
+	WanTcpPlugin(Executor pluginExecutor, DuplexPluginCallback callback,
+			long maxLatency, long pollingInterval, PortMapper portMapper) {
 		super(pluginExecutor, callback, maxLatency, pollingInterval);
 		this.portMapper = portMapper;
 	}
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java
index 33f3f5abf7e3c9bcea87081aba68eb3d00beb4c3..23bf0dc0ae854c9ddd5dcd8415406606e4a8ffc8 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java
@@ -4,7 +4,6 @@ import java.util.concurrent.Executor;
 
 import net.sf.briar.api.TransportId;
 import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.plugins.duplex.DuplexPlugin;
 import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
 import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
@@ -17,7 +16,7 @@ public class WanTcpPluginFactory implements DuplexPluginFactory {
 	private final Executor pluginExecutor;
 	private final ShutdownManager shutdownManager;
 
-	public WanTcpPluginFactory(@PluginExecutor Executor pluginExecutor,
+	public WanTcpPluginFactory(Executor pluginExecutor,
 			ShutdownManager shutdownManager) {
 		this.pluginExecutor = pluginExecutor;
 		this.shutdownManager = shutdownManager;
diff --git a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java b/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
index 784d14360bfb097498fb5fc1058e084568dbd707..c28d2c2b70f105383134f40cb8d5ff2749847d84 100644
--- a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
+++ b/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
@@ -13,9 +13,9 @@ public class ReliabilityModule extends AbstractModule {
 	@Override
 	protected void configure() {
 		// The executor is unbounded - tasks are expected to be long-lived
+		Executor e = Executors.newCachedThreadPool();
 		bind(Executor.class).annotatedWith(
-				ReliabilityExecutor.class).toInstance(
-						Executors.newCachedThreadPool());
+				ReliabilityExecutor.class).toInstance(e);
 		bind(ReliabilityLayerFactory.class).to(
 				ReliabilityLayerFactoryImpl.class);
 	}
diff --git a/briar-core/src/net/sf/briar/transport/TransportModule.java b/briar-core/src/net/sf/briar/transport/TransportModule.java
index 931a5554bbe37f5dadad4b2668ea67579046b03c..3bd2fa4adeeb42460dc423d57dd16868dd737e63 100644
--- a/briar-core/src/net/sf/briar/transport/TransportModule.java
+++ b/briar-core/src/net/sf/briar/transport/TransportModule.java
@@ -27,9 +27,9 @@ public class TransportModule extends AbstractModule {
 		bind(ConnectionWriterFactory.class).to(
 				ConnectionWriterFactoryImpl.class);
 		// The executor is unbounded, so tasks can be dependent or long-lived
+		Executor e = Executors.newCachedThreadPool();
 		bind(Executor.class).annotatedWith(
-				IncomingConnectionExecutor.class).toInstance(
-						Executors.newCachedThreadPool());
+				IncomingConnectionExecutor.class).toInstance(e);
 		bind(KeyManager.class).to(KeyManagerImpl.class).in(Singleton.class);
 	}
 }
diff --git a/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java b/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java
index 7d454d68d20e065f438544f5805a18f99f38b3e8..3f2545579192fb87c0b2775516685373c5e1e648 100644
--- a/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java
+++ b/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java
@@ -1,14 +1,14 @@
 package net.sf.briar.messaging;
 
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_AUTHOR_NAME_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
+import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTIES_PER_TRANSPORT;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PROPERTY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SIGNATURE_LENGTH;
 import static net.sf.briar.api.messaging.MessagingConstants.MAX_SUBSCRIPTIONS;
 
 import java.io.ByteArrayOutputStream;
@@ -88,7 +88,7 @@ public class ConstantsTest extends BriarTestCase {
 			byte[] publicKey = keyPair.getPublic().getEncoded();
 			assertTrue(publicKey.length <= MAX_PUBLIC_KEY_LENGTH);
 			// Sign some random data and check the length of the signature
-			byte[] toBeSigned = new byte[100];
+			byte[] toBeSigned = new byte[1000];
 			random.nextBytes(toBeSigned);
 			sig.initSign(keyPair.getPrivate());
 			sig.update(toBeSigned);
diff --git a/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java b/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java
index a9399ca429955e05cd12980c6babf99a7c28db25..d00d83906602ddfc73e680b5a0a81e294565efc5 100644
--- a/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java
+++ b/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java
@@ -1,6 +1,6 @@
 package net.sf.briar.plugins;
 
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.io.IOException;
 import java.util.Map;
diff --git a/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java b/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java
index d4f296c1ebcf3f49ad5873e147660b63afdb2e4a..f6bfc4b19c3f7878a772edda8839905cd2cc40ce 100644
--- a/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java
+++ b/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java
@@ -1,7 +1,7 @@
 package net.sf.briar.plugins;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
-import static net.sf.briar.api.plugins.InvitationConstants.CONNECTION_TIMEOUT;
+import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.util.Map;
 import java.util.concurrent.CountDownLatch;