diff --git a/gradle/variables.gradle b/gradle/variables.gradle
index f2e558396b41e0342e55e0fdc1239e685196a268..89e95b3b2526d28a8b93c80efb250629e78027cf 100644
--- a/gradle/variables.gradle
+++ b/gradle/variables.gradle
@@ -8,5 +8,5 @@ ext {
     junit_version = '5.7.2'
     mockk_version = '1.10.4'
     ktlint_plugin_version = '10.2.1'
-    onionwrapper_version = '0.0.1'
+    onionwrapper_version = '0.0.2'
 }
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 8eb938069ff3ec38d8b8e80325b7b1c21cac82cd..5eef64ae7a97325b7a2a71dbdf83139f2f8f0623 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -3093,12 +3093,12 @@
             <sha256 value="a473a77476dd631630ebb3a37b34812f94e6a7245c39765a14d7231b90e0645b" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="org.briarproject" name="dont-kill-me-lib" version="0.2.6">
-         <artifact name="dont-kill-me-lib-0.2.6.aar">
-            <sha256 value="8a4cc201143227c0865c2edfba035f71109bf02e1ab26444fa3e42d3c569960f" origin="Generated by Gradle"/>
+      <component group="org.briarproject" name="dont-kill-me-lib" version="0.2.7">
+         <artifact name="dont-kill-me-lib-0.2.7.aar">
+            <sha256 value="8a9540941fd927e1c127096a7a9b4aa61ce2f2965d2e24f849be92f9e57213c4" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="dont-kill-me-lib-0.2.6.module">
-            <sha256 value="2646adc39d022c2ed366493bdc92247d1afe6b5dbd41783235e096062fcc31ae" origin="Generated by Gradle"/>
+         <artifact name="dont-kill-me-lib-0.2.7.module">
+            <sha256 value="6f1deb46d52d513dccde6ee992f3b9ffa8f35001e7e5446fa8239596ae56eb99" origin="Generated by Gradle"/>
          </artifact>
       </component>
       <component group="org.briarproject" name="jtorctl" version="0.5">
@@ -3133,28 +3133,28 @@
             <sha256 value="9feb0d95ecef6e394b2a55ec4e451ec659f84a705345976053de166b157a0460" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="org.briarproject" name="onionwrapper-android" version="0.0.1">
-         <artifact name="onionwrapper-android-0.0.1.aar">
-            <sha256 value="959115946586daa090f057645cf75992407a59025e221c3bf88d2aa930ef3919" origin="Generated by Gradle"/>
+      <component group="org.briarproject" name="onionwrapper-android" version="0.0.2">
+         <artifact name="onionwrapper-android-0.0.2.aar">
+            <sha256 value="d196f1fe5d8b750866ea09d80509716aae7645d39b2c85433994718dbebeb4d1" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="onionwrapper-android-0.0.1.module">
-            <sha256 value="8f6abee13082ca633178932555c8261ff46099181179c2f6015c916ed436d181" origin="Generated by Gradle"/>
+         <artifact name="onionwrapper-android-0.0.2.module">
+            <sha256 value="53b951f528bcd09804c98be99933160beaea329f64c9d691a971ce61d67b4497" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="org.briarproject" name="onionwrapper-core" version="0.0.1">
-         <artifact name="onionwrapper-core-0.0.1.jar">
-            <sha256 value="a1937506b00ee6620e909a500e5d004be81f94a6f7d7c898e1a9e841a8ae8a2a" origin="Generated by Gradle"/>
+      <component group="org.briarproject" name="onionwrapper-core" version="0.0.2">
+         <artifact name="onionwrapper-core-0.0.2.jar">
+            <sha256 value="7038e960c9e59803f0e2c19444dbb5214cd99e5a7463c0a01c45318e07a0eb80" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="onionwrapper-core-0.0.1.module">
-            <sha256 value="c76d8a5c0a61483088280a1d8122e0c0325e4f4882625d89911eede1656d8753" origin="Generated by Gradle"/>
+         <artifact name="onionwrapper-core-0.0.2.module">
+            <sha256 value="71b6e4713dff5920a85585232ebe9909024885c9178b8ca5cf391bbcbe0f30b8" origin="Generated by Gradle"/>
          </artifact>
       </component>
-      <component group="org.briarproject" name="onionwrapper-java" version="0.0.1">
-         <artifact name="onionwrapper-java-0.0.1.jar">
-            <sha256 value="102ccea934d02b13702fd28e890e27e342db8b669a4c84bb54a3783cb8926552" origin="Generated by Gradle"/>
+      <component group="org.briarproject" name="onionwrapper-java" version="0.0.2">
+         <artifact name="onionwrapper-java-0.0.2.jar">
+            <sha256 value="87a3f4082174dbbd32c4f5f062b46af1d3fedd8cfa1ec84f6ce6ccb6e3674fb6" origin="Generated by Gradle"/>
          </artifact>
-         <artifact name="onionwrapper-java-0.0.1.module">
-            <sha256 value="6b31d326baf6be7be0f51fbcebea8b2ab5a5612a6a05916921f4dee9c7ab86cc" origin="Generated by Gradle"/>
+         <artifact name="onionwrapper-java-0.0.2.module">
+            <sha256 value="80baa417137ebe8069c846a63d6dff03b90eb9d075d3975a305e92a6773220f4" origin="Generated by Gradle"/>
          </artifact>
       </component>
       <component group="org.briarproject" name="snowflake-android" version="2.5.1">
diff --git a/mailbox-android/build.gradle b/mailbox-android/build.gradle
index 75cce90a25e8e414669a6c0cc799fce55b24c5ae..ed5bed7c3ba1618b4093b9a176188660c05dbceb 100644
--- a/mailbox-android/build.gradle
+++ b/mailbox-android/build.gradle
@@ -77,7 +77,7 @@ configurations {
 
 dependencies {
     implementation project(path: ':mailbox-core', configuration: 'default')
-    implementation 'org.briarproject:dont-kill-me-lib:0.2.6'
+    implementation 'org.briarproject:dont-kill-me-lib:0.2.7'
     implementation "org.briarproject:onionwrapper-android:$onionwrapper_version"
 
     implementation 'com.github.tony19:logback-android:3.0.0'
diff --git a/mailbox-android/src/main/java/org/briarproject/android/dontkillmelib/wakelock/AndroidWakeLockModule.java b/mailbox-android/src/main/java/org/briarproject/android/dontkillmelib/wakelock/AndroidWakeLockModule.java
deleted file mode 100644
index 0b243089269742b7e4723e7558399b9a21feeb71..0000000000000000000000000000000000000000
--- a/mailbox-android/src/main/java/org/briarproject/android/dontkillmelib/wakelock/AndroidWakeLockModule.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.briarproject.android.dontkillmelib.wakelock;
-
-import javax.inject.Singleton;
-
-import dagger.Module;
-import dagger.Provides;
-import dagger.hilt.InstallIn;
-import dagger.hilt.components.SingletonComponent;
-
-@Module
-@InstallIn(SingletonComponent.class)
-public class AndroidWakeLockModule {
-
-	@Provides
-	@Singleton
-	AndroidWakeLockManager provideWakeLockManager(
-			AndroidWakeLockManagerImpl wakeLockManager) {
-		return wakeLockManager;
-	}
-}
diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.kt
index 02ce9bc366c3deab30161e44d7e5fcce4a2e239b..67206b68870f82d55bfbc1052773c0097cab8c7a 100644
--- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.kt
+++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.kt
@@ -27,6 +27,8 @@ import dagger.hilt.InstallIn
 import dagger.hilt.components.SingletonComponent
 import org.briarproject.android.dontkillmelib.DozeHelper
 import org.briarproject.android.dontkillmelib.DozeHelperImpl
+import org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManager
+import org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerFactory
 import org.briarproject.mailbox.core.CoreModule
 import org.briarproject.mailbox.core.db.DatabaseConfig
 import org.briarproject.mailbox.core.files.FileProvider
@@ -79,4 +81,9 @@ internal class AppModule {
     @Singleton
     @Provides
     fun provideSystem() = System { code -> exitProcess(code) }
+
+    @Singleton
+    @Provides
+    fun provideAndroidWakeLockManager(app: Application): AndroidWakeLockManager =
+        AndroidWakeLockManagerFactory.createAndroidWakeLockManager(app)
 }
diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidLocationUtils.java b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidLocationUtils.java
deleted file mode 100644
index 4fb9b179f8ee6868688586fe31b2ea3e74513897..0000000000000000000000000000000000000000
--- a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidLocationUtils.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *     Briar Mailbox
- *     Copyright (C) 2021-2022  The Briar Project
- *
- *     This program is free software: you can redistribute it and/or modify
- *     it under the terms of the GNU Affero General Public License as
- *     published by the Free Software Foundation, either version 3 of the
- *     License, or (at your option) any later version.
- *
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU Affero General Public License for more details.
- *
- *     You should have received a copy of the GNU Affero General Public License
- *     along with this program.  If not, see <https://www.gnu.org/licenses/>.
- *
- */
-
-package org.briarproject.mailbox.core.tor;
-
-import android.annotation.SuppressLint;
-import android.app.Application;
-import android.content.Context;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-
-import org.briarproject.mailbox.core.system.LocationUtils;
-import org.slf4j.Logger;
-
-import java.util.Locale;
-
-import javax.inject.Inject;
-
-import static android.content.Context.TELEPHONY_SERVICE;
-import static org.slf4j.LoggerFactory.getLogger;
-
-class AndroidLocationUtils implements LocationUtils {
-
-	private static final Logger LOG = getLogger(AndroidLocationUtils.class);
-
-	private final Context appContext;
-
-	@Inject
-	AndroidLocationUtils(Application app) {
-		appContext = app.getApplicationContext();
-	}
-
-	/**
-	 * This guesses the current country from the first of these sources that
-	 * succeeds (also in order of likelihood of being correct):
-	 *
-	 * <ul>
-	 * <li>Phone network. This works even when no SIM card is inserted, or a
-	 *     foreign SIM card is inserted.</li>
-	 * <li>SIM card. This is only an heuristic and assumes the user is not
-	 *     roaming.</li>
-	 * <li>User locale. This is an even worse heuristic.</li>
-	 * </ul>
-	 * <p>
-	 * Note: this is very similar to <a href="https://android.googlesource.com/platform/frameworks/base/+/cd92588%5E/location/java/android/location/CountryDetector.java">
-	 * this API</a> except it seems that Google doesn't want us to use it for
-	 * some reason - both that class and {@code Context.COUNTRY_CODE} are
-	 * annotated {@code @hide}.
-	 */
-	@Override
-	@SuppressLint("DefaultLocale")
-	public String getCurrentCountry() {
-		String countryCode = getCountryFromPhoneNetwork();
-		if (!TextUtils.isEmpty(countryCode)) return countryCode.toUpperCase();
-		LOG.info("Falling back to SIM card country");
-		countryCode = getCountryFromSimCard();
-		if (!TextUtils.isEmpty(countryCode)) return countryCode.toUpperCase();
-		LOG.info("Falling back to user-defined locale");
-		return Locale.getDefault().getCountry();
-	}
-
-	private String getCountryFromPhoneNetwork() {
-		Object o = appContext.getSystemService(TELEPHONY_SERVICE);
-		TelephonyManager tm = (TelephonyManager) o;
-		return tm == null ? "" : tm.getNetworkCountryIso();
-	}
-
-	private String getCountryFromSimCard() {
-		Object o = appContext.getSystemService(TELEPHONY_SERVICE);
-		TelephonyManager tm = (TelephonyManager) o;
-		return tm == null ? "" : tm.getSimCountryIso();
-	}
-}
diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt
index 2dff2c815c7e368bcfa3e765020465b1a3e1e4ba..de9c842356972be10fe26b6ad9b0a5038ca43740 100644
--- a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt
+++ b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorModule.kt
@@ -34,8 +34,9 @@ import org.briarproject.mailbox.core.lifecycle.LifecycleManager
 import org.briarproject.mailbox.core.lifecycle.ServiceException
 import org.briarproject.mailbox.core.server.WebServerManager
 import org.briarproject.mailbox.core.settings.SettingsManager
-import org.briarproject.mailbox.core.system.LocationUtils
+import org.briarproject.onionwrapper.AndroidLocationUtilsFactory
 import org.briarproject.onionwrapper.CircumventionProvider
+import org.briarproject.onionwrapper.LocationUtils
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory.getLogger
 import java.util.concurrent.Executor
@@ -124,9 +125,9 @@ internal class AndroidTorModule {
         }
 
     @Provides
-    fun provideLocationUtils(locationUtils: AndroidLocationUtils): LocationUtils {
-        return locationUtils
-    }
+    @Singleton
+    fun provideLocationUtils(app: Application): LocationUtils =
+        AndroidLocationUtilsFactory.createAndroidLocationUtils(app)
 
     @Provides
     @Singleton
diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java
index 29f88d530931c5ab9dc836414d91841135b19653..6da3f8e7e9b90336a5aaccd00aa25b1614a90e27 100644
--- a/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java
+++ b/mailbox-android/src/main/java/org/briarproject/mailbox/core/tor/AndroidTorPlugin.java
@@ -20,15 +20,13 @@
 package org.briarproject.mailbox.core.tor;
 
 import android.app.Application;
-import android.content.Context;
 import android.os.Build;
 
-import org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLock;
 import org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManager;
 import org.briarproject.mailbox.core.settings.SettingsManager;
-import org.briarproject.mailbox.core.system.LocationUtils;
 import org.briarproject.onionwrapper.AndroidTorWrapper;
 import org.briarproject.onionwrapper.CircumventionProvider;
+import org.briarproject.onionwrapper.LocationUtils;
 
 import java.io.File;
 import java.util.ArrayList;
diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/LocationUtils.java b/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/LocationUtils.java
deleted file mode 100644
index 96440876eb6e48685641c2b2fc5e18bdee47f535..0000000000000000000000000000000000000000
--- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/system/LocationUtils.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *     Briar Mailbox
- *     Copyright (C) 2021-2022  The Briar Project
- *
- *     This program is free software: you can redistribute it and/or modify
- *     it under the terms of the GNU Affero General Public License as
- *     published by the Free Software Foundation, either version 3 of the
- *     License, or (at your option) any later version.
- *
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU Affero General Public License for more details.
- *
- *     You should have received a copy of the GNU Affero General Public License
- *     along with this program.  If not, see <https://www.gnu.org/licenses/>.
- *
- */
-
-package org.briarproject.mailbox.core.system;
-
-public interface LocationUtils {
-
-	/**
-	 * Get the country the device is currently located in, or "" if it cannot
-	 * be determined.
-	 * <p>
-	 * The country codes are formatted upper-case and as per <a href="
-	 * https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-1 alpha 2</a>.
-	 */
-	String getCurrentCountry();
-}
diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java b/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java
index ca56fadcb0d96b66d8772265dd859a87970908e2..23a6e53a7cbecc80bebd3a4d7bf6742b9868d043 100644
--- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java
+++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/tor/AbstractTorPlugin.java
@@ -27,9 +27,9 @@ import org.briarproject.mailbox.core.lifecycle.IoExecutor;
 import org.briarproject.mailbox.core.lifecycle.ServiceException;
 import org.briarproject.mailbox.core.settings.Settings;
 import org.briarproject.mailbox.core.settings.SettingsManager;
-import org.briarproject.mailbox.core.system.LocationUtils;
 import org.briarproject.onionwrapper.CircumventionProvider;
 import org.briarproject.onionwrapper.CircumventionProvider.BridgeType;
+import org.briarproject.onionwrapper.LocationUtils;
 import org.briarproject.onionwrapper.TorWrapper;
 import org.briarproject.onionwrapper.TorWrapper.HiddenServiceProperties;
 import org.briarproject.onionwrapper.TorWrapper.Observer;
diff --git a/mailbox-lib/.gitignore b/mailbox-lib/.gitignore
index 8376b62300be1314da3229f59f10027007198768..aa09c1522e06e125c214c11e5f98e0644f5eca70 100644
--- a/mailbox-lib/.gitignore
+++ b/mailbox-lib/.gitignore
@@ -1 +1,3 @@
-/src/main/resources/*.zip
+/src/main/resources/aarch64/
+/src/main/resources/armhf/
+/src/main/resources/x86_64/
diff --git a/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt b/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt
index 94a56973bc65b5fa4effe7533a9ce42e4ccb83b6..da296ff2c6a01de5e812db48ad78d5c1dd84100b 100644
--- a/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt
+++ b/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorModule.kt
@@ -30,13 +30,13 @@ import org.briarproject.mailbox.core.lifecycle.IoExecutor
 import org.briarproject.mailbox.core.lifecycle.LifecycleManager
 import org.briarproject.mailbox.core.server.WebServerManager
 import org.briarproject.mailbox.core.settings.SettingsManager
-import org.briarproject.mailbox.core.system.LocationUtils
 import org.briarproject.mailbox.core.util.OsUtils.isLinux
 import org.briarproject.onionwrapper.CircumventionProvider
+import org.briarproject.onionwrapper.JavaLocationUtilsFactory
+import org.briarproject.onionwrapper.LocationUtils
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory.getLogger
 import java.io.File
-import java.util.Locale
 import java.util.concurrent.Executor
 import javax.inject.Singleton
 
@@ -108,6 +108,6 @@ class JavaTorModule {
 
     @Provides
     @Singleton
-    fun provideLocationUtils() = LocationUtils { Locale.getDefault().country }
+    fun provideLocationUtils(): LocationUtils = JavaLocationUtilsFactory.createJavaLocationUtils()
 
 }
diff --git a/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java b/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java
index dd4d55e590bbfeb21a3b074684252fcb948c521d..e3ac9442c417773c6c296454d9c97fd87f4a9398 100644
--- a/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java
+++ b/mailbox-lib/src/main/java/org/briarproject/mailbox/core/tor/JavaTorPlugin.java
@@ -20,8 +20,8 @@
 package org.briarproject.mailbox.core.tor;
 
 import org.briarproject.mailbox.core.settings.SettingsManager;
-import org.briarproject.mailbox.core.system.LocationUtils;
 import org.briarproject.onionwrapper.CircumventionProvider;
+import org.briarproject.onionwrapper.LocationUtils;
 import org.briarproject.onionwrapper.UnixTorWrapper;
 
 import java.io.File;