diff --git a/briar-android/src/org/briarproject/android/AndroidNotificationManagerImpl.java b/briar-android/src/org/briarproject/android/AndroidNotificationManagerImpl.java
index fac266a436570c888694adafd5fd7ee82f91e8fd..12cf46b24b42adfe3ef78262f4a3b2563e71a95f 100644
--- a/briar-android/src/org/briarproject/android/AndroidNotificationManagerImpl.java
+++ b/briar-android/src/org/briarproject/android/AndroidNotificationManagerImpl.java
@@ -42,6 +42,7 @@ import static android.content.Context.NOTIFICATION_SERVICE;
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
 import static android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP;
 import static java.util.logging.Level.WARNING;
+import static org.briarproject.android.fragment.SettingsFragment.SETTINGS_NAMESPACE;
 
 class AndroidNotificationManagerImpl implements AndroidNotificationManager,
 		Service, EventListener {
@@ -97,7 +98,7 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager,
 		dbExecutor.execute(new Runnable() {
 			public void run() {
 				try {
-					settings = db.getSettings("settings-activity");
+					settings = db.getSettings(SETTINGS_NAMESPACE);
 				} catch (DbException e) {
 					if (LOG.isLoggable(WARNING))
 						LOG.log(WARNING, e.toString(), e);
@@ -135,7 +136,8 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager,
 
 	public void eventOccurred(Event e) {
 		if (e instanceof SettingsUpdatedEvent) {
-			loadSettings();
+			SettingsUpdatedEvent s = (SettingsUpdatedEvent) e;
+			if (s.getNamespace().equals(SETTINGS_NAMESPACE)) loadSettings();
 		} else if (e instanceof MessageValidatedEvent) {
 			MessageValidatedEvent m = (MessageValidatedEvent) e;
 			if (m.isValid() && !m.isLocal()) {
diff --git a/briar-android/src/org/briarproject/android/fragment/SettingsFragment.java b/briar-android/src/org/briarproject/android/fragment/SettingsFragment.java
index 71f70d09c26eda400b8af18de0fbebd8578c6f8c..aacd149fc58dd15318714ed52ca5e201c4d76624 100644
--- a/briar-android/src/org/briarproject/android/fragment/SettingsFragment.java
+++ b/briar-android/src/org/briarproject/android/fragment/SettingsFragment.java
@@ -28,7 +28,6 @@ import org.briarproject.android.util.ListLoadingProgressBar;
 import org.briarproject.api.db.DatabaseComponent;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.event.Event;
-import org.briarproject.api.event.EventBus;
 import org.briarproject.api.event.SettingsUpdatedEvent;
 import org.briarproject.api.settings.Settings;
 import org.briarproject.api.settings.SettingsManager;
@@ -38,6 +37,7 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
+import static android.app.Activity.RESULT_OK;
 import static android.graphics.Typeface.DEFAULT_BOLD;
 import static android.media.RingtoneManager.ACTION_RINGTONE_PICKER;
 import static android.media.RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI;
@@ -55,16 +55,15 @@ import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.android.TestingConstants.SHOW_TESTING_ACTIVITY;
-import static android.app.Activity.RESULT_OK;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
-public class SettingsFragment extends BaseFragment implements
+public class SettingsFragment extends BaseEventFragment implements
 		View.OnClickListener {
 
-	public final static String TAG = "SettingsFragment";
-
+	public static final String TAG = "SettingsFragment";
 	public static final int REQUEST_RINGTONE = 2;
+	public static final String SETTINGS_NAMESPACE = "android-ui";
 
 	private static final Logger LOG =
 			Logger.getLogger(SettingsFragment.class.getName());
@@ -82,9 +81,8 @@ public class SettingsFragment extends BaseFragment implements
 	// 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;
+	private volatile boolean bluetoothSetting = false, torSetting = false;
 
 	public static SettingsFragment newInstance() {
 
@@ -282,7 +280,7 @@ public class SettingsFragment extends BaseFragment implements
 			public void run() {
 				try {
 					long now = System.currentTimeMillis();
-					settings = settingsManager.getSettings("settings-activity");
+					settings = settingsManager.getSettings(SETTINGS_NAMESPACE);
 					Settings btSettings = settingsManager.getSettings("bt");
 					Settings torSettings = settingsManager.getSettings("tor");
 					long duration = System.currentTimeMillis() - now;
@@ -360,7 +358,8 @@ public class SettingsFragment extends BaseFragment implements
 					notifyPrivateMessages.isChecked());
 			storeSettings(s);
 		} else if (view == panicSettings || view == panicSettingsHint) {
-			startActivity(new Intent(getActivity(), PanicPreferencesActivity.class));
+			startActivity(new Intent(getActivity(),
+					PanicPreferencesActivity.class));
 		} else if (view == notifyForumPosts) {
 			Settings s = new Settings();
 			s.putBoolean("notifyForumPosts", notifyForumPosts.isChecked());
@@ -431,8 +430,7 @@ public class SettingsFragment extends BaseFragment implements
 			public void run() {
 				try {
 					long now = System.currentTimeMillis();
-					settingsManager
-							.mergeSettings(settings, "settings-activity");
+					settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE);
 					long duration = System.currentTimeMillis() - now;
 					if (LOG.isLoggable(INFO))
 						LOG.info("Merging settings took " + duration + " ms");
@@ -475,10 +473,15 @@ public class SettingsFragment extends BaseFragment implements
 		}
 	}
 
+	@Override
 	public void eventOccurred(Event e) {
 		if (e instanceof SettingsUpdatedEvent) {
-			LOG.info("Settings updated");
-			loadSettings();
+			String namespace = ((SettingsUpdatedEvent) e).getNamespace();
+			if (namespace.equals("bt") || namespace.equals("tor")
+					|| namespace.equals(SETTINGS_NAMESPACE)) {
+				LOG.info("Settings updated");
+				loadSettings();
+			}
 		}
 	}
 }
diff --git a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
index b6c2f345ade8651a31c2e12bf12743bae5142516..b0cc91746d57a6955d2c5b631d97258e8a2ba361 100644
--- a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
@@ -596,8 +596,10 @@ class TorPlugin implements DuplexPlugin, EventHandler,
 
 	public void eventOccurred(Event e) {
 		if (e instanceof SettingsUpdatedEvent) {
-			// Wifi setting may have been updated
-			updateConnectionStatus();
+			if (((SettingsUpdatedEvent) e).getNamespace().equals("tor")) {
+				// Wifi setting may have been updated
+				updateConnectionStatus();
+			}
 		}
 	}
 
diff --git a/briar-api/src/org/briarproject/api/event/SettingsUpdatedEvent.java b/briar-api/src/org/briarproject/api/event/SettingsUpdatedEvent.java
index 2f369891b5e876bac5bc0a2497955699c59d5284..ef25719aaaebe87e58bc9182bd57ea6e6b9ea6d0 100644
--- a/briar-api/src/org/briarproject/api/event/SettingsUpdatedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/SettingsUpdatedEvent.java
@@ -3,4 +3,13 @@ package org.briarproject.api.event;
 /** An event that is broadcast when one or more settings are updated. */
 public class SettingsUpdatedEvent extends Event {
 
+	private final String namespace;
+
+	public SettingsUpdatedEvent(String namespace) {
+		this.namespace = namespace;
+	}
+
+	public String getNamespace() {
+		return namespace;
+	}
 }
diff --git a/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
index b303939cd3e813826af029b06966332b1ec1efd7..676b64204106c10c976b38d420a8eccb15f74d68 100644
--- a/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
+++ b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
@@ -930,15 +930,11 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
 	}
 
 	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, namespace))) {
-					db.mergeSettings(txn, s, namespace);
-					changed = true;
-				}
+				db.mergeSettings(txn, s, namespace);
 				db.commitTransaction(txn);
 			} catch (DbException e) {
 				db.abortTransaction(txn);
@@ -947,7 +943,7 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
 		} finally {
 			lock.writeLock().unlock();
 		}
-		if (changed) eventBus.broadcast(new SettingsUpdatedEvent());
+		eventBus.broadcast(new SettingsUpdatedEvent(namespace));
 	}
 
 	public void receiveAck(ContactId c, Ack a) throws DbException {