diff --git a/briar-android/res/values/roboguice.xml b/briar-android/res/values/roboguice.xml
index 25a6e1ffada620c8e03b0d52eee8fab069a3cb5a..fb5c3911216040c4c2b36ba76db6ceb99e0cf1b9 100644
--- a/briar-android/res/values/roboguice.xml
+++ b/briar-android/res/values/roboguice.xml
@@ -17,5 +17,6 @@
 		<item>org.briarproject.sync.SyncModule</item>
 		<item>org.briarproject.system.AndroidSystemModule</item>
 		<item>org.briarproject.transport.TransportModule</item>
+		<item>org.briarproject.settings.SettingsModule</item>
 	</string-array>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/briar-android/src/org/briarproject/android/AndroidNotificationManagerImpl.java b/briar-android/src/org/briarproject/android/AndroidNotificationManagerImpl.java
index c3ffb1e31dfdafe059192e1a1a1a4ba438fa4021..44e3649bd2c924c9dabc2b9ac19b10a28c3cd443 100644
--- a/briar-android/src/org/briarproject/android/AndroidNotificationManagerImpl.java
+++ b/briar-android/src/org/briarproject/android/AndroidNotificationManagerImpl.java
@@ -93,7 +93,7 @@ EventListener {
 		dbExecutor.execute(new Runnable() {
 			public void run() {
 				try {
-					settings = db.getSettings();
+					settings = db.getSettings("settings-activity");
 				} catch (DbException e) {
 					if (LOG.isLoggable(WARNING))
 						LOG.log(WARNING, e.toString(), e);
diff --git a/briar-android/src/org/briarproject/android/SettingsActivity.java b/briar-android/src/org/briarproject/android/SettingsActivity.java
index 8433bc114ef4fe88eaf3d24ea57ca549a1cf7f2c..2be512d37644c9c4b52d26f2cb975626909d150b 100644
--- a/briar-android/src/org/briarproject/android/SettingsActivity.java
+++ b/briar-android/src/org/briarproject/android/SettingsActivity.java
@@ -23,7 +23,7 @@ import org.briarproject.android.util.HorizontalBorder;
 import org.briarproject.android.util.LayoutUtils;
 import org.briarproject.android.util.ListLoadingProgressBar;
 import org.briarproject.api.Settings;
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.settings.SettingsManager;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.db.DatabaseComponent;
 import org.briarproject.api.db.DbException;
@@ -77,6 +77,7 @@ OnClickListener {
 
 	// Fields that are accessed from background threads must be volatile
 	@Inject private volatile DatabaseComponent db;
+	@Inject private volatile SettingsManager settingsManager;
 	@Inject private volatile EventBus eventBus;
 	private volatile Settings settings;
 	private volatile boolean bluetoothSetting = true, torSetting = false;
@@ -262,14 +263,15 @@ OnClickListener {
 		runOnDbThread(new Runnable() {
 			public void run() {
 				try {
+					settings = settingsManager.getSettings("settings-activity");
 					long now = System.currentTimeMillis();
-					TransportConfig c = db.getConfig(new TransportId("bt"));
-					settings = db.getSettings();
+					Settings btSettings = settingsManager.getSettings("bt");
+					Settings torSettings = settingsManager.getSettings("tor");
 					long duration = System.currentTimeMillis() - now;
 					if (LOG.isLoggable(INFO))
 						LOG.info("Loading settings took " + duration + " ms");
-					bluetoothSetting = c.getBoolean("enable", false);
-					torSetting = settings.getBoolean("torOverWifi", false);
+					bluetoothSetting = btSettings.getBoolean("enable", false);
+					torSetting = torSettings.getBoolean("torOverWifi", false);
 					displaySettings();
 				} catch (DbException e) {
 					if (LOG.isLoggable(WARNING))
@@ -338,6 +340,7 @@ OnClickListener {
 		} else if (view == torOverWifi || view == torOverWifiHint) {
 			torSetting = !torSetting;
 			storeTorSettings();
+			displaySettings();
 		} else if (view == notifyPrivateMessages) {
 			Settings s = new Settings();
 			s.putBoolean("notifyPrivateMessages",
@@ -378,11 +381,8 @@ OnClickListener {
 				try {
 					Settings s = new Settings();
 					s.putBoolean("torOverWifi", torSetting);
-					TransportConfig c = new TransportConfig();
-					c.putBoolean("torOverWifi", torSetting);
 					long now = System.currentTimeMillis();
-					db.mergeSettings(s);
-					db.mergeConfig(new TransportId("tor"), c);
+					settingsManager.mergeSettings(s, "tor");
 					long duration = System.currentTimeMillis() - now;
 					if (LOG.isLoggable(INFO))
 						LOG.info("Merging config took " + duration + " ms");
@@ -398,10 +398,10 @@ OnClickListener {
 		runOnDbThread(new Runnable() {
 			public void run() {
 				try {
-					TransportConfig c = new TransportConfig();
-					c.putBoolean("enable", bluetoothSetting);
+					Settings s = new Settings();
+					s.putBoolean("enable", bluetoothSetting);
 					long now = System.currentTimeMillis();
-					db.mergeConfig(new TransportId("bt"), c);
+					settingsManager.mergeSettings(s, "bt");
 					long duration = System.currentTimeMillis() - now;
 					if (LOG.isLoggable(INFO))
 						LOG.info("Merging config took " + duration + " ms");
@@ -418,7 +418,7 @@ OnClickListener {
 			public void run() {
 				try {
 					long now = System.currentTimeMillis();
-					db.mergeSettings(settings);
+					settingsManager.mergeSettings(settings, "settings-activity");
 					long duration = System.currentTimeMillis() - now;
 					if (LOG.isLoggable(INFO))
 						LOG.info("Merging settings took " + duration + " ms");
diff --git a/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java b/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java
index ef2fc44d07c1b77aab36f60366489ca16a64834f..d548b4cfbfa6e776211642ad210a2ad437b5b83a 100644
--- a/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java
+++ b/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java
@@ -8,7 +8,7 @@ import android.widget.Toast;
 import org.briarproject.R;
 import org.briarproject.android.BriarActivity;
 import org.briarproject.android.util.AndroidUtils;
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.android.ReferenceManager;
 import org.briarproject.api.crypto.CryptoComponent;
@@ -170,12 +170,12 @@ implements InvitationListener {
 			public void run() {
 				try {
 					long now = System.currentTimeMillis();
-					TransportConfig c = db.getConfig(new TransportId("bt"));
+					Settings s = db.getSettings("bt");
 					long duration = System.currentTimeMillis() - now;
 					if (LOG.isLoggable(INFO))
 						LOG.info("Loading setting took " + duration + " ms");
 					leaveBluetoothEnabled = bluetoothWasEnabled
-							|| c.getBoolean("enable", false);
+							|| s.getBoolean("enable", false);
 				} catch (DbException e) {
 					if (LOG.isLoggable(WARNING))
 						LOG.log(WARNING, e.toString(), e);
diff --git a/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
index 635f7d42982f783661de978fb1e90a013be7223f..ae5d0dd409779caa0ef198ec9995dcb71b1d9422 100644
--- a/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
@@ -137,7 +137,7 @@ class DroidtoothPlugin implements DuplexPlugin {
 			bind();
 		} else {
 			wasDisabled = true;
-			if (callback.getConfig().getBoolean("enable", false)) {
+			if (callback.getSettings().getBoolean("enable", false)) {
 				if (adapter.enable()) LOG.info("Enabling Bluetooth");
 				else LOG.info("Could not enable Bluetooth");
 			} else {
diff --git a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
index fc2a6d190bd68e58fa860acdd5391c91685d2b7f..0f11e4466fcfafbb13940b55f82a3bfbd95d22b6 100644
--- a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
@@ -11,7 +11,7 @@ import android.os.FileObserver;
 import net.freehaven.tor.control.EventHandler;
 import net.freehaven.tor.control.TorControlConnection;
 
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.ContactId;
@@ -23,6 +23,7 @@ import org.briarproject.api.plugins.duplex.DuplexPlugin;
 import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
 import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
 import org.briarproject.api.system.LocationUtils;
+import org.briarproject.api.settings.SettingsManager;
 import org.briarproject.util.StringUtils;
 
 import java.io.EOFException;
@@ -349,7 +350,7 @@ class TorPlugin implements DuplexPlugin, EventHandler,
 		ioExecutor.execute(new Runnable() {
 			public void run() {
 				// If there's already a port number stored in config, reuse it
-				String portString = callback.getConfig().get("port");
+				String portString = callback.getSettings().get("port");
 				int port;
 				if (StringUtils.isNullOrEmpty(portString)) port = 0;
 				else port = Integer.parseInt(portString);
@@ -371,9 +372,9 @@ class TorPlugin implements DuplexPlugin, EventHandler,
 				socket = ss;
 				// Store the port number
 				final String localPort = String.valueOf(ss.getLocalPort());
-				TransportConfig c  = new TransportConfig();
-				c.put("port", localPort);
-				callback.mergeConfig(c);
+				Settings s = new Settings();
+				s.put("port", localPort);
+				callback.mergeSettings(s);
 				// Create a hidden service if necessary
 				ioExecutor.execute(new Runnable() {
 					public void run() {
@@ -614,8 +615,8 @@ class TorPlugin implements DuplexPlugin, EventHandler,
 				}
 				boolean blocked = TorNetworkMetadata.isTorProbablyBlocked(
 						country);
-				TransportConfig c = callback.getConfig();
-				boolean wifiOnly = c.getBoolean("torOverWifi", false);
+				Settings s = callback.getSettings();
+				boolean wifiOnly = s.getBoolean("torOverWifi", false);
 
 				try {
 					if (!online) {
diff --git a/briar-api/src/org/briarproject/api/TransportConfig.java b/briar-api/src/org/briarproject/api/TransportConfig.java
deleted file mode 100644
index 7997ede7151384730bbda6ba53016565256b05f9..0000000000000000000000000000000000000000
--- a/briar-api/src/org/briarproject/api/TransportConfig.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.briarproject.api;
-
-import java.util.Map;
-
-public class TransportConfig extends StringMap {
-
-	private static final long serialVersionUID = 2330384620787778596L;
-
-	public TransportConfig(Map<String, String> m) {
-		super(m);
-	}
-
-	public TransportConfig() {
-		super();
-	}
-}
diff --git a/briar-api/src/org/briarproject/api/db/DatabaseComponent.java b/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
index 13d28f9d8e257c63edad7bdf8cb36af0752b02b6..d1ed50606e9685814da7cbfa8148e6aee0caec67 100644
--- a/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
+++ b/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
@@ -1,7 +1,6 @@
 package org.briarproject.api.db;
 
 import org.briarproject.api.Settings;
-import org.briarproject.api.TransportConfig;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.Contact;
@@ -139,9 +138,6 @@ public interface DatabaseComponent {
 	/** Returns all groups to which the user could subscribe. */
 	Collection<Group> getAvailableGroups() throws DbException;
 
-	/** Returns the configuration for the given transport. */
-	TransportConfig getConfig(TransportId t) throws DbException;
-
 	/** Returns the contact with the given ID. */
 	Contact getContact(ContactId c) throws DbException;
 
@@ -194,8 +190,8 @@ public interface DatabaseComponent {
 	Map<ContactId, TransportProperties> getRemoteProperties(TransportId t)
 			throws DbException;
 
-	/** Returns all settings. */
-	Settings getSettings() throws DbException;
+	/** Returns all settings for a given namespace. */
+	Settings getSettings(String namespace) throws DbException;
 
 	/** Returns all contacts who subscribe to the given group. */
 	Collection<Contact> getSubscribers(GroupId g) throws DbException;
@@ -220,12 +216,6 @@ public interface DatabaseComponent {
 	void incrementStreamCounter(ContactId c, TransportId t, long rotationPeriod)
 			throws DbException;
 
-	/**
-	 * Merges the given configuration with existing configuration for the
-	 * given transport.
-	 */
-	void mergeConfig(TransportId t, TransportConfig c) throws DbException;
-
 	/**
 	 * Merges the given properties with the existing local properties for the
 	 * given transport.
@@ -234,7 +224,7 @@ public interface DatabaseComponent {
 			throws DbException;
 
 	/** Merges the given settings with the existing settings. */
-	void mergeSettings(Settings s) throws DbException;
+	void mergeSettings(Settings s, String namespace) throws DbException;
 
 	/** Processes an ack from the given contact. */
 	void receiveAck(ContactId c, Ack a) throws DbException;
diff --git a/briar-api/src/org/briarproject/api/plugins/PluginCallback.java b/briar-api/src/org/briarproject/api/plugins/PluginCallback.java
index 78d870a1518995efeb7bb6180e8f13d079679dde..8216cafdffc463be6fc9d97d5bfb699cbf6e91ba 100644
--- a/briar-api/src/org/briarproject/api/plugins/PluginCallback.java
+++ b/briar-api/src/org/briarproject/api/plugins/PluginCallback.java
@@ -1,8 +1,8 @@
 package org.briarproject.api.plugins;
 
-import org.briarproject.api.TransportConfig;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.ContactId;
+import org.briarproject.api.Settings;
 
 import java.util.Map;
 
@@ -12,8 +12,8 @@ import java.util.Map;
  */
 public interface PluginCallback {
 
-	/** Returns the plugin's configuration. */
-	TransportConfig getConfig();
+	/** Returns the plugin's settings */
+	Settings getSettings();
 
 	/** Returns the plugin's local transport properties. */
 	TransportProperties getLocalProperties();
@@ -21,8 +21,8 @@ public interface PluginCallback {
 	/** Returns the plugin's remote transport properties. */
 	Map<ContactId, TransportProperties> getRemoteProperties();
 
-	/** Merges the given configuration with the plugin's configuration. */
-	void mergeConfig(TransportConfig c);
+	/** Merges the given settings with the namespaced settings */
+	void mergeSettings(Settings s);
 
 	/**
 	 * Merges the given properties with the plugin's local transport properties.
diff --git a/briar-api/src/org/briarproject/api/settings/SettingsManager.java b/briar-api/src/org/briarproject/api/settings/SettingsManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..c398ebc62347a21874261b512d4b1b2d516925a2
--- /dev/null
+++ b/briar-api/src/org/briarproject/api/settings/SettingsManager.java
@@ -0,0 +1,20 @@
+package org.briarproject.api.settings;
+
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.Settings;
+
+public interface SettingsManager {
+
+	/**
+	* Returns the settings object identified by the provided namespace
+	* string
+	*/
+	Settings getSettings(String namespace) throws DbException;
+
+	/**
+	* Merges (read syncs) the provided settings identified by the provided namespace
+	* string
+	*/
+	void mergeSettings(Settings s, String namespace) throws DbException;
+
+}
diff --git a/briar-core/src/org/briarproject/db/Database.java b/briar-core/src/org/briarproject/db/Database.java
index a34c92814c55d5d17985ce12aeaadf9086061bc0..374c56081160c46e35b9483620546329fb8ea879 100644
--- a/briar-core/src/org/briarproject/db/Database.java
+++ b/briar-core/src/org/briarproject/db/Database.java
@@ -1,7 +1,6 @@
 package org.briarproject.db;
 
 import org.briarproject.api.Settings;
-import org.briarproject.api.TransportConfig;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.Contact;
@@ -223,13 +222,6 @@ interface Database<T> {
 	 */
 	Collection<Group> getAvailableGroups(T txn) throws DbException;
 
-	/**
-	 * Returns the configuration for the given transport.
-	 * <p>
-	 * Locking: read.
-	 */
-	TransportConfig getConfig(T txn, TransportId t) throws DbException;
-
 	/**
 	 * Returns the contact with the given ID.
 	 * <p>
@@ -419,11 +411,11 @@ interface Database<T> {
 			int maxLength) throws DbException;
 
 	/**
-	 * Returns all settings.
+	 * Returns all settings that belong to a namespace.
 	 * <p>
 	 * Locking: read.
 	 */
-	Settings getSettings(T txn) throws DbException;
+	Settings getSettings(T txn, String namespace) throws DbException;
 
 	/**
 	 * Returns all contacts who subscribe to the given group.
@@ -524,15 +516,6 @@ interface Database<T> {
 	void lowerRequestedFlag(T txn, ContactId c, Collection<MessageId> requested)
 			throws DbException;
 
-	/**
-	 * Merges the given configuration with the existing configuration for the
-	 * given transport.
-	 * <p>
-	 * Locking: write.
-	 */
-	void mergeConfig(T txn, TransportId t, TransportConfig config)
-			throws DbException;
-
 	/**
 	 * Merges the given properties with the existing local properties for the
 	 * given transport.
@@ -547,7 +530,7 @@ interface Database<T> {
 	 * <p>
 	 * Locking: write.
 	 */
-	void mergeSettings(T txn, Settings s) throws DbException;
+	void mergeSettings(T txn, Settings s, String Namespace) throws DbException;
 
 	/**
 	 * Marks a message as needing to be acknowledged to the given contact.
diff --git a/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
index 795fb41365d64f92b11fbdd2173e050ee5a51565..64e6e831668c6209b8e37f1dbd0649ba539faa59 100644
--- a/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
+++ b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
@@ -1,7 +1,6 @@
 package org.briarproject.db;
 
 import org.briarproject.api.Settings;
-import org.briarproject.api.TransportConfig;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.Contact;
@@ -524,25 +523,6 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
 		}
 	}
 
-	public TransportConfig getConfig(TransportId t) throws DbException {
-		lock.readLock().lock();
-		try {
-			T txn = db.startTransaction();
-			try {
-				if (!db.containsTransport(txn, t))
-					throw new NoSuchTransportException();
-				TransportConfig config = db.getConfig(txn, t);
-				db.commitTransaction(txn);
-				return config;
-			} catch (DbException e) {
-				db.abortTransaction(txn);
-				throw e;
-			}
-		} finally {
-			lock.readLock().unlock();
-		}
-	}
-
 	public Contact getContact(ContactId c) throws DbException {
 		lock.readLock().lock();
 		try {
@@ -808,12 +788,12 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
 		}
 	}
 
-	public Settings getSettings() throws DbException {
+	public Settings getSettings(String namespace) throws DbException {
 		lock.readLock().lock();
 		try {
 			T txn = db.startTransaction();
 			try {
-				Settings s = db.getSettings(txn);
+				Settings s = db.getSettings(txn, namespace);
 				db.commitTransaction(txn);
 				return s;
 			} catch (DbException e) {
@@ -939,25 +919,6 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
 		}
 	}
 
-	public void mergeConfig(TransportId t, TransportConfig c)
-			throws DbException {
-		lock.writeLock().lock();
-		try {
-			T txn = db.startTransaction();
-			try {
-				if (!db.containsTransport(txn, t))
-					throw new NoSuchTransportException();
-				db.mergeConfig(txn, t, c);
-				db.commitTransaction(txn);
-			} catch (DbException e) {
-				db.abortTransaction(txn);
-				throw e;
-			}
-		} finally {
-			lock.writeLock().unlock();
-		}
-	}
-
 	public void mergeLocalProperties(TransportId t, TransportProperties p)
 			throws DbException {
 		boolean changed = false;
@@ -982,14 +943,14 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
 		if (changed) eventBus.broadcast(new LocalTransportsUpdatedEvent());
 	}
 
-	public void mergeSettings(Settings s) throws DbException {
+	public void mergeSettings(Settings s, String namespace) throws DbException {
 		boolean changed = false;
 		lock.writeLock().lock();
 		try {
 			T txn = db.startTransaction();
 			try {
-				if (!s.equals(db.getSettings(txn))) {
-					db.mergeSettings(txn, s);
+				if (!s.equals(db.getSettings(txn, namespace))) {
+					db.mergeSettings(txn, s, namespace);
 					changed = true;
 				}
 				db.commitTransaction(txn);
diff --git a/briar-core/src/org/briarproject/db/JdbcDatabase.java b/briar-core/src/org/briarproject/db/JdbcDatabase.java
index d9a9a2f47abc9a4ceba4b739b383ffabf2d4a992..b4f5d7932bc5cde9235a1e36690f72e2ca788fc7 100644
--- a/briar-core/src/org/briarproject/db/JdbcDatabase.java
+++ b/briar-core/src/org/briarproject/db/JdbcDatabase.java
@@ -1,7 +1,6 @@
 package org.briarproject.db;
 
 import org.briarproject.api.Settings;
-import org.briarproject.api.TransportConfig;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.Contact;
@@ -64,14 +63,15 @@ import static org.briarproject.db.ExponentialBackoff.calculateExpiry;
  */
 abstract class JdbcDatabase implements Database<Connection> {
 
-	private static final int SCHEMA_VERSION = 11;
-	private static final int MIN_SCHEMA_VERSION = 10;
+	private static final int SCHEMA_VERSION = 12;
+	private static final int MIN_SCHEMA_VERSION = 12;
 
 	private static final String CREATE_SETTINGS =
 			"CREATE TABLE settings"
 					+ " (key VARCHAR NOT NULL,"
 					+ " value VARCHAR NOT NULL,"
-					+ " PRIMARY KEY (key))";
+					+ " namespace VARCHAR NOT NULL,"
+					+ " PRIMARY KEY (key, namespace))";
 
 	private static final String CREATE_LOCAL_AUTHORS =
 			"CREATE TABLE localAuthors"
@@ -343,7 +343,7 @@ abstract class JdbcDatabase implements Database<Connection> {
 				Settings s = new Settings();
 				s.put("schemaVersion", String.valueOf(SCHEMA_VERSION));
 				s.put("minSchemaVersion", String.valueOf(MIN_SCHEMA_VERSION));
-				mergeSettings(txn, s);
+				mergeSettings(txn, s, "db");
 			}
 			commitTransaction(txn);
 		} catch (DbException e) {
@@ -354,7 +354,7 @@ abstract class JdbcDatabase implements Database<Connection> {
 
 	private boolean checkSchemaVersion(Connection txn) throws DbException {
 		try {
-			Settings s = getSettings(txn);
+			Settings s = getSettings(txn, "db");
 			int schemaVersion = Integer.valueOf(s.get("schemaVersion"));
 			if (schemaVersion == SCHEMA_VERSION) return true;
 			if (schemaVersion < MIN_SCHEMA_VERSION) return false;
@@ -1179,28 +1179,6 @@ abstract class JdbcDatabase implements Database<Connection> {
 		}
 	}
 
-	public TransportConfig getConfig(Connection txn, TransportId t)
-			throws DbException {
-		PreparedStatement ps = null;
-		ResultSet rs = null;
-		try {
-			String sql = "SELECT key, value FROM transportConfigs"
-					+ " WHERE transportId = ?";
-			ps = txn.prepareStatement(sql);
-			ps.setString(1, t.getString());
-			rs = ps.executeQuery();
-			TransportConfig c = new TransportConfig();
-			while (rs.next()) c.put(rs.getString(1), rs.getString(2));
-			rs.close();
-			ps.close();
-			return c;
-		} catch (SQLException e) {
-			tryToClose(rs);
-			tryToClose(ps);
-			throw new DbException(e);
-		}
-	}
-
 	public Contact getContact(Connection txn, ContactId c) throws DbException {
 		PreparedStatement ps = null;
 		ResultSet rs = null;
@@ -1921,12 +1899,13 @@ abstract class JdbcDatabase implements Database<Connection> {
 		}
 	}
 
-	public Settings getSettings(Connection txn) throws DbException {
+	public Settings getSettings(Connection txn, String namespace) throws DbException {
 		PreparedStatement ps = null;
 		ResultSet rs = null;
 		try {
-			String sql = "SELECT key, value FROM settings";
+			String sql = "SELECT key, value FROM settings WHERE namespace = ?";
 			ps = txn.prepareStatement(sql);
+			ps.setString(1, namespace);
 			rs = ps.executeQuery();
 			Settings s = new Settings();
 			while (rs.next()) s.put(rs.getString(1), rs.getString(2));
@@ -2373,12 +2352,6 @@ abstract class JdbcDatabase implements Database<Connection> {
 		}
 	}
 
-	public void mergeConfig(Connection txn, TransportId t, TransportConfig c)
-			throws DbException {
-		// Merge the new configuration with the existing one
-		mergeStringMap(txn, t, c, "transportConfigs");
-	}
-
 	public void mergeLocalProperties(Connection txn, TransportId t,
 			TransportProperties p) throws DbException {
 		// Merge the new properties with the existing ones
@@ -2446,15 +2419,16 @@ abstract class JdbcDatabase implements Database<Connection> {
 		}
 	}
 
-	public void mergeSettings(Connection txn, Settings s) throws DbException {
+	public void mergeSettings(Connection txn, Settings s, String namespace) throws DbException {
 		PreparedStatement ps = null;
 		try {
 			// Update any settings that already exist
-			String sql = "UPDATE settings SET value = ? WHERE key = ?";
+			String sql = "UPDATE settings SET value = ? WHERE key = ? AND namespace = ?";
 			ps = txn.prepareStatement(sql);
 			for (Entry<String, String> e : s.entrySet()) {
 				ps.setString(1, e.getValue());
 				ps.setString(2, e.getKey());
+				ps.setString(3, namespace);
 				ps.addBatch();
 			}
 			int[] batchAffected = ps.executeBatch();
@@ -2464,13 +2438,14 @@ abstract class JdbcDatabase implements Database<Connection> {
 				if (batchAffected[i] > 1) throw new DbStateException();
 			}
 			// Insert any settings that don't already exist
-			sql = "INSERT INTO settings (key, value) VALUES (?, ?)";
+			sql = "INSERT INTO settings (key, value, namespace) VALUES (?, ?, ?)";
 			ps = txn.prepareStatement(sql);
 			int updateIndex = 0, inserted = 0;
 			for (Entry<String, String> e : s.entrySet()) {
 				if (batchAffected[updateIndex] == 0) {
 					ps.setString(1, e.getKey());
 					ps.setString(2, e.getValue());
+					ps.setString(3, namespace);
 					ps.addBatch();
 					inserted++;
 				}
diff --git a/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java b/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java
index a780b887dc3a076baf76ad97bf2f797f4d2b292d..1bd9f805fc4e6c4e2315d02feb909c9b2a55bc4e 100644
--- a/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java
+++ b/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java
@@ -1,6 +1,5 @@
 package org.briarproject.plugins;
 
-import org.briarproject.api.TransportConfig;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.ContactId;
@@ -28,6 +27,8 @@ import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
 import org.briarproject.api.property.TransportPropertyManager;
 import org.briarproject.api.system.Clock;
 import org.briarproject.api.ui.UiCallback;
+import org.briarproject.api.Settings;
+import org.briarproject.api.settings.SettingsManager;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -167,7 +168,9 @@ class PluginManagerImpl implements PluginManager {
 		public void run() {
 			try {
 				TransportId id = factory.getId();
-				SimplexCallback callback = new SimplexCallback(id);
+				String namespace = id.toString();
+
+				SimplexCallback callback = new SimplexCallback(id, namespace);
 				SimplexPlugin plugin = factory.createPlugin(callback);
 				if (plugin == null) {
 					if (LOG.isLoggable(INFO)) {
@@ -230,7 +233,8 @@ class PluginManagerImpl implements PluginManager {
 		public void run() {
 			try {
 				TransportId id = factory.getId();
-				DuplexCallback callback = new DuplexCallback(id);
+				String namespace = id.toString();
+				DuplexCallback callback = new DuplexCallback(id, namespace);
 				DuplexPlugin plugin = factory.createPlugin(callback);
 				if (plugin == null) {
 					if (LOG.isLoggable(INFO)) {
@@ -309,18 +313,22 @@ class PluginManagerImpl implements PluginManager {
 	private abstract class PluginCallbackImpl implements PluginCallback {
 
 		protected final TransportId id;
+		protected final String namespace;
 
-		protected PluginCallbackImpl(TransportId id) {
+		protected PluginCallbackImpl(TransportId id, String namespace) {
 			this.id = id;
+			this.namespace = namespace;
 		}
 
-		public TransportConfig getConfig() {
+		public Settings getSettings() {
+
 			try {
-				return db.getConfig(id);
+				return db.getSettings(namespace);
 			} catch (DbException e) {
 				if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
-				return new TransportConfig();
+				return new Settings();
 			}
+
 		}
 
 		public TransportProperties getLocalProperties() {
@@ -343,12 +351,14 @@ class PluginManagerImpl implements PluginManager {
 			}
 		}
 
-		public void mergeConfig(TransportConfig c) {
+		public void mergeSettings(Settings s) {
+
 			try {
-				db.mergeConfig(id, c);
+				db.mergeSettings(s, namespace);
 			} catch (DbException e) {
 				if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
 			}
+
 		}
 
 		public void mergeLocalProperties(TransportProperties p) {
@@ -386,8 +396,8 @@ class PluginManagerImpl implements PluginManager {
 	private class SimplexCallback extends PluginCallbackImpl
 			implements SimplexPluginCallback {
 
-		private SimplexCallback(TransportId id) {
-			super(id);
+		private SimplexCallback(TransportId id, String namespace) {
+			super(id, namespace);
 		}
 
 		public void readerCreated(TransportConnectionReader r) {
@@ -402,8 +412,8 @@ class PluginManagerImpl implements PluginManager {
 	private class DuplexCallback extends PluginCallbackImpl
 			implements DuplexPluginCallback {
 
-		private DuplexCallback(TransportId id) {
-			super(id);
+		private DuplexCallback(TransportId id, String namespace) {
+			super(id, namespace);
 		}
 
 		public void incomingConnectionCreated(DuplexTransportConnection d) {
@@ -415,4 +425,4 @@ class PluginManagerImpl implements PluginManager {
 			connectionManager.manageOutgoingConnection(c, id, d);
 		}
 	}
-}
\ No newline at end of file
+}
diff --git a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
index 07dfac5174136315c79c328525c79c959d0db6a0..182c81e25ac186e914cd5b8688662a365e0b3091 100644
--- a/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
@@ -76,4 +76,4 @@ class LanTcpPlugin extends TcpPlugin {
 		// Unrecognised prefix - may be compatible
 		return true;
 	}
-}
\ No newline at end of file
+}
diff --git a/briar-core/src/org/briarproject/settings/SettingsManagerImpl.java b/briar-core/src/org/briarproject/settings/SettingsManagerImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..6aa72c0273e71139ec6e4688b68a99cf34462440
--- /dev/null
+++ b/briar-core/src/org/briarproject/settings/SettingsManagerImpl.java
@@ -0,0 +1,44 @@
+package org.briarproject.settings;
+
+import com.google.inject.Inject;
+
+import org.briarproject.api.settings.SettingsManager;
+import org.briarproject.api.Settings;
+
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import java.util.logging.Logger;
+
+import java.util.Collection;
+
+class SettingsManagerImpl implements SettingsManager {
+
+	private final DatabaseComponent db;
+	private static final Logger LOG =
+			Logger.getLogger("SettingsManagerImpl");
+
+	@Inject
+	SettingsManagerImpl(DatabaseComponent db) {
+		this.db = db;
+	}
+
+	/**
+	* Returns the settings object identified by the provided namespace
+	* string
+	*/
+	@Override
+	public Settings getSettings(String namespace) throws DbException {
+		return db.getSettings(namespace);
+	}
+
+	/**
+	* Merges (read syncs) the provided settings identified by the provided namespace
+	* string
+	*/
+	@Override
+	public void mergeSettings(Settings s, String namespace) throws DbException {
+		db.mergeSettings(s, namespace);
+	}
+
+
+}
diff --git a/briar-core/src/org/briarproject/settings/SettingsModule.java b/briar-core/src/org/briarproject/settings/SettingsModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2d0e2b46022e43e535f3cecf05d659fef310995
--- /dev/null
+++ b/briar-core/src/org/briarproject/settings/SettingsModule.java
@@ -0,0 +1,13 @@
+package org.briarproject.settings;
+
+import com.google.inject.AbstractModule;
+
+import org.briarproject.api.settings.SettingsManager;
+
+public class SettingsModule extends AbstractModule {
+
+	@Override
+	protected void configure() {
+		bind(SettingsManager.class).to(SettingsManagerImpl.class);
+	}
+}
diff --git a/briar-desktop/src/org/briarproject/plugins/modem/ModemPluginFactory.java b/briar-desktop/src/org/briarproject/plugins/modem/ModemPluginFactory.java
index 58b2d75f3553678a86a44eeafcd0a45a5dd266c6..2e9561c077fa55e332c7fd4d9d24de706aed6ba0 100644
--- a/briar-desktop/src/org/briarproject/plugins/modem/ModemPluginFactory.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/ModemPluginFactory.java
@@ -28,7 +28,7 @@ public class ModemPluginFactory implements DuplexPluginFactory {
 
 	public DuplexPlugin createPlugin(DuplexPluginCallback callback) {
 		// This plugin is not enabled by default
-		String enabled = callback.getConfig().get("enabled");
+		String enabled = callback.getSettings().get("enabled");
 		if (StringUtils.isNullOrEmpty(enabled)) return null;
 		return new ModemPlugin(modemFactory, serialPortList, callback,
 				MAX_LATENCY);
diff --git a/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java b/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java
index 98115c6c760189009d94743011360ce050130a71..ba44df11673c3571d85fcf4bdacd916c61e67580 100644
--- a/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java
+++ b/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java
@@ -3,7 +3,7 @@ package org.briarproject.db;
 import org.briarproject.BriarTestCase;
 import org.briarproject.TestMessage;
 import org.briarproject.TestUtils;
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.Contact;
@@ -611,13 +611,13 @@ public class DatabaseComponentImplTest extends BriarTestCase {
 			oneOf(database).commitTransaction(txn);
 			oneOf(eventBus).broadcast(with(any(ContactAddedEvent.class)));
 			// Check whether the transport is in the DB (which it's not)
-			exactly(8).of(database).startTransaction();
+			exactly(6).of(database).startTransaction();
 			will(returnValue(txn));
 			exactly(2).of(database).containsContact(txn, contactId);
 			will(returnValue(true));
-			exactly(8).of(database).containsTransport(txn, transportId);
+			exactly(6).of(database).containsTransport(txn, transportId);
 			will(returnValue(false));
-			exactly(8).of(database).abortTransaction(txn);
+			exactly(6).of(database).abortTransaction(txn);
 		}});
 		DatabaseComponent db = createDatabaseComponent(database, eventBus,
 				shutdown);
@@ -625,13 +625,6 @@ public class DatabaseComponentImplTest extends BriarTestCase {
 		db.addLocalAuthor(localAuthor);
 		assertEquals(contactId, db.addContact(author, localAuthorId));
 
-		try {
-			db.getConfig(transportId);
-			fail();
-		} catch (NoSuchTransportException expected) {
-			// Expected
-		}
-
 		try {
 			db.getLocalProperties(transportId);
 			fail();
@@ -646,13 +639,6 @@ public class DatabaseComponentImplTest extends BriarTestCase {
 			// Expected
 		}
 
-		try {
-			db.mergeConfig(transportId, new TransportConfig());
-			fail();
-		} catch (NoSuchTransportException expected) {
-			// Expected
-		}
-
 		try {
 			db.mergeLocalProperties(transportId, new TransportProperties());
 			fail();
diff --git a/briar-tests/src/org/briarproject/db/H2DatabaseTest.java b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
index 41efa0ec6d61a0c7b08db039345068f6c7606ce2..35076d6f26c8a14b13b6aa858080d5c5dbce5af6 100644
--- a/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
+++ b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
@@ -4,7 +4,6 @@ import org.briarproject.BriarTestCase;
 import org.briarproject.TestDatabaseConfig;
 import org.briarproject.TestMessage;
 import org.briarproject.TestUtils;
-import org.briarproject.api.TransportConfig;
 import org.briarproject.api.TransportId;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.ContactId;
@@ -21,6 +20,7 @@ import org.briarproject.api.sync.MessageId;
 import org.briarproject.api.transport.IncomingKeys;
 import org.briarproject.api.transport.OutgoingKeys;
 import org.briarproject.api.transport.TransportKeys;
+import org.briarproject.api.Settings;
 import org.briarproject.system.SystemClock;
 import org.junit.After;
 import org.junit.Before;
@@ -568,7 +568,7 @@ public class H2DatabaseTest extends BriarTestCase {
 	}
 
 	@Test
-	public void testUpdateTransportConfig() throws Exception {
+	public void testUpdateSettings() throws Exception {
 		Database<Connection> db = open(false);
 		Connection txn = db.startTransaction();
 
@@ -576,22 +576,22 @@ public class H2DatabaseTest extends BriarTestCase {
 		db.addTransport(txn, transportId, 123);
 
 		// Set the transport config
-		TransportConfig c = new TransportConfig();
-		c.put("foo", "foo");
-		c.put("bar", "bar");
-		db.mergeConfig(txn, transportId, c);
-		assertEquals(c, db.getConfig(txn, transportId));
+		Settings s = new Settings();
+		s.put("foo", "foo");
+		s.put("bar", "bar");
+		db.mergeSettings(txn, s, "test");
+		assertEquals(s, db.getSettings(txn, "test"));
 
 		// Update one of the properties and add another
-		TransportConfig c1 = new TransportConfig();
-		c1.put("bar", "baz");
-		c1.put("bam", "bam");
-		db.mergeConfig(txn, transportId, c1);
-		TransportConfig merged = new TransportConfig();
+		Settings s1 = new Settings();
+		s1.put("bar", "baz");
+		s1.put("bam", "bam");
+		db.mergeSettings(txn, s1, "test");
+		Settings merged = new Settings();
 		merged.put("foo", "foo");
 		merged.put("bar", "baz");
 		merged.put("bam", "bam");
-		assertEquals(merged, db.getConfig(txn, transportId));
+		assertEquals(merged, db.getSettings(txn, "test"));
 
 		db.commitTransaction(txn);
 		db.close();
diff --git a/briar-tests/src/org/briarproject/plugins/DuplexClientTest.java b/briar-tests/src/org/briarproject/plugins/DuplexClientTest.java
index 640632b4de03471cc039145d809a4325a608e9b5..ebfedddbdff8889d8a45d68b3e85c7643a4ee95c 100644
--- a/briar-tests/src/org/briarproject/plugins/DuplexClientTest.java
+++ b/briar-tests/src/org/briarproject/plugins/DuplexClientTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.plugins;
 
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.ContactId;
 import org.briarproject.api.crypto.PseudoRandom;
@@ -58,19 +58,19 @@ public abstract class DuplexClientTest extends DuplexTest {
 
 	protected static class ClientCallback implements DuplexPluginCallback {
 
-		private TransportConfig config = null;
+		private Settings settings = null;
 		private TransportProperties local = null;
 		private Map<ContactId, TransportProperties> remote = null;
 
-		public ClientCallback(TransportConfig config, TransportProperties local,
+		public ClientCallback(Settings settings, TransportProperties local,
 				Map<ContactId, TransportProperties> remote) {
-			this.config = config;
+			this.settings = settings;
 			this.local = local;
 			this.remote = remote;
 		}
 
-		public TransportConfig getConfig() {
-			return config;
+		public Settings getSettings() {
+			return settings;
 		}
 
 		public TransportProperties getLocalProperties() {
@@ -81,8 +81,8 @@ public abstract class DuplexClientTest extends DuplexTest {
 			return remote;
 		}
 
-		public void mergeConfig(TransportConfig c) {
-			config = c;
+		public void mergeSettings(Settings s) {
+			settings = s;
 		}
 
 		public void mergeLocalProperties(TransportProperties p) {
diff --git a/briar-tests/src/org/briarproject/plugins/DuplexServerTest.java b/briar-tests/src/org/briarproject/plugins/DuplexServerTest.java
index 134bf36b69fca9b9225ffb19f0ec0ef52a67f75e..fe2323c1b96e9d1ed83a3b9622e4d15a2d9da235 100644
--- a/briar-tests/src/org/briarproject/plugins/DuplexServerTest.java
+++ b/briar-tests/src/org/briarproject/plugins/DuplexServerTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.plugins;
 
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.ContactId;
 import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
@@ -57,19 +57,19 @@ public abstract class DuplexServerTest extends DuplexTest {
 
 		private final CountDownLatch latch = new CountDownLatch(1);
 
-		private TransportConfig config;
+		private Settings settings;
 		private TransportProperties local;
 		private Map<ContactId, TransportProperties> remote;
 
-		public ServerCallback(TransportConfig config, TransportProperties local,
+		public ServerCallback(Settings settings, TransportProperties local,
 				Map<ContactId, TransportProperties> remote) {
-			this.config = config;
+			this.settings = settings;
 			this.local = local;
 			this.remote = remote;
 		}
 
-		public TransportConfig getConfig() {
-			return config;
+		public Settings getSettings() {
+			return settings;
 		}
 
 		public TransportProperties getLocalProperties() {
@@ -80,8 +80,8 @@ public abstract class DuplexServerTest extends DuplexTest {
 			return remote;
 		}
 
-		public void mergeConfig(TransportConfig c) {
-			config = c;
+		public void mergeSettings(Settings s) {
+			settings = s;
 		}
 
 		public void mergeLocalProperties(TransportProperties p) {
diff --git a/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothClientTest.java b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothClientTest.java
index 02e0a343efceb6d687947b4583cde192f0456686..caf7f75142cb25fc1c97565b26cbbc84ce1c8632 100644
--- a/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothClientTest.java
+++ b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothClientTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.plugins.bluetooth;
 
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.ContactId;
 import org.briarproject.plugins.DuplexClientTest;
@@ -25,7 +25,7 @@ public class BluetoothClientTest extends DuplexClientTest {
 		Map<ContactId, TransportProperties> remote =
 				Collections.singletonMap(contactId, p);
 		// Create the plugin
-		callback = new ClientCallback(new TransportConfig(),
+		callback = new ClientCallback(new Settings(),
 				new TransportProperties(), remote);
 		plugin = new BluetoothPlugin(executor, new SystemClock(),
 				new SecureRandom(), callback, 0, 0);
diff --git a/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothServerTest.java b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothServerTest.java
index 671a0a413e8cf57437e6641fa89813818862516f..ca71e8cf083627cd03134075c8ace09925f24302 100644
--- a/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothServerTest.java
+++ b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothServerTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.plugins.bluetooth;
 
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.plugins.DuplexServerTest;
 import org.briarproject.system.SystemClock;
@@ -20,7 +20,7 @@ public class BluetoothServerTest extends DuplexServerTest {
 		TransportProperties local = new TransportProperties();
 		local.put("uuid", BluetoothTest.EMPTY_UUID);
 		// Create the plugin
-		callback = new ServerCallback(new TransportConfig(), local,
+		callback = new ServerCallback(new Settings(), local,
 				Collections.singletonMap(contactId, new TransportProperties()));
 		plugin = new BluetoothPlugin(executor, new SystemClock(),
 				new SecureRandom(), callback, 0, 0);
diff --git a/briar-tests/src/org/briarproject/plugins/tcp/LanTcpClientTest.java b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpClientTest.java
index 4975d78c1004e5598252e410afd3a6a8b3bde027..8ad17b59ce7821f80c5bc9b7b026630ca006bacc 100644
--- a/briar-tests/src/org/briarproject/plugins/tcp/LanTcpClientTest.java
+++ b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpClientTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.plugins.tcp;
 
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.ContactId;
 import org.briarproject.plugins.DuplexClientTest;
@@ -28,7 +28,7 @@ public class LanTcpClientTest extends DuplexClientTest {
 		Map<ContactId, TransportProperties> remote =
 				Collections.singletonMap(contactId, p);
 		// Create the plugin
-		callback = new ClientCallback(new TransportConfig(),
+		callback = new ClientCallback(new Settings(),
 				new TransportProperties(), remote);
 		plugin = new LanTcpPlugin(executor, callback,  MAX_LATENCY,
 				MAX_IDLE_TIME, POLLING_INTERVAL);
diff --git a/briar-tests/src/org/briarproject/plugins/tcp/LanTcpPluginTest.java b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpPluginTest.java
index 96f730d3c7201199a6bea04ddb8266b82e5b101e..cd52f2622eb2e3acff26cac143f964458caec7a7 100644
--- a/briar-tests/src/org/briarproject/plugins/tcp/LanTcpPluginTest.java
+++ b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpPluginTest.java
@@ -1,7 +1,7 @@
 package org.briarproject.plugins.tcp;
 
 import org.briarproject.BriarTestCase;
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.api.contact.ContactId;
 import org.briarproject.api.plugins.duplex.DuplexPlugin;
@@ -176,8 +176,8 @@ public class LanTcpPluginTest extends BriarTestCase {
 		private final CountDownLatch connectionsLatch = new CountDownLatch(1);
 		private final TransportProperties local = new TransportProperties();
 
-		public TransportConfig getConfig() {
-			return new TransportConfig();
+		public Settings getSettings() {
+			return new Settings();
 		}
 
 		public TransportProperties getLocalProperties() {
@@ -188,7 +188,7 @@ public class LanTcpPluginTest extends BriarTestCase {
 			return remote;
 		}
 
-		public void mergeConfig(TransportConfig c) {}
+		public void mergeSettings(Settings s) {}
 
 		public void mergeLocalProperties(TransportProperties p) {
 			local.putAll(p);
diff --git a/briar-tests/src/org/briarproject/plugins/tcp/LanTcpServerTest.java b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpServerTest.java
index 3a48a71c96efb9a68a20972943a88263831989c2..b415cc194fd62a860b87f5551f065d4fd3232879 100644
--- a/briar-tests/src/org/briarproject/plugins/tcp/LanTcpServerTest.java
+++ b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpServerTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.plugins.tcp;
 
-import org.briarproject.api.TransportConfig;
+import org.briarproject.api.Settings;
 import org.briarproject.api.TransportProperties;
 import org.briarproject.plugins.DuplexServerTest;
 
@@ -18,7 +18,7 @@ public class LanTcpServerTest extends DuplexServerTest {
 	private static final int POLLING_INTERVAL = 60 * 1000;
 
 	private LanTcpServerTest(Executor executor) {
-		callback = new ServerCallback(new TransportConfig(),
+		callback = new ServerCallback(new Settings(),
 				new TransportProperties(),
 				Collections.singletonMap(contactId, new TransportProperties()));
 		plugin = new LanTcpPlugin(executor, callback, MAX_LATENCY,