diff --git a/briar-android/src/org/briarproject/android/NavDrawerActivity.java b/briar-android/src/org/briarproject/android/NavDrawerActivity.java
index cc2fbbcbfbfec5a7602137308b052a6966591843..c80310aa0cac726e87c3c3801544a8cd611018f3 100644
--- a/briar-android/src/org/briarproject/android/NavDrawerActivity.java
+++ b/briar-android/src/org/briarproject/android/NavDrawerActivity.java
@@ -29,6 +29,9 @@ import org.briarproject.android.forum.ForumListFragment;
 import org.briarproject.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.android.privategroup.list.GroupListFragment;
 import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.BluetoothConstants;
+import org.briarproject.api.plugins.LanTcpConstants;
+import org.briarproject.api.plugins.TorConstants;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -230,21 +233,21 @@ public class NavDrawerActivity extends BriarFragmentActivity implements
 		transports = new ArrayList<>(3);
 
 		Transport tor = new Transport();
-		tor.id = new TransportId("tor");
+		tor.id = TorConstants.ID;
 		tor.enabled = controller.isTransportRunning(tor.id);
 		tor.iconId = R.drawable.transport_tor;
 		tor.textId = R.string.transport_tor;
 		transports.add(tor);
 
 		Transport bt = new Transport();
-		bt.id = new TransportId("bt");
+		bt.id = BluetoothConstants.ID;
 		bt.enabled = controller.isTransportRunning(bt.id);
 		bt.iconId = R.drawable.transport_bt;
 		bt.textId = R.string.transport_bt;
 		transports.add(bt);
 
 		Transport lan = new Transport();
-		lan.id = new TransportId("lan");
+		lan.id = LanTcpConstants.ID;
 		lan.enabled = controller.isTransportRunning(lan.id);
 		lan.iconId = R.drawable.transport_lan;
 		lan.textId = R.string.transport_lan;
diff --git a/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
index f60e52bebb514e3ac016d077b7590215a1cf1356..7805acd868c020b2e0aca31e232246fd2ec67253 100644
--- a/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
@@ -65,26 +65,23 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.api.keyagreement.KeyAgreementConstants.TRANSPORT_ID_BLUETOOTH;
+import static org.briarproject.api.plugins.BluetoothConstants.ID;
+import static org.briarproject.api.plugins.BluetoothConstants.PROP_ADDRESS;
+import static org.briarproject.api.plugins.BluetoothConstants.PROP_UUID;
+import static org.briarproject.api.plugins.BluetoothConstants.UUID_BYTES;
 import static org.briarproject.util.PrivacyUtils.scrubMacAddress;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
 class DroidtoothPlugin implements DuplexPlugin {
 
-	// Share an ID with the J2SE Bluetooth plugin
-	static final TransportId ID = new TransportId("bt");
-
 	private static final Logger LOG =
 			Logger.getLogger(DroidtoothPlugin.class.getName());
-	private static final int UUID_BYTES = 16;
 	private static final String FOUND =
 			"android.bluetooth.device.action.FOUND";
 	private static final String DISCOVERY_FINISHED =
 			"android.bluetooth.adapter.action.DISCOVERY_FINISHED";
 
-	private static final String PROP_ADDRESS = "address";
-	private static final String PROP_UUID = "uuid";
-
 	private final Executor ioExecutor;
 	private final AndroidExecutor androidExecutor;
 	private final Context appContext;
@@ -315,6 +312,7 @@ class DroidtoothPlugin implements DuplexPlugin {
 		}
 	}
 
+	@Nullable
 	private BluetoothSocket connect(String address, String uuid) {
 		// Validate the address
 		if (!BluetoothAdapter.checkBluetoothAddress(address)) {
@@ -646,7 +644,7 @@ class DroidtoothPlugin implements DuplexPlugin {
 
 		private final BluetoothServerSocket ss;
 
-		BluetoothKeyAgreementListener(BdfList descriptor,
+		private BluetoothKeyAgreementListener(BdfList descriptor,
 				BluetoothServerSocket ss) {
 			super(descriptor);
 			this.ss = ss;
diff --git a/briar-api/src/org/briarproject/api/TransportId.java b/briar-api/src/org/briarproject/api/TransportId.java
index 94e21cfa5d07964877f693213659a33dfc929f1e..b0ad34b094df5fa81e6e9ba388b863f5542073ad 100644
--- a/briar-api/src/org/briarproject/api/TransportId.java
+++ b/briar-api/src/org/briarproject/api/TransportId.java
@@ -10,7 +10,7 @@ public class TransportId {
 	/**
 	 * The maximum length of transport identifier in UTF-8 bytes.
 	 */
-	public static int MAX_TRANSPORT_ID_LENGTH = 10;
+	public static int MAX_TRANSPORT_ID_LENGTH = 64;
 
 	private final String id;
 
diff --git a/briar-api/src/org/briarproject/api/plugins/BluetoothConstants.java b/briar-api/src/org/briarproject/api/plugins/BluetoothConstants.java
new file mode 100644
index 0000000000000000000000000000000000000000..3708df560a586a979f3b1858b1eb970ca383ba53
--- /dev/null
+++ b/briar-api/src/org/briarproject/api/plugins/BluetoothConstants.java
@@ -0,0 +1,14 @@
+package org.briarproject.api.plugins;
+
+import org.briarproject.api.TransportId;
+
+public interface BluetoothConstants {
+
+	TransportId ID = new TransportId("org.briarproject.bramble.bluetooth");
+
+	int UUID_BYTES = 16;
+
+	String PROP_ADDRESS = "address";
+	String PROP_UUID = "uuid";
+
+}
diff --git a/briar-api/src/org/briarproject/api/plugins/LanTcpConstants.java b/briar-api/src/org/briarproject/api/plugins/LanTcpConstants.java
new file mode 100644
index 0000000000000000000000000000000000000000..6ea2ceb514bd4689947e1de9be569d91afd8a95c
--- /dev/null
+++ b/briar-api/src/org/briarproject/api/plugins/LanTcpConstants.java
@@ -0,0 +1,9 @@
+package org.briarproject.api.plugins;
+
+import org.briarproject.api.TransportId;
+
+public interface LanTcpConstants {
+
+	TransportId ID = new TransportId("org.briarproject.bramble.lan");
+
+}
diff --git a/briar-api/src/org/briarproject/api/plugins/TorConstants.java b/briar-api/src/org/briarproject/api/plugins/TorConstants.java
index f90e047bb00c1374ea0884775a60a280e1116c99..27624c7a8d55e2ea391a16bb12e84d41e0a3c76a 100644
--- a/briar-api/src/org/briarproject/api/plugins/TorConstants.java
+++ b/briar-api/src/org/briarproject/api/plugins/TorConstants.java
@@ -4,7 +4,7 @@ import org.briarproject.api.TransportId;
 
 public interface TorConstants {
 
-	TransportId ID = new TransportId("tor");
+	TransportId ID = new TransportId("org.briarproject.bramble.tor");
 
 	int SOCKS_PORT   = 59050;
 	int CONTROL_PORT = 59051;
diff --git a/briar-api/src/org/briarproject/api/plugins/WanTcpConstants.java b/briar-api/src/org/briarproject/api/plugins/WanTcpConstants.java
new file mode 100644
index 0000000000000000000000000000000000000000..cf8f649486c702730291c1e887c9f03853437435
--- /dev/null
+++ b/briar-api/src/org/briarproject/api/plugins/WanTcpConstants.java
@@ -0,0 +1,9 @@
+package org.briarproject.api.plugins;
+
+import org.briarproject.api.TransportId;
+
+public interface WanTcpConstants {
+
+	TransportId ID = new TransportId("org.briarproject.bramble.wan");
+
+}
diff --git a/briar-core/src/org/briarproject/keyagreement/PayloadParserImpl.java b/briar-core/src/org/briarproject/keyagreement/PayloadParserImpl.java
index 1f9b656357ba0394c97ccf94d8ead30b95d19461..471e229fd71d109c1823b633b70a35048cc64523 100644
--- a/briar-core/src/org/briarproject/keyagreement/PayloadParserImpl.java
+++ b/briar-core/src/org/briarproject/keyagreement/PayloadParserImpl.java
@@ -9,6 +9,8 @@ import org.briarproject.api.keyagreement.Payload;
 import org.briarproject.api.keyagreement.PayloadParser;
 import org.briarproject.api.keyagreement.TransportDescriptor;
 import org.briarproject.api.nullsafety.NotNullByDefault;
+import org.briarproject.api.plugins.BluetoothConstants;
+import org.briarproject.api.plugins.TorConstants;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -55,10 +57,10 @@ class PayloadParserImpl implements PayloadParser {
 			BdfList descriptor = payload.getList(i);
 			long transportId = descriptor.getLong(0);
 			if (transportId == TRANSPORT_ID_BLUETOOTH) {
-				TransportId id = new TransportId("bt");
+				TransportId id = BluetoothConstants.ID;
 				recognised.add(new TransportDescriptor(id, descriptor));
 			} else if (transportId == TRANSPORT_ID_LAN) {
-				TransportId id = new TransportId("lan");
+				TransportId id = TorConstants.ID;
 				recognised.add(new TransportDescriptor(id, descriptor));
 			}
 		}
diff --git a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
index e3527f74dd52129501dbc42b183677c5b91a53d5..f60a0a743c8f922809bb6ffc7e4b31712eae5018 100644
--- a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
@@ -33,14 +33,13 @@ import java.util.logging.Logger;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.api.keyagreement.KeyAgreementConstants.TRANSPORT_ID_LAN;
+import static org.briarproject.api.plugins.LanTcpConstants.ID;
 import static org.briarproject.util.ByteUtils.MAX_16_BIT_UNSIGNED;
 import static org.briarproject.util.PrivacyUtils.scrubSocketAddress;
 
 @NotNullByDefault
 class LanTcpPlugin extends TcpPlugin {
 
-	static final TransportId ID = new TransportId("lan");
-
 	private static final Logger LOG =
 			Logger.getLogger(LanTcpPlugin.class.getName());
 
diff --git a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java
index 541b8ad5ff4b9cc772f0d262cae36d23f6b8cd4e..2818666b0be276848ce7f14c32d83597eefd0ca7 100644
--- a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java
@@ -9,6 +9,8 @@ import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
 
 import java.util.concurrent.Executor;
 
+import static org.briarproject.api.plugins.LanTcpConstants.ID;
+
 public class LanTcpPluginFactory implements DuplexPluginFactory {
 
 	private static final int MAX_LATENCY = 30 * 1000; // 30 seconds
@@ -28,7 +30,7 @@ public class LanTcpPluginFactory implements DuplexPluginFactory {
 
 	@Override
 	public TransportId getId() {
-		return LanTcpPlugin.ID;
+		return ID;
 	}
 
 	@Override
diff --git a/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java
index 3f297d14825d9f5120bd15461f1a310ee86494b0..f51767af60a472dbc78e175857ba9bf888d35df6 100644
--- a/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java
@@ -16,12 +16,12 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.Executor;
 
+import static org.briarproject.api.plugins.WanTcpConstants.ID;
+
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
 class WanTcpPlugin extends TcpPlugin {
 
-	static final TransportId ID = new TransportId("wan");
-
 	private static final String PROP_IP_PORT = "ipPort";
 
 	private final PortMapper portMapper;
diff --git a/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java
index b5e2823ca7ab1e3959ff6e4952d847c08ddeaeb2..f1fd78bcf5127d375811ef95a4293b86c4f3ece4 100644
--- a/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java
@@ -10,6 +10,8 @@ import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
 
 import java.util.concurrent.Executor;
 
+import static org.briarproject.api.plugins.WanTcpConstants.ID;
+
 public class WanTcpPluginFactory implements DuplexPluginFactory {
 
 	private static final int MAX_LATENCY = 30 * 1000; // 30 seconds
@@ -31,7 +33,7 @@ public class WanTcpPluginFactory implements DuplexPluginFactory {
 
 	@Override
 	public TransportId getId() {
-		return WanTcpPlugin.ID;
+		return ID;
 	}
 
 	@Override
diff --git a/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java
index c945ca8154803711a0cddf181c3ca5dd66a80403..81d5588abee5aed47caa12c812936cc6453774b2 100644
--- a/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java
+++ b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java
@@ -49,20 +49,17 @@ import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static javax.bluetooth.DiscoveryAgent.GIAC;
 import static org.briarproject.api.keyagreement.KeyAgreementConstants.TRANSPORT_ID_BLUETOOTH;
+import static org.briarproject.api.plugins.BluetoothConstants.ID;
+import static org.briarproject.api.plugins.BluetoothConstants.PROP_ADDRESS;
+import static org.briarproject.api.plugins.BluetoothConstants.PROP_UUID;
+import static org.briarproject.api.plugins.BluetoothConstants.UUID_BYTES;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
 class BluetoothPlugin implements DuplexPlugin {
 
-	// Share an ID with the Android Bluetooth plugin
-	static final TransportId ID = new TransportId("bt");
-
 	private static final Logger LOG =
 			Logger.getLogger(BluetoothPlugin.class.getName());
-	private static final int UUID_BYTES = 16;
-
-	private static final String PROP_ADDRESS = "address";
-	private static final String PROP_UUID = "uuid";
 
 	private final Executor ioExecutor;
 	private final SecureRandom secureRandom;
@@ -507,7 +504,7 @@ class BluetoothPlugin implements DuplexPlugin {
 
 		private final StreamConnectionNotifier ss;
 
-		BluetoothKeyAgreementListener(BdfList descriptor,
+		private BluetoothKeyAgreementListener(BdfList descriptor,
 				StreamConnectionNotifier ss) {
 			super(descriptor);
 			this.ss = ss;
diff --git a/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java
index 1fd6648b3ba134ee6579a9476783c4fc12a357b0..fbe51e342fcedbdc92340fad78b5e1d8f6522419 100644
--- a/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java
+++ b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java
@@ -10,6 +10,8 @@ import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
 import java.security.SecureRandom;
 import java.util.concurrent.Executor;
 
+import static org.briarproject.api.plugins.BluetoothConstants.ID;
+
 public class BluetoothPluginFactory implements DuplexPluginFactory {
 
 	private static final int MAX_LATENCY = 30 * 1000; // 30 seconds
@@ -30,7 +32,7 @@ public class BluetoothPluginFactory implements DuplexPluginFactory {
 
 	@Override
 	public TransportId getId() {
-		return BluetoothPlugin.ID;
+		return ID;
 	}
 
 	@Override
diff --git a/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java b/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java
index 37728666d0e34e0e995f08a3d4cf80b2eb447003..a5dba602e096843a62d70ac3c6886055290b2053 100644
--- a/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java
@@ -19,7 +19,8 @@ import static java.util.logging.Level.WARNING;
 class RemovableDrivePlugin extends FilePlugin
 implements RemovableDriveMonitor.Callback {
 
-	static final TransportId ID = new TransportId("file");
+	static final TransportId ID =
+			new TransportId("org.briarproject.bramble.file");
 
 	private static final Logger LOG =
 			Logger.getLogger(RemovableDrivePlugin.class.getName());
diff --git a/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java b/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java
index fe3b89e2c32f99139694d4e7fe519366d796f342..ae08ea3973793018a258302a3c972d9bce8a52ed 100644
--- a/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java
@@ -28,7 +28,8 @@ import static java.util.logging.Level.WARNING;
 @ParametersNotNullByDefault
 class ModemPlugin implements DuplexPlugin, Modem.Callback {
 
-	static final TransportId ID = new TransportId("modem");
+	static final TransportId ID =
+			new TransportId("org.briarproject.bramble.modem");
 
 	private static final Logger LOG =
 			Logger.getLogger(ModemPlugin.class.getName());