diff --git a/briar-android/AndroidManifest.xml b/briar-android/AndroidManifest.xml
index a96f393207beee336ffdf5635f2acee6f0603fe7..a83ed165c66079bd9b31286c558e3c36082443e9 100644
--- a/briar-android/AndroidManifest.xml
+++ b/briar-android/AndroidManifest.xml
@@ -5,7 +5,7 @@
 	android:versionName="0.11" >
 
 	<uses-sdk
-		android:minSdkVersion="7"
+		android:minSdkVersion="9"
 		android:targetSdkVersion="22"
 	/>
 
diff --git a/briar-android/src/org/briarproject/android/SplashScreenActivity.java b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
index 72e3d788c152f554fae923b6088a98ae2793d082..fe59ace102f1604efbf361ff471e810545a688b1 100644
--- a/briar-android/src/org/briarproject/android/SplashScreenActivity.java
+++ b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
@@ -1,27 +1,8 @@
 package org.briarproject.android;
 
-import static android.view.Gravity.CENTER;
-import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
-import static java.util.logging.Level.INFO;
-import static org.briarproject.android.TestingConstants.DEFAULT_LOG_LEVEL;
-import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS;
-import static org.briarproject.android.TestingConstants.TESTING;
-import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
-
-import java.io.File;
-import java.util.logging.Logger;
-
-import org.briarproject.R;
-import org.briarproject.android.util.LayoutUtils;
-import org.briarproject.api.db.DatabaseConfig;
-
-import roboguice.RoboGuice;
-import roboguice.activity.RoboSplashActivity;
-import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Color;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.StrictMode;
 import android.os.StrictMode.ThreadPolicy;
@@ -31,6 +12,24 @@ import android.widget.LinearLayout;
 
 import com.google.inject.Injector;
 
+import org.briarproject.R;
+import org.briarproject.android.util.LayoutUtils;
+import org.briarproject.api.db.DatabaseConfig;
+
+import java.io.File;
+import java.util.logging.Logger;
+
+import roboguice.RoboGuice;
+import roboguice.activity.RoboSplashActivity;
+
+import static android.view.Gravity.CENTER;
+import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
+import static java.util.logging.Level.INFO;
+import static org.briarproject.android.TestingConstants.DEFAULT_LOG_LEVEL;
+import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS;
+import static org.briarproject.android.TestingConstants.TESTING;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+
 public class SplashScreenActivity extends RoboSplashActivity {
 
 	private static final Logger LOG =
@@ -91,9 +90,8 @@ public class SplashScreenActivity extends RoboSplashActivity {
 		}
 	}
 
-	@SuppressLint("NewApi")
 	private void enableStrictMode() {
-		if (TESTING && Build.VERSION.SDK_INT >= 9) {
+		if (TESTING) {
 			ThreadPolicy.Builder threadPolicy = new ThreadPolicy.Builder();
 			threadPolicy.detectAll();
 			threadPolicy.penaltyLog();
diff --git a/briar-android/src/org/briarproject/android/util/AndroidUtils.java b/briar-android/src/org/briarproject/android/util/AndroidUtils.java
index 4f0ef6327e0b0824875254589eb02e58e4710ea1..a2be6e9e890bf3737f7e7fb83ec86d9c429eaa83 100644
--- a/briar-android/src/org/briarproject/android/util/AndroidUtils.java
+++ b/briar-android/src/org/briarproject/android/util/AndroidUtils.java
@@ -1,26 +1,25 @@
 package org.briarproject.android.util;
 
+import android.annotation.SuppressLint;
+import android.os.Build;
+
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
-import android.annotation.SuppressLint;
-import android.os.Build;
-
 public class AndroidUtils {
 
 	@SuppressLint("NewApi")
 	@SuppressWarnings("deprecation")
 	public static Collection<String> getSupportedArchitectures() {
-		List<String> abis = new ArrayList<String>();
+		List<String> abis = new ArrayList<>();
 		if (Build.VERSION.SDK_INT >= 21) {
-			for (String abi : Build.SUPPORTED_ABIS) abis.add(abi);
-		} else if (Build.VERSION.SDK_INT >= 8) {
-			abis.add(Build.CPU_ABI);
-			if (Build.CPU_ABI2 != null) abis.add(Build.CPU_ABI2);
+			abis.addAll(Arrays.asList(Build.SUPPORTED_ABIS));
 		} else {
 			abis.add(Build.CPU_ABI);
+			if (Build.CPU_ABI2 != null) abis.add(Build.CPU_ABI2);
 		}
 		return Collections.unmodifiableList(abis);
 	}
diff --git a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
index a916ac677d219d54c7bb4465e679f52b54eaf00b..a700830caaa5b0524dd6f0c14587107b5d9dc9fd 100644
--- a/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
@@ -1,12 +1,26 @@
 package org.briarproject.plugins.tor;
 
-import static android.content.Context.CONNECTIVITY_SERVICE;
-import static android.content.Context.MODE_PRIVATE;
-import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
-import static android.net.ConnectivityManager.EXTRA_NO_CONNECTIVITY;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static java.util.logging.Level.INFO;
-import static java.util.logging.Level.WARNING;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.os.FileObserver;
+
+import net.freehaven.tor.control.EventHandler;
+import net.freehaven.tor.control.TorControlConnection;
+
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.PseudoRandom;
+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.util.StringUtils;
 
 import java.io.EOFException;
 import java.io.File;
@@ -29,31 +43,16 @@ import java.util.logging.Logger;
 import java.util.regex.Pattern;
 import java.util.zip.ZipInputStream;
 
-import net.freehaven.tor.control.EventHandler;
-import net.freehaven.tor.control.TorControlConnection;
-
-import org.briarproject.api.ContactId;
-import org.briarproject.api.TransportConfig;
-import org.briarproject.api.TransportId;
-import org.briarproject.api.TransportProperties;
-import org.briarproject.api.crypto.PseudoRandom;
-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.util.StringUtils;
-
 import socks.Socks5Proxy;
 import socks.SocksSocket;
-import android.annotation.SuppressLint;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.os.Build;
-import android.os.FileObserver;
+
+import static android.content.Context.CONNECTIVITY_SERVICE;
+import static android.content.Context.MODE_PRIVATE;
+import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
+import static android.net.ConnectivityManager.EXTRA_NO_CONNECTIVITY;
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static java.util.logging.Level.INFO;
+import static java.util.logging.Level.WARNING;
 
 class TorPlugin implements DuplexPlugin, EventHandler {
 
@@ -228,7 +227,7 @@ class TorPlugin implements DuplexPlugin, EventHandler {
 			out = new FileOutputStream(torFile);
 			copy(in, out);
 			// Make the Tor binary executable
-			if (!setExecutable(torFile)) {
+			if (!torFile.setExecutable(true, true)) {
 				LOG.warning("Could not make Tor binary executable");
 				return false;
 			}
@@ -301,26 +300,6 @@ class TorPlugin implements DuplexPlugin, EventHandler {
 		out.close();
 	}
 
-	@SuppressLint("NewApi")
-	private boolean setExecutable(File f) {
-		if (Build.VERSION.SDK_INT >= 9) {
-			return f.setExecutable(true, true);
-		} else {
-			String[] command = { "chmod", "700", f.getAbsolutePath() };
-			try {
-				return Runtime.getRuntime().exec(command).waitFor() == 0;
-			} catch (IOException e) {
-				if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
-			} catch (InterruptedException e) {
-				LOG.warning("Interrupted while executing chmod");
-				Thread.currentThread().interrupt();
-			} catch (SecurityException e) {
-				if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e);
-			}
-			return false;
-		}
-	}
-
 	private void tryToClose(InputStream in) {
 		try {
 			if (in != null) in.close();
diff --git a/briar-android/src/org/briarproject/system/AndroidFileUtils.java b/briar-android/src/org/briarproject/system/AndroidFileUtils.java
index ae8f3e7bb340ccb85227fa5d9f0ac7881ebf43f0..c0beb54d8111d89102f5c8d60768c0dcf7908895 100644
--- a/briar-android/src/org/briarproject/system/AndroidFileUtils.java
+++ b/briar-android/src/org/briarproject/system/AndroidFileUtils.java
@@ -1,31 +1,17 @@
 package org.briarproject.system;
 
-import java.io.File;
-import java.io.IOException;
-
 import org.briarproject.api.system.FileUtils;
 
-import android.annotation.SuppressLint;
-import android.os.Build;
-import android.os.StatFs;
+import java.io.File;
+import java.io.IOException;
 
 public class AndroidFileUtils implements FileUtils {
 
-	@SuppressLint("NewApi")
-	@SuppressWarnings("deprecation")
 	public long getTotalSpace(File f) throws IOException {
-		if (Build.VERSION.SDK_INT >= 9) return f.getTotalSpace();
-		StatFs s = new StatFs(f.getAbsolutePath());
-		// These deprecated methods are the best thing available for SDK < 9
-		return (long) s.getBlockCount() * s.getBlockSize();
+		return f.getTotalSpace();
 	}
 
-	@SuppressLint("NewApi")
-	@SuppressWarnings("deprecation")
 	public long getFreeSpace(File f) throws IOException {
-		if (Build.VERSION.SDK_INT >= 9) return f.getUsableSpace();
-		StatFs s = new StatFs(f.getAbsolutePath());
-		// These deprecated methods are the best thing available for SDK < 9
-		return (long) s.getAvailableBlocks() * s.getBlockSize();
+		return f.getUsableSpace();
 	}
 }
diff --git a/briar-android/src/org/briarproject/system/AndroidSeedProvider.java b/briar-android/src/org/briarproject/system/AndroidSeedProvider.java
index 530e4b3ca338d391e7025ccc33357f398b7844f4..521f3d75863e5e2c91452ac8f1069504a87a6528 100644
--- a/briar-android/src/org/briarproject/system/AndroidSeedProvider.java
+++ b/briar-android/src/org/briarproject/system/AndroidSeedProvider.java
@@ -1,25 +1,19 @@
 package org.briarproject.system;
 
+import android.os.Build;
+
 import java.io.DataOutputStream;
 import java.io.IOException;
 
-import android.annotation.SuppressLint;
-import android.os.Build;
-
 class AndroidSeedProvider extends LinuxSeedProvider {
 
 	@Override
-	@SuppressLint("NewApi")
 	void writeToEntropyPool(DataOutputStream out) throws IOException {
 		out.writeInt(android.os.Process.myPid());
 		out.writeInt(android.os.Process.myTid());
 		out.writeInt(android.os.Process.myUid());
-		String fingerprint = Build.FINGERPRINT;
-		if (fingerprint != null) out.writeUTF(fingerprint);
-		if (Build.VERSION.SDK_INT >= 9) {
-			String serial = Build.SERIAL;
-			if (serial != null) out.writeUTF(serial);
-		}
+		if (Build.FINGERPRINT != null) out.writeUTF(Build.FINGERPRINT);
+		if (Build.SERIAL != null) out.writeUTF(Build.SERIAL);
 		super.writeToEntropyPool(out);
 	}
 }
diff --git a/briar-api/briar-api.iml b/briar-api/briar-api.iml
index 896f2a87ac972ec0f543774067cf932722aa1d10..c1ef8459b12109a50cde94e67b8f0d874a4e41bf 100644
--- a/briar-api/briar-api.iml
+++ b/briar-api/briar-api.iml
@@ -28,5 +28,6 @@
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="library" exported="" name="guice-3.0-no_aop" level="project" />
     <orderEntry type="library" exported="" name="javax.inject" level="project" />
+    <orderEntry type="library" exported="" name="briar-api.briar-api" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/briar-core/briar-core.iml b/briar-core/briar-core.iml
index d345bcd800c581d273d6fab6ddf034c1f0e3ed38..6db499bfb8be658999a675f9f5cb33a3b19ce96a 100644
--- a/briar-core/briar-core.iml
+++ b/briar-core/briar-core.iml
@@ -32,5 +32,6 @@
     <orderEntry type="library" exported="" name="h2small-1.3.170" level="project" />
     <orderEntry type="library" exported="" name="lcrypto-jdk15on-152" level="project" />
     <orderEntry type="library" exported="" name="weupnp-0.1.3-SNAPSHOT-briar" level="project" />
+    <orderEntry type="library" exported="" name="briar-core.briar-core" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/briar-desktop/briar-desktop.iml b/briar-desktop/briar-desktop.iml
index 16beec0b7c67e492d5ea4df0ce4f81ec28736c89..cb1b15a1dd37cc2ebc0685ef0e23e3cf2593604b 100644
--- a/briar-desktop/briar-desktop.iml
+++ b/briar-desktop/briar-desktop.iml
@@ -39,5 +39,6 @@
     <orderEntry type="library" exported="" name="jnotify-0.94" level="project" />
     <orderEntry type="library" exported="" name="bluecove-gpl-2.1.1-SNAPSHOT" level="project" />
     <orderEntry type="library" exported="" name="jssc-0.9-briar" level="project" />
+    <orderEntry type="library" exported="" name="briar-desktop.briar-desktop" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/briar-tests/briar-tests.iml b/briar-tests/briar-tests.iml
index 778557c56bc1098fc3537d0933d658daf6e68132..50b0b9e7081eee6105806acc202f45cb7db4d46e 100644
--- a/briar-tests/briar-tests.iml
+++ b/briar-tests/briar-tests.iml
@@ -43,5 +43,6 @@
     <orderEntry type="library" exported="" name="jmock-2.5.1" level="project" />
     <orderEntry type="library" exported="" name="hamcrest-core-1.1" level="project" />
     <orderEntry type="library" exported="" name="hamcrest-library-1.1" level="project" />
+    <orderEntry type="library" exported="" name="briar-tests.briar-tests" level="project" />
   </component>
 </module>
\ No newline at end of file