diff --git a/.gitignore b/.gitignore
index d685e3e2e675ffcf9731ced62a06ab37f83b674d..8e2753bcf7339dd8cf5880860594827cec1b8ade 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,4 @@ local.properties
 .gradle
 build/
 *.iml
+projectFilesBackup/
\ No newline at end of file
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java
index 3fb1d8d51d27962aa44983a7aa9ee782048e20f0..8178224499ebbf5f0945a18f129b919c42c7145c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BriarActivity.java
@@ -14,7 +14,7 @@ import android.view.Window;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.controller.BriarController;
 import org.briarproject.briar.android.controller.DbController;
-import org.briarproject.briar.android.controller.handler.UiResultHandler;
+import org.briarproject.briar.android.controller.handler.ResultHandler;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.login.PasswordActivity;
 import org.briarproject.briar.android.panic.ExitActivity;
@@ -116,17 +116,28 @@ public abstract class BriarActivity extends BaseActivity {
 	}
 
 	protected void signOut(final boolean removeFromRecentApps) {
-		briarController.signOut(new UiResultHandler<Void>(this) {
-			@Override
-			public void onResultUi(Void result) {
-				if (removeFromRecentApps) startExitActivity();
-				else finishAndExit();
-			}
-		});
+		if (briarController.hasEncryptionKey()) {
+			// Don't use UiResultHandler because we want the result even if
+			// this activity has been destroyed
+			briarController.signOut(new ResultHandler<Void>() {
+				@Override
+				public void onResult(Void result) {
+					runOnUiThread(new Runnable() {
+						@Override
+						public void run() {
+							exit(removeFromRecentApps);
+						}
+					});
+				}
+			});
+		} else {
+			exit(removeFromRecentApps);
+		}
 	}
 
-	protected void signOut() {
-		signOut(false);
+	private void exit(boolean removeFromRecentApps) {
+		if (removeFromRecentApps) startExitActivity();
+		else finishAndExit();
 	}
 
 	private void startExitActivity() {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
index f118def4a3ca0f1725421e2e67f7bd6bd7272ccf..c0927dc1206cd2cde7bed40d7953e30db67e932c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java
@@ -188,7 +188,7 @@ public class NavDrawerActivity extends BriarActivity implements
 		} else if (getSupportFragmentManager().getBackStackEntryCount() == 0 &&
 				getSupportFragmentManager()
 						.findFragmentByTag(ContactListFragment.TAG) == null) {
-			/**
+			/*
 			 * This Makes sure that the first fragment (ContactListFragment) the
 			 * user sees is the same as the last fragment the user sees before
 			 * exiting. This models the typical Google navigation behaviour such
@@ -212,11 +212,10 @@ public class NavDrawerActivity extends BriarActivity implements
 		drawerToggle.onConfigurationChanged(newConfig);
 	}
 
-	@Override
-	protected void signOut() {
+	private void signOut() {
 		drawerLayout.setDrawerLockMode(LOCK_MODE_LOCKED_CLOSED);
 		startFragment(new SignOutFragment());
-		super.signOut();
+		signOut(false);
 	}
 
 	private void startFragment(BaseFragment fragment, int itemId){
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java
index 73d3f018046ae09640bbe303526329518abe3858..82534f99f7c07d81d8f3c6d34e42c0e37a945499 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/panic/PanicResponderActivity.java
@@ -57,8 +57,7 @@ public class PanicResponderActivity extends BriarActivity {
 				LOG.info("Received Panic Trigger...");
 
 				if (PanicResponder.receivedTriggerFromConnectedApp(this)) {
-					LOG.info("Panic Trigger came from connected app.");
-					LOG.info("Performing destructive responses...");
+					LOG.info("Panic Trigger came from connected app");
 
 					// Performing panic responses
 					if (sharedPref.getBoolean(KEY_UNINSTALL, false)) {
@@ -73,21 +72,13 @@ public class PanicResponderActivity extends BriarActivity {
 					} else if (sharedPref.getBoolean(KEY_PURGE, false)) {
 						LOG.info("Purging all data...");
 						deleteAllData();
-					} else if (sharedPref.getBoolean(KEY_LOCK, false)) {
+					} else if (sharedPref.getBoolean(KEY_LOCK, true)) {
 						LOG.info("Signing out...");
 						signOut(true);
 					}
 				}
 			}
 		}
-		// received intent from non-trusted app
-		else {
-			intent = getIntent();
-			if (intent != null && Panic.isTriggerIntent(intent)) {
-				LOG.info("Signing out...");
-				signOut(true);
-			}
-		}
 
 		if (Build.VERSION.SDK_INT >= 21) {
 			finishAndRemoveTask();