diff --git a/bramble-android/build.gradle b/bramble-android/build.gradle
index 5f8a1535a5c7efae7ccc8d84e41324b104aa5df9..80e9d6fd31c906918fa9089b83d0eccc66e0e9d1 100644
--- a/bramble-android/build.gradle
+++ b/bramble-android/build.gradle
@@ -25,7 +25,7 @@ android {
 
 dependencies {
 	compile project(':bramble-core')
-	compile fileTree(dir: 'libs', include: ['*.jar'])
+	compile fileTree(dir: 'libs', include: '*.jar')
 	provided 'javax.annotation:jsr250-api:1.0'
 }
 
diff --git a/bramble-api/build.gradle b/bramble-api/build.gradle
index a9d8c10c3a4124f809d7251d64bfcaa6a0d50882..f1d0018e602664d0727c51f89bec899f25c6d102 100644
--- a/bramble-api/build.gradle
+++ b/bramble-api/build.gradle
@@ -7,12 +7,12 @@ apply plugin: 'witness'
 dependencies {
 	compile "com.google.dagger:dagger:2.0.2"
 	compile 'com.google.dagger:dagger-compiler:2.0.2'
-	compile 'com.google.code.findbugs:jsr305:3.0.1'
+	compile 'com.google.code.findbugs:jsr305:3.0.2'
 
 	testCompile 'junit:junit:4.12'
-	testCompile "org.jmock:jmock:2.8.1"
-	testCompile "org.jmock:jmock-junit4:2.8.1"
-	testCompile "org.jmock:jmock-legacy:2.8.1"
+	testCompile "org.jmock:jmock:2.8.2"
+	testCompile "org.jmock:jmock-junit4:2.8.2"
+	testCompile "org.jmock:jmock-legacy:2.8.2"
 	testCompile "org.hamcrest:hamcrest-library:1.3"
 	testCompile "org.hamcrest:hamcrest-core:1.3"
 }
@@ -21,7 +21,7 @@ dependencyVerification {
 	verify = [
 			'com.google.dagger:dagger:84c0282ed8be73a29e0475d639da030b55dee72369e58dd35ae7d4fe6243dcf9',
 			'com.google.dagger:dagger-compiler:b74bc9de063dd4c6400b232231f2ef5056145b8fbecbf5382012007dd1c071b3',
-			'com.google.code.findbugs:jsr305:c885ce34249682bc0236b4a7d56efcc12048e6135a5baf7a9cde8ad8cda13fcd',
+			'com.google.code.findbugs:jsr305:766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7',
 			'javax.inject:javax.inject:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff',
 			'com.google.dagger:dagger-producers:99ec15e8a0507ba569e7655bc1165ee5e5ca5aa914b3c8f7e2c2458f724edd6b',
 			'com.google.guava:guava:d664fbfc03d2e5ce9cab2a44fb01f1d0bf9dfebeccc1a473b1f9ea31f79f6f99',
diff --git a/bramble-core/build.gradle b/bramble-core/build.gradle
index ffc432b2898a2076b0a28e3886e774a5f2d16dc0..565deb026ea6ba6820ffc084a735e8c05e42d40b 100644
--- a/bramble-core/build.gradle
+++ b/bramble-core/build.gradle
@@ -1,8 +1,9 @@
 plugins {
-	id "java"
-	id "net.ltgt.apt" version "0.9"
-	id "idea"
+	id 'java'
+	id 'net.ltgt.apt' version '0.9'
+	id 'idea'
 }
+
 sourceCompatibility = 1.6
 targetCompatibility = 1.6
 
@@ -10,17 +11,18 @@ apply plugin: 'witness'
 
 dependencies {
 	compile project(':bramble-api')
-	compile fileTree(dir: 'libs', include: '*.jar')
-	compile 'com.madgag.spongycastle:core:1.54.0.0'
-	compile 'com.h2database:h2:1.4.190'
+	compile 'com.madgag.spongycastle:core:1.56.0.0'
+	compile 'com.h2database:h2:1.4.196'
+	compile 'org.bitlet:weupnp:0.1.4'
 
 	testCompile project(path: ':bramble-api', configuration: 'testOutput')
 }
 
 dependencyVerification {
 	verify = [
-			'com.madgag.spongycastle:core:1e7fa4b19ccccd1011364ab838d0b4702470c178bbbdd94c5c90b2d4d749ea1e',
-			'com.h2database:h2:23ba495a07bbbb3bd6c3084d10a96dad7a23741b8b6d64b213459a784195a98c'
+			'com.madgag.spongycastle:core:5e791b0eaa9e0c4594231b44f616a52adddb7dccedeb0ad9ad74887e19499a23',
+			'com.h2database:h2:0a05f4a0d5b85840148aadce63a423b5d3c36ef44756389b4faad08d2733faf5',
+			'org.bitlet:weupnp:88df7e6504929d00bdb832863761385c68ab92af945b04f0770b126270a444fb',
 	]
 }
 
diff --git a/bramble-core/libs/weupnp-0.1.3-SNAPSHOT-briar.jar b/bramble-core/libs/weupnp-0.1.3-SNAPSHOT-briar.jar
deleted file mode 100644
index fbcc8a9e710d802e4a960dd335b63b7302957da4..0000000000000000000000000000000000000000
Binary files a/bramble-core/libs/weupnp-0.1.3-SNAPSHOT-briar.jar and /dev/null differ
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/XSalsa20Poly1305AuthenticatedCipher.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/XSalsa20Poly1305AuthenticatedCipher.java
index 7bac148f2dca81aefe1bb14eac1aead460a555d6..fe1f38d9ec5900d7845663c7bd44ad7a0f9efe2a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/XSalsa20Poly1305AuthenticatedCipher.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/XSalsa20Poly1305AuthenticatedCipher.java
@@ -70,25 +70,7 @@ class XSalsa20Poly1305AuthenticatedCipher implements AuthenticatedCipher {
 			byte[] subKey = new byte[SUBKEY_LENGTH];
 			xSalsa20Engine.processBytes(zero, 0, SUBKEY_LENGTH, subKey, 0);
 
-			// Reverse the order of the Poly130 subkey
-			//
-			// NaCl and libsodium use the first 32 bytes of XSalsa20 as the
-			// subkey for crypto_onetimeauth_poly1305, which interprets it
-			// as r[0] ... r[15], k[0] ... k[15]. See section 9 of the NaCl
-			// paper (http://cr.yp.to/highspeed/naclcrypto-20090310.pdf),
-			// where the XSalsa20 output is defined as (r, s, t, ...).
-			//
-			// BC's Poly1305 implementation interprets the subkey as
-			// k[0] ... k[15], r[0] ... r[15] (per poly1305_aes_clamp in
-			// the reference implementation).
-			//
-			// To be NaCl-compatible, we reverse the subkey.
-			System.arraycopy(subKey, 0, zero, 0, SUBKEY_LENGTH / 2);
-			System.arraycopy(subKey, SUBKEY_LENGTH / 2, subKey, 0,
-					SUBKEY_LENGTH / 2);
-			System.arraycopy(zero, 0, subKey, SUBKEY_LENGTH / 2,
-					SUBKEY_LENGTH / 2);
-			// Now we can clamp the correct part of the subkey
+			// Clamp the subkey
 			Poly1305KeyGenerator.clamp(subKey);
 
 			// Initialize Poly1305 with the subkey
diff --git a/bramble-j2se/build.gradle b/bramble-j2se/build.gradle
index 5a874f7d9ca6538e5836a393f1077291b54748c5..e7e029e01ba18a9165118f70be3a42e91da61e95 100644
--- a/bramble-j2se/build.gradle
+++ b/bramble-j2se/build.gradle
@@ -7,10 +7,19 @@ apply plugin: 'witness'
 dependencies {
 	compile project(':bramble-core')
 	compile fileTree(dir: 'libs', include: '*.jar')
+	compile 'net.java.dev.jna:jna:4.4.0'
+	compile 'net.java.dev.jna:jna-platform:4.4.0'
 
 	testCompile project(path: ':bramble-core', configuration: 'testOutput')
 }
 
+dependencyVerification {
+	verify = [
+			'net.java.dev.jna:jna:c4dadeeecaa90c8847902082aee5eb107fcf59c5d0e63a17fcaf273c0e2d2bd1',
+			'net.java.dev.jna:jna-platform:e9dda9e884fc107eb6367710540789a12dfa8ad28be9326b22ca6e352e325499',
+	]
+}
+
 tasks.withType(Test) {
 	systemProperty 'java.library.path', 'libs'
 }
diff --git a/bramble-j2se/libs/jna-4.1.0.jar b/bramble-j2se/libs/jna-4.1.0.jar
deleted file mode 100644
index b1a3922fec1aa6124b3a307c3a9154e73aac4d75..0000000000000000000000000000000000000000
Binary files a/bramble-j2se/libs/jna-4.1.0.jar and /dev/null differ
diff --git a/bramble-j2se/libs/jna-platform-4.1.0.jar b/bramble-j2se/libs/jna-platform-4.1.0.jar
deleted file mode 100644
index 8d5fe3deeae9c2d502bf36bb9c3142d77d023824..0000000000000000000000000000000000000000
Binary files a/bramble-j2se/libs/jna-platform-4.1.0.jar and /dev/null differ
diff --git a/briar-android/build.gradle b/briar-android/build.gradle
index 5a189190840057cc947c3cb7891bfd8341639209..ce9a9aaaeeaa8e259cb12c4d892058c614c261ef 100644
--- a/briar-android/build.gradle
+++ b/briar-android/build.gradle
@@ -5,13 +5,10 @@ dependencies {
 	def supportVersion = '23.2.1'
 	compile project(':briar-core')
 	compile project(':bramble-android')
-	compile fileTree(dir: 'libs', include: '*.jar')
-
 	compile "com.android.support:support-v4:$supportVersion"
 	compile("com.android.support:appcompat-v7:$supportVersion") {
 		exclude module: 'support-v4'
 	}
-
 	compile("com.android.support:preference-v14:$supportVersion") {
 		exclude module: 'support-v4'
 	}
@@ -20,7 +17,7 @@ dependencies {
 		exclude module: 'recyclerview-v7'
 	}
 	compile "com.android.support:cardview-v7:$supportVersion"
-	compile 'com.android.support:support-annotations:23.4.0'
+	compile "com.android.support:support-annotations:$supportVersion"
 	compile('ch.acra:acra:4.8.5') {
 		exclude module: 'support-v4'
 		exclude module: 'support-annotations'
@@ -28,15 +25,16 @@ dependencies {
 	compile 'info.guardianproject.panic:panic:0.5'
 	compile 'info.guardianproject.trustedintents:trustedintents:0.2'
 	compile 'de.hdodenhof:circleimageview:2.1.0'
-	compile 'com.google.zxing:core:3.2.1'
-	provided 'javax.annotation:jsr250-api:1.0'
+	compile 'com.google.zxing:core:3.3.0'
 	compile 'com.jpardogo.materialtabstrip:library:1.1.0'
-	compile 'com.github.bumptech.glide:glide:3.7.0'
-	compile 'uk.co.samuelwall:material-tap-target-prompt:1.3.0'
+	compile 'com.github.bumptech.glide:glide:3.8.0'
+	compile 'uk.co.samuelwall:material-tap-target-prompt:1.9.2'
+
+	provided 'javax.annotation:jsr250-api:1.0'
 
 	testCompile project(path: ':bramble-core', configuration: 'testOutput')
 	testCompile 'org.robolectric:robolectric:3.0'
-	testCompile 'org.mockito:mockito-core:1.10.19'
+	testCompile 'org.mockito:mockito-core:2.8.9'
 }
 
 dependencyVerification {
@@ -45,20 +43,18 @@ dependencyVerification {
 			'info.guardianproject.panic:panic:a7ed9439826db2e9901649892cf9afbe76f00991b768d8f4c26332d7c9406cb2',
 			'info.guardianproject.trustedintents:trustedintents:6221456d8821a8d974c2acf86306900237cf6afaaa94a4c9c44e161350f80f3e',
 			'de.hdodenhof:circleimageview:bcbc588e19e6dcf8c120b1957776bfe229efba5d2fbe5da7156372eeacf65503',
-			'com.google.zxing:core:b4d82452e7a6bf6ec2698904b332431717ed8f9a850224f295aec89de80f2259',
-			'com.android.support:support-v4:81ce890f26d35c75ad17d0f998a7e3230330c3b41e0b629566bc744bee89e448',
+			'com.google.zxing:core:bba7724e02a997cec38213af77133ee8e24b0d5cf5fa7ecbc16a4fa93f11ee0d',
+			'com.jpardogo.materialtabstrip:library:24d19232b319f8c73e25793432357919a7ed972186f57a3b2c9093ea74ad8311',
+			'com.github.bumptech.glide:glide:750d9e7b940dc0ee48f8680623b55d46e14e8727acc922d7b156e57e7c549655',
+			'uk.co.samuelwall:material-tap-target-prompt:5d4951124366bc5c52e57beaa294db7611f0aa2a8d80e0163e1383e1966ba5b2',
 			'com.android.support:appcompat-v7:00f9d93acacd6731f309724054bf51492814b4b2869f16d7d5c0038dcb8c9a0d',
 			'com.android.support:preference-v14:44881bb46094e86d0bc2426f205419674a5b4eb514b44b5a4659b5de29f71eb7',
 			'com.android.support:design:003e0c0bea0a6891f8b2bc43f20ae7af2a49a17363e5bb10df5ee0bae12fa686',
-			'com.android.support:support-annotations:e91a88dd0c5e99069b7f09d4a46b5e06f1e9c4c72fc0a8e987e25d86af480f01',
+			'com.android.support:cardview-v7:4595f1c4a28cfa083b6c0920ad4d49e1c2ca4b8302a955e548f68eb63b74931b',
 			'com.android.support:animated-vector-drawable:06d1963b85aa917099d7757e6a7b3e4dc06889413dc747f625ae8683606db3a1',
 			'com.android.support:support-vector-drawable:799bafe4c3de812386f0b291f744d5d6876452722dd40189b9ab87dbbf594ea1',
 			'com.android.support:recyclerview-v7:44040a888e23e0c93162a3377cfe06751080e3c22d369ab0d4301ef60d63b0fe',
 			'com.android.support:preference-v7:775101bd07bd052e455761c5c5d9523d7ad59f2f320e3e8cbde241fd6b1d6025',
-			'com.android.support:cardview-v7:4595f1c4a28cfa083b6c0920ad4d49e1c2ca4b8302a955e548f68eb63b74931b',
-			'com.jpardogo.materialtabstrip:library:24d19232b319f8c73e25793432357919a7ed972186f57a3b2c9093ea74ad8311',
-			'com.github.bumptech.glide:glide:76ef123957b5fbaebb05fcbe6606dd58c3bc3fcdadb257f99811d0ac9ea9b88b',
-			'uk.co.samuelwall:material-tap-target-prompt:f67e1caead12a914525b32cbf6da52a96b93ff89573f93cb41102ef3130fb64a',
 	]
 }
 
diff --git a/briar-core/build.gradle b/briar-core/build.gradle
index 0f8177975f6adb80b41db8cb858360521cce30ea..3674306c132f3a1d35da901f4d05f06fa81a0a4f 100644
--- a/briar-core/build.gradle
+++ b/briar-core/build.gradle
@@ -1,8 +1,9 @@
 plugins {
-	id "java"
-	id "net.ltgt.apt" version "0.9"
-	id "idea"
+	id 'java'
+	id 'net.ltgt.apt' version '0.9'
+	id 'idea'
 }
+
 sourceCompatibility = 1.6
 targetCompatibility = 1.6
 
@@ -10,11 +11,10 @@ apply plugin: 'witness'
 
 dependencies {
 	compile project(':briar-api')
-	compile fileTree(dir: 'libs', include: '*.jar')
-	compile 'com.rometools:rome:1.7.0'
+	compile 'com.rometools:rome:1.7.3'
 	compile 'org.jdom:jdom2:2.0.6'
-	compile 'com.squareup.okhttp3:okhttp:3.3.1'
-	compile 'org.jsoup:jsoup:1.9.2'
+	compile 'com.squareup.okhttp3:okhttp:3.8.0'
+	compile 'org.jsoup:jsoup:1.10.3'
 
 	testCompile project(':bramble-core')
 	testCompile project(path: ':bramble-core', configuration: 'testOutput')
@@ -24,12 +24,11 @@ dependencies {
 
 dependencyVerification {
 	verify = [
-			'com.rometools:rome:3096b7a36c0e54f59b8193c431d28494c6bfa85c72ef3c5f341cdf09eae815e6',
+			'com.rometools:rome:077367bf8fa01b211c9da712c2aa862724195773c5693fd4d97d61d6457e96c6',
 			'org.jdom:jdom2:1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5',
-			'com.squareup.okhttp3:okhttp:a47f4efa166551cd5acc04f1071d82dafbf05638c21f9ca13068bc6633e3bff6',
-			'com.rometools:rome-utils:2be18a1edc601c31fe49c2000bb5484dd75182309270c2a2561d71888d81587a',
-			'com.squareup.okio:okio:5cfea5afe6c6e441a4dbf6053a07a733b1249d1009382eb44ac2255ccedd0c15',
-			'org.jsoup:jsoup:9c1885f1b182256e06f1e30b8451caed0c0dee96299d6348f968d18b54d0a46a',
-			'org.slf4j:slf4j-api:e56288031f5e60652c06e7bb6e9fa410a61231ab54890f7b708fc6adc4107c5b'
+			'com.squareup.okhttp3:okhttp:19e1db51787716ff0046fa19e408fb34ed32a6274baa0c07475bf724b4eb6800',
+			'org.jsoup:jsoup:a0784e793d7f518eb1defb47b428da011cd483c5da32d49c569bf491e4f1579a',
+			'org.slf4j:slf4j-api:e56288031f5e60652c06e7bb6e9fa410a61231ab54890f7b708fc6adc4107c5b',
+			'com.squareup.okio:okio:734269c3ebc5090e3b23566db558f421f0b4027277c79ad5d176b8ec168bb850',
 	]
 }
diff --git a/build.gradle b/build.gradle
index 5905facbe34083c2c1dcc216f91bbfe7e7fdfc8c..4ac3a97dc539d8abf9e43916c9c6886b006233df 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,7 +16,7 @@ buildscript {
 	dependencies {
 		classpath 'com.android.tools.build:gradle:2.2.2'
 		classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
-		classpath 'de.undercouch:gradle-download-task:2.1.0'
+		classpath 'de.undercouch:gradle-download-task:3.2.0'
 		classpath files('libs/gradle-witness.jar')
 	}
 }