diff --git a/briar-core/src/org/briarproject/transport/KeyManagerImpl.java b/briar-core/src/org/briarproject/transport/KeyManagerImpl.java
index e372cb928d29ba13898e2404daa010857d774c46..a6c8f1be1271a857591c46e27185c477d50a7a7c 100644
--- a/briar-core/src/org/briarproject/transport/KeyManagerImpl.java
+++ b/briar-core/src/org/briarproject/transport/KeyManagerImpl.java
@@ -19,8 +19,6 @@ import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
 import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
 import org.briarproject.api.transport.KeyManager;
 import org.briarproject.api.transport.StreamContext;
-import org.briarproject.api.transport.TransportKeyManager;
-import org.briarproject.api.transport.TransportKeyManagerFactory;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/briar-api/src/org/briarproject/api/transport/TransportKeyManager.java b/briar-core/src/org/briarproject/transport/TransportKeyManager.java
similarity index 82%
rename from briar-api/src/org/briarproject/api/transport/TransportKeyManager.java
rename to briar-core/src/org/briarproject/transport/TransportKeyManager.java
index dc3e22f9f9eea1fdb0f84513ceffc7a84e668561..56ed6b9ca5909a98c9224a0d52e1b81e731bbea0 100644
--- a/briar-api/src/org/briarproject/api/transport/TransportKeyManager.java
+++ b/briar-core/src/org/briarproject/transport/TransportKeyManager.java
@@ -1,11 +1,12 @@
-package org.briarproject.api.transport;
+package org.briarproject.transport;
 
 import org.briarproject.api.contact.ContactId;
 import org.briarproject.api.crypto.SecretKey;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.db.Transaction;
+import org.briarproject.api.transport.StreamContext;
 
-public interface TransportKeyManager {
+interface TransportKeyManager {
 
 	void start(Transaction txn) throws DbException;
 
diff --git a/briar-api/src/org/briarproject/api/transport/TransportKeyManagerFactory.java b/briar-core/src/org/briarproject/transport/TransportKeyManagerFactory.java
similarity index 61%
rename from briar-api/src/org/briarproject/api/transport/TransportKeyManagerFactory.java
rename to briar-core/src/org/briarproject/transport/TransportKeyManagerFactory.java
index 1b2f3a29b5c08ca548ccf5a5a6f8ea7b3c1b5ae8..ca1021a0c1e5628dd70e6d481434bacd2c33f4d8 100644
--- a/briar-api/src/org/briarproject/api/transport/TransportKeyManagerFactory.java
+++ b/briar-core/src/org/briarproject/transport/TransportKeyManagerFactory.java
@@ -1,8 +1,8 @@
-package org.briarproject.api.transport;
+package org.briarproject.transport;
 
 import org.briarproject.api.TransportId;
 
-public interface TransportKeyManagerFactory {
+interface TransportKeyManagerFactory {
 
 	TransportKeyManager createTransportKeyManager(TransportId transportId,
 			long maxLatency);
diff --git a/briar-core/src/org/briarproject/transport/TransportKeyManagerFactoryImpl.java b/briar-core/src/org/briarproject/transport/TransportKeyManagerFactoryImpl.java
index 4efe408560df30f3736d1c5b90eec90d63f888d2..dbc05778ba6ab5cd828dbc0c6515043420254a2b 100644
--- a/briar-core/src/org/briarproject/transport/TransportKeyManagerFactoryImpl.java
+++ b/briar-core/src/org/briarproject/transport/TransportKeyManagerFactoryImpl.java
@@ -5,15 +5,13 @@ import org.briarproject.api.crypto.CryptoComponent;
 import org.briarproject.api.db.DatabaseComponent;
 import org.briarproject.api.db.DatabaseExecutor;
 import org.briarproject.api.system.Clock;
-import org.briarproject.api.transport.TransportKeyManager;
-import org.briarproject.api.transport.TransportKeyManagerFactory;
 
 import java.util.concurrent.Executor;
 import java.util.concurrent.ScheduledExecutorService;
 
 import javax.inject.Inject;
 
-public class TransportKeyManagerFactoryImpl implements
+class TransportKeyManagerFactoryImpl implements
 		TransportKeyManagerFactory {
 
 	private final DatabaseComponent db;
diff --git a/briar-core/src/org/briarproject/transport/TransportKeyManagerImpl.java b/briar-core/src/org/briarproject/transport/TransportKeyManagerImpl.java
index 4565849d85af115cd3f06b4ffc75425318e782ef..3afd0ef928b8005c3e1d98153c17c9d4d49bc001 100644
--- a/briar-core/src/org/briarproject/transport/TransportKeyManagerImpl.java
+++ b/briar-core/src/org/briarproject/transport/TransportKeyManagerImpl.java
@@ -10,7 +10,6 @@ import org.briarproject.api.db.DbException;
 import org.briarproject.api.db.Transaction;
 import org.briarproject.api.system.Clock;
 import org.briarproject.api.transport.StreamContext;
-import org.briarproject.api.transport.TransportKeyManager;
 import org.briarproject.api.transport.TransportKeys;
 import org.briarproject.transport.ReorderingWindow.Change;
 
@@ -64,6 +63,7 @@ class TransportKeyManagerImpl implements TransportKeyManager {
 		keys = new HashMap<ContactId, MutableTransportKeys>();
 	}
 
+	@Override
 	public void start(Transaction txn) throws DbException {
 		long now = clock.currentTimeMillis();
 		lock.lock();
@@ -156,6 +156,7 @@ class TransportKeyManagerImpl implements TransportKeyManager {
 		});
 	}
 
+	@Override
 	public void addContact(Transaction txn, ContactId c, SecretKey master,
 			long timestamp, boolean alice) throws DbException {
 		lock.lock();
@@ -177,6 +178,7 @@ class TransportKeyManagerImpl implements TransportKeyManager {
 		}
 	}
 
+	@Override
 	public void removeContact(ContactId c) {
 		lock.lock();
 		try {
@@ -192,6 +194,7 @@ class TransportKeyManagerImpl implements TransportKeyManager {
 		}
 	}
 
+	@Override
 	public StreamContext getStreamContext(Transaction txn, ContactId c)
 			throws DbException {
 		lock.lock();
@@ -214,6 +217,7 @@ class TransportKeyManagerImpl implements TransportKeyManager {
 		}
 	}
 
+	@Override
 	public StreamContext getStreamContext(Transaction txn, byte[] tag)
 			throws DbException {
 		lock.lock();
diff --git a/briar-core/src/org/briarproject/transport/TransportModule.java b/briar-core/src/org/briarproject/transport/TransportModule.java
index c66865bdbd6bb3b37b189d69b9f13d9edc05451f..461e1d8dcb91fd883d01d6e8eabf8da1312d4aef 100644
--- a/briar-core/src/org/briarproject/transport/TransportModule.java
+++ b/briar-core/src/org/briarproject/transport/TransportModule.java
@@ -7,7 +7,6 @@ import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.transport.KeyManager;
 import org.briarproject.api.transport.StreamReaderFactory;
 import org.briarproject.api.transport.StreamWriterFactory;
-import org.briarproject.api.transport.TransportKeyManagerFactory;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
diff --git a/briar-tests/src/org/briarproject/transport/KeyManagerImplTest.java b/briar-tests/src/org/briarproject/transport/KeyManagerImplTest.java
index d7ff0f0ceab76d5c602f6272a21c9eeb4414b957..3ac7d5f1c75499e00a6be260b13baafc0dc5d35e 100644
--- a/briar-tests/src/org/briarproject/transport/KeyManagerImplTest.java
+++ b/briar-tests/src/org/briarproject/transport/KeyManagerImplTest.java
@@ -14,8 +14,6 @@ import org.briarproject.api.identity.AuthorId;
 import org.briarproject.api.plugins.PluginConfig;
 import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
 import org.briarproject.api.transport.StreamContext;
-import org.briarproject.api.transport.TransportKeyManager;
-import org.briarproject.api.transport.TransportKeyManagerFactory;
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.lib.concurrent.DeterministicExecutor;
@@ -29,6 +27,7 @@ import java.util.Collections;
 import static org.briarproject.TestUtils.getRandomBytes;
 import static org.briarproject.TestUtils.getRandomId;
 import static org.briarproject.TestUtils.getSecretKey;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 import static org.junit.Assert.assertEquals;
 
 public class KeyManagerImplTest extends BriarTestCase {
@@ -46,10 +45,11 @@ public class KeyManagerImplTest extends BriarTestCase {
 	private final ContactId contactId = new ContactId(42);
 	private final ContactId inactiveContactId = new ContactId(43);
 	private final TransportId transportId = new TransportId("tId");
+	private final TransportId unknownTransportId = new TransportId("id");
 	private final StreamContext streamContext =
 			new StreamContext(contactId, transportId, getSecretKey(),
 					getSecretKey(), 1);
-	private final byte[] tag = getRandomBytes(42);
+	private final byte[] tag = getRandomBytes(TAG_LENGTH);
 
 	public KeyManagerImplTest() {
 		keyManager = new KeyManagerImpl(db, executor, pluginConfig,
@@ -114,12 +114,19 @@ public class KeyManagerImplTest extends BriarTestCase {
 	}
 
 	@Test
-	public void testGetStreamContextForContact() throws Exception {
+	public void testGetStreamContextForInactiveContact() throws Exception {
 		assertEquals(null,
 				keyManager.getStreamContext(inactiveContactId, transportId));
+	}
+
+	@Test
+	public void testGetStreamContextForUnknownTransport() throws Exception {
 		assertEquals(null, keyManager
-				.getStreamContext(inactiveContactId, new TransportId("id")));
+				.getStreamContext(contactId, unknownTransportId));
+	}
 
+	@Test
+	public void testGetStreamContextForContact() throws Exception {
 		context.checking(new Expectations() {{
 			oneOf(db).startTransaction(false);
 			will(returnValue(txn));
@@ -135,10 +142,14 @@ public class KeyManagerImplTest extends BriarTestCase {
 	}
 
 	@Test
-	public void testGetStreamContextForTag() throws Exception {
-		assertEquals(null, keyManager
-				.getStreamContext(new TransportId("id"), tag));
+	public void testGetStreamContextForTagAndUnknownTransport()
+			throws Exception {
+		assertEquals(null,
+				keyManager.getStreamContext(unknownTransportId, tag));
+	}
 
+	@Test
+	public void testGetStreamContextForTag() throws Exception {
 		context.checking(new Expectations() {{
 			oneOf(db).startTransaction(false);
 			will(returnValue(txn));
diff --git a/briar-tests/src/org/briarproject/transport/TransportKeyManagerTest.java b/briar-tests/src/org/briarproject/transport/TransportKeyManagerImplTest.java
similarity index 99%
rename from briar-tests/src/org/briarproject/transport/TransportKeyManagerTest.java
rename to briar-tests/src/org/briarproject/transport/TransportKeyManagerImplTest.java
index d1bc128f6971c15f32b285937a43608531fa5e40..0f039dfdac7b73d56d920fe6321ceae13df9f0ec 100644
--- a/briar-tests/src/org/briarproject/transport/TransportKeyManagerTest.java
+++ b/briar-tests/src/org/briarproject/transport/TransportKeyManagerImplTest.java
@@ -13,7 +13,6 @@ import org.briarproject.api.system.Clock;
 import org.briarproject.api.transport.IncomingKeys;
 import org.briarproject.api.transport.OutgoingKeys;
 import org.briarproject.api.transport.StreamContext;
-import org.briarproject.api.transport.TransportKeyManager;
 import org.briarproject.api.transport.TransportKeys;
 import org.hamcrest.Description;
 import org.jmock.Expectations;
@@ -41,7 +40,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
-public class TransportKeyManagerTest extends BriarTestCase {
+public class TransportKeyManagerImplTest extends BriarTestCase {
 
 	private final TransportId transportId = new TransportId("id");
 	private final long maxLatency = 30 * 1000; // 30 seconds