diff --git a/bramble-android/src/main/java/org/briarproject/bramble/api/system/AlarmListener.java b/bramble-android/src/main/java/org/briarproject/bramble/api/system/AlarmListener.java
index e1dab1d571ee8d6ce382a53a40bed71a5661f7ce..d3db167950676ed495b04901b24eb1bf678dfa29 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/api/system/AlarmListener.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/api/system/AlarmListener.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.system;
 
 import android.content.Intent;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface AlarmListener {
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLock.java b/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLock.java
index 307a86086848c691f3f40c0a58aafd11d5d42294..2ef13da48736d8826ef2ecaee7e5bf9039fbc198 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLock.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLock.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface AndroidWakeLock {
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLockManager.java b/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLockManager.java
index bd96ef61b30883ad3183279362de181c9e75b254..a44a088a5d0566fd44e377587665bb40b0f0cbb6 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLockManager.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLockManager.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java
index 11694ba92e83491acd1976105d76697d12c45732..3deb3a2a9d8de7bb9204328149b0ad2fcb01520d 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/network/AndroidNetworkManager.java
@@ -21,9 +21,9 @@ import org.briarproject.bramble.api.lifecycle.Service;
 import org.briarproject.bramble.api.network.NetworkManager;
 import org.briarproject.bramble.api.network.NetworkStatus;
 import org.briarproject.bramble.api.network.event.NetworkStatusEvent;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.system.TaskScheduler;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.net.Inet4Address;
 import java.net.InetAddress;
@@ -55,8 +55,8 @@ import static java.util.concurrent.TimeUnit.SECONDS;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static java.util.logging.Logger.getLogger;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.util.LogUtils.logException;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothConnectionFactory.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothConnectionFactory.java
index b14d5459b84aca6a353454a3a0d9275f6a15e36a..ecc468258a1abb926de5f20ce64dac21c8cb54d3 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothConnectionFactory.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothConnectionFactory.java
@@ -3,10 +3,10 @@ package org.briarproject.bramble.plugin.bluetooth;
 import android.bluetooth.BluetoothSocket;
 
 import org.briarproject.bramble.api.io.TimeoutMonitor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.system.AndroidWakeLockManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java
index bf92597520e124cf74ec04cd1fe7ff71a286ca56..70f0229cf9a26371629d3417feb8b242d06f8896 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java
@@ -10,8 +10,6 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.PluginException;
@@ -20,6 +18,8 @@ import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.util.AndroidUtils;
 import org.briarproject.bramble.util.IoUtils;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.security.SecureRandom;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPluginFactory.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPluginFactory.java
index e3a2745749f66d0250fc9a01190099d0064f8d93..6ea75cb27f320f3b64a63ac708208c339f90242a 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPluginFactory.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPluginFactory.java
@@ -6,7 +6,6 @@ import android.bluetooth.BluetoothSocket;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.io.TimeoutMonitor;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -17,6 +16,7 @@ import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.bramble.api.system.AndroidWakeLockManager;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.SecureRandom;
 import java.util.concurrent.Executor;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java
index b36652cd96ed337a54d3bee9a2f3c9ce5aeb2151..accc2ea5dc473cdfa43acc97a0e630209e4e1e4d 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java
@@ -3,11 +3,11 @@ package org.briarproject.bramble.plugin.bluetooth;
 import android.bluetooth.BluetoothSocket;
 
 import org.briarproject.bramble.api.io.TimeoutMonitor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.duplex.AbstractDuplexTransportConnection;
 import org.briarproject.bramble.api.system.AndroidWakeLock;
 import org.briarproject.bramble.api.system.AndroidWakeLockManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/file/AndroidRemovableDrivePlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/file/AndroidRemovableDrivePlugin.java
index 6d325a02f487bef14b8294ce2f1f6d5938d80c2c..09a9107789a93b5e04cbfd31ec6481fb2acb7502 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/file/AndroidRemovableDrivePlugin.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/file/AndroidRemovableDrivePlugin.java
@@ -3,9 +3,9 @@ package org.briarproject.bramble.plugin.file;
 import android.app.Application;
 import android.net.Uri;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/file/AndroidRemovableDrivePluginFactory.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/file/AndroidRemovableDrivePluginFactory.java
index 216d40f4828348483502d1dd388ace042a14bdd6..cad61f9b2044f68c2960818836fb8e89e56d3f16 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/file/AndroidRemovableDrivePluginFactory.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/file/AndroidRemovableDrivePluginFactory.java
@@ -2,11 +2,11 @@ package org.briarproject.bramble.plugin.file;
 
 import android.app.Application;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPlugin.java
index 11e164148cb07e226fa0102b4a603d3979ef3632..dec03505dc59a2d06524678c116cd753c688e857 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPlugin.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPlugin.java
@@ -14,10 +14,10 @@ import org.briarproject.bramble.PoliteExecutor;
 import org.briarproject.bramble.api.Pair;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.network.event.NetworkStatusEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.settings.Settings;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.net.InetAddress;
@@ -43,13 +43,13 @@ import static java.util.Collections.list;
 import static java.util.Collections.singletonList;
 import static java.util.logging.Level.WARNING;
 import static java.util.logging.Logger.getLogger;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.api.plugin.LanTcpConstants.DEFAULT_PREF_PLUGIN_ENABLE;
 import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE;
 import static org.briarproject.bramble.api.plugin.Plugin.State.INACTIVE;
 import static org.briarproject.bramble.util.IoUtils.tryToClose;
 import static org.briarproject.bramble.util.LogUtils.logException;
 import static org.briarproject.bramble.util.NetworkUtils.getNetworkInterfaces;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @NotNullByDefault
 class AndroidLanTcpPlugin extends LanTcpPlugin {
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPluginFactory.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPluginFactory.java
index de3098113320f78bc46881a2d09d6e790baad53a..70005b25c3defe37fabea66a0fcd66642674b95e 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPluginFactory.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPluginFactory.java
@@ -4,7 +4,6 @@ import android.app.Application;
 
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -12,6 +11,7 @@ import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java
index 2acd6705673a5fb6d8b834bf11accff4d6797114..1789ffcb02049f4e74210029c887bef2bed4716f 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java
@@ -7,8 +7,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
 
 import org.briarproject.bramble.api.battery.BatteryManager;
 import org.briarproject.bramble.api.network.NetworkManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.system.AndroidWakeLock;
@@ -17,6 +15,8 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.api.system.ResourceProvider;
 import org.briarproject.bramble.util.AndroidUtils;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java
index ce0e2675bca76903305c736a4c313c699c96a625..59d0ff03e3759589ead4485e51347256d1956730 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.network.NetworkManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -19,6 +18,7 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.api.system.ResourceProvider;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.util.concurrent.Executor;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AlarmConstants.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AlarmConstants.java
index b86be5fc690f973bc30a505786b8399dcada9899..38099ee0c3fb54b46937ae0645879c8c5d8be360 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/system/AlarmConstants.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AlarmConstants.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface AlarmConstants {
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidLocationUtils.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidLocationUtils.java
index 21d2075c1561a2aa892ef9ae7e7ac63708001bfb..22d9890279d9966a96288778f1f1d8ba04740aeb 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidLocationUtils.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidLocationUtils.java
@@ -6,8 +6,8 @@ import android.content.Context;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.LocationUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Locale;
 import java.util.logging.Logger;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidResourceProvider.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidResourceProvider.java
index 89f7f31e34b96e67756dfefc9848ef1530ae4e2a..fdd67dbf37ae421ef669a06b7ec3d9cecf8d8a20 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidResourceProvider.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidResourceProvider.java
@@ -4,8 +4,8 @@ import android.app.Application;
 import android.content.Context;
 import android.content.res.Resources;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.ResourceProvider;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidSecureRandomProvider.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidSecureRandomProvider.java
index 66130cc42b47e0ddd1b7c2d48dc4d8b6943acfe1..0f7ad28351cc93754d569553bdcfbbe1b8cf12ff 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidSecureRandomProvider.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidSecureRandomProvider.java
@@ -11,7 +11,7 @@ import android.os.Parcel;
 import android.os.StrictMode;
 import android.provider.Settings;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidTaskScheduler.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidTaskScheduler.java
index c426f7d6a391d71ae534e6cec2e34fc9b35cfb32..b57a91d1f5b0853bebda29f3cd67956ce58ba10c 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidTaskScheduler.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidTaskScheduler.java
@@ -10,11 +10,11 @@ import android.os.SystemClock;
 
 import org.briarproject.bramble.api.Cancellable;
 import org.briarproject.bramble.api.lifecycle.Service;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AlarmListener;
 import org.briarproject.bramble.api.system.AndroidWakeLockManager;
 import org.briarproject.bramble.api.system.TaskScheduler;
 import org.briarproject.bramble.api.system.Wakeful;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockImpl.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockImpl.java
index 625d43760bd98df1b240a70105b70b1dd9b10601..5da499d1e1905bc35d68b6e820eb228285207d1f 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockImpl.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockImpl.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidWakeLock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Logger;
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockManagerImpl.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockManagerImpl.java
index 7fd1e80e3de23c2e997c5595fec6546c48cd2ba1..8c0f444e03cc57b696ec5f4353ca5ea0646121b6 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockManagerImpl.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockManagerImpl.java
@@ -5,9 +5,9 @@ import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.PowerManager;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidWakeLock;
 import org.briarproject.bramble.api.system.AndroidWakeLockManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.concurrent.ScheduledExecutorService;
@@ -18,7 +18,7 @@ import static android.content.Context.POWER_SERVICE;
 import static android.os.PowerManager.PARTIAL_WAKE_LOCK;
 import static java.util.concurrent.TimeUnit.MINUTES;
 import static java.util.concurrent.TimeUnit.SECONDS;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @NotNullByDefault
 class AndroidWakeLockManagerImpl implements AndroidWakeLockManager {
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/RenewableWakeLock.java b/bramble-android/src/main/java/org/briarproject/bramble/system/RenewableWakeLock.java
index 122180fd67c16ddd642ea15eae671ba2c917d1c6..498c3e8d414a8eef596f9fbfb91b1dcbbd096278 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/system/RenewableWakeLock.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/system/RenewableWakeLock.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.system;
 import android.os.PowerManager;
 import android.os.PowerManager.WakeLock;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
@@ -18,7 +18,7 @@ import static java.util.logging.Level.FINE;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static java.util.logging.Logger.getLogger;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @ThreadSafe
 @NotNullByDefault
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/SharedWakeLock.java b/bramble-android/src/main/java/org/briarproject/bramble/system/SharedWakeLock.java
index db0a07043a9b85dce3409dd41ee635b23d36ab07..d8c430eecb08badf14d3a0af3fa17ef5e12a7c20 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/system/SharedWakeLock.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/system/SharedWakeLock.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidWakeLock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SharedWakeLock {
diff --git a/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java b/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java
index bd5f5156be91ba251d4e94c9cc79ec2ad718051b..7e3adef92572d267b17409ad3ae533ad63f49e30 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/util/AndroidUtils.java
@@ -8,7 +8,7 @@ import android.os.Looper;
 import android.provider.Settings;
 
 import org.briarproject.bramble.api.Pair;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.IOException;
@@ -26,7 +26,7 @@ import static android.content.Context.MODE_PRIVATE;
 import static android.os.Build.VERSION.SDK_INT;
 import static java.lang.Runtime.getRuntime;
 import static java.util.Arrays.asList;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @NotNullByDefault
 public class AndroidUtils {
diff --git a/bramble-api/build.gradle b/bramble-api/build.gradle
index 926386b029cf974a5ec021f405106888dd8903a9..667fde15e2ae6b9b412791f51551df40cd37d927 100644
--- a/bramble-api/build.gradle
+++ b/bramble-api/build.gradle
@@ -7,6 +7,8 @@ apply plugin: 'witness'
 apply from: 'witness.gradle'
 
 dependencies {
+	api 'org.briarproject:null-safety:0.1'
+
 	implementation "com.google.dagger:dagger:$dagger_version"
 	implementation 'com.google.code.findbugs:jsr305:3.0.2'
 	implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_version"
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/Bytes.java b/bramble-api/src/main/java/org/briarproject/bramble/api/Bytes.java
index d8a727b71feab63f67108e9e90a4b7d410f04795..6b92f91cf6fbdb141862231ed744013375ee2203 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/Bytes.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/Bytes.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Arrays;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/Consumer.java b/bramble-api/src/main/java/org/briarproject/bramble/api/Consumer.java
index 4e025a728a5ac1b3b9901192e9412f1ed78f7b1c..649eb0b684a1d79802facfc70a1445e3171ed00d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/Consumer.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/Consumer.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface Consumer<T> {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/Multiset.java b/bramble-api/src/main/java/org/briarproject/bramble/api/Multiset.java
index 58db606b590583fa51ed63de59279524a874ad2f..06964afcc9746d39aa899c068098d7f9dfb3ab38 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/Multiset.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/Multiset.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collections;
 import java.util.HashMap;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/Nameable.java b/bramble-api/src/main/java/org/briarproject/bramble/api/Nameable.java
index 8e6ad4981130b6020df448bcc2579acced971de9..d40b3e11054293f181d98aee6808afce81ed3bb6 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/Nameable.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/Nameable.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface Nameable {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/Pair.java b/bramble-api/src/main/java/org/briarproject/bramble/api/Pair.java
index f41244886898c216a15af2532a8780cb4bede7f7..cd81f1adce28cbf5f908b9bb649d61775a8271ff 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/Pair.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/Pair.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/Predicate.java b/bramble-api/src/main/java/org/briarproject/bramble/api/Predicate.java
index 0bd0520e4d5abf00825c5fbdf8ab538771cf2701..a99eeacec29f26d509e32f58c5242ae3560ad753 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/Predicate.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/Predicate.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface Predicate<T> {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/UniqueId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/UniqueId.java
index 352f4ac8a2fa418505f7b65c4dedc243a9460f7f..c70a48c90de81f339560a0cf7d6dd8a6cf35ee2c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/UniqueId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/UniqueId.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/WeakSingletonProvider.java b/bramble-api/src/main/java/org/briarproject/bramble/api/WeakSingletonProvider.java
index bef7184d85c3111bd5eb468a40ceff630570aaa0..a564e963a8e871bcd004999c2fb6fe827ec709ac 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/WeakSingletonProvider.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/WeakSingletonProvider.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.lang.ref.WeakReference;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/account/AccountManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/account/AccountManager.java
index f33b445941ec2e8d369b471691a635c1169b4ee3..05dd3c5b39fa760a11c08e26a64ba4231a2c6854 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/account/AccountManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/account/AccountManager.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.api.account;
 import org.briarproject.bramble.api.crypto.DecryptionException;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java
index 6dca7a22410d2483b7310fd631c4ba255416e8a1..46972de4047fa7d5a04965f5df32e0115bec7f47 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java
@@ -3,9 +3,9 @@ package org.briarproject.bramble.api.cleanup;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupManager.java
index d416d8fed233f29e81fcdeddceb5d8ba5bf1df70..5f0962dbb2a3d4ccf885460fd5d1962bb1b7d130 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupManager.java
@@ -5,9 +5,9 @@ import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * The CleanupManager is responsible for tracking the cleanup deadlines of
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/event/CleanupTimerStartedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/event/CleanupTimerStartedEvent.java
index f941cd806ae646917adc752a635894c2474d7035..cda531da10443015ed63fd414c8fd02fef61455d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/event/CleanupTimerStartedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/event/CleanupTimerStartedEvent.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.cleanup.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfIncomingMessageHook.java b/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfIncomingMessageHook.java
index 8597c0117f6847bd03c3e07f97ae7fc88b32a8bd..f1dd552efc68dbf6727f4c84f917081d20b3f9cf 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfIncomingMessageHook.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfIncomingMessageHook.java
@@ -8,10 +8,10 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Metadata;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.validation.IncomingMessageHook;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfMessageContext.java b/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfMessageContext.java
index fe238b9e0229b7616c4bf0bd61ad477637c5ac81..5ed72d2a269bcb888cda8590c3f240b204aa56b5 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfMessageContext.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfMessageContext.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.client;
 
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.Collections;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfMessageValidator.java b/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfMessageValidator.java
index 3dfde81bf563dfd12e3b27e4ea0d6c81890cee19..4caed6438ea8d87d0d0d986090b30573821919bb 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfMessageValidator.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/client/BdfMessageValidator.java
@@ -4,13 +4,13 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
 import org.briarproject.bramble.api.db.Metadata;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageContext;
 import org.briarproject.bramble.api.sync.validation.MessageValidator;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/client/ClientHelper.java b/bramble-api/src/main/java/org/briarproject/bramble/api/client/ClientHelper.java
index da9ee31630d6e8d9efc330cee2a1b3e1ccf2d767..9ccd18f1deb14d96e0d0501a46da87dfb2ed6e25 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/client/ClientHelper.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/client/ClientHelper.java
@@ -11,12 +11,12 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.mailbox.MailboxUpdate;
 import org.briarproject.bramble.api.mailbox.MailboxVersion;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.Collection;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/client/ContactGroupFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/client/ContactGroupFactory.java
index 896acb221fe9bb07d7b8f69a07172bdb4bff4dbd..04210c5d8e0f173d590be0e1eacf7dba12cf70b4 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/client/ContactGroupFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/client/ContactGroupFactory.java
@@ -2,9 +2,9 @@ package org.briarproject.bramble.api.client;
 
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface ContactGroupFactory {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/connection/ConnectionManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/connection/ConnectionManager.java
index 63a9b36ae30762c21357b679d866a5d0b225e44b..8750bc2534886b593c125b9e9eed38506acff5d3 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/connection/ConnectionManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/connection/ConnectionManager.java
@@ -2,12 +2,12 @@ package org.briarproject.bramble.api.connection;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.PendingContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.sync.OutgoingSessionRecord;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface ConnectionManager {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/connection/ConnectionRegistry.java b/bramble-api/src/main/java/org/briarproject/bramble/api/connection/ConnectionRegistry.java
index d23b0144af15e146835d0a6147ba8099fa1616e2..125ad99bc15008ee819b8455aa1241694f0e9d61 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/connection/ConnectionRegistry.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/connection/ConnectionRegistry.java
@@ -2,7 +2,6 @@ package org.briarproject.bramble.api.connection;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.PendingContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginConfig;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.event.ConnectionClosedEvent;
@@ -12,6 +11,7 @@ import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent;
 import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionClosedEvent;
 import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionOpenedEvent;
 import org.briarproject.bramble.api.sync.Priority;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/connection/InterruptibleConnection.java b/bramble-api/src/main/java/org/briarproject/bramble/api/connection/InterruptibleConnection.java
index 59b46b1eca4549a707a809cbe3d32b73a2ddfdf3..ce5670ea4984fe87be51ba42478b4d4298c232c0 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/connection/InterruptibleConnection.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/connection/InterruptibleConnection.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.connection;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * A duplex sync connection that can be closed by interrupting its outgoing
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/Contact.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/Contact.java
index 14e890c07d8b1ea5bacb5f683adc547fae5c7f69..40be25aadbe2aa6a4517458540b8d0666d078047 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/Contact.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/Contact.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.api.contact;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactExchangeManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactExchangeManager.java
index dad6ae6b1d85adf49ce5ab064b83c33d571d2204..29afba6447a6fcb13e6eb4dc2e5668c03400c757 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactExchangeManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactExchangeManager.java
@@ -3,8 +3,8 @@ package org.briarproject.bramble.api.contact;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.ContactExistsException;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactId.java
index 4a4f138e4488ff13ea4af8d23cf7a7d03abbb658..050ee372b1a3cb6c21b6078bd5be2b892fdb8591 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactId.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.contact;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
index 23fd34ac5fb5a2dc46f70da211e0c87276bf48f5..4d4a0ae7ede280c5de4d77beb1de7fc1af0f9b0a 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java
@@ -12,7 +12,7 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.Collection;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/HandshakeManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/HandshakeManager.java
index 1f586ada5c5d7fb4250f4e4b0f91ad7837c70267..990d22a5a9bd1bd04d956eaab79637458358c1be 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/HandshakeManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/HandshakeManager.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.contact;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.StreamWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContact.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContact.java
index 6db81412c0778992b442f908054d6ad11d9ea244..d763c38c5b42cf22d960b9c354d4d1b2cd042d84 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContact.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContact.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.contact;
 
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContactId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContactId.java
index 6a601fbc7d17ac2897e11be2fdc96210552e1442..0b89ef5d942e87ba5b671cec3f6f1ada44eed4e0 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContactId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/PendingContactId.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.contact;
 
 import org.briarproject.bramble.api.UniqueId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactAddedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactAddedEvent.java
index 76550bea3cad188e10223150ebaa72a02e7d01cc..2cff343decca8fa153e360ef8c6f8c0f7f8e688f 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactAddedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactAddedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactAliasChangedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactAliasChangedEvent.java
index 5972e41139f80335c2a0879361f42f449c4814f8..3ca68a8a1292a4a50aa41397bb2ed7eaf5e1033e 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactAliasChangedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactAliasChangedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactRemovedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactRemovedEvent.java
index 703c87a85c3423123d2dc9afcc1dcbf786b1c4fa..d76cde6143a6f0464b710598631a159ea877e947 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactRemovedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactRemovedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactVerifiedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactVerifiedEvent.java
index d2db5985ea3ec72dd383644b02421ab688aa9f47..547eeec0d09c17cc964a58b30537365571e9c3a5 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactVerifiedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/ContactVerifiedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactAddedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactAddedEvent.java
index f57e6a24e3ee44d2d03bfa152913aef958398dd4..62dffbfc5dafbbaa7bb7bfab9c8ba4b01cc19511 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactAddedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactAddedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
 
 import org.briarproject.bramble.api.contact.PendingContact;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactRemovedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactRemovedEvent.java
index 4d9c0e2815e6232458a33a28c10dcf97d4a5f8c9..d349ef980439e835d221a616d8cae3092a56c9da 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactRemovedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactRemovedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.contact.event;
 
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactStateChangedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactStateChangedEvent.java
index 6e7b454c3076c184fd1857b6108d1ffa6eed3267..de6fb2789f0353da47f1f46c56a6507a407844c4 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactStateChangedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/event/PendingContactStateChangedEvent.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.api.contact.event;
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.contact.PendingContactState;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/AgreementPrivateKey.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/AgreementPrivateKey.java
index 3e1cd624e61bd178938b98fef21430f1be37f182..8fc653bb3059783b1dcb46da7e73486aeac828d6 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/AgreementPrivateKey.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/AgreementPrivateKey.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.crypto;
 
 import org.briarproject.bramble.api.Bytes;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/AgreementPublicKey.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/AgreementPublicKey.java
index fa595fa4c551a1463391fee854b3b332075a3d21..3038cdb4c4d2968baa8628d22af1a05aad77fbaa 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/AgreementPublicKey.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/AgreementPublicKey.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.crypto;
 
 import org.briarproject.bramble.api.Bytes;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/CryptoComponent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/CryptoComponent.java
index 7dba858351e0a61620b28305835f411533c008e8..cf45b4316872da67b9914b80b8a0a7d20dcce6b1 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/CryptoComponent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/CryptoComponent.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.crypto;
 
 import org.briarproject.bramble.api.UniqueId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.security.SecureRandom;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/DecryptionException.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/DecryptionException.java
index 9a2a5333de7c8272f09bf2e9b5d35fa401d6e85b..6e4487acf00c6a41bb0cc30a469db35570ef3f43 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/DecryptionException.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/DecryptionException.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public class DecryptionException extends Exception {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyPair.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyPair.java
index 28b2b10369fc15b33322f70fc74035b8436bcdd9..d0c87fb01f984ca6bd1f74cfa435126ea709218d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyPair.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyPair.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyParser.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyParser.java
index 7f416d31acc9d037f79aea6877a3b7c03ac46eca..fc0546abba722e43925724c32715f91b60f867ad 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyParser.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyParser.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyStrengthener.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyStrengthener.java
index 5913aae5dcb51820f5decf76b504dac8fbd44ace..607278631abd5de29b039629b8543398924b37fc 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyStrengthener.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/KeyStrengthener.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * Interface for strengthening a password-based key, for example by using a
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PasswordStrengthEstimator.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PasswordStrengthEstimator.java
index f9cf35561df10953dfd6ba89e0cc82b9e9f94677..b76f5f737f5e905bfe8d98c9b5c1f6982a4846c6 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PasswordStrengthEstimator.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PasswordStrengthEstimator.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface PasswordStrengthEstimator {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PrivateKey.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PrivateKey.java
index f53ef5ef898f6c82803e8f2e962e391cee16b07d..afda2b2d4ca2ba3cbed03f55cd7fd6ff8fd3fbf0 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PrivateKey.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PrivateKey.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * The private half of a public/private {@link KeyPair}.
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PublicKey.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PublicKey.java
index c091e6e0acc4c5f40ccc9b34d2aeef4739de5f47..1aa98070d1e256c5d31213c02ef9b52b4b5dd4ac 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PublicKey.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/PublicKey.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * The public half of a public/private {@link KeyPair}.
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/SignaturePrivateKey.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/SignaturePrivateKey.java
index 1680d54af11e4c7bbb24fedaea4eaa8d35a8bcc0..520c72b3c97d3187c8183bfa7759360f089b7e58 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/SignaturePrivateKey.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/SignaturePrivateKey.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.crypto;
 
 import org.briarproject.bramble.api.Bytes;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/SignaturePublicKey.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/SignaturePublicKey.java
index 12b743d10c549629efccb53870cf830f85f37af0..93bfcf1365417185d3713d10a5a3c940fc288a9a 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/SignaturePublicKey.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/SignaturePublicKey.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.crypto;
 
 import org.briarproject.bramble.api.Bytes;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypter.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypter.java
index 131fb7496931f2d90763b15e8c9fa9afba9f39bd..4fa54bb0f6f6592e0640619b06e32959b9aecb21 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypter.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypter.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypterFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypterFactory.java
index 47e97ae00e558a087db3ca0cfda6a951f4690345..1281592511bdb6b74422c4228d016698d0886548 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypterFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamDecrypterFactory.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.StreamContext;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypter.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypter.java
index 7a1e3ed77b2c6bbbb3b032db0851ea6c19fcc460..a2bfa21721a15ed352e318bc11d424d2c250e6dd 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypter.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypter.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypterFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypterFactory.java
index 4b68c044112e9bb60b89c60e82c1e140e3ae1e44..95759b807aa7dd6476b7913549dd789b09156809 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypterFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/crypto/StreamEncrypterFactory.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.StreamContext;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.OutputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfEntry.java b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfEntry.java
index d915a85d2f1dc20fb541c3c8615215c174ec1424..3fb4b26783b7336820f4e85af7a1231cebf7548c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfEntry.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfEntry.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.data;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map.Entry;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReader.java b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReader.java
index ad581382f809c5b08ce593b6718b7c689544986e..ab81a39cb57ef1b6695c5b736fd20c9ed18b1587 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReader.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReader.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.data;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReaderFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReaderFactory.java
index ac2551dde91e4a4da899ca51f1d10b11fb87decb..bc41a66d39ef76f9c842fc613b43cf6839321f67 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReaderFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfReaderFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.data;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfStringUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfStringUtils.java
index 7f02ecbd0b6bb1a8c48f4dec7e7056cfeb1db420..dd191bd23a0e812101a6129af08d7ba61ced1ebf 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfStringUtils.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfStringUtils.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.data;
 
 import org.briarproject.bramble.api.Bytes;
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 import java.util.Map;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfWriterFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfWriterFactory.java
index 669c5dfa38b2eff5a5d718458bb7208426feaf29..274f9fa80294abc456c9f9d559205646243040a6 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfWriterFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/data/BdfWriterFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.data;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.OutputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/data/MetadataEncoder.java b/bramble-api/src/main/java/org/briarproject/bramble/api/data/MetadataEncoder.java
index fe9864a7e635de28ee81ae5d78a4beca2da9b386..a3d3871ee3582d3b889d4952bdb7c481c2a083d2 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/data/MetadataEncoder.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/data/MetadataEncoder.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.data;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.db.Metadata;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface MetadataEncoder {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/data/MetadataParser.java b/bramble-api/src/main/java/org/briarproject/bramble/api/data/MetadataParser.java
index 94428e0e5ce3b1addb49873a8244378844b3fa26..b3a0abbbb1ba440efc127a1c4e4b3d7f515649b5 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/data/MetadataParser.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/data/MetadataParser.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.data;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.db.Metadata;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface MetadataParser {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/db/DatabaseComponent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/db/DatabaseComponent.java
index 191ffb6a7192ad48d3c45b103e01aa87ba4bbae0..108868fa87db759b470ebc3d8e45d39189514c51 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/db/DatabaseComponent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/db/DatabaseComponent.java
@@ -10,7 +10,6 @@ import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.Identity;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.sync.Ack;
@@ -27,6 +26,7 @@ import org.briarproject.bramble.api.sync.validation.MessageState;
 import org.briarproject.bramble.api.transport.KeySetId;
 import org.briarproject.bramble.api.transport.TransportKeySet;
 import org.briarproject.bramble.api.transport.TransportKeys;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/db/DatabaseConfig.java b/bramble-api/src/main/java/org/briarproject/bramble/api/db/DatabaseConfig.java
index 16d587c1d4a2bac63d0b11b6a7cec11bc05839c6..ff1f3b16f0f034061ac0cf71231ae0c89736f082 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/db/DatabaseConfig.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/db/DatabaseConfig.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.db;
 
 import org.briarproject.bramble.api.crypto.KeyStrengthener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/db/DbCallable.java b/bramble-api/src/main/java/org/briarproject/bramble/api/db/DbCallable.java
index 1f024b0dd0e4484fd6e9707e051a078cdbd59f89..6a9db32a3d9d18a7ebd6698b00d346d0136784c7 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/db/DbCallable.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/db/DbCallable.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.db;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface DbCallable<R, E extends Exception> {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/db/DbRunnable.java b/bramble-api/src/main/java/org/briarproject/bramble/api/db/DbRunnable.java
index 5d2344e748c72ae74d1742b69c39450c6b3e837d..a95d580959b25f4feb58c37c0be7eb3faacd158e 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/db/DbRunnable.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/db/DbRunnable.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.db;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface DbRunnable<E extends Exception> {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/db/NullableDbCallable.java b/bramble-api/src/main/java/org/briarproject/bramble/api/db/NullableDbCallable.java
index 4ed459118c121fcae1323994180cf36cf19d6771..1f89adb2d75c8b24f252804c5e5286b6e05fe15c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/db/NullableDbCallable.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/db/NullableDbCallable.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.db;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/db/TransactionManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/db/TransactionManager.java
index 2ed25caf33018fa0f671c3f519e6b0227f7cb3b1..1806da31a30adf3bdff7b3c88478687726b1207a 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/db/TransactionManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/db/TransactionManager.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.db;
 
 import org.briarproject.bramble.api.event.EventExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/event/EventBus.java b/bramble-api/src/main/java/org/briarproject/bramble/api/event/EventBus.java
index cf57b67ed5ba344c7a45d0a67f6bc44198a137b7..444c2ea422a49fd4d2a9e6959b1d76e35975d55d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/event/EventBus.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/event/EventBus.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.event;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface EventBus {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/event/EventListener.java b/bramble-api/src/main/java/org/briarproject/bramble/api/event/EventListener.java
index 20989bfc3f1172ff7def7f19abd1a6d9103b5d77..b9f36adf8e9af61cf584001c183e7ab9bf1c9748 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/event/EventListener.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/event/EventListener.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.event;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * An interface for receiving notifications when events occur.
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Author.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Author.java
index d6643c252c88e98f56c887fdb09abb68c6be0ad1..4e5185efb98bd81a027c251a92e62df36709f412 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Author.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Author.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.identity;
 
 import org.briarproject.bramble.api.Nameable;
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorFactory.java
index 162a68aa07914fd2c8b2deaf4e4b2da14cadde6a..a4ee59220e7b6d54483229fb17cfa5ba87c2f127 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorFactory.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.identity;
 
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface AuthorFactory {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorId.java
index 6a9d5681d20e501b886e0fddf5314b47b926f2ab..27aa928065690b113fe3b22295cf385b464930a8 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/AuthorId.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.identity;
 
 import org.briarproject.bramble.api.UniqueId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Identity.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Identity.java
index 4d60768eb17730217973e3b1467ae8ede42a294d..227f732684f86b23fbdb4fdc37222897f05fb346 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Identity.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Identity.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.identity;
 
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/IdentityManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/IdentityManager.java
index be2e28d3e4540742457c818213d3abca57423c23..e29be5d8868b0c44cb257c16aafdb4e84599e3f4 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/IdentityManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/IdentityManager.java
@@ -6,7 +6,7 @@ import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface IdentityManager {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/LocalAuthor.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/LocalAuthor.java
index 1bc8df84b2763bbf8a16e534b743cfd4a684c899..e1af5eb1d5f508e487cc5421dceef13de7dd4129 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/LocalAuthor.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/LocalAuthor.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.identity;
 
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/event/IdentityAddedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/event/IdentityAddedEvent.java
index d6f09697e04de12e0bbb31c42c72d42d3527efcc..1b538f92f4f8bec6d732f7fad8e01b82451f050e 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/event/IdentityAddedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/event/IdentityAddedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.identity.event;
 
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/event/IdentityRemovedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/event/IdentityRemovedEvent.java
index 1c232c64294c732efa55b9d126ac40fefe4710b4..781f3cf12d07734c5da92d1e71fb98f83c2271b9 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/event/IdentityRemovedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/event/IdentityRemovedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.identity.event;
 
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/KeyAgreementConnection.java b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/KeyAgreementConnection.java
index 8a381ae09ec70057b67033a4d0fc0618bf2d296e..95549bcd79572cfe21ea346c28d4a03bda5f03e7 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/KeyAgreementConnection.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/KeyAgreementConnection.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.keyagreement;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/KeyAgreementTask.java b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/KeyAgreementTask.java
index f5d5150c44957be32102b99d60eeea0684eefb3e..9feaff14736d0dfa1e2695c6adb32b66b0709a30 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/KeyAgreementTask.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/KeyAgreementTask.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.keyagreement;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * A task for conducting a key agreement with a remote peer.
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/Payload.java b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/Payload.java
index c554d24e934c6fbac26cd8eb235c5c9bfa01043a..47d1712c7d4a1920cb46cf40319e740ed61486c6 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/Payload.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/Payload.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.keyagreement;
 
 import org.briarproject.bramble.api.Bytes;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/PayloadEncoder.java b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/PayloadEncoder.java
index 4744d4640083fc0e3b2ba0157395985f4480c580..5e073318f15133d38f388d56d4bcce5025d3a9dc 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/PayloadEncoder.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/PayloadEncoder.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.keyagreement;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface PayloadEncoder {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/PayloadParser.java b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/PayloadParser.java
index 90403669d471d92ff35ac81c51c20cf0fd7d8625..c6458443a8d54560bc74a82d71851228b9be0160 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/PayloadParser.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/PayloadParser.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.keyagreement;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/TransportDescriptor.java b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/TransportDescriptor.java
index 329bf27ab922c4eaf4ca0b4465908663553fb475..858ed720a42822809e174238cb6ab6258d9542e3 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/TransportDescriptor.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/TransportDescriptor.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.keyagreement;
 
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementAbortedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementAbortedEvent.java
index b0b8bf2c3c5e1c0c5763a808fcdbea6dbe854e5c..89719caede0bef7d2efdd77f8c48af7499169c81 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementAbortedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementAbortedEvent.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.keyagreement.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementFinishedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementFinishedEvent.java
index 81950fbcb2f0b05edb01ecaa02fa7c0b972f16f0..c1cc9f628b33f0c2f40ad3e938648efad31f4995 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementFinishedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementFinishedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.keyagreement.event;
 
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementResult;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementListeningEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementListeningEvent.java
index 6d8da3aeff52f40fd5e3acec47c71ca34603d44e..fef244b005bdb255714df83acc973691c4b2b78a 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementListeningEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/keyagreement/event/KeyAgreementListeningEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.keyagreement.event;
 
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.keyagreement.Payload;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
index 1f5a2c1569b658c505f3f07b80ab036e648713cb..8d4a97bbbdb0f86515dd88cf25de6036d9125bb5 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
@@ -4,9 +4,9 @@ import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.Wakeful;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.ExecutorService;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/ShutdownManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/ShutdownManager.java
index 78e2ee60b2e54bff5926aeaeb2f6bedc2aba7a04..c8a12738c5920c1c164bdfa3ab95154c00534b98 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/ShutdownManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/ShutdownManager.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.lifecycle;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface ShutdownManager {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/InvalidMailboxIdException.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/InvalidMailboxIdException.java
index dfb54d84e0230ec742b7fe806a1c612fb7a7a5cd..0c651e08818398acf774ee4f8a6e7e068a05ab86 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/InvalidMailboxIdException.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/InvalidMailboxIdException.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public class InvalidMailboxIdException extends Exception {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxAuthToken.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxAuthToken.java
index d2b9329692944c9f25dc2496bef536eedcda5c45..73b83e20a9b0b5bec358e7edaf8f6da8b1ab29ea 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxAuthToken.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxAuthToken.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxFileId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxFileId.java
index 7814658dadfa0a120ac08e7c2476948be36d55fa..d5c713532f152556a2c418c013aaef8d1acf75ef 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxFileId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxFileId.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxFolderId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxFolderId.java
index 7a1819d042c2a0ee8f5725d6a31088903ccf933a..632046a0443cbbd561c5b44f207bf0b5be67a1b9 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxFolderId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxFolderId.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxHelper.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxHelper.java
index 304fded5e456e4dc078c935572ec6d56c041977a..c504853b7a7466630e0f39e86d2fa06b2a3ec2a6 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxHelper.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxHelper.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 import java.util.TreeSet;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxId.java
index a4ca809f26769a2a99899a94355b053bff119aee..ad8257402cc7931cd73382b4cead0ab9e0187218 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxId.java
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonValue;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.UniqueId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Locale;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxPairingTask.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxPairingTask.java
index 0f8cd05d708208d9d614c66ff30c515f9ce1c6a3..047cb635eab3688fbc3b1350498dee60d818c015 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxPairingTask.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxPairingTask.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.mailbox;
 
 import org.briarproject.bramble.api.Consumer;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface MailboxPairingTask extends Runnable {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java
index d16cba6b8fdbc358968e5862836ab8f497f7499a..b5bb6ffd0ab4f6f8ef0921746283d75f640c08d4 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NullSafety;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NullSafety;
 
 import java.util.List;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxSettingsManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxSettingsManager.java
index e2aab69dc84885234e03352a8a4dc64f92c02d58..a47184f077a12ca1d3bc01b3d8be70340311ad1f 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxSettingsManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxSettingsManager.java
@@ -5,7 +5,7 @@ import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxStatus.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxStatus.java
index 5b729a7b3dadb7d88d6f945e305d6b482bc92692..e602f10d4f22cde4460e1e2cdc286b01fe39b64d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxStatus.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxStatus.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdate.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdate.java
index 891a8e5a99c0607af5a430664e5e9a89536c5769..1e285400e19bc2dce84872b13f748b9414619abd 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdate.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdate.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateManager.java
index 2c82db331531d34fe13bcfa564de73f8e742049f..2576f7b6af173128aeb22eed08eddc00356dbd87 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateManager.java
@@ -3,8 +3,8 @@ package org.briarproject.bramble.api.mailbox;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateWithMailbox.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateWithMailbox.java
index 87cad6b59b79951d0be566db5d345561b906d15b..8a9e9f1f2c46b64d4f9b412c9c1c2d8869bb8768 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateWithMailbox.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxUpdateWithMailbox.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxVersion.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxVersion.java
index 48c40a812c8843de72f0e8ff9f13b070700185e7..379dffd5875751d4fd6b83c09838c0eab902377c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxVersion.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxVersion.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxPairedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxPairedEvent.java
index 1bf89529d5cef4b682d602e92a059fe52900de18..5596d958c079d75883a78844e59efba28d556243 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxPairedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxPairedEvent.java
@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
 import org.briarproject.bramble.api.mailbox.MailboxUpdateWithMailbox;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxProblemEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxProblemEvent.java
index 4c00cac98988c0b579cb448392256a0a0bc4367c..1ef3d5db1957a9b14eb8a243841acf28caa7d55f 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxProblemEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxProblemEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.mailbox.event;
 
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxUnpairedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxUnpairedEvent.java
index 846f8298c44d441e58346e4b6de65da9e6ba0be6..a3ff9cd1b4ff0a15defa10090b9355d96af18a80 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxUnpairedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxUnpairedEvent.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.api.mailbox.event;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.mailbox.MailboxUpdate;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxUpdateSentToNewContactEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxUpdateSentToNewContactEvent.java
index efba3afd7c83685460924ec014f73381a8943a41..28e8be14e3e8b9c0e3b53c0418f3204e53e0124c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxUpdateSentToNewContactEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/MailboxUpdateSentToNewContactEvent.java
@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.mailbox.MailboxUpdate;
 import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/OwnMailboxConnectionStatusEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/OwnMailboxConnectionStatusEvent.java
index 4a4b6b93ecca0d92e9a1d6e77e2bd8a552152bef..f256e16eec6140562efeaaff89b6d4dd5eb79f8d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/OwnMailboxConnectionStatusEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/OwnMailboxConnectionStatusEvent.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.api.mailbox.event;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
 import org.briarproject.bramble.api.mailbox.MailboxStatus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/RemoteMailboxUpdateEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/RemoteMailboxUpdateEvent.java
index aeee7da39c76d4b8826016ea5485034865dcc4dd..41340f0efd9c608f6e595c22af99d559f9166ad1 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/RemoteMailboxUpdateEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/event/RemoteMailboxUpdateEvent.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.api.mailbox.event;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.mailbox.MailboxUpdate;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkManager.java
index f95eddc7d77df9fa71a042fda440b7f4d2307aa8..872a32060e1896fe646b0af7eda1fdfc688c0a67 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkManager.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.network;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface NetworkManager {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkStatus.java b/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkStatus.java
index 348c29f0df613c2629af7cd38befb5101a523860..dbebeab6b0b96a715499afdb99e71b3ebd8d6f86 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkStatus.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/network/NetworkStatus.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.network;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/network/event/NetworkStatusEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/network/event/NetworkStatusEvent.java
index f37bff94dc848584c70e032e47005d63da6ba9d5..4ed8e9ddbbf83a25bd4c798adbc0db64c4d42892 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/network/event/NetworkStatusEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/network/event/NetworkStatusEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.network.event;
 
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.network.NetworkStatus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/FieldsNotNullByDefault.java b/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/FieldsNotNullByDefault.java
deleted file mode 100644
index 54d04f43fdfc73377dc2495ba38e305fe01546c9..0000000000000000000000000000000000000000
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/FieldsNotNullByDefault.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.briarproject.bramble.api.nullsafety;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-
-import javax.annotation.Nonnull;
-import javax.annotation.meta.TypeQualifierDefault;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * This annotation can be applied to a package or class to indicate that
- * the fields in that element are non-null by default unless:
- * <ul>
- * <li> There is an explicit nullness annotation
- * <li> There is a default nullness annotation applied to a more tightly
- * nested element.
- * </ul>
- */
-@Documented
-@Nonnull
-@TypeQualifierDefault(FIELD)
-@Retention(RUNTIME)
-public @interface FieldsNotNullByDefault {
-}
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/MethodsNotNullByDefault.java b/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/MethodsNotNullByDefault.java
deleted file mode 100644
index 9fbfe4f0b0bb4084e9e1b02ca930c077eced9998..0000000000000000000000000000000000000000
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/MethodsNotNullByDefault.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.briarproject.bramble.api.nullsafety;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-
-import javax.annotation.Nonnull;
-import javax.annotation.meta.TypeQualifierDefault;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * This annotation can be applied to a package or class to indicate that
- * the methods in that element are non-null by default unless:
- * <ul>
- * <li> There is an explicit nullness annotation
- * <li> The method overrides a method in a superclass (in which case the
- * annotation of the corresponding method in the superclass applies)
- * <li> There is a default nullness annotation applied to a more tightly
- * nested element.
- * </ul>
- */
-@Documented
-@Nonnull
-@TypeQualifierDefault(METHOD)
-@Retention(RUNTIME)
-public @interface MethodsNotNullByDefault {
-}
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/NotNullByDefault.java b/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/NotNullByDefault.java
deleted file mode 100644
index 23fd38c7e7752a98cf1562875897c74ce56500dd..0000000000000000000000000000000000000000
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/NotNullByDefault.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.briarproject.bramble.api.nullsafety;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-
-import javax.annotation.Nonnull;
-import javax.annotation.meta.TypeQualifierDefault;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * This annotation can be applied to a package or class to indicate that
- * the fields, methods and parameters in that element are non-null by default
- * unless:
- * <ul>
- * <li> There is an explicit nullness annotation
- * <li> The method overrides a method in a superclass (in which case the
- * annotation of the corresponding method or parameter in the superclass
- * applies)
- * <li> There is a default nullness annotation applied to a more tightly
- * nested element.
- * </ul>
- */
-@Documented
-@Nonnull
-@TypeQualifierDefault({FIELD, METHOD, PARAMETER})
-@Retention(RUNTIME)
-public @interface NotNullByDefault {
-}
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/NullSafety.java b/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/NullSafety.java
deleted file mode 100644
index e54bad748e706fc230b33ada935d09b506111687..0000000000000000000000000000000000000000
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/NullSafety.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.briarproject.bramble.api.nullsafety;
-
-import javax.annotation.Nullable;
-
-@NotNullByDefault
-public class NullSafety {
-
-	/**
-	 * Stand-in for {@code Objects.requireNonNull()}.
-	 */
-	public static <T> T requireNonNull(@Nullable T t) {
-		if (t == null) throw new NullPointerException();
-		return t;
-	}
-
-	/**
-	 * Checks that exactly one of the arguments is null.
-	 *
-	 * @throws AssertionError If both or neither of the arguments are null
-	 */
-	public static void requireExactlyOneNull(@Nullable Object a,
-			@Nullable Object b) {
-		if ((a == null) == (b == null)) throw new AssertionError();
-	}
-
-	/**
-	 * Checks that the argument is null.
-	 */
-	public static void requireNull(@Nullable Object o) {
-		if (o != null) throw new AssertionError();
-	}
-
-	/**
-	 * Stand-in for {@code Objects.equals()}.
-	 */
-	public static boolean equals(@Nullable Object a, @Nullable Object b) {
-		return (a == b) || (a != null && a.equals(b));
-	}
-
-}
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/ParametersNotNullByDefault.java b/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/ParametersNotNullByDefault.java
deleted file mode 100644
index eb183de2eba2e330c4b60a0dd82f45d8b67d9783..0000000000000000000000000000000000000000
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/ParametersNotNullByDefault.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.briarproject.bramble.api.nullsafety;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-
-import javax.annotation.Nonnull;
-import javax.annotation.meta.TypeQualifierDefault;
-
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-/**
- * This annotation can be applied to a package or class to indicate that
- * the method parameters in that element are non-null by default unless:
- * <ul>
- * <li> There is an explicit nullness annotation
- * <li> The method overrides a method in a superclass (in which case the
- * annotation of the corresponding parameter in the superclass applies)
- * <li> There is a default nullness annotation applied to a more tightly
- * nested element.
- * </ul>
- */
-@Documented
-@Nonnull
-@TypeQualifierDefault(PARAMETER)
-@Retention(RUNTIME)
-public @interface ParametersNotNullByDefault {
-}
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/ConnectionHandler.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/ConnectionHandler.java
index 17e7d0f592747cc5a59e5696f972f2d1850e3fb2..96754846451f3b1c39209fd7c6785bcea41c70ab 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/ConnectionHandler.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/ConnectionHandler.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.api.plugin;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * An interface for handling connections created by transport plugins.
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/Plugin.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/Plugin.java
index 0ace3778a38b21d550b543ba48bf4bc96c4c13d5..8a93d40eb0f446f9265852e220d92187366371df 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/Plugin.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/Plugin.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.api.plugin;
 
 import org.briarproject.bramble.api.Pair;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.system.Wakeful;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginCallback.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginCallback.java
index 3c0f3ca4da2f26723a76ad516236b15af150d09a..fc4d89ab9df4c94ac822fcf052d32278d2cacb73 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginCallback.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginCallback.java
@@ -1,12 +1,12 @@
 package org.briarproject.bramble.api.plugin;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin.State;
 import org.briarproject.bramble.api.plugin.event.TransportActiveEvent;
 import org.briarproject.bramble.api.plugin.event.TransportInactiveEvent;
 import org.briarproject.bramble.api.plugin.event.TransportStateEvent;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.settings.Settings;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginConfig.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginConfig.java
index 61063030c986cfa0a5883acb01a5b01627803cd9..46690824c28f5709fd87597f482a18ca01dae072 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginConfig.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginConfig.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.plugin;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginFactory.java
index d0cf92e9b4da7eb1cc6b992a6866c90041db2e26..6a4bd9468508c6f0de8a2cf9d2d07edf4376942a 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.plugin;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginManager.java
index 5132ba3c616e66bbccd64e05ae6a7f4f71718a0f..2146d06a559209c18700e8578c60437dfbd62aad 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/PluginManager.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.plugin;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TransportConnectionReader.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TransportConnectionReader.java
index 941bb59d8a6ca6d118f5feb45c1f366a02b1090a..786da48ec11806637e1bb334f9df58521934c56f 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TransportConnectionReader.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TransportConnectionReader.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.plugin;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TransportConnectionWriter.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TransportConnectionWriter.java
index 540e56acc374b5ee636245f58f42551c1ca1f0c4..f755752e1cfcfa81c850c8ec0526b8e89f6bcb55 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TransportConnectionWriter.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TransportConnectionWriter.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.plugin;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/AbstractDuplexTransportConnection.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/AbstractDuplexTransportConnection.java
index 157a033447e3f84e3b297daa1b28cd29dd2154c9..a3bfab974f2c14d1e41fd3ab705076c5369fbaac 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/AbstractDuplexTransportConnection.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/AbstractDuplexTransportConnection.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.api.plugin.duplex;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexPlugin.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexPlugin.java
index 9e14e7ab5972c6e04cf55ed3d09a7c16475262cc..ea9445f662be1f281ee291b1cadc6ac3e8929a2f 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexPlugin.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexPlugin.java
@@ -2,13 +2,13 @@ package org.briarproject.bramble.api.plugin.duplex;
 
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.ConnectionHandler;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.rendezvous.KeyMaterialSource;
 import org.briarproject.bramble.api.rendezvous.RendezvousEndpoint;
 import org.briarproject.bramble.api.system.Wakeful;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexPluginFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexPluginFactory.java
index 991747494b1dab82712de7510ea4794c19e46983..18cbad2a44d452926545589e5f7cce8817066409 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexPluginFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexPluginFactory.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.plugin.duplex;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * Factory for creating a plugin for a duplex transport.
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexTransportConnection.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexTransportConnection.java
index d0e98bfba56679884eeffa519d441ec13cdf1e71..d49438c86dc9ca87dd20013d0729416609d4bb8b 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexTransportConnection.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/duplex/DuplexTransportConnection.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.api.plugin.duplex;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * An interface for reading and writing data over a duplex transport. The
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ConnectionClosedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ConnectionClosedEvent.java
index 6d5e5293b69b0170997a5dc91912caf5a32ef3f7..04b2ade66b312166a4f188ac4ac688d826b5cf37 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ConnectionClosedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ConnectionClosedEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.plugin.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ConnectionOpenedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ConnectionOpenedEvent.java
index ba21c185d86cad03fcd5c28dd370812a84971ba5..c51a4df85eb541c7b1f1e933ea918b63db3c8489 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ConnectionOpenedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ConnectionOpenedEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.plugin.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ContactConnectedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ContactConnectedEvent.java
index 46f6b46bc9599076889edaf0abd9255e2c747d14..daaf625fc6735f38a31782bbbdfba23f61a310ef 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ContactConnectedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ContactConnectedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.plugin.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ContactDisconnectedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ContactDisconnectedEvent.java
index 77b17648406635fb27109a33f78c9b731e8846c2..2cb02eb7e5eb61ceadf8541df8ee163c04242285 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ContactDisconnectedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/ContactDisconnectedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.plugin.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportActiveEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportActiveEvent.java
index de9c49c90fea8de89a913b37354726a66587f0ba..4618c37355cc74b797034e0e9a0de4235db5e741 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportActiveEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportActiveEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.api.plugin.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin.State;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportInactiveEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportInactiveEvent.java
index e2167c0f5929415efd8dccc38e435105c5d238c9..fa8b45cefc7f5f0f5b12a18eff90a5765264bc4c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportInactiveEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportInactiveEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.api.plugin.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin.State;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportStateEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportStateEvent.java
index 376b5303fe52d0005e2c6865b1c20e681abffa03..9aa5aab3714d4da2944da6c29393d7825d0703c1 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportStateEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/event/TransportStateEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.api.plugin.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin.State;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveManager.java
index 2838f87cf28090b14f28a6d9069e28351fe2c309..1c78297b71d19a1dcf391783ad345e139dc839a1 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveManager.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.plugin.file;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveTask.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveTask.java
index 6067271608fa735222e98b038b11f593c4e4b082..78e29738b14eb1415d88c3c0cf8ae53892bb6b9f 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveTask.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/file/RemovableDriveTask.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.plugin.file;
 
 import org.briarproject.bramble.api.Consumer;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface RemovableDriveTask extends Runnable {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/simplex/SimplexPlugin.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/simplex/SimplexPlugin.java
index f7cf1e8014dd80b6abc38c06b41924f6c47f877e..eb492fdc51d922866ad13ac49c72615396c33e44 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/simplex/SimplexPlugin.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/simplex/SimplexPlugin.java
@@ -1,11 +1,11 @@
 package org.briarproject.bramble.api.plugin.simplex;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.system.Wakeful;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/simplex/SimplexPluginFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/simplex/SimplexPluginFactory.java
index 2b345d51042be548bece0d060539b9755364922c..cd1c53af310307379e5258ce6544124203bb1f48 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/simplex/SimplexPluginFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/simplex/SimplexPluginFactory.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.plugin.simplex;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * Factory for creating a plugin for a simplex transport.
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/properties/TransportPropertyManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/properties/TransportPropertyManager.java
index de10f2aca6a4cbf367378da8e73ab0d35e351794..d000f19efa81c76af17e9dd75dcd5d090b96f602 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/properties/TransportPropertyManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/properties/TransportPropertyManager.java
@@ -3,9 +3,9 @@ package org.briarproject.bramble.api.properties;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.sync.ClientId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/properties/event/RemoteTransportPropertiesUpdatedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/properties/event/RemoteTransportPropertiesUpdatedEvent.java
index 89b7ec1317ed9b65e49213ec3005c66e0bf5187d..ea609fd0d366edfed69022e7394710df300746fa 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/properties/event/RemoteTransportPropertiesUpdatedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/properties/event/RemoteTransportPropertiesUpdatedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.api.properties.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/record/Record.java b/bramble-api/src/main/java/org/briarproject/bramble/api/record/Record.java
index fedb7212c2ad75dd35fea5b7e1799a2b81022f67..3e910ce28ff4f5217fd3b972a7664a4734d47b84 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/record/Record.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/record/Record.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.record;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/record/RecordReader.java b/bramble-api/src/main/java/org/briarproject/bramble/api/record/RecordReader.java
index 14756860c8109d97b70800cca1ad0747aa58e8b6..ada8f19402f643dfce22e1ce007f576d0da9d869 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/record/RecordReader.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/record/RecordReader.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.record;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.Predicate;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.EOFException;
 import java.io.IOException;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/record/RecordWriter.java b/bramble-api/src/main/java/org/briarproject/bramble/api/record/RecordWriter.java
index 893e5ff53ce271a4266dd71b06b832aab1496d5e..8e0319bda6e16312d5718a6dfd359c464cbf6991 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/record/RecordWriter.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/record/RecordWriter.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.record;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReadHandler.java b/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReadHandler.java
index 6a8176516c70139bf71f3a6caf89807686ae0f8d..58d50e7ddd78bd78863e7b19f284ea0c84bf0b2d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReadHandler.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReadHandler.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReliabilityLayer.java b/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReliabilityLayer.java
index bdf066bee45db0b29df3430965b8693930a6ec7a..78e9c4e820bacb74dec00dfd75700e8c436673a7 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReliabilityLayer.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReliabilityLayer.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 import java.io.OutputStream;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReliabilityLayerFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReliabilityLayerFactory.java
index 89a06a07ffa60f35ce32afa50b86419130e8c41e..1e2b73fd51aad275cbb6c0397d1b591371ae072e 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReliabilityLayerFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/ReliabilityLayerFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface ReliabilityLayerFactory {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/WriteHandler.java b/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/WriteHandler.java
index 395e208a77465bb825643bafb65e238c318a21d3..a35d478bfc779cb0929434bf35a46336985cd778 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/WriteHandler.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/reliability/WriteHandler.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/KeyMaterialSource.java b/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/KeyMaterialSource.java
index 87d1960da181a79edc560f0165cdad05a02ed41a..8ab55610a2481e2c0a46f5b00a59fd79a535cabb 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/KeyMaterialSource.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/KeyMaterialSource.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.rendezvous;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * A source of key material for use in making rendezvous connections.
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousConnectionClosedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousConnectionClosedEvent.java
index c9ec9ac768ae6214264ed5b8c82db3ad929a35ff..e2b593eb1a9ffa5abc131f0e9db725134cd97faf 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousConnectionClosedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousConnectionClosedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.rendezvous.event;
 
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousConnectionOpenedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousConnectionOpenedEvent.java
index 5324c081d408971a9d861196f016dbcb11dc2ad2..cdb365de7e96693156cbaec2ed38571c119a3405 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousConnectionOpenedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousConnectionOpenedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.rendezvous.event;
 
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousPollEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousPollEvent.java
index 0281a9017aa0f0c27c07dc63d7257f09dfe4d24d..9dcbe505e9f8a6dc143cfdacef8af089a0d5329b 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousPollEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/rendezvous/event/RendezvousPollEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.rendezvous.event;
 
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/reporting/DevConfig.java b/bramble-api/src/main/java/org/briarproject/bramble/api/reporting/DevConfig.java
index 8c7c8900022c6aa5813154dbe6ee916ab747c586..41f6edd1991ca9e03823333d34690f46a4f37d08 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/reporting/DevConfig.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/reporting/DevConfig.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.reporting;
 
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/reporting/DevReporter.java b/bramble-api/src/main/java/org/briarproject/bramble/api/reporting/DevReporter.java
index 392886a2f1d77f3acafff46f1b3ccda1f3e54c6c..97ee57a52dee55a3c8060f6f892754b8e48f1fd0 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/reporting/DevReporter.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/reporting/DevReporter.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.reporting;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.FileNotFoundException;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/settings/SettingsManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/settings/SettingsManager.java
index 731664018a9610f4a0598ad9d8838d5d7e278e0e..d2eaa9f622d570436f46277c2f90bef2b07fae73 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/settings/SettingsManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/settings/SettingsManager.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.settings;
 
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface SettingsManager {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/settings/event/SettingsUpdatedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/settings/event/SettingsUpdatedEvent.java
index e8f57c4cbc0c2d95641000357de7becba9ebac40..f75afbc4f12f9bf7c9080317662e925384dd8b2a 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/settings/event/SettingsUpdatedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/settings/event/SettingsUpdatedEvent.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.settings.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Ack.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Ack.java
index 0f21a64ead1f3af06fc8f988b433814dda18682d..001211ee2c51cf69ca02df4732a27acb7343bcc0 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Ack.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Ack.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ClientId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ClientId.java
index a0f4e66754eb3da34864619e12145e7f49f1df6c..cb509caea224507bb551d07d7992db6c75ad1334 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ClientId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ClientId.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/GroupFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/GroupFactory.java
index 9924c51b8507a861e9439bdf625ed69bad785618..f5219db968be59f93e0654c219a05c7160ed9d05 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/GroupFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/GroupFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface GroupFactory {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/GroupId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/GroupId.java
index 6cfef90768d4ed76af59121832a70e0c3a6581d9..9600aa0165796bacfd0ac4ffd6839e0386f56423 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/GroupId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/GroupId.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.sync;
 
 import org.briarproject.bramble.api.UniqueId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Message.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Message.java
index b2f30debd115b5f39d7577ab98f3ea903d72b755..3ec71b072b985f3522f3567cc10ae7499612d18a 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Message.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Message.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageContext.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageContext.java
index c47718c16fcd16702a43ce109b32fbf20993949d..888ada18fc83dc1fead52fd8bc6e0cea1d76bed8 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageContext.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageContext.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.sync;
 
 import org.briarproject.bramble.api.db.Metadata;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.Collections;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageFactory.java
index cab854381dd7cbc7f29ca39c0c194d53ec4aeea1..4423abf2daf77cc954814182aaf641520e94592f 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface MessageFactory {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageId.java
index d25584eba216aac2944a4995f6d93a694cec0a30..7b3a2ab6e67c346bb7cc2d132af3375996233d5d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/MessageId.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.sync;
 
 import org.briarproject.bramble.api.UniqueId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Offer.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Offer.java
index 6cfeb5b04e056755a8e8d3de1b5a214d4762acf8..2f3e316f59a8246c97889bb7b17f1089f106f104 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Offer.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Offer.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/OutgoingSessionRecord.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/OutgoingSessionRecord.java
index 6f1077a23ef5f59c5932070ed4bed82b0c1cced6..5de9559f063d7849fccbd2fe152ff41c94911f50 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/OutgoingSessionRecord.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/OutgoingSessionRecord.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.concurrent.CopyOnWriteArrayList;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Priority.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Priority.java
index 44a2169b772a7f39afb3717c229fb5df3b25db74..49dc47ccb17dcc4ee56a864fe4c704a589454f7c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Priority.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Priority.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/PriorityHandler.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/PriorityHandler.java
index 57b2bcf9877845d099b15367181a49554b5604e0..b490ea117025b972238541c2909cdd4ca2213179 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/PriorityHandler.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/PriorityHandler.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * An interface for handling a {@link Priority} record received by an
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Request.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Request.java
index f4e6e1f2cab481e5cd0ac78df2dbead591b7aadd..c3a51c1e2f2494f9d88e920c9ecd5596f7950163 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Request.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Request.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordReader.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordReader.java
index c0f9b947acb9849d3190206d904beb7ab55b8edc..354340fa74022338789dd22ecd0cb27eb863c234 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordReader.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordReader.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordReaderFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordReaderFactory.java
index 1f66bdbadcfb2ebfe2d7376461740096485bfa64..19d738391abc4335f0577400b572e60f63a11f89 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordReaderFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordReaderFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordWriter.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordWriter.java
index 4234f50fbff7fe87d4b875532e2c33af3433b2ef..9f02547de6b3d19bd1df3ba1e4c2271366da4ca6 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordWriter.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordWriter.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordWriterFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordWriterFactory.java
index 32c7c0c36c7a8f9b7b83631d7a9f98d5d16f509d..4ee72ccfb131b2562a9fee429f6c44b3997a9673 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordWriterFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncRecordWriterFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.OutputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncSessionFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncSessionFactory.java
index 65250938fb3b269cdfa0d034925f2f6e3f0b5338..e3660dd3d43ad6c62f9940cec65e758f0f2001f2 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncSessionFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/SyncSessionFactory.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.api.sync;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.transport.StreamWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Versions.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Versions.java
index 9517d02e65c67bae8668389b8df84c805f543588..9d9606934f88467705ced7e5b9ff592190eecfcd 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Versions.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/Versions.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/CloseSyncConnectionsEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/CloseSyncConnectionsEvent.java
index 92d2b3c19cb0349d1a96cef09933fa0ec28ce7c5..22d75a6e89c00f7e02272cd2aad3a290847c078b 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/CloseSyncConnectionsEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/CloseSyncConnectionsEvent.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupAddedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupAddedEvent.java
index 3ff5b795c6f750ead69f26de9b0762479bbd5fcb..9b92fe51585298a76a4f67e61adbd2c9b03a2cdb 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupAddedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupAddedEvent.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupRemovedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupRemovedEvent.java
index 9804547169578420d73184dd885893162a91a398..8520a52a55b1150835346bfc3d827980ce1c55af 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupRemovedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupRemovedEvent.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupVisibilityUpdatedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupVisibilityUpdatedEvent.java
index 7d151a48dd8e4ab17a2ff51df986b001aaadbdb9..570db5e0a2926789e3221ea5678bc2e95351dd47 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupVisibilityUpdatedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/GroupVisibilityUpdatedEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group.Visibility;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageAddedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageAddedEvent.java
index 960dddc6610dd6c2e5a0306a10ba59d5efa1e28d..3c649b35770e20dcbc850b894ebf07ce37b0d954 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageAddedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageAddedEvent.java
@@ -2,9 +2,9 @@ package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageRequestedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageRequestedEvent.java
index eab1405425f147086b699726f345a4fd2e0e767f..fd4b0907371c203221412292df61d4ad34df60b0 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageRequestedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageRequestedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageSharedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageSharedEvent.java
index d7ef7d802bd4b725b8357bdb70d52d003c165b52..4d5e8205b3d253368fc4984650352e4eadec2f8a 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageSharedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageSharedEvent.java
@@ -2,10 +2,10 @@ package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group.Visibility;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageStateChangedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageStateChangedEvent.java
index 7a6829e7c7b53861e404f27f685a86cb476d3e86..7bac4e52fc88d65550ec9e3edc5c2cb47f3a5f12 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageStateChangedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageStateChangedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.validation.MessageState;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageToAckEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageToAckEvent.java
index cc35d59a957fa6fab1c0239220fb4bf9ad3b1b1d..dcf2f4302ddee20c51827ef4d457e0b0af0eefb8 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageToAckEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageToAckEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageToRequestEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageToRequestEvent.java
index e1a7fb969f22fbd95e0db0be6609f2145ca76f40..36989ccc90b08cada8779e0764d410604eb47338 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageToRequestEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessageToRequestEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesAckedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesAckedEvent.java
index fb1b1dd21d4b72d0a5d5e0349bc75bd5382f23cd..47190a1fd06962ccc94e6dd920757e857578015e 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesAckedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesAckedEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesSentEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesSentEvent.java
index 179907a3a292b0ed481375630131602ce18d8182..df741cb35a4fc4f1be99d158a1b3d0992ccde0de 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesSentEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/MessagesSentEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/SyncVersionsUpdatedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/SyncVersionsUpdatedEvent.java
index 00d1f5b7b1576d07189b5e29a7e96c96b1f286b1..ed46dff005038e9670a6d885fe25457756b706f2 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/SyncVersionsUpdatedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/event/SyncVersionsUpdatedEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.api.sync.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/validation/ValidationManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/validation/ValidationManager.java
index fcaa5ee771d20f8529f26a03b50b80b5572a9485..1951a7342b39b0363dd7af1862c9f2222df89bff 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/validation/ValidationManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/validation/ValidationManager.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.sync.validation;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * Responsible for managing message validators and passing them messages to
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/system/LocationUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/api/system/LocationUtils.java
index 61a83d95c0d1ec788286eb707e935644a77a6cb4..4b3e1be3b8eb96ddfc7e9de2fd438b95ba43008d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/system/LocationUtils.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/system/LocationUtils.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface LocationUtils {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/system/ResourceProvider.java b/bramble-api/src/main/java/org/briarproject/bramble/api/system/ResourceProvider.java
index e4bf0b63c0e7940380db85f853e80f89a07e4597..1642e7b294c060365710ae3e38223497dfc0d12c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/system/ResourceProvider.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/system/ResourceProvider.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/system/SecureRandomProvider.java b/bramble-api/src/main/java/org/briarproject/bramble/api/system/SecureRandomProvider.java
index 7d821ba2cdb2c02f6bd35d72fc26f9eb050aa6f8..b0ab9e0b66363e78f1065d7aabbad25bf69f476b 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/system/SecureRandomProvider.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/system/SecureRandomProvider.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.Provider;
 import java.security.SecureRandom;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/system/TaskScheduler.java b/bramble-api/src/main/java/org/briarproject/bramble/api/system/TaskScheduler.java
index 8c3b599b2808d99a9c796b6bdcc958d385d9d38d..0ebe69db9381a3008d851be6534c44fd6ca28b27 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/system/TaskScheduler.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/system/TaskScheduler.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.system;
 
 import org.briarproject.bramble.api.Cancellable;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/IncomingKeys.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/IncomingKeys.java
index 465dec55af019771c46bbf68372e682d0c9678f1..de2862d4d21bd03c13121c935bd30022261d0601 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/IncomingKeys.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/IncomingKeys.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/KeySetId.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/KeySetId.java
index fb6a929df6974d85cd971f8fedd4a9e5961aebce..7fe7aad3899bef0e9e2686c1410e51f6eb0fb559 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/KeySetId.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/KeySetId.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.api.transport;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/OutgoingKeys.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/OutgoingKeys.java
index 9fa6245d03de8180cade41fd051854756c4dc560..0856b877394e636b0a73af9da7580fe95d221fca 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/OutgoingKeys.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/OutgoingKeys.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamContext.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamContext.java
index c27abc891e8a8f143031748ebafb9276855c8fb4..7ef48102399074cce5131b942dea024f9a42c76f 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamContext.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamContext.java
@@ -3,13 +3,13 @@ package org.briarproject.bramble.api.transport;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
 
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireExactlyOneNull;
+import static org.briarproject.nullsafety.NullSafety.requireExactlyOneNull;
 
 @Immutable
 @NotNullByDefault
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamReaderFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamReaderFactory.java
index dc60242f826fa65bb4a8c9e83f1da8cd4dec279c..8ee274a2c8e32c899680139acb62afd84e807fa0 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamReaderFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamReaderFactory.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamWriterFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamWriterFactory.java
index 6090a7d147c943154e17e0ec93d7688b210bab62..b81285340b8ad5a99b98bc4531944b43bb9e290d 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamWriterFactory.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/StreamWriterFactory.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.OutputStream;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeySet.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeySet.java
index 7a3b1dc122596d1624028a4fde9c23d419360072..81bef3a3915205083999a850bc00e7ef0eb7aed9 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeySet.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeySet.java
@@ -2,12 +2,12 @@ package org.briarproject.bramble.api.transport;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.PendingContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
 
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireExactlyOneNull;
+import static org.briarproject.nullsafety.NullSafety.requireExactlyOneNull;
 
 /**
  * A set of keys for communicating with a given contact or pending contact
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeys.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeys.java
index 200f05bd1d676a09a6a5836e07f41f5070f48b1e..60c98b174ff825e452df90ec85da4a08df7ba7a3 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeys.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/TransportKeys.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.api.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/agreement/TransportKeyAgreementManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/agreement/TransportKeyAgreementManager.java
index 1b8fc6bc1f939b75985f75a405f396b36bf13099..dc22887830294103ce9dc8d31d44140738a2068f 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/transport/agreement/TransportKeyAgreementManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/transport/agreement/TransportKeyAgreementManager.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.transport.agreement;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface TransportKeyAgreementManager {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientMajorVersion.java b/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientMajorVersion.java
index d57eb987ebae611a494828be80a4a1fb57044eb0..87284a5afcba229811d51ee997767907b1884f36 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientMajorVersion.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientMajorVersion.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.versioning;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersion.java b/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersion.java
index 719c1e38ccfc06a9372b05b7fab1b9ede51b53cc..2664132249f5b4fa4c9f47013d73dcc31643a7b2 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersion.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersion.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.api.versioning;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersioningManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersioningManager.java
index 53baed068316bee8c2c6e02aaa920b3567411bfd..6b299d611c300ea08c586dedfef020fffe548398 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersioningManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/ClientVersioningManager.java
@@ -6,9 +6,9 @@ import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group.Visibility;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface ClientVersioningManager {
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/event/ClientVersionUpdatedEvent.java b/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/event/ClientVersionUpdatedEvent.java
index 0e9985c7714cd3d913acdc39e3de7980b53808c3..0718cda3e279f08905e44cefcaa4f1a23b152417 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/event/ClientVersionUpdatedEvent.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/versioning/event/ClientVersionUpdatedEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.api.versioning.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.versioning.ClientVersion;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/IoUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/IoUtils.java
index 3c07f76c3f62fbbd6b3a9e949664dfb98b49c901..b37dbdbb6df31248339278f79c04a75f223eeef7 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/util/IoUtils.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/util/IoUtils.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.util;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.Closeable;
 import java.io.EOFException;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/NetworkUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/NetworkUtils.java
index f6a4cdc830e9a1005ffba402be9631373f4b20ff..dd1538ef64d145c139387eb7fb06a62eccb2c0a7 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/util/NetworkUtils.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/util/NetworkUtils.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.util;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.net.NetworkInterface;
 import java.net.SocketException;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/OsUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/OsUtils.java
index 8821838ef450b64fba41d186d6de1d12c92dcb21..99bac6951f8f7a4a2ea478e9dcc70461401d5269 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/util/OsUtils.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/util/OsUtils.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.util;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/PrivacyUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/PrivacyUtils.java
index 10df6686cc3a65a59e12fd0647df938e2053503f..c39fc5e860fec39bb73ce4eb765db89beff1f7bb 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/util/PrivacyUtils.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/util/PrivacyUtils.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.util;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.net.Inet4Address;
 import java.net.InetAddress;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/StringUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/StringUtils.java
index e98d2b648d1d28bfbab9142607557a4a3f2ed820..2797aaf7242d6f92fd61104ca91af12ed45e6d5c 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/util/StringUtils.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/util/StringUtils.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.util;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.UnsupportedEncodingException;
 import java.nio.ByteBuffer;
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/ValidationUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/ValidationUtils.java
index 346edc1f784d661d1202ea52f51b38a277a5a048..097480fb54929ca148d233889981244b24195a07 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/util/ValidationUtils.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/util/ValidationUtils.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.util;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-api/witness.gradle b/bramble-api/witness.gradle
index 2b9110cf05b67d0304bf72992d48db93a4c1d415..2b05f3a06519855e28e4f153eb8a4aef68d3ce95 100644
--- a/bramble-api/witness.gradle
+++ b/bramble-api/witness.gradle
@@ -10,6 +10,7 @@ dependencyVerification {
         'net.bytebuddy:byte-buddy:1.9.12:byte-buddy-1.9.12.jar:3688c3d434bebc3edc5516296a2ed0f47b65e451071b4afecad84f902f0efc11',
         'net.jcip:jcip-annotations:1.0:jcip-annotations-1.0.jar:be5805392060c71474bf6c9a67a099471274d30b83eef84bfc4e0889a4f1dcc0',
         'org.apache-extras.beanshell:bsh:2.0b6:bsh-2.0b6.jar:a17955976070c0573235ee662f2794a78082758b61accffce8d3f8aedcd91047',
+        'org.briarproject:null-safety:0.1:null-safety-0.1.jar:161760de5e838cb982bafa973df820675d4397098e9a91637a36a306d43ba011',
         'org.codehaus.mojo.signature:java16:1.1:java16-1.1.signature:53799223a2c98dba2d0add810bed76315460df285c69e4f397ae6098f87dd619',
         'org.codehaus.mojo:animal-sniffer-ant-tasks:1.20:animal-sniffer-ant-tasks-1.20.jar:bb7d2498144118311d968bb08ff6fae3fc535fb1cb9cca8b8e9ea65b189422ac',
         'org.codehaus.mojo:animal-sniffer:1.20:animal-sniffer-1.20.jar:80c422523c38db91260c6d78e5ee4b012862ab61cc55020c9e243dd7b5c62249',
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/PoliteExecutor.java b/bramble-core/src/main/java/org/briarproject/bramble/PoliteExecutor.java
index 152210598a56430a5302f907c0855f12d0377f85..885a4e20e30ca5220e48cd99941610c646f3490a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/PoliteExecutor.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/PoliteExecutor.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.LinkedList;
 import java.util.Queue;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/TimeLoggingExecutor.java b/bramble-core/src/main/java/org/briarproject/bramble/TimeLoggingExecutor.java
index c786d1b9603cd2d2bc7319a97ae19d91bf80e3c1..dc0b96d3d487b28ee9faea453b510dfc3d219b72 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/TimeLoggingExecutor.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/TimeLoggingExecutor.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.RejectedExecutionHandler;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java
index 3410c394fd0005cc938c8fc7971790f3f87f6ecf..879c4505b77d86d41e11f3df758b7098b51428b5 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/account/AccountManagerImpl.java
@@ -9,9 +9,9 @@ import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.bramble.api.identity.Identity;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.util.IoUtils;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.BufferedReader;
 import java.io.File;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java
index 4c88e57c73655461afccff427785bafd7f922ccd..39a3be88f042e5ea62399767030de73971a458ae 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java
@@ -10,7 +10,6 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.Service;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -18,6 +17,7 @@ import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.TaskScheduler;
 import org.briarproject.bramble.api.versioning.ClientMajorVersion;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.HashSet;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/client/ClientHelperImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/client/ClientHelperImpl.java
index 35a8ddb73224fcfd3c79bbb65630ea2dd44610fe..1e1939cd8aa472942096f73c6e99951a7953f62e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/client/ClientHelperImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/client/ClientHelperImpl.java
@@ -29,7 +29,6 @@ import org.briarproject.bramble.api.mailbox.MailboxProperties;
 import org.briarproject.bramble.api.mailbox.MailboxUpdate;
 import org.briarproject.bramble.api.mailbox.MailboxUpdateWithMailbox;
 import org.briarproject.bramble.api.mailbox.MailboxVersion;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -37,6 +36,7 @@ import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.util.Base32;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/client/ContactGroupFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/client/ContactGroupFactoryImpl.java
index 091bc95f7e2ddd9a738bc0d1cfbe87214a648276..d3475b8f76b501b4adbc016661f6d4c26794eee4 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/client/ContactGroupFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/client/ContactGroupFactoryImpl.java
@@ -6,10 +6,10 @@ import org.briarproject.bramble.api.client.ContactGroupFactory;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/Connection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/Connection.java
index 9db61721c298e9bc7dd548f6955d5242e4778769..614c895ef059390e0eade6245247754f28c3bb22 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/Connection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/Connection.java
@@ -2,7 +2,6 @@ package org.briarproject.bramble.connection;
 
 import org.briarproject.bramble.api.connection.ConnectionRegistry;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.TransportId;
@@ -10,6 +9,7 @@ import org.briarproject.bramble.api.transport.KeyManager;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionManagerImpl.java
index f3224e5db57793440411851ad4d4c07deb578cf6..096c109617d3a8c76ef8234f670bf3e42b65958c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionManagerImpl.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.HandshakeManager;
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.TransportId;
@@ -18,6 +17,7 @@ import org.briarproject.bramble.api.sync.SyncSessionFactory;
 import org.briarproject.bramble.api.transport.KeyManager;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.SecureRandom;
 import java.util.concurrent.Executor;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionRegistryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionRegistryImpl.java
index 2e551f520f6fb63b6826f338931ee87f51c213fb..6b39b89b023872adaaa729aa3b0c81bb5cae5aaf 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionRegistryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/ConnectionRegistryImpl.java
@@ -6,7 +6,6 @@ import org.briarproject.bramble.api.connection.InterruptibleConnection;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.event.EventBus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginConfig;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.event.ConnectionClosedEvent;
@@ -16,6 +15,7 @@ import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent;
 import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionClosedEvent;
 import org.briarproject.bramble.api.rendezvous.event.RendezvousConnectionOpenedEvent;
 import org.briarproject.bramble.api.sync.Priority;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/DuplexSyncConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/DuplexSyncConnection.java
index 33b90c68f1623928e1f25683f8eb00a72f533eb1..127f05ae9c3763d014c7c3fc22cc72f034d1e253 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/DuplexSyncConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/DuplexSyncConnection.java
@@ -3,7 +3,6 @@ package org.briarproject.bramble.connection;
 import org.briarproject.bramble.api.connection.ConnectionRegistry;
 import org.briarproject.bramble.api.connection.InterruptibleConnection;
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.TransportId;
@@ -18,6 +17,7 @@ import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriter;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.concurrent.Executor;
@@ -25,7 +25,7 @@ import java.util.concurrent.Executor;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.GuardedBy;
 
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @NotNullByDefault
 abstract class DuplexSyncConnection extends SyncConnection
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/HandshakeConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/HandshakeConnection.java
index 7405bbe2e4a984ffef31794d3c719bbe899570da..df5d84a8cc2cca92ae4fcfb72fc2af3db5a576b1 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/HandshakeConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/HandshakeConnection.java
@@ -6,7 +6,6 @@ import org.briarproject.bramble.api.contact.ContactExchangeManager;
 import org.briarproject.bramble.api.contact.HandshakeManager;
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.TransportId;
@@ -15,6 +14,7 @@ import org.briarproject.bramble.api.transport.KeyManager;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingDuplexSyncConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingDuplexSyncConnection.java
index abf34ca0ff1bbbde46bc459c62c225500b06236b..2238df97ab67d6743552ab33dbdbec9525b91084 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingDuplexSyncConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingDuplexSyncConnection.java
@@ -3,7 +3,6 @@ package org.briarproject.bramble.connection;
 import org.briarproject.bramble.api.connection.ConnectionRegistry;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
@@ -14,6 +13,7 @@ import org.briarproject.bramble.api.transport.KeyManager;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.concurrent.Executor;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingHandshakeConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingHandshakeConnection.java
index d919c1bd4cc75230f273479e00ccbdb2ab6ce7e2..2fd4354f34e804b9350a901f5d1f3640e56d4df1 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingHandshakeConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingHandshakeConnection.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.contact.HandshakeManager;
 import org.briarproject.bramble.api.contact.HandshakeManager.HandshakeResult;
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.transport.KeyManager;
@@ -15,6 +14,7 @@ import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriter;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingSimplexSyncConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingSimplexSyncConnection.java
index 68b9d969c023232f208c04a482cd26e656f7e62f..705661d6ae84cdc6fc6d50361a4a1b89e85b7819 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingSimplexSyncConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/IncomingSimplexSyncConnection.java
@@ -4,7 +4,6 @@ import org.briarproject.bramble.api.connection.ConnectionManager.TagController;
 import org.briarproject.bramble.api.connection.ConnectionRegistry;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
@@ -14,6 +13,7 @@ import org.briarproject.bramble.api.transport.KeyManager;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingDuplexSyncConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingDuplexSyncConnection.java
index d7f777b7b829f9921ad98ecf7f6b2132b8db035a..61a2a43c556060dc83f10c12c01c1f0d3fef950d 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingDuplexSyncConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingDuplexSyncConnection.java
@@ -3,7 +3,6 @@ package org.briarproject.bramble.connection;
 import org.briarproject.bramble.api.connection.ConnectionRegistry;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
@@ -15,6 +14,7 @@ import org.briarproject.bramble.api.transport.KeyManager;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.security.SecureRandom;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingHandshakeConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingHandshakeConnection.java
index 7a2e5264e8fd2ea27f9ff720a9dd3ced9b39d572..a59edf45031b6c8d3451c8ef4c263719f2dced1c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingHandshakeConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingHandshakeConnection.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.contact.HandshakeManager;
 import org.briarproject.bramble.api.contact.HandshakeManager.HandshakeResult;
 import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.transport.KeyManager;
@@ -16,6 +15,7 @@ import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriter;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingSimplexSyncConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingSimplexSyncConnection.java
index d128d9d7122f4369a79298ef10f969dbb8b30a48..943851ab4fbc957792944d14f4323b2baff5f3d4 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingSimplexSyncConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/OutgoingSimplexSyncConnection.java
@@ -2,7 +2,6 @@ package org.briarproject.bramble.connection;
 
 import org.briarproject.bramble.api.connection.ConnectionRegistry;
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
@@ -14,14 +13,15 @@ import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriter;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
 import javax.annotation.Nullable;
 
 import static java.util.logging.Level.WARNING;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.util.LogUtils.logException;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @NotNullByDefault
 class OutgoingSimplexSyncConnection extends SyncConnection implements Runnable {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/connection/SyncConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/connection/SyncConnection.java
index 6de535552ba480ddb66602010518b05acaa42a67..2db5deda5c5be5ada516e338a1044743f8f24aaa 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/connection/SyncConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/connection/SyncConnection.java
@@ -3,7 +3,6 @@ package org.briarproject.bramble.connection;
 import org.briarproject.bramble.api.connection.ConnectionRegistry;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
@@ -14,6 +13,7 @@ import org.briarproject.bramble.api.transport.KeyManager;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -21,8 +21,8 @@ import java.io.InputStream;
 import javax.annotation.Nullable;
 
 import static java.util.logging.Level.WARNING;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.util.LogUtils.logException;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @NotNullByDefault
 class SyncConnection extends Connection {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeCrypto.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeCrypto.java
index 5c21eb23a56be404e26b8ef0d83b6fbc16da8bba..e3c0e55001107b73bc08bc04089bcfb3616fb490 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeCrypto.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeCrypto.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.contact;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface ContactExchangeCrypto {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeCryptoImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeCryptoImpl.java
index 6a3a3c44a13bed5ee018ce3f9acd4b7354e09385..1f376f8ca9097d1b05c045023e03b33cbfdbea49 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeCryptoImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeCryptoImpl.java
@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeManagerImpl.java
index 27870ca23e11fbf52001ae9d9e40aecc61fc966a..5040cf959ffc2ab2c38e7a134458485f3e9c2c32 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeManagerImpl.java
@@ -18,7 +18,6 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.properties.TransportProperties;
@@ -32,6 +31,7 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
 import org.briarproject.bramble.api.transport.StreamWriter;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.EOFException;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java
index 3319258e6d2a3876f21b2b53256453f84acc2b71..d460736ea10eb9235fb9dfbf9d463d9094dc598f 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java
@@ -21,8 +21,8 @@ import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.KeyManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeCrypto.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeCrypto.java
index bab35e6d1428045411f930fa81424ced14642221..b7bf351ca8834523416da39c02f447f1ab01d026 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeCrypto.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeCrypto.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.contact;
 import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeCryptoImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeCryptoImpl.java
index 199bf16afcadb301b885373707b9ac84d74fe984..f5ebb5e1d522e1c232015fc578e4d42ceb6e96c6 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeCryptoImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeCryptoImpl.java
@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeManagerImpl.java
index 7edeaf7868c9277bd8446cbc13c68a2623fb55ad..acd1c80e7f75060b77194b7466b7d286f59dd2f4 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/HandshakeManagerImpl.java
@@ -16,13 +16,13 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.record.Record;
 import org.briarproject.bramble.api.record.RecordReader;
 import org.briarproject.bramble.api.record.RecordReaderFactory;
 import org.briarproject.bramble.api.record.RecordWriter;
 import org.briarproject.bramble.api.record.RecordWriterFactory;
 import org.briarproject.bramble.api.transport.StreamWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.EOFException;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/AgreementKeyParser.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/AgreementKeyParser.java
index 7b966aa2f4c93c068e5ea0d0565b0682d25715eb..525f74fff4d2b2ac35658c4c29d0903bfe6d1376 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/AgreementKeyParser.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/AgreementKeyParser.java
@@ -5,7 +5,7 @@ import org.briarproject.bramble.api.crypto.AgreementPublicKey;
 import org.briarproject.bramble.api.crypto.KeyParser;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/AsciiArmour.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/AsciiArmour.java
index 2bf79875ef1c0232839a58d2b0b09b5141155454..c6cb671330468e965ac090cba05bbe62cb71cbfe 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/AsciiArmour.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/AsciiArmour.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.crypto;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 class AsciiArmour {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/AuthenticatedCipher.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/AuthenticatedCipher.java
index b70358e5dabe04477c80c85ac7bb9ad5ee2006d5..677c6876d6a36dd2d87f913f566729a5db60bbdc 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/AuthenticatedCipher.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/AuthenticatedCipher.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.crypto;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/CryptoComponentImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/CryptoComponentImpl.java
index 0d157779820a5edf78184dd4006fb40fb013c8ab..c81ef00d0bd6d1702658317689164f7f25d8d245 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/CryptoComponentImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/CryptoComponentImpl.java
@@ -21,11 +21,11 @@ import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.crypto.SignaturePrivateKey;
 import org.briarproject.bramble.api.crypto.SignaturePublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.SecureRandomProvider;
 import org.briarproject.bramble.util.Base32;
 import org.briarproject.bramble.util.ByteUtils;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.whispersystems.curve25519.Curve25519;
 import org.whispersystems.curve25519.Curve25519KeyPair;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/EdSignature.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/EdSignature.java
index aeb95836f2abb00dbfc31e58c393c76790c9da52..4094f6933a07039d01fe3bc3787f83ec7903d3f3 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/EdSignature.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/EdSignature.java
@@ -10,7 +10,7 @@ import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec;
 
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.security.NoSuchAlgorithmException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/FrameEncoder.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/FrameEncoder.java
index b56119b24e8e93353168365a7700cfa2e1573eab..d2e4f0165191c3de887fa734e558b7cf9ab7410a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/FrameEncoder.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/FrameEncoder.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import static org.briarproject.bramble.api.transport.TransportConstants.FRAME_HEADER_PLAINTEXT_LENGTH;
 import static org.briarproject.bramble.api.transport.TransportConstants.FRAME_NONCE_LENGTH;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/MessageEncrypter.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/MessageEncrypter.java
index a9494c95753b008b9abd473446ad927d1b55ea66..3e00e2d1bbe93cd21bb7f01e2a87afdbcf7aebd0 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/MessageEncrypter.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/MessageEncrypter.java
@@ -31,8 +31,8 @@ import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.KeyParser;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/PasswordStrengthEstimatorImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/PasswordStrengthEstimatorImpl.java
index 04c52ac9fbddaea68ced5313c185933d35fe78f6..2cde3c56e0dda97bfa360627ec706a22c597b089 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/PasswordStrengthEstimatorImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/PasswordStrengthEstimatorImpl.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.crypto;
 
 import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.HashSet;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1KeyParser.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1KeyParser.java
index 979551275cbe4a5767dcf8b9226454ce7a66f0d4..dc6d6d19bcbd9755f1f2cea89ae8e051bdfde45f 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1KeyParser.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1KeyParser.java
@@ -8,7 +8,7 @@ import org.bouncycastle.math.ec.ECPoint;
 import org.briarproject.bramble.api.crypto.KeyParser;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.math.BigInteger;
 import java.security.GeneralSecurityException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1PrivateKey.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1PrivateKey.java
index 086159757459c9febbd9462b5881a74fe0b4e6a7..4bd8279d1266aea10464307e6c5dbc98273c7a25 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1PrivateKey.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1PrivateKey.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.crypto;
 
 import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
 import org.briarproject.bramble.api.crypto.PrivateKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1PublicKey.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1PublicKey.java
index c22fe6fbba7d3726cd8a0927539c26f20a6a92f0..5b310ab5d240d0838986efb9791b12f9536e88a4 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1PublicKey.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1PublicKey.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.crypto;
 
 import org.bouncycastle.crypto.params.ECPublicKeyParameters;
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1Utils.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1Utils.java
index f87d727009fb400cebaa600bc8d4c5a770b3e4bb..eb6594d6edb46beba086c3a6a9b96b4e5af84aa5 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1Utils.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Sec1Utils.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.crypto;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 class Sec1Utils {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Signature.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Signature.java
index 8cfc20fae5fffe21e43e453eb4e89bce56ebf320..10f1724f73b2b73b0be797817778ef72c25678ea 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Signature.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Signature.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.crypto;
 
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/SignatureKeyParser.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/SignatureKeyParser.java
index 4e7b38c5bdad17d4babd79aa353937fc03b196df..37a6f794c0b8f8dfa937c2022cf876debce9fc23 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/SignatureKeyParser.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/SignatureKeyParser.java
@@ -5,7 +5,7 @@ import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SignaturePrivateKey;
 import org.briarproject.bramble.api.crypto.SignaturePublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterFactoryImpl.java
index 093136662e0c0c73ddd7917c6daa2fdbcdbce0f5..579944a5ab9a8ce79c5c83d7ede0a90ea6453919 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterFactoryImpl.java
@@ -3,8 +3,8 @@ package org.briarproject.bramble.crypto;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.crypto.StreamDecrypter;
 import org.briarproject.bramble.api.crypto.StreamDecrypterFactory;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.StreamContext;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterImpl.java
index 16edc2c740946e421f04e8d5d8059491fb70746b..e97eff0a1517656c23c69e3c39e403fe713ae02c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamDecrypterImpl.java
@@ -3,8 +3,8 @@ package org.briarproject.bramble.crypto;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.crypto.StreamDecrypter;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.EOFException;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterFactoryImpl.java
index ae8db9fb71b474e6c9b3ae7c4d11062154c00984..fb49c1830ad890beb3928d36c8fd74e4e6f15cff 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterFactoryImpl.java
@@ -5,8 +5,8 @@ import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.crypto.StreamEncrypter;
 import org.briarproject.bramble.api.crypto.StreamEncrypterFactory;
 import org.briarproject.bramble.api.crypto.TransportCrypto;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.StreamContext;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.OutputStream;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterImpl.java
index 2a060b03faf69e149ca81424539491ac6427db36..55224c729858993c8e954e10569ba1f3c6c03e7c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/StreamEncrypterImpl.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.crypto;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.crypto.StreamEncrypter;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.OutputStream;
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 5b89fd40bcd2e0e6eb7ca13bcf50c03dbc178ce3..700c316ac1cf028b240087d8d9f7dafc4e1fa1ec 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
@@ -7,7 +7,7 @@ import org.bouncycastle.crypto.macs.Poly1305;
 import org.bouncycastle.crypto.params.KeyParameter;
 import org.bouncycastle.crypto.params.ParametersWithIV;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderFactoryImpl.java
index 758ac5eb9af92f6e2348551835b8bc2a4c1ad8d1..48d61ca6314877d3e815d763ef83585f934cf0a1 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderFactoryImpl.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.data;
 
 import org.briarproject.bramble.api.data.BdfReader;
 import org.briarproject.bramble.api.data.BdfReaderFactory;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderImpl.java
index 788826a575f4a671c12dc840e293e8da9fdb2c43..d5badb88e466f27816671c7a8865ff43b950ce82 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/data/BdfReaderImpl.java
@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.BdfReader;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/data/BdfWriterFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/data/BdfWriterFactoryImpl.java
index 252ed843c02d5b0cf52a7498327d809cec30a4ff..92f9073674a9f7c43400b675dd194e1eb8b98e9e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/data/BdfWriterFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/data/BdfWriterFactoryImpl.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.data;
 
 import org.briarproject.bramble.api.data.BdfWriter;
 import org.briarproject.bramble.api.data.BdfWriterFactory;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.OutputStream;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/data/BdfWriterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/data/BdfWriterImpl.java
index e9979e9ffc08082fc3215b458e4b4d3377d11a2f..aa862e57234a7e3418fd18147cf4db82ee7f0184 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/data/BdfWriterImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/data/BdfWriterImpl.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.data;
 import org.briarproject.bramble.api.Bytes;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfWriter;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/data/MetadataEncoderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/data/MetadataEncoderImpl.java
index 7605b1da74d649a382f573663bf6c93fa2cff92d..f28b8637e8865f548aab69eb2f44501171a56cbc 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/data/MetadataEncoderImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/data/MetadataEncoderImpl.java
@@ -7,7 +7,7 @@ import org.briarproject.bramble.api.data.BdfWriter;
 import org.briarproject.bramble.api.data.BdfWriterFactory;
 import org.briarproject.bramble.api.data.MetadataEncoder;
 import org.briarproject.bramble.api.db.Metadata;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/data/MetadataParserImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/data/MetadataParserImpl.java
index 217a9425e80a6cd8b31d1cde14d7c420f672e6a6..3056975c14cd63d60c327684fe6e4db449fc20bd 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/data/MetadataParserImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/data/MetadataParserImpl.java
@@ -6,7 +6,7 @@ import org.briarproject.bramble.api.data.BdfReader;
 import org.briarproject.bramble.api.data.BdfReaderFactory;
 import org.briarproject.bramble.api.data.MetadataParser;
 import org.briarproject.bramble.api.db.Metadata;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/Database.java b/bramble-core/src/main/java/org/briarproject/bramble/db/Database.java
index 4522bf5e42a73f848635c5e149a0cb5264beaa6e..418770eace76a0c9f32181256088dad9814a326a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/db/Database.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/db/Database.java
@@ -17,7 +17,6 @@ import org.briarproject.bramble.api.db.MigrationListener;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.Identity;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.sync.ClientId;
@@ -31,6 +30,7 @@ import org.briarproject.bramble.api.sync.validation.MessageState;
 import org.briarproject.bramble.api.transport.KeySetId;
 import org.briarproject.bramble.api.transport.TransportKeySet;
 import org.briarproject.bramble.api.transport.TransportKeys;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java
index 2353bf4f63a98d8d725566ec4be35c847372e39d..09ae70b86e4475fee7551b3313589bd87e41a788 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java
@@ -42,7 +42,6 @@ import org.briarproject.bramble.api.identity.Identity;
 import org.briarproject.bramble.api.identity.event.IdentityAddedEvent;
 import org.briarproject.bramble.api.identity.event.IdentityRemovedEvent;
 import org.briarproject.bramble.api.lifecycle.ShutdownManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent;
@@ -72,6 +71,7 @@ import org.briarproject.bramble.api.sync.validation.MessageState;
 import org.briarproject.bramble.api.transport.KeySetId;
 import org.briarproject.bramble.api.transport.TransportKeySet;
 import org.briarproject.bramble.api.transport.TransportKeys;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java b/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java
index 7fad1c3fde045ca4e8666b123808ec7b11a4d559..ce9a6912c4ce8d2efa425d779fc8c5e03decfc64 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java
@@ -5,10 +5,10 @@ import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.bramble.api.db.DbClosedException;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.MigrationListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.sql.Connection;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java b/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java
index 64dd03e0460c5b311c74355b2333cb66866b173f..91a22531c7d17a6e74bcdc682f8144736d27f8ab 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java
@@ -5,10 +5,10 @@ import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.bramble.api.db.DbClosedException;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.MigrationListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.sql.Connection;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java
index 6085ec50a847877ed7afce330865cd6686c7de09..2c8052bc81e495ee0b1f3225451f290b04b9415e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java
@@ -22,7 +22,6 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.Identity;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.sync.ClientId;
@@ -40,6 +39,7 @@ import org.briarproject.bramble.api.transport.KeySetId;
 import org.briarproject.bramble.api.transport.OutgoingKeys;
 import org.briarproject.bramble.api.transport.TransportKeySet;
 import org.briarproject.bramble.api.transport.TransportKeys;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.sql.Connection;
 import java.sql.PreparedStatement;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcUtils.java b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcUtils.java
index 52cc60820756d5c06f7470ed0a7107949e8c35be..e1e419f6d509596f5338fa59c76ffc39ad6f90ed 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcUtils.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcUtils.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.db;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.sql.Connection;
 import java.sql.ResultSet;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/event/EventBusImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/event/EventBusImpl.java
index 4b1bd20afc7a8ed904e8e17b85ae32fc5898521c..e8274f14de6c75e2c0aa6e3a664b23529c5d3a23 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/event/EventBusImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/event/EventBusImpl.java
@@ -4,7 +4,7 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventExecutor;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.concurrent.CopyOnWriteArrayList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/identity/AuthorFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/identity/AuthorFactoryImpl.java
index 85885414f15822a13cdd22eaa6375a6cce39f4c3..5b812d456531d7edb07b9201f5ae39cd2c44b191 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/identity/AuthorFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/identity/AuthorFactoryImpl.java
@@ -8,7 +8,7 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorFactory;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/identity/IdentityManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/identity/IdentityManagerImpl.java
index d5d5e0b6f45ecd00596085b6144ecd3ad081e7cd..608771728c01a00f7b69ac65d6cbf1f75a53e67f 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/identity/IdentityManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/identity/IdentityManagerImpl.java
@@ -12,8 +12,8 @@ import org.briarproject.bramble.api.identity.Identity;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.logging.Logger;
@@ -23,9 +23,9 @@ import javax.annotation.concurrent.ThreadSafe;
 import javax.inject.Inject;
 
 import static java.util.logging.Logger.getLogger;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.util.LogUtils.logDuration;
 import static org.briarproject.bramble.util.LogUtils.now;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @ThreadSafe
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/io/NoDns.java b/bramble-core/src/main/java/org/briarproject/bramble/io/NoDns.java
index 91a8616ed823187684464cee875b8c1105056ac3..dafc7f4288dc7503b845e7910935d66577d1d3ec 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/io/NoDns.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/io/NoDns.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.io;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/io/TimeoutInputStream.java b/bramble-core/src/main/java/org/briarproject/bramble/io/TimeoutInputStream.java
index 1a433254f21a2044189fa4add1fadb8b49964e06..68c33b10732ec640531530f0bc3e536fed53d231 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/io/TimeoutInputStream.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/io/TimeoutInputStream.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.io;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/ConnectionChooserImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/ConnectionChooserImpl.java
index 5b69243e1ddc7387f172b4928d0002998195c041..5cbaa4a0ac3b26993aa11d1f2ebfc62a45e46801 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/ConnectionChooserImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/ConnectionChooserImpl.java
@@ -2,9 +2,9 @@ package org.briarproject.bramble.keyagreement;
 
 import org.briarproject.bramble.api.keyagreement.KeyAgreementConnection;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementConnector.java b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementConnector.java
index 23af3589e65615a664fb34cf116f8c1abd51582e..8efba939b6c10859a9f166400e2b802a9bc2b62b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementConnector.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementConnector.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.keyagreement.KeyAgreementConnection;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementListener;
 import org.briarproject.bramble.api.keyagreement.Payload;
 import org.briarproject.bramble.api.keyagreement.TransportDescriptor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.Plugin;
@@ -18,6 +17,7 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.record.RecordReaderFactory;
 import org.briarproject.bramble.api.record.RecordWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementProtocol.java b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementProtocol.java
index 682041c90fb582956fe85f37753726b47a6571bc..a5ea1a09dadd248d6c826117c49c86b5d5cb4121 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementProtocol.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementProtocol.java
@@ -8,7 +8,7 @@ import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.keyagreement.Payload;
 import org.briarproject.bramble.api.keyagreement.PayloadEncoder;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTaskImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTaskImpl.java
index e2735c3940f7f367bf9262f32701f6331c39806d..502eb25a8113746b6a240b2ed2e69a0ec0583ec2 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTaskImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTaskImpl.java
@@ -16,11 +16,11 @@ import org.briarproject.bramble.api.keyagreement.event.KeyAgreementListeningEven
 import org.briarproject.bramble.api.keyagreement.event.KeyAgreementStartedEvent;
 import org.briarproject.bramble.api.keyagreement.event.KeyAgreementStoppedListeningEvent;
 import org.briarproject.bramble.api.keyagreement.event.KeyAgreementWaitingEvent;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.record.RecordReaderFactory;
 import org.briarproject.bramble.api.record.RecordWriterFactory;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.util.logging.Logger;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTransport.java b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTransport.java
index f3c19076d1b39b81329a4c55826999af4c24147a..e5e1e2ca3ddc7bd026fe581de4419370217d7258 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTransport.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/KeyAgreementTransport.java
@@ -2,7 +2,6 @@ package org.briarproject.bramble.keyagreement;
 
 import org.briarproject.bramble.api.Predicate;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementConnection;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.record.Record;
@@ -10,6 +9,7 @@ import org.briarproject.bramble.api.record.RecordReader;
 import org.briarproject.bramble.api.record.RecordReaderFactory;
 import org.briarproject.bramble.api.record.RecordWriter;
 import org.briarproject.bramble.api.record.RecordWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.EOFException;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/PayloadEncoderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/PayloadEncoderImpl.java
index 66304489886c61c06a24c6542b5a63df17434d34..b0ee035e5f6a755708cfe19d90dc6b2c7876a61c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/PayloadEncoderImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/PayloadEncoderImpl.java
@@ -5,7 +5,7 @@ import org.briarproject.bramble.api.data.BdfWriterFactory;
 import org.briarproject.bramble.api.keyagreement.Payload;
 import org.briarproject.bramble.api.keyagreement.PayloadEncoder;
 import org.briarproject.bramble.api.keyagreement.TransportDescriptor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/PayloadParserImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/PayloadParserImpl.java
index f574360a7eb2d867fb28d702c56fc23b2b06b491..585516c6450f64c19110ff0df43d7a46ac4dc003 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/PayloadParserImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/keyagreement/PayloadParserImpl.java
@@ -8,10 +8,10 @@ import org.briarproject.bramble.api.data.BdfReaderFactory;
 import org.briarproject.bramble.api.keyagreement.Payload;
 import org.briarproject.bramble.api.keyagreement.PayloadParser;
 import org.briarproject.bramble.api.keyagreement.TransportDescriptor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/lifecycle/LifecycleManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/lifecycle/LifecycleManagerImpl.java
index bd2a35b99d854446197830095ffe0ef9b48db085..c6a2ed3957a289ed0ca176b3f2f844ce8cf40e0d 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/lifecycle/LifecycleManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/lifecycle/LifecycleManagerImpl.java
@@ -11,8 +11,8 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager;
 import org.briarproject.bramble.api.lifecycle.Service;
 import org.briarproject.bramble.api.lifecycle.ServiceException;
 import org.briarproject.bramble.api.lifecycle.event.LifecycleEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/lifecycle/ShutdownManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/lifecycle/ShutdownManagerImpl.java
index f5f422c4a651e1963938d44ff45e17a4f6abb133..5bbea8acceb791deff31d81350da0182f55706bf 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/lifecycle/ShutdownManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/lifecycle/ShutdownManagerImpl.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.lifecycle;
 
 import org.briarproject.bramble.api.lifecycle.ShutdownManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ConnectivityChecker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ConnectivityChecker.java
index d0a6ab57d3b3ac7b1edd822e459045fecdff865d..d0bf32c547d3520de6314674c2b9341996a22350 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ConnectivityChecker.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ConnectivityChecker.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ConnectivityCheckerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ConnectivityCheckerImpl.java
index aa3e97930e0eab8a32512563151f2fb493867a3c..b445e41b0b70cd80d9b584fa39db51c56ad4c0a2 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ConnectivityCheckerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ConnectivityCheckerImpl.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.Cancellable;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxClient.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxClient.java
index ef880bc08d088e0e52a929b4bed98791d57dbd7b..f78a6a1da42f889e457a94df152aea0312ad6451 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxClient.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxClient.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.mailbox;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxConnectivityChecker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxConnectivityChecker.java
index e29eb5e5ccf56af45db01dd929f5f8faa063e190..a5deb6a07979379574a39cd8de9759370f6cb8da 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxConnectivityChecker.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxConnectivityChecker.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxDownloadWorker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxDownloadWorker.java
index 2b1bad8fd9bcba75ef18ef131e7bfed06973f867..cdfdefa2b8fad63fa077dadbbac3b34e688578ad 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxDownloadWorker.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxDownloadWorker.java
@@ -2,10 +2,10 @@ package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
 import org.briarproject.bramble.mailbox.MailboxApi.MailboxFile;
 import org.briarproject.bramble.mailbox.MailboxApi.TolerableFailureException;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.LinkedList;
@@ -15,7 +15,7 @@ import java.util.Queue;
 import javax.annotation.concurrent.ThreadSafe;
 
 import static java.util.Collections.emptyList;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @ThreadSafe
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApi.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApi.java
index 2939ab96823b7ad137ae84cc17828752f1df065e..adc819c18bfb025dc0d5159da6a828637d646864 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApi.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApi.java
@@ -8,7 +8,7 @@ import org.briarproject.bramble.api.mailbox.MailboxFileId;
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
 import org.briarproject.bramble.api.mailbox.MailboxVersion;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCaller.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCaller.java
index 3da4616edd2c0975806b8553511aac6993976838..0316a20a175499994f371451b69acfe8d441a232 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCaller.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCaller.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.Cancellable;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import static java.util.concurrent.TimeUnit.DAYS;
 import static java.util.concurrent.TimeUnit.MINUTES;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCallerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCallerImpl.java
index fd625b084c26fe2b72a053015f3eac47ef3ae86e..ce08b2f2522019587ba56132ed6e990334c9abdf 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCallerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiCallerImpl.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.Cancellable;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.TaskScheduler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiImpl.java
index 8ae436a6116e9b0b51949f2c609c56fca8a1e350..a7ad6108e283880a87f3d2e47967adc2ffd0bb58 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiImpl.java
@@ -15,7 +15,7 @@ import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
 import org.briarproject.bramble.api.mailbox.MailboxVersion;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.FileOutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClient.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClient.java
index 24a621030693424ffb47cc041ceed71b068ba2a6..942047efc94c77c1f46cebea48b0459e752beb63 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClient.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClient.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.mailbox;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactory.java
index f147a206d021e3f00517e9165b9b351c918eafdf..5b3225c4db703a1425b4878109b9b129817ec39a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactory.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface MailboxClientFactory {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactoryImpl.java
index 4e6e115801351f730d607d1b373fca72da2c71ef..3f5bb43829c95b40823d6a599b2d1ab99415e97b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactoryImpl.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.TaskScheduler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientManager.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientManager.java
index fe91f1b324777a46e4289ebc6bb11c5593beceff..8e28e37816486f4dd23914bb0bcdc0ea82a76eb0 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientManager.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientManager.java
@@ -24,11 +24,11 @@ import org.briarproject.bramble.api.mailbox.event.MailboxUnpairedEvent;
 import org.briarproject.bramble.api.mailbox.event.MailboxUpdateSentToNewContactEvent;
 import org.briarproject.bramble.api.mailbox.event.OwnMailboxConnectionStatusEvent;
 import org.briarproject.bramble.api.mailbox.event.RemoteMailboxUpdateEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.event.TransportActiveEvent;
 import org.briarproject.bramble.api.plugin.event.TransportInactiveEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.HashMap;
 import java.util.List;
@@ -47,10 +47,10 @@ import static java.util.logging.Level.WARNING;
 import static java.util.logging.Logger.getLogger;
 import static org.briarproject.bramble.api.mailbox.MailboxConstants.CLIENT_SUPPORTS;
 import static org.briarproject.bramble.api.mailbox.MailboxHelper.isClientCompatibleWithServer;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE;
 import static org.briarproject.bramble.api.plugin.TorConstants.ID;
 import static org.briarproject.bramble.util.LogUtils.logException;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 /**
  * This component manages a {@link MailboxClient} for each mailbox we know
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxDownloadWorker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxDownloadWorker.java
index faf39752f7c82c614922b1e61bc4316dd59c1f14..59d5bf1e0c2f174c7888cea325a826162665ca26 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxDownloadWorker.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxDownloadWorker.java
@@ -4,11 +4,11 @@ import org.briarproject.bramble.api.Cancellable;
 import org.briarproject.bramble.api.mailbox.MailboxFileId;
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.mailbox.ConnectivityChecker.ConnectivityObserver;
 import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
 import org.briarproject.bramble.mailbox.MailboxApi.TolerableFailureException;
 import org.briarproject.bramble.mailbox.TorReachabilityMonitor.TorReachabilityObserver;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxFileManager.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxFileManager.java
index 91553a7d688540c395acff6ff3e341fef5dcf1d3..1def99404c37de8492f9af7aafcaec472e413675 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxFileManager.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxFileManager.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.OutgoingSessionRecord;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxFileManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxFileManagerImpl.java
index 82c7c47cbdd3ea894c229deddbc533acc47312e0..a84bc572ecad61226abb107dd9d4ee64f00a08f4 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxFileManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxFileManagerImpl.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
 import org.briarproject.bramble.api.mailbox.MailboxDirectory;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
@@ -16,6 +15,7 @@ import org.briarproject.bramble.api.plugin.event.TransportActiveEvent;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.OutgoingSessionRecord;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.IOException;
@@ -34,10 +34,10 @@ import static java.util.logging.Level.WARNING;
 import static java.util.logging.Logger.getLogger;
 import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.RUNNING;
 import static org.briarproject.bramble.api.mailbox.MailboxConstants.ID;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.api.plugin.file.FileConstants.PROP_PATH;
 import static org.briarproject.bramble.util.IoUtils.delete;
 import static org.briarproject.bramble.util.LogUtils.logException;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @ThreadSafe
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java
index 753e7cfef51a9fbf3cdafba5c00f1bb68c9f0c1b..5913a883bfa4f4745af7214ee9d64a65877fe5cf 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java
@@ -10,8 +10,8 @@ import org.briarproject.bramble.api.mailbox.MailboxProperties;
 import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
 import org.briarproject.bramble.api.mailbox.MailboxStatus;
 import org.briarproject.bramble.api.mailbox.MailboxVersion;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskFactory.java
index 749a7f31ca5042d450c52bfbfaf98a3106d86e22..871da79ac1fd121b2cb33314b11c8ea7ad176be0 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskFactory.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.mailbox;
 
 
 import org.briarproject.bramble.api.mailbox.MailboxPairingTask;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface MailboxPairingTaskFactory {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskFactoryImpl.java
index c688fc511048e00d2d8766b2503272cc0d6442af..d90f05d9021ccca3782934956f8f0fa2d3ea5e53 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskFactoryImpl.java
@@ -6,8 +6,8 @@ import org.briarproject.bramble.api.event.EventExecutor;
 import org.briarproject.bramble.api.mailbox.MailboxPairingTask;
 import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
 import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImpl.java
index 4335b614af1c9fc18f618b87a4600ddd28af85f6..544a38bf1c5a88ccc8c997e5c842175aeb131128 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxPairingTaskImpl.java
@@ -14,10 +14,10 @@ import org.briarproject.bramble.api.mailbox.MailboxProperties;
 import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
 import org.briarproject.bramble.api.mailbox.MailboxUpdate;
 import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
 import org.briarproject.bramble.mailbox.MailboxApi.MailboxAlreadyPairedException;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.nio.charset.Charset;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImpl.java
index 62dc1e5842a66c64849b1b2af604456ee6424c44..ed1f9895eb0377840d279564e252db753ce73189 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxSettingsManagerImpl.java
@@ -11,9 +11,9 @@ import org.briarproject.bramble.api.mailbox.MailboxStatus;
 import org.briarproject.bramble.api.mailbox.MailboxVersion;
 import org.briarproject.bramble.api.mailbox.event.MailboxProblemEvent;
 import org.briarproject.bramble.api.mailbox.event.OwnMailboxConnectionStatusEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java
index 50e29c802c9ad72bcdf289bf79d91443e0a773dd..7c584afb2310fe5f4c92baf82343e2f1af4ca17b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateManagerImpl.java
@@ -29,7 +29,6 @@ import org.briarproject.bramble.api.mailbox.event.MailboxPairedEvent;
 import org.briarproject.bramble.api.mailbox.event.MailboxUnpairedEvent;
 import org.briarproject.bramble.api.mailbox.event.MailboxUpdateSentToNewContactEvent;
 import org.briarproject.bramble.api.mailbox.event.RemoteMailboxUpdateEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Group.Visibility;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -40,6 +39,7 @@ import org.briarproject.bramble.api.sync.validation.IncomingMessageHook;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.HashMap;
 import java.util.List;
@@ -51,8 +51,8 @@ import javax.inject.Inject;
 
 import static java.util.Collections.emptyList;
 import static org.briarproject.bramble.api.data.BdfDictionary.NULL_VALUE;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.DeliveryAction.ACCEPT_DO_NOT_SHARE;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @NotNullByDefault
 class MailboxUpdateManagerImpl implements MailboxUpdateManager,
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateValidator.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateValidator.java
index e717f911f88d31dd63443daeef7349ecb3ef4e2c..a6c537f0630e8681e1e503bc73ef810e5dbbb70f 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateValidator.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUpdateValidator.java
@@ -7,11 +7,11 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUploadWorker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUploadWorker.java
index b3f4ead6b047348722392f8b69ade35460bb3e19..443125db96b1377bf35be6a36463e7ed37df5005 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUploadWorker.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxUploadWorker.java
@@ -12,7 +12,6 @@ import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.event.ContactConnectedEvent;
 import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent;
 import org.briarproject.bramble.api.sync.MessageId;
@@ -24,6 +23,7 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.TaskScheduler;
 import org.briarproject.bramble.mailbox.ConnectivityChecker.ConnectivityObserver;
 import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorker.java
index 75b0f7ce736b17aeaa3bfeccbf782a1a5132a333..e1e58d3db9bc851911acca450f6f92b9b2ced1d7 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorker.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorker.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorkerFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorkerFactory.java
index dc36443d047b4591ed2ceff96d053b0747530a69..6e360496180175ef83665f7bca05a092797b3123 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorkerFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorkerFactory.java
@@ -3,7 +3,7 @@ package org.briarproject.bramble.mailbox;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorkerFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorkerFactoryImpl.java
index 7fff2782c547773068d221ea2134013fb7962155..d77fad407ac1bafa14e9f8c8b8beb387f1dbac4b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorkerFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxWorkerFactoryImpl.java
@@ -8,9 +8,9 @@ import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
 import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.TaskScheduler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxClient.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxClient.java
index 24b7b2760d5f4b0d9fad3bfd83aa6cd59fbf8869..b190a247d6f0227adad20dff2fce3b875a9a94df 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxClient.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxClient.java
@@ -5,9 +5,9 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.TaskScheduler;
 import org.briarproject.bramble.mailbox.ConnectivityChecker.ConnectivityObserver;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxConnectivityChecker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxConnectivityChecker.java
index 1882cc5f4f8feccac5b2445af5ea98787490df6e..c955c9527b7f4a5b247bafbdade18aac7be268df 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxConnectivityChecker.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxConnectivityChecker.java
@@ -5,9 +5,9 @@ import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
 import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
 import org.briarproject.bramble.api.mailbox.MailboxVersion;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxContactListWorker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxContactListWorker.java
index 5fb674f72560ecd31f596e7822b8384a55cdd822..6c8d6be25b5469f60beab4919af079ee1c2882ea 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxContactListWorker.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxContactListWorker.java
@@ -17,11 +17,11 @@ import org.briarproject.bramble.api.mailbox.MailboxProperties;
 import org.briarproject.bramble.api.mailbox.MailboxUpdate;
 import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
 import org.briarproject.bramble.api.mailbox.MailboxUpdateWithMailbox;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.mailbox.ConnectivityChecker.ConnectivityObserver;
 import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
 import org.briarproject.bramble.mailbox.MailboxApi.MailboxContact;
 import org.briarproject.bramble.mailbox.MailboxApi.TolerableFailureException;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.Collection;
@@ -39,8 +39,8 @@ import javax.annotation.concurrent.ThreadSafe;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static java.util.logging.Logger.getLogger;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.util.LogUtils.logException;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @ThreadSafe
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxDownloadWorker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxDownloadWorker.java
index 44afd8ce11ccb4f7ddf7822f0eb28b6bd29635a8..0298a2be9ba9a3a827d003f51eefa1f7cb576358 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxDownloadWorker.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxDownloadWorker.java
@@ -2,10 +2,10 @@ package org.briarproject.bramble.mailbox;
 
 import org.briarproject.bramble.api.mailbox.MailboxFolderId;
 import org.briarproject.bramble.api.mailbox.MailboxProperties;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
 import org.briarproject.bramble.mailbox.MailboxApi.MailboxFile;
 import org.briarproject.bramble.mailbox.MailboxApi.TolerableFailureException;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/SimpleApiCall.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/SimpleApiCall.java
index 9a34a6244b9fbf41f147b109c55f41e3944bcf3a..1f80bd7788aec8a36bcc2da679cef2d601333602 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/SimpleApiCall.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/SimpleApiCall.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
 import org.briarproject.bramble.mailbox.MailboxApi.TolerableFailureException;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.logging.Logger;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitor.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitor.java
index 5dd10b3653a2060ddc4740fe8f043cf7ad6842d1..5e8d4ca9773a8093e3bc8c25c3853b6f887484eb 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitor.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitor.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImpl.java
index 8620aee01191349ed82693e4a03bb9bb1b0cfa98..359e70460538cc8eb0fb29ad8bad8d439ed7feea 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/TorReachabilityMonitorImpl.java
@@ -5,12 +5,12 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.event.TransportActiveEvent;
 import org.briarproject.bramble.api.plugin.event.TransportInactiveEvent;
 import org.briarproject.bramble.api.system.TaskScheduler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverter.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverter.java
index 3be0eae4ea0f80d3fc91a5856e35845f56f4ffc9..264d8e664b07ba9432dbee75ece1647e9b603021 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverter.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverter.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 /**
  * An interface for converting an onion address to an HTTP URL, allowing the
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverterImpl.java
index 2b293a1a35011fe658bbc09cad73e2d97108c4e1..0c1bc6dafe6e81d7c0d1f4fa42dd37b045fa0cc4 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverterImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/UrlConverterImpl.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/BackoffFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/BackoffFactoryImpl.java
index 7640a957151a32e974843bc71c2832837f6934df..93767bc8d0f99afc074e8ce8a56e8cc031961fd5 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/BackoffFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/BackoffFactoryImpl.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.plugin;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/BackoffImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/BackoffImpl.java
index a4522cbb4cf701b44e3301a98fb5f48ddcc22791..4cce8f0462849a067704b8a43cb72327254ddbd2 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/BackoffImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/BackoffImpl.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.plugin;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java
index ef03a78fd9dab2cd022edbccfaa7fb3225bca83f..64b53e0033bd884020768331c6eafe29a2bfcb3c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/PluginManagerImpl.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.Service;
 import org.briarproject.bramble.api.lifecycle.ServiceException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.Plugin.State;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -30,6 +29,7 @@ import org.briarproject.bramble.api.properties.TransportPropertyManager;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/PollerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/PollerImpl.java
index 873a19e7a190176a160bc1e6fdd1e0b62c0d2b2f..97efc501cd607fa0232521b07fd7ae63653da20e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/PollerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/PollerImpl.java
@@ -10,7 +10,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.ConnectionHandler;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.PluginManager;
@@ -30,6 +29,7 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.TaskScheduler;
 import org.briarproject.bramble.api.system.Wakeful;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.SecureRandom;
 import java.util.ArrayList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/AbstractBluetoothPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/AbstractBluetoothPlugin.java
index 5d41a0bb6309fbdd6096b5666978720a8b14982e..374c10d4f450de7a3f41b337738286a0c7b61d84 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/AbstractBluetoothPlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/AbstractBluetoothPlugin.java
@@ -11,9 +11,6 @@ import org.briarproject.bramble.api.keyagreement.KeyAgreementListener;
 import org.briarproject.bramble.api.keyagreement.event.KeyAgreementListeningEvent;
 import org.briarproject.bramble.api.keyagreement.event.KeyAgreementStoppedListeningEvent;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.ConnectionHandler;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -26,6 +23,9 @@ import org.briarproject.bramble.api.rendezvous.KeyMaterialSource;
 import org.briarproject.bramble.api.rendezvous.RendezvousEndpoint;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.security.SecureRandom;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionFactory.java
index 27689f979c18d668578577e7ff0ef18558a8f324..6c296c3c655cad26d95ae1ea01f4350f92828e71 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionFactory.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.plugin.bluetooth;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionLimiter.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionLimiter.java
index 23e2586cff2bd5c19da5ee0e628db234c84ebc0b..dce606cc4d01e948baa60e9670c7034a4890eedb 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionLimiter.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionLimiter.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.plugin.bluetooth;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface BluetoothConnectionLimiter {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionLimiterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionLimiterImpl.java
index ac002a3cf50b830b97244e73bd56dd0e48be09c1..487676c68d6b88b4e2498892423fd18b1680ea5b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionLimiterImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothConnectionLimiterImpl.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.plugin.bluetooth;
 
 import org.briarproject.bramble.api.event.EventBus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.sync.event.CloseSyncConnectionsEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.LinkedList;
 import java.util.List;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothPlugin.java
index 5ff607fb8892635de07f9e5a3e8ca943e0d44a24..a1b1bb5d361cafcdcb7f814dd8064cd0a11259c5 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothPlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothPlugin.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.plugin.bluetooth;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/AbstractRemovableDrivePlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/AbstractRemovableDrivePlugin.java
index ccdf7f56b1d77865e2e083bae9fa23991a8cdc29..6c47737a7ea1bdb2619e5145064d209695d6e228 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/AbstractRemovableDrivePlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/AbstractRemovableDrivePlugin.java
@@ -1,7 +1,6 @@
 package org.briarproject.bramble.plugin.file;
 
 import org.briarproject.bramble.api.Pair;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.ConnectionHandler;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
@@ -9,6 +8,7 @@ import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FilePlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FilePlugin.java
index 54587dc9c6ef8c3d0ba47f58858f18f2d8f9490d..d9da037c095224c18819a48504aa12da4af8ed2a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FilePlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FilePlugin.java
@@ -1,11 +1,11 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/MailboxPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/MailboxPlugin.java
index a70e657087a7691044d9415997da53925c31bf34..6bd7bc7e0b6db11865ef2d88aab6629f223d3c79 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/MailboxPlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/MailboxPlugin.java
@@ -1,12 +1,12 @@
 package org.briarproject.bramble.plugin.file;
 
 import org.briarproject.bramble.api.Pair;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.ConnectionHandler;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.PluginException;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/MailboxPluginFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/MailboxPluginFactory.java
index 351368c842a18538374f6ef9da861d8d12ed35b6..bfd37ab1cabbda71a38fd087d4b238271308e05c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/MailboxPluginFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/MailboxPluginFactory.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveManagerImpl.java
index c7a250d60167cd2eb6eb048b8714f4ddec0fd096..0f89bf2c994daa17649282ad0b7f5126fb771a2d 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveManagerImpl.java
@@ -4,12 +4,12 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveManager;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
 import org.briarproject.bramble.api.transport.KeyManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDrivePlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDrivePlugin.java
index d3464d725ae9b8ce46fc6e544214bedc57c68c17..8745d99ccc114b243961958a5bd9f50aadcc721e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDrivePlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDrivePlugin.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDrivePluginFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDrivePluginFactory.java
index a05b50715aeff79bf978402bed70051da82ead9e..0142d42e49018f4e602a5fe9cb12b1e14a0c61d1 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDrivePluginFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDrivePluginFactory.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveReaderTask.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveReaderTask.java
index 5dc4b6762a31f7dfb1be379d53b2403cc3c030e6..743fcf03ae86b27ec43962d6617bad3dd18bee75 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveReaderTask.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveReaderTask.java
@@ -2,10 +2,10 @@ package org.briarproject.bramble.plugin.file;
 
 import org.briarproject.bramble.api.connection.ConnectionManager;
 import org.briarproject.bramble.api.event.EventBus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactory.java
index c6a126d818b3fadf5d31ee1d8d4ec981e222d6d2..ab2130a97a9f58d5ba4131e6b0a951a9d3da5429 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactory.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.plugin.file;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface RemovableDriveTaskFactory {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactoryImpl.java
index 596f0b11e290059fbcadf48acd3f57d07effc3b0..8c798d22cdc523022dd8bd1df37f0c1e0d9bb8ed 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskFactoryImpl.java
@@ -5,10 +5,10 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskImpl.java
index c17cc48acfcedaef681d6c1e0ce874048e24f3b3..463cac5e0f292b94cadcc70c1eadb72d82fb1707 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskImpl.java
@@ -3,11 +3,11 @@ package org.briarproject.bramble.plugin.file;
 import org.briarproject.bramble.api.Consumer;
 import org.briarproject.bramble.api.connection.ConnectionManager;
 import org.briarproject.bramble.api.event.EventBus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,8 +17,8 @@ import javax.annotation.concurrent.GuardedBy;
 import javax.annotation.concurrent.ThreadSafe;
 
 import static java.lang.Math.min;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.api.plugin.file.RemovableDriveConstants.ID;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @ThreadSafe
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskRegistry.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskRegistry.java
index ca29b473e0ebbeebf83bb561899728fc4fc6bff6..41180dba08e32e4e373b6fc9aeab3c13fded5cca 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskRegistry.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveTaskRegistry.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @Deprecated // We can simply remove tasks when they finish
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveWriterTask.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveWriterTask.java
index e78fae50e9d27f0b6c909a33166a137b9f6de4ed..fdaba0dc48f6cf14a7409904efa8ffe725a082eb 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveWriterTask.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/RemovableDriveWriterTask.java
@@ -7,12 +7,12 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.event.MessagesSentEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/TransportInputStreamReader.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/TransportInputStreamReader.java
index 8971136c95b23fb2a556edab80f1b83e0ec26de9..29f54521a651ca6fc246374caf440c5c3a482c26 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/TransportInputStreamReader.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/TransportInputStreamReader.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 import java.util.logging.Logger;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/TransportOutputStreamWriter.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/TransportOutputStreamWriter.java
index ec2f6240a7acd0321fe518560c74e70bee2c2566..b7283f255735cd22018dc50dac0b26a6645cabf0 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/TransportOutputStreamWriter.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/TransportOutputStreamWriter.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.OutputStream;
 import java.util.logging.Logger;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPlugin.java
index 6330a50cf32565214b87cc1c74152c786fadbf7e..1354900a7a93a0c4c4dc3606d31861326c189a90 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPlugin.java
@@ -4,13 +4,13 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementConnection;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.settings.Settings;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.net.Inet4Address;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginFactory.java
index 80f4fa1d008377975ab776d6e5e7eee54ba998c5..6fd413abcd53e155c288cae569f3bd1dda8c0285 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginFactory.java
@@ -2,7 +2,6 @@ package org.briarproject.bramble.plugin.tcp;
 
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -10,6 +9,7 @@ import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/MappingResult.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/MappingResult.java
index aa9c271f55aaab33c7b7a11132646227b9da96aa..5d2e8fe0d56aa456e28812d7a95de10683f19870 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/MappingResult.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/MappingResult.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.tcp;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/PortMapperImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/PortMapperImpl.java
index 8b5adc876e6953d2db6b30ea9c0c1e9f182f5cc4..f3ace3e2b8f08d0f8e03576d9a7199e7c023a373 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/PortMapperImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/PortMapperImpl.java
@@ -3,8 +3,8 @@ package org.briarproject.bramble.plugin.tcp;
 import org.bitlet.weupnp.GatewayDevice;
 import org.bitlet.weupnp.GatewayDiscover;
 import org.briarproject.bramble.api.lifecycle.ShutdownManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 import org.xml.sax.SAXException;
 
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java
index baa0502550c4a2207446cf59c5931ae34e2cab77..eec3628765602107876472538904aa54b5ead4f8 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java
@@ -7,9 +7,6 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.ConnectionHandler;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -20,6 +17,9 @@ import org.briarproject.bramble.api.rendezvous.KeyMaterialSource;
 import org.briarproject.bramble.api.rendezvous.RendezvousEndpoint;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.net.InetAddress;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpTransportConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpTransportConnection.java
index 34c7d7a74670a463fb1201c9bf26d1a61f0fcd39..7951892f84c6ad313d3d9b33920e48565bb59310 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpTransportConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpTransportConnection.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.plugin.tcp;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.duplex.AbstractDuplexTransportConnection;
 import org.briarproject.bramble.util.IoUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/WanTcpPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/WanTcpPlugin.java
index 4dd061724f4af936e224ce13180748264f7b1aba..7ba4b7c32617b6a695342a7da3d5cae777cf261a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/WanTcpPlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/WanTcpPlugin.java
@@ -1,11 +1,11 @@
 package org.briarproject.bramble.plugin.tcp;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.net.Inet4Address;
 import java.net.InetAddress;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/WanTcpPluginFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/WanTcpPluginFactory.java
index 9468d682314b8a80239035c44054d7af3fe40b2d..a607efa0e96ea860405b0c666f223d21a6e1e8c0 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/WanTcpPluginFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/WanTcpPluginFactory.java
@@ -3,7 +3,6 @@ package org.briarproject.bramble.plugin.tcp;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.ShutdownManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -11,6 +10,7 @@ import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/CircumventionProvider.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/CircumventionProvider.java
index 7e1c4c83bbb475aff8e96eb8aced66487d5c36ee..ef8cbb7cc066a5d5e429341c9bbfd9b17be786d9 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/CircumventionProvider.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/CircumventionProvider.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.plugin.tor;
 
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/CircumventionProviderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/CircumventionProviderImpl.java
index 8ad07f8d860fb545ec3b1786e26c09db648f2b36..81e6eee02708912aef4494d3e4446555f32dfc60 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/CircumventionProviderImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/CircumventionProviderImpl.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.plugin.tor;
 
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -16,12 +16,12 @@ import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
 
 import static java.util.Arrays.asList;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.plugin.tor.CircumventionProvider.BridgeType.DEFAULT_OBFS4;
 import static org.briarproject.bramble.plugin.tor.CircumventionProvider.BridgeType.MEEK;
 import static org.briarproject.bramble.plugin.tor.CircumventionProvider.BridgeType.NON_DEFAULT_OBFS4;
 import static org.briarproject.bramble.plugin.tor.CircumventionProvider.BridgeType.SNOWFLAKE;
 import static org.briarproject.bramble.plugin.tor.CircumventionProvider.BridgeType.VANILLA;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @Immutable
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java
index e1cf4d2595df67416765dc400bf002bdb7bc547c..c7fa95887cdd5df3b5069128c5879a7f3f950e3c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java
@@ -14,9 +14,6 @@ import org.briarproject.bramble.api.keyagreement.KeyAgreementListener;
 import org.briarproject.bramble.api.network.NetworkManager;
 import org.briarproject.bramble.api.network.NetworkStatus;
 import org.briarproject.bramble.api.network.event.NetworkStatusEvent;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.ConnectionHandler;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -34,6 +31,9 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.api.system.ResourceProvider;
 import org.briarproject.bramble.plugin.tor.CircumventionProvider.BridgeType;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.ByteArrayInputStream;
 import java.io.EOFException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPluginFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPluginFactory.java
index a221651516cd244f4a6e77a16f6c39fed9f893bd..f1efd88251f8bd499c6d70297c9bdd45ab771811 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPluginFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPluginFactory.java
@@ -5,7 +5,6 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.network.NetworkManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -20,6 +19,7 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.api.system.ResourceProvider;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.util.concurrent.Executor;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorTransportConnection.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorTransportConnection.java
index e6a1c5f262dedbc7ad9f0290552b5bf3d594f11e..bfbaf1a3094ac807ec235ac438b4ef55356a6db0 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorTransportConnection.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorTransportConnection.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.plugin.tor;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.duplex.AbstractDuplexTransportConnection;
 import org.briarproject.bramble.util.IoUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java
index cabf9f95dd56c460189b19cf1912eba41776ae4d..7f17fed489723706c71c3c89d7d380b69cb47e7b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java
@@ -14,7 +14,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Metadata;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
@@ -29,6 +28,7 @@ import org.briarproject.bramble.api.sync.validation.IncomingMessageHook;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.HashMap;
 import java.util.Iterator;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyValidator.java b/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyValidator.java
index e74ca3f6932f7b5dbbb9f12c2c6db4934e65fecc..d0dd2b91b24775ba48b12c1786ca546aae593fc9 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyValidator.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyValidator.java
@@ -7,10 +7,10 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/record/RecordReaderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/record/RecordReaderImpl.java
index 70d909fb28d874433415867def4b04a031faf369..fb6abb151e4a8d11eae14487814fa562b6f64d57 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/record/RecordReaderImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/record/RecordReaderImpl.java
@@ -2,10 +2,10 @@ package org.briarproject.bramble.record;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.Predicate;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.record.Record;
 import org.briarproject.bramble.api.record.RecordReader;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.BufferedInputStream;
 import java.io.DataInputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/record/RecordWriterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/record/RecordWriterImpl.java
index 137af59dc93cbfc7e78e797c37d12f9bd1120bc3..fc66f527256bff9f14f38711719c56bb6d984f55 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/record/RecordWriterImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/record/RecordWriterImpl.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.record;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.record.Record;
 import org.briarproject.bramble.api.record.RecordWriter;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Ack.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Ack.java
index 737e32fd53a57714646f07b4f96a96feccbcc614..a5694641f6ac9fb830eea2568eaf4bd8001c3994 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Ack.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Ack.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Crc32.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Crc32.java
index b4cf7bc25d726e9766eb81248df55682b671509e..fb5953e205f2717a11d0dfb14e9b102ae910d99b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Crc32.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Crc32.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 class Crc32 {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Data.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Data.java
index ab33b67cd444fb759a4cd486882e65a19c769663..14ee04b0150383e83270e4de927ae96cb9840b3c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Data.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Data.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Frame.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Frame.java
index 6e5d1969c5ff2a50c7e5b2372510c0605ae9a3e6..b4ff625076440f587b0f8a2a4d4adccf35f11054 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Frame.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Frame.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Receiver.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Receiver.java
index 9e0b37b507f0ce313541a2fa4e6b3162a005fcea..88395a837e7e4df271966bafee9981a120d70fd2 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Receiver.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Receiver.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.reliability.ReadHandler;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.Comparator;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReceiverInputStream.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReceiverInputStream.java
index 6c0b838b973c922255d58b171603e6ff80792ee5..d4fffb3574dcc0a024e8ab7b883063694768562e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReceiverInputStream.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReceiverInputStream.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReliabilityLayerFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReliabilityLayerFactoryImpl.java
index fbe4b18233efba77eaf63931b954bfdcbc303285..12f7904158bf868a074633dd39d9f1f50af7e2ee 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReliabilityLayerFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReliabilityLayerFactoryImpl.java
@@ -1,12 +1,12 @@
 package org.briarproject.bramble.reliability;
 
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.reliability.ReliabilityLayer;
 import org.briarproject.bramble.api.reliability.ReliabilityLayerFactory;
 import org.briarproject.bramble.api.reliability.WriteHandler;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.system.SystemClock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReliabilityLayerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReliabilityLayerImpl.java
index 0de0e491f7b22369b50b4f9976265b9b6fa6008b..68c1594a007ee2efad7f2d457b34d0bc1014b182 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReliabilityLayerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/ReliabilityLayerImpl.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.reliability.ReliabilityLayer;
 import org.briarproject.bramble.api.reliability.WriteHandler;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Sender.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Sender.java
index 982055eeadb1706e047b470d3edacd9ea8043838..e9486e3473b6c2dfc5feff6200dfc7dbdd319bba 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/Sender.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/Sender.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.reliability.WriteHandler;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/SenderOutputStream.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/SenderOutputStream.java
index b90494b529f35816e06565209f127d2a83467755..fcae8aab54af7ee995ec2162c0c4c0e08e9cc94d 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/SenderOutputStream.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/SenderOutputStream.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/SlipDecoder.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/SlipDecoder.java
index b4ca04c94d5ddaa40fa61f1b0b590b9aed308e9f..da67a71c0d5ee8d5ae7851621f6285340406cd43 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/SlipDecoder.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/SlipDecoder.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.reliability.ReadHandler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reliability/SlipEncoder.java b/bramble-core/src/main/java/org/briarproject/bramble/reliability/SlipEncoder.java
index 1d7710845371425805c2dc24ce01713699a5315d..0233f47bd8c7dab31607b3d258af0aa53261259f 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reliability/SlipEncoder.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reliability/SlipEncoder.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.reliability;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.reliability.WriteHandler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/KeyMaterialSourceImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/KeyMaterialSourceImpl.java
index a7c9d42ecfb754fe7162ecec57faf529c2245f79..f10ed22f4397d222d5afa8f34b1ebffd7b56b49a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/KeyMaterialSourceImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/KeyMaterialSourceImpl.java
@@ -4,8 +4,8 @@ import org.bouncycastle.crypto.engines.Salsa20Engine;
 import org.bouncycastle.crypto.params.KeyParameter;
 import org.bouncycastle.crypto.params.ParametersWithIV;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.rendezvous.KeyMaterialSource;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.GuardedBy;
 import javax.annotation.concurrent.ThreadSafe;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousCrypto.java b/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousCrypto.java
index 0fcd84417ac0e84205085b1e55c1597bbf97f72e..c718e812b1c93cdfcdd7733cb7bc4157ab289027 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousCrypto.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousCrypto.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.rendezvous;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.rendezvous.KeyMaterialSource;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface RendezvousCrypto {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousCryptoImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousCryptoImpl.java
index c0cf89f944e8847291920445ce03fa1a91698055..a7e9cafc8cc3dd5e44e1d333154f55fb81121a20 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousCryptoImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousCryptoImpl.java
@@ -2,9 +2,9 @@ package org.briarproject.bramble.rendezvous;
 
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.rendezvous.KeyMaterialSource;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousPollerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousPollerImpl.java
index 54cc2ef082cefe18b734bb6dd5c9895465878bb4..b134280be0218d82bcaf16c8bdd251b79196864a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousPollerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/rendezvous/RendezvousPollerImpl.java
@@ -23,7 +23,6 @@ import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.Service;
 import org.briarproject.bramble.api.lifecycle.ServiceException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.ConnectionHandler;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.PluginManager;
@@ -44,6 +43,7 @@ import org.briarproject.bramble.api.rendezvous.event.RendezvousPollEvent;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.TaskScheduler;
 import org.briarproject.bramble.api.system.Wakeful;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
@@ -69,12 +69,12 @@ import static org.briarproject.bramble.api.contact.PendingContactState.ADDING_CO
 import static org.briarproject.bramble.api.contact.PendingContactState.FAILED;
 import static org.briarproject.bramble.api.contact.PendingContactState.OFFLINE;
 import static org.briarproject.bramble.api.contact.PendingContactState.WAITING_FOR_CONNECTION;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNull;
 import static org.briarproject.bramble.rendezvous.RendezvousConstants.POLLING_INTERVAL_MS;
 import static org.briarproject.bramble.rendezvous.RendezvousConstants.RENDEZVOUS_TIMEOUT_MS;
 import static org.briarproject.bramble.util.IoUtils.tryToClose;
 import static org.briarproject.bramble.util.LogUtils.logException;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
+import static org.briarproject.nullsafety.NullSafety.requireNull;
 
 @NotNullByDefault
 class RendezvousPollerImpl implements RendezvousPoller, Service, EventListener {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReportServer.java b/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReportServer.java
index 127bbcc8f3f0186c3533a4737de309071fc70ac2..213d45e1b2ea670e29acde3d6a39ce79b81aee99 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReportServer.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReportServer.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.reporting;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.IoUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.Closeable;
 import java.io.File;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReporterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReporterImpl.java
index e32f4757c9d87849d3fc1c812df587f853badeca..ab513d2851272da41c3b0c740b8ba11814bc1fcf 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReporterImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReporterImpl.java
@@ -4,13 +4,13 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TorConstants;
 import org.briarproject.bramble.api.plugin.event.TransportActiveEvent;
 import org.briarproject.bramble.api.reporting.DevConfig;
 import org.briarproject.bramble.api.reporting.DevReporter;
 import org.briarproject.bramble.util.IoUtils;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/settings/SettingsManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/settings/SettingsManagerImpl.java
index e4e03989cf7877488f967db8dbbc1113a380cc69..113fbc26cf3c94f5106684dc3deaa18815a8455c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/settings/SettingsManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/settings/SettingsManagerImpl.java
@@ -3,9 +3,9 @@ package org.briarproject.bramble.settings;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/DuplexOutgoingSession.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/DuplexOutgoingSession.java
index 42a466e1eae62024a469c80c585032bf89bee344..b6613ddbe0e480f66b1008e830fcb02f0d987218 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/DuplexOutgoingSession.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/DuplexOutgoingSession.java
@@ -10,7 +10,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.event.LifecycleEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.event.TransportInactiveEvent;
 import org.briarproject.bramble.api.record.Record;
@@ -31,6 +30,7 @@ import org.briarproject.bramble.api.sync.event.MessageToAckEvent;
 import org.briarproject.bramble.api.sync.event.MessageToRequestEvent;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.transport.StreamWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.Collection;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/EagerSimplexOutgoingSession.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/EagerSimplexOutgoingSession.java
index 1cc62de9fb4076f118515c9b84a1d1058db4aa86..6e801f80372e280aab42eb24aa55b54ab149f61e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/EagerSimplexOutgoingSession.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/EagerSimplexOutgoingSession.java
@@ -4,12 +4,12 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.EventBus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.SyncRecordWriter;
 import org.briarproject.bramble.api.transport.StreamWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.Collection;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/GroupFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/GroupFactoryImpl.java
index 0e34cf6b4db4005ce63088346d7e0b036be42346..9e0a3d1cc8a2eca94366d9986ad07651a559953b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/GroupFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/GroupFactoryImpl.java
@@ -1,13 +1,13 @@
 package org.briarproject.bramble.sync;
 
 import org.briarproject.bramble.api.crypto.CryptoComponent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupFactory;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.util.ByteUtils;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/IncomingSession.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/IncomingSession.java
index 6414b0490d0d821825d509ac192e6d5a7a057eea..1c4adea4b5b0c83f574517865ab343ff3f128472 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/IncomingSession.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/IncomingSession.java
@@ -11,7 +11,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.event.LifecycleEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Ack;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.Offer;
@@ -21,6 +20,7 @@ import org.briarproject.bramble.api.sync.Request;
 import org.briarproject.bramble.api.sync.SyncRecordReader;
 import org.briarproject.bramble.api.sync.SyncSession;
 import org.briarproject.bramble.api.sync.Versions;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/MailboxOutgoingSession.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/MailboxOutgoingSession.java
index afe7a72a848795b00d1d23661f38fb02e49d10f0..48bfc519c5e66269fdee1df1fa5db7e30cb09e74 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/MailboxOutgoingSession.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/MailboxOutgoingSession.java
@@ -4,7 +4,6 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.EventBus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.sync.Ack;
 import org.briarproject.bramble.api.sync.Message;
@@ -12,6 +11,7 @@ import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.OutgoingSessionRecord;
 import org.briarproject.bramble.api.sync.SyncRecordWriter;
 import org.briarproject.bramble.api.transport.StreamWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/MessageFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/MessageFactoryImpl.java
index f979abab0e8f9220088292839515321cc7a4c72f..58f1e3b0e948a86c6b5d20dc52cb081a22bc07ed 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/MessageFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/MessageFactoryImpl.java
@@ -2,12 +2,12 @@ package org.briarproject.bramble.sync;
 
 import org.briarproject.bramble.api.UniqueId;
 import org.briarproject.bramble.api.crypto.CryptoComponent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/SimplexOutgoingSession.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/SimplexOutgoingSession.java
index a9efdcabe75495a85b86caa40788761a89bfb1fa..c89bd5aec58db64bbf361d401579aeb18eb46752 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/SimplexOutgoingSession.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/SimplexOutgoingSession.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.event.LifecycleEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.event.TransportInactiveEvent;
 import org.briarproject.bramble.api.record.Record;
@@ -21,6 +20,7 @@ import org.briarproject.bramble.api.sync.SyncSession;
 import org.briarproject.bramble.api.sync.Versions;
 import org.briarproject.bramble.api.sync.event.CloseSyncConnectionsEvent;
 import org.briarproject.bramble.api.transport.StreamWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.Collection;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordReaderFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordReaderFactoryImpl.java
index 7124f8810f20498c6af3273effe1707a7b1bde7e..358bd0ded99c7e0524c4cbaf238006bfbf03c9ef 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordReaderFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordReaderFactoryImpl.java
@@ -1,11 +1,11 @@
 package org.briarproject.bramble.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.record.RecordReader;
 import org.briarproject.bramble.api.record.RecordReaderFactory;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.SyncRecordReader;
 import org.briarproject.bramble.api.sync.SyncRecordReaderFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordReaderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordReaderImpl.java
index 8d8857460142e6cfa589e2d9d2713a7561ca2eec..2329999cee59df73a38afe6a5585a273be801272 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordReaderImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordReaderImpl.java
@@ -3,7 +3,6 @@ package org.briarproject.bramble.sync;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.Predicate;
 import org.briarproject.bramble.api.UniqueId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.record.Record;
 import org.briarproject.bramble.api.record.RecordReader;
 import org.briarproject.bramble.api.sync.Ack;
@@ -16,6 +15,7 @@ import org.briarproject.bramble.api.sync.Request;
 import org.briarproject.bramble.api.sync.SyncRecordReader;
 import org.briarproject.bramble.api.sync.Versions;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordWriterFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordWriterFactoryImpl.java
index d83bda1a8b731e4dd90be54d42ee9b40ae7f8f42..258df1253a09f66d6da2d0b8b14d22983c640bc1 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordWriterFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordWriterFactoryImpl.java
@@ -1,11 +1,11 @@
 package org.briarproject.bramble.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.record.RecordWriter;
 import org.briarproject.bramble.api.record.RecordWriterFactory;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.SyncRecordWriter;
 import org.briarproject.bramble.api.sync.SyncRecordWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.OutputStream;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordWriterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordWriterImpl.java
index 38964b640dcbda099827a74ddae5ee1b3f6b7581..2079198b3d9ea6e3ccbf3ff14e2bb725863eede8 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordWriterImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncRecordWriterImpl.java
@@ -1,6 +1,5 @@
 package org.briarproject.bramble.sync;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.record.Record;
 import org.briarproject.bramble.api.record.RecordWriter;
 import org.briarproject.bramble.api.sync.Ack;
@@ -12,6 +11,7 @@ import org.briarproject.bramble.api.sync.Priority;
 import org.briarproject.bramble.api.sync.Request;
 import org.briarproject.bramble.api.sync.SyncRecordWriter;
 import org.briarproject.bramble.api.sync.Versions;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncSessionFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncSessionFactoryImpl.java
index fcd599af585f038f47f9034d8cf00bfb5b6e7488..a503d5e77883d2b76172cc97582f14bb3f7040e9 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncSessionFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/SyncSessionFactoryImpl.java
@@ -4,7 +4,6 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.event.EventBus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.sync.OutgoingSessionRecord;
 import org.briarproject.bramble.api.sync.Priority;
@@ -17,6 +16,7 @@ import org.briarproject.bramble.api.sync.SyncSession;
 import org.briarproject.bramble.api.sync.SyncSessionFactory;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.transport.StreamWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 import java.io.OutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/validation/ValidationManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/validation/ValidationManagerImpl.java
index ac22c3593ff5df363c8e512e6ee272b0932bd900..a684ca9b7e99d1ce21bff32d9fcd7412b4b702ce 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/sync/validation/ValidationManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/validation/ValidationManagerImpl.java
@@ -11,7 +11,6 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.Service;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
@@ -25,6 +24,7 @@ import org.briarproject.bramble.api.sync.validation.MessageState;
 import org.briarproject.bramble.api.sync.validation.MessageValidator;
 import org.briarproject.bramble.api.sync.validation.ValidationManager;
 import org.briarproject.bramble.api.versioning.ClientMajorVersion;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.LinkedList;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/system/AbstractSecureRandomProvider.java b/bramble-core/src/main/java/org/briarproject/bramble/system/AbstractSecureRandomProvider.java
index 66b7df159983a98ecb9670f948d6c286a099bd7e..dd375abe77b9b9d29690d298de5551506a877784 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/system/AbstractSecureRandomProvider.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/system/AbstractSecureRandomProvider.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.SecureRandomProvider;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.DataOutputStream;
 import java.io.IOException;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/system/TaskSchedulerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/system/TaskSchedulerImpl.java
index 36382153766f6e4085571d1b7e41c25939055785..186e64aa0068429d9dc81c738c729bf785e5da6d 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/system/TaskSchedulerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/system/TaskSchedulerImpl.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.system;
 
 import org.briarproject.bramble.api.Cancellable;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.TaskScheduler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.concurrent.ScheduledExecutorService;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/system/UnixSecureRandomProvider.java b/bramble-core/src/main/java/org/briarproject/bramble/system/UnixSecureRandomProvider.java
index a992b955cf6c0d8b175034ea76efcf78e90d6d14..8254babe671c0ed0180cba51d130b05ff1376814 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/system/UnixSecureRandomProvider.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/system/UnixSecureRandomProvider.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.DataOutputStream;
 import java.io.File;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/KeyManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/KeyManagerImpl.java
index d1b014385bbc3fc0a01b1bdb0c09a3cad9fe7110..1b1764137e2f5c6825f0398bcc360afed77bc051 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/KeyManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/KeyManagerImpl.java
@@ -17,13 +17,13 @@ import org.briarproject.bramble.api.event.EventExecutor;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.Service;
 import org.briarproject.bramble.api.lifecycle.ServiceException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginConfig;
 import org.briarproject.bramble.api.plugin.PluginFactory;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.transport.KeyManager;
 import org.briarproject.bramble.api.transport.KeySetId;
 import org.briarproject.bramble.api.transport.StreamContext;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.HashMap;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableIncomingKeys.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableIncomingKeys.java
index 994013044ddf61d1ba16b5450e3b1f8d43b54016..d33a9648644f22c4642d6a0f8549c7fb6bf536d9 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableIncomingKeys.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableIncomingKeys.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.IncomingKeys;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableOutgoingKeys.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableOutgoingKeys.java
index 44ba3a3ea2ec60c6279b58f5f59d8e914b92137f..a99a7ffd9cd282fae8bc75b8614a8742bd950d66 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableOutgoingKeys.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableOutgoingKeys.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.OutgoingKeys;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableTransportKeySet.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableTransportKeySet.java
index 55480107b3d39f86898d0ac2a180b74f4cc07c36..8f0eaf1c2018b60684793caa2995e86ac4af6d49 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableTransportKeySet.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableTransportKeySet.java
@@ -2,13 +2,13 @@ package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.contact.PendingContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.KeySetId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
 
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireExactlyOneNull;
+import static org.briarproject.nullsafety.NullSafety.requireExactlyOneNull;
 
 @NotThreadSafe
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableTransportKeys.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableTransportKeys.java
index 192c76415293dc09dc6e2f4b8b9291b67999982c..d6ccff4837f40d7eeb160b72d6b1f3a5ce42269c 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableTransportKeys.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/MutableTransportKeys.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.transport.TransportKeys;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/ReorderingWindow.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/ReorderingWindow.java
index 4b0ea2bc694b36eab166152cba3c54e6d1a1f16c..3f404a16cbf46c0dcce42df2376eb55eb542a6f7 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/ReorderingWindow.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/ReorderingWindow.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.transport;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderFactoryImpl.java
index 2b85960472ab74ce402f5910f91dffb08191cc3c..7908f1b3affd09c4a1875fe195573c761367cf65 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderFactoryImpl.java
@@ -2,9 +2,9 @@ package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.crypto.StreamDecrypterFactory;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderImpl.java
index 770592c739a313233566d2c01e08d83c49f48ede..5fc0c0f4896141e640425ab9ddc4a1155d3a866e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamReaderImpl.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.crypto.StreamDecrypter;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterFactoryImpl.java
index 38262fc9972a98d5c379b91f08ad21bd577e8531..5af24f1a4f5b0e5c98e1627e71b52be4d18feb3f 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterFactoryImpl.java
@@ -2,10 +2,10 @@ package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.crypto.StreamEncrypterFactory;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.StreamWriter;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.OutputStream;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterImpl.java
index 2a2279e35e060bbd4ffc8c51680216569a1a8c35..0b4e3be8f0798d1d086c81c2fe14509ec98f29a1 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/StreamWriterImpl.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.crypto.StreamEncrypter;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.StreamWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManager.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManager.java
index 0448e8bc7a853b770dd3b9ab0b2058ad61cb1a69..a5a48f8e7b3597ec845a1baebd05778a389fea1d 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManager.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManager.java
@@ -5,9 +5,9 @@ import org.briarproject.bramble.api.contact.PendingContactId;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.transport.KeySetId;
 import org.briarproject.bramble.api.transport.StreamContext;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerFactory.java
index 64907dc4124261d62689ea7f8a44853b1ec7ae2a..c761cdb372d70737d945f488507aac327257bfad 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerFactory.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerFactory.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.transport;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface TransportKeyManagerFactory {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerFactoryImpl.java
index 5799ca7ea2f5d35094f9d44b535154552f670f24..44fc6f6ff1c395f13e81f56d105fae30c1db4b1d 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerFactoryImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerFactoryImpl.java
@@ -3,10 +3,10 @@ package org.briarproject.bramble.transport;
 import org.briarproject.bramble.api.crypto.TransportCrypto;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.TaskScheduler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerImpl.java
index 769be9c39d0106a45a7be3d1d7083b8c73e72612..788d51d3cac440fb4c9bd537008ac3661bee057a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerImpl.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.TaskScheduler;
@@ -19,6 +18,7 @@ import org.briarproject.bramble.api.transport.StreamContext;
 import org.briarproject.bramble.api.transport.TransportKeySet;
 import org.briarproject.bramble.api.transport.TransportKeys;
 import org.briarproject.bramble.transport.ReorderingWindow.Change;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -37,12 +37,12 @@ import javax.annotation.concurrent.ThreadSafe;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.logging.Level.WARNING;
 import static java.util.logging.Logger.getLogger;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireExactlyOneNull;
 import static org.briarproject.bramble.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
 import static org.briarproject.bramble.api.transport.TransportConstants.PROTOCOL_VERSION;
 import static org.briarproject.bramble.api.transport.TransportConstants.TAG_LENGTH;
 import static org.briarproject.bramble.util.ByteUtils.MAX_32_BIT_UNSIGNED;
 import static org.briarproject.bramble.util.LogUtils.logException;
+import static org.briarproject.nullsafety.NullSafety.requireExactlyOneNull;
 
 @ThreadSafe
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageEncoder.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageEncoder.java
index 058fc894db963a739d8dca93f94fb8f9e328eada..9d2eec898c170ffd80cc2489bb4b950c48e9f41a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageEncoder.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageEncoder.java
@@ -2,11 +2,11 @@ package org.briarproject.bramble.transport.agreement;
 
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface MessageEncoder {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageEncoderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageEncoderImpl.java
index 35d019a79a42c0c6f83da5e6e0c6b1223db5fac6..ae3d1b53d66deda1454b9792137fcb82d523d7f6 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageEncoderImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageEncoderImpl.java
@@ -6,12 +6,12 @@ import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfEntry;
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageType.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageType.java
index 1e63464e36db0d49b5206b493dba15dc18b57ba0..035c6e4c3558fa7cb147788c1267429c453ac334 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageType.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/MessageType.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.transport.agreement;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/Session.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/Session.java
index f431bdfd15f49787a605ec3819bf8cc0786dcaf7..4a19c46e0183732a8b5744e3639c50d27499ca4e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/Session.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/Session.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.transport.agreement;
 
 import org.briarproject.bramble.api.crypto.KeyPair;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.transport.KeySetId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionEncoder.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionEncoder.java
index 949ed977bb078f35009ca052f3d94b4c8e36386f..2266c71688ce463a865e8deab8b8d1ad4a62d092 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionEncoder.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionEncoder.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.transport.agreement;
 
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SessionEncoder {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionEncoderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionEncoderImpl.java
index 8b79f45faf38aeae4752b4d35890b6b328094020..3909ab4fb2567f1fb1417b1631b9e7c259742add 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionEncoderImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionEncoderImpl.java
@@ -3,9 +3,9 @@ package org.briarproject.bramble.transport.agreement;
 import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfEntry;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.transport.KeySetId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionParser.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionParser.java
index 7b9e2a3e8629a1d33c8a693b3d358cfa5f8176c4..e719ee8e088c123636f84bf2097dbd8af0993e1a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionParser.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionParser.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.transport.agreement;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SessionParser {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionParserImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionParserImpl.java
index 14ba99fb86cbe9da545f7baf9708c0e6d992446b..a0d18f3807b4d7020b42abad4aa27b373677652a 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionParserImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/SessionParserImpl.java
@@ -5,9 +5,9 @@ import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.transport.KeySetId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/State.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/State.java
index 9ab3f97da628c866cf50a322504d3bb9ccc43bef..294631fe122ba22f25b149cd618e6d41b3419061 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/State.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/State.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.transport.agreement;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementConstants.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementConstants.java
index ae2fd4474c53343797265175c8fac222bcbb984d..7bb9c2caa0be46375dc2e913308d6e6c8895268e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementConstants.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementConstants.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.transport.agreement;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface TransportKeyAgreementConstants {
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementCrypto.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementCrypto.java
index 888e33d6e8a8cebe733cdcb30c619b062b16b967..bb04bdb066e35d74f4798848a54641b1c6c6e994 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementCrypto.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementCrypto.java
@@ -5,7 +5,7 @@ import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementCryptoImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementCryptoImpl.java
index 5fed461e13427d641f8832b32345b2c616caee7a..cbf458877028b443da40ffca58a96e0fa0fd9b3b 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementCryptoImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementCryptoImpl.java
@@ -6,7 +6,7 @@ import org.briarproject.bramble.api.crypto.KeyPair;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementManagerImpl.java
index 8fab1c8b26358a3e1b6fa35a10504c1939dde2ad..82a17af1ea0650c563dd64c3ae06a3a1670ff914 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementManagerImpl.java
@@ -20,7 +20,6 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginConfig;
 import org.briarproject.bramble.api.plugin.PluginFactory;
 import org.briarproject.bramble.api.plugin.TransportId;
@@ -34,6 +33,7 @@ import org.briarproject.bramble.api.transport.KeySetId;
 import org.briarproject.bramble.api.transport.agreement.TransportKeyAgreementManager;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
@@ -51,7 +51,6 @@ import static java.util.Collections.singletonMap;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Logger.getLogger;
 import static org.briarproject.bramble.api.Bytes.compare;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.DeliveryAction.ACCEPT_DO_NOT_SHARE;
 import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.DeliveryAction.DEFER;
 import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.DeliveryAction.REJECT;
@@ -63,6 +62,7 @@ import static org.briarproject.bramble.transport.agreement.State.AWAIT_KEY;
 import static org.briarproject.bramble.transport.agreement.TransportKeyAgreementConstants.MSG_KEY_MESSAGE_TYPE;
 import static org.briarproject.bramble.transport.agreement.TransportKeyAgreementConstants.MSG_KEY_PUBLIC_KEY;
 import static org.briarproject.bramble.transport.agreement.TransportKeyAgreementConstants.MSG_KEY_TRANSPORT_ID;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @Immutable
 @NotNullByDefault
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementValidator.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementValidator.java
index c371fca773d5b87669b51fc3f41ffdb9fb0ec0c9..ca43a94c4fed78778dcffbb35c468de0b20e8fd8 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementValidator.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/agreement/TransportKeyAgreementValidator.java
@@ -7,12 +7,12 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java
index fdaa6a80fa52d722b92c4aec5894e6ab47317714..72d55156122d7708f10005a88b1df1c27cb556a3 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java
@@ -15,7 +15,6 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
 import org.briarproject.bramble.api.lifecycle.Service;
 import org.briarproject.bramble.api.lifecycle.ServiceException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Group.Visibility;
@@ -29,6 +28,7 @@ import org.briarproject.bramble.api.versioning.ClientMajorVersion;
 import org.briarproject.bramble.api.versioning.ClientVersion;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager;
 import org.briarproject.bramble.api.versioning.event.ClientVersionUpdatedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningValidator.java b/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningValidator.java
index e2fc20913b996e2565bb6e5d1f66862a32690800..b6fbb0c5dd279246887c2d5a0878c3a008d02919 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningValidator.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningValidator.java
@@ -7,10 +7,10 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/client/BdfMessageValidatorTest.java b/bramble-core/src/test/java/org/briarproject/bramble/client/BdfMessageValidatorTest.java
index 4c0bf1418655df0325f38d005294ddb8adf5832e..a6b93c6ccb4365f23b804d262fa4cf5affdf2ddd 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/client/BdfMessageValidatorTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/client/BdfMessageValidatorTest.java
@@ -6,12 +6,12 @@ import org.briarproject.bramble.api.client.BdfMessageValidator;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.db.Metadata;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageContext;
 import org.briarproject.bramble.test.ValidatorTestCase;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.jmock.Expectations;
 import org.jmock.imposters.ByteBuddyClassImposteriser;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactExchangeIntegrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactExchangeIntegrationTest.java
index c664eb3d0d5e33d219373c3f394406dcf090fcdd..11e8a63c8c96eadd1b41a453a99046756ff6e37d 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactExchangeIntegrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/contact/ContactExchangeIntegrationTest.java
@@ -15,10 +15,10 @@ import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.identity.Identity;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.test.BrambleTestCase;
 import org.briarproject.bramble.test.TestDatabaseConfigModule;
 import org.briarproject.bramble.test.TestDuplexTransportConnection;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/PseudoRandom.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/PseudoRandom.java
index ccb80a42f9bdc90c2898465611c3ca2455ab50cd..235aa94a5cfe5cd32552446746ddc5bf70ef6090 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/PseudoRandom.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/PseudoRandom.java
@@ -5,7 +5,7 @@ import org.bouncycastle.crypto.digests.Blake2bDigest;
 import org.bouncycastle.crypto.engines.Salsa20Engine;
 import org.bouncycastle.crypto.params.KeyParameter;
 import org.bouncycastle.crypto.params.ParametersWithIV;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/crypto/TestAuthenticatedCipher.java b/bramble-core/src/test/java/org/briarproject/bramble/crypto/TestAuthenticatedCipher.java
index dd7982795a9ca52f912caac4b3f366ce2bf9af84..334f7cc843ac665ca1b80aa7fc364a7a952a0d85 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/crypto/TestAuthenticatedCipher.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/crypto/TestAuthenticatedCipher.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.crypto;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/DatabaseMigrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/db/DatabaseMigrationTest.java
index a752d072a4509fa666cf4dae7b3e793fbee75bfa..14dd92530a87477dbc8ef329e692a7c10a284d3b 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/DatabaseMigrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/DatabaseMigrationTest.java
@@ -5,7 +5,6 @@ import org.briarproject.bramble.api.db.DataTooNewException;
 import org.briarproject.bramble.api.db.DataTooOldException;
 import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.system.Clock;
@@ -14,6 +13,7 @@ import org.briarproject.bramble.test.BrambleMockTestCase;
 import org.briarproject.bramble.test.TestDatabaseConfig;
 import org.briarproject.bramble.test.TestMessageFactory;
 import org.briarproject.bramble.test.TestUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.jmock.Expectations;
 import org.junit.After;
 import org.junit.Before;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/H2MigrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/db/H2MigrationTest.java
index 4646a05b4c6d84904f4b70e67175068643fd7236..808bbc82567dae5e6011679bbbd397caa0154dbd 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/H2MigrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/H2MigrationTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.db;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.sql.Connection;
 import java.util.List;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/H2SleepDatabasePerformanceComparisonTest.java b/bramble-core/src/test/java/org/briarproject/bramble/db/H2SleepDatabasePerformanceComparisonTest.java
index 641f20805957a152cbf49824f7eb3923cb28ee7d..276dcdc4fc388467f20f8743f695b221d07b8733 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/H2SleepDatabasePerformanceComparisonTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/H2SleepDatabasePerformanceComparisonTest.java
@@ -2,9 +2,9 @@ package org.briarproject.bramble.db;
 
 import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.Ignore;
 
 import java.sql.Connection;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/db/HyperSqlMigrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/db/HyperSqlMigrationTest.java
index 66ffeea0299fae93b826125f09ea48bf3a7549e0..8d99bee2f0a6b20f1cbbc49e2307e58e331a0ae7 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/db/HyperSqlMigrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/db/HyperSqlMigrationTest.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.db;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.Before;
 
 import java.sql.Connection;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/ContactMailboxClientTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/ContactMailboxClientTest.java
index c0c7986f26aa1413f52a988e14927cdefd2563d1..ca4bc5b6a0dfcdc0d2b1f66acc427ee19162705d 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/ContactMailboxClientTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/ContactMailboxClientTest.java
@@ -8,9 +8,9 @@ import org.jmock.Expectations;
 import org.junit.Test;
 
 import static org.briarproject.bramble.api.mailbox.MailboxConstants.CLIENT_SUPPORTS;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.test.TestUtils.getContactId;
 import static org.briarproject.bramble.test.TestUtils.getMailboxProperties;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 public class ContactMailboxClientTest extends BrambleMockTestCase {
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxClientManagerTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxClientManagerTest.java
index c658a6d760182c39c4e040b3e1b384db2aaeab22..2115a5501f2d7a87c96071c487e57968786618e1 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxClientManagerTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxClientManagerTest.java
@@ -36,12 +36,12 @@ import javax.annotation.Nullable;
 import static java.util.Collections.singletonList;
 import static java.util.Collections.singletonMap;
 import static org.briarproject.bramble.api.mailbox.MailboxConstants.CLIENT_SUPPORTS;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE;
 import static org.briarproject.bramble.api.plugin.Plugin.State.ENABLING;
 import static org.briarproject.bramble.api.plugin.TorConstants.ID;
 import static org.briarproject.bramble.test.TestUtils.getContact;
 import static org.briarproject.bramble.test.TestUtils.getMailboxProperties;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 public class MailboxClientManagerTest extends BrambleMockTestCase {
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/OwnMailboxContactListWorkerTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/OwnMailboxContactListWorkerTest.java
index 12232122e18a44a1ca9fe49bd401ea270b608dc4..1297fcf81c726c3601bea8f002b747d926a748ab 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/OwnMailboxContactListWorkerTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/OwnMailboxContactListWorkerTest.java
@@ -30,9 +30,9 @@ import java.util.concurrent.atomic.AtomicReference;
 import static java.util.Collections.emptyList;
 import static java.util.Collections.singletonList;
 import static org.briarproject.bramble.api.mailbox.MailboxConstants.CLIENT_SUPPORTS;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.test.TestUtils.getContact;
 import static org.briarproject.bramble.test.TestUtils.getMailboxProperties;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTest.java
index b924beb5f93d73e2a602da86325a40397f97c3dc..59e0b67f6cff6de9bce8367eebcf124b055ef2c5 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTest.java
@@ -9,12 +9,12 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.Identity;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.event.MessageStateChangedEvent;
 import org.briarproject.bramble.test.BrambleTestCase;
 import org.briarproject.bramble.test.TestDatabaseConfigModule;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTestModule.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTestModule.java
index 5f3e19842a8ddb6fd9a76c2bd4edf4271b2121e7..77d2dea0f658a5c8cd5d987d218a20c8b43c32eb 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTestModule.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/file/RemovableDriveIntegrationTestModule.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.plugin.file;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginConfig;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java b/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java
index 6b2cd71017d59acdf875c96aa4a46607bd4d03e5..6f688159987a044b35deea27e0d35540969f25e4 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/plugin/tcp/LanTcpPluginTest.java
@@ -2,7 +2,6 @@ package org.briarproject.bramble.plugin.tcp;
 
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.Plugin.State;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -12,6 +11,7 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.test.BrambleTestCase;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.Test;
 
 import java.io.IOException;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/system/TestTaskScheduler.java b/bramble-core/src/test/java/org/briarproject/bramble/system/TestTaskScheduler.java
index 541ba57a9a94e1ec23f4fea9963c1dbc550a8c7f..6e9f45328389d19cbace1b7c1c0e9e4b5f5bfbea 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/system/TestTaskScheduler.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/system/TestTaskScheduler.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.system;
 
 import org.briarproject.bramble.api.Cancellable;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.TaskScheduler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Queue;
 import java.util.concurrent.CountDownLatch;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleIntegrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleIntegrationTest.java
index 68e9fe39bdaf61ac430d3ccaebfdeb5d1f98005a..e4cd5182696b1bf59c339acbc4ba93d414cd5ab3 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleIntegrationTest.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/BrambleIntegrationTest.java
@@ -11,13 +11,13 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.event.MessageStateChangedEvent;
 import org.briarproject.bramble.api.sync.event.MessagesAckedEvent;
 import org.briarproject.bramble.api.sync.event.MessagesSentEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/CollectionMatcher.java b/bramble-core/src/test/java/org/briarproject/bramble/test/CollectionMatcher.java
index 365878217c76e841f89a454f6afc04a0a7cf5d01..da8183461059ebeb693c24a5608a620c968196d1 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/CollectionMatcher.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/CollectionMatcher.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.test;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.hamcrest.BaseMatcher;
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/ImmediateExecutor.java b/bramble-core/src/test/java/org/briarproject/bramble/test/ImmediateExecutor.java
index 7d488ecc71f08a23823cfdf3f33ae6bf46aa0dcb..3e7427079c85c69b7f66eaa83d21e1bbd88f2cc6 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/ImmediateExecutor.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/ImmediateExecutor.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.test;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/PairMatcher.java b/bramble-core/src/test/java/org/briarproject/bramble/test/PairMatcher.java
index 5e834fb5e06c02071a733711c693512982147b3f..f000cc1ad31e4e8c1df3cc962820536e7bed0ec0 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/PairMatcher.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/PairMatcher.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.Pair;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.hamcrest.BaseMatcher;
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseConfig.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseConfig.java
index ed4afd6226270c9e79972d91a5f70f076973ba4d..16bf35271e4e2a5c04cce8fab847939e8e41bdb7 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseConfig.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestDatabaseConfig.java
@@ -2,7 +2,7 @@ package org.briarproject.bramble.test;
 
 import org.briarproject.bramble.api.crypto.KeyStrengthener;
 import org.briarproject.bramble.api.db.DatabaseConfig;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/TestDuplexTransportConnection.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestDuplexTransportConnection.java
index 83ec8129edfcb81b86f3796b956f48ac961daef0..5e30614c40e3dfd6e4258a24e66e6df4393d7278 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/TestDuplexTransportConnection.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestDuplexTransportConnection.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.test;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.properties.TransportProperties;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/TestMessageFactory.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestMessageFactory.java
index 6a7f090952eaec0d50878c65937209bccd036f71..c4a33299ae8618ddd92a3478efa8fada0f646146 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/TestMessageFactory.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestMessageFactory.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.test;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import static org.briarproject.bramble.api.sync.SyncConstants.MESSAGE_HEADER_LENGTH;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/TestPluginConfigModule.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestPluginConfigModule.java
index efab0271eb4e48edcf4185e5298ff82de153a491..27fc9c8d3a68ef5e9ab57dbd2892a0a2355e9a93 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/TestPluginConfigModule.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestPluginConfigModule.java
@@ -1,6 +1,5 @@
 package org.briarproject.bramble.test;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.PluginConfig;
 import org.briarproject.bramble.api.plugin.TransportId;
@@ -8,6 +7,7 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin;
 import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/TestSecureRandomProvider.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestSecureRandomProvider.java
index c34c227d16e868dc0998fb80038848203f14e266..112a764b77dd7bd3562729045149d93a4bbf416b 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/TestSecureRandomProvider.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestSecureRandomProvider.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.test;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.SecureRandomProvider;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.Provider;
 
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/TestTransportConnectionReader.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestTransportConnectionReader.java
index 866813b8d652e947b6fbb372c9c9a99b7fc05bcc..94a1a2256f8f256cd66c6b3c4a8c51570437b8a2 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/TestTransportConnectionReader.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestTransportConnectionReader.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.test;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/test/TestTransportConnectionWriter.java b/bramble-core/src/test/java/org/briarproject/bramble/test/TestTransportConnectionWriter.java
index 9c9cc48fd1b13c538a179217cdfe34fcfe4d0cb4..178ef5d807c37e4404273278730c16f4c39ed148 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/test/TestTransportConnectionWriter.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/test/TestTransportConnectionWriter.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.test;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/transport/TestStreamDecrypter.java b/bramble-core/src/test/java/org/briarproject/bramble/transport/TestStreamDecrypter.java
index 2823539d075e7f4f7cba80474d6aac7f35d6cef4..eaa4cbf7393ef7f5a855c4ef1676979ff112e081 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/transport/TestStreamDecrypter.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/transport/TestStreamDecrypter.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.crypto.StreamDecrypter;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.EOFException;
 import java.io.IOException;
diff --git a/bramble-core/src/test/java/org/briarproject/bramble/transport/TestStreamEncrypter.java b/bramble-core/src/test/java/org/briarproject/bramble/transport/TestStreamEncrypter.java
index 4ff790b946b0f651cdc597d47870182d5b67f64d..2790cce6456b44ba9b0f0ff4d7cf801bbbff0eae 100644
--- a/bramble-core/src/test/java/org/briarproject/bramble/transport/TestStreamEncrypter.java
+++ b/bramble-core/src/test/java/org/briarproject/bramble/transport/TestStreamEncrypter.java
@@ -1,8 +1,8 @@
 package org.briarproject.bramble.transport;
 
 import org.briarproject.bramble.api.crypto.StreamEncrypter;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.ByteUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/lifecycle/WindowsShutdownManagerImpl.java b/bramble-java/src/main/java/org/briarproject/bramble/lifecycle/WindowsShutdownManagerImpl.java
index 094754ddf49053902070556d45f1393604f9356c..d9892eaaf8e962862f714abf7f0f37faccabbbe6 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/lifecycle/WindowsShutdownManagerImpl.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/lifecycle/WindowsShutdownManagerImpl.java
@@ -14,7 +14,7 @@ import com.sun.jna.win32.StdCallLibrary.StdCallCallback;
 import com.sun.jna.win32.W32APIFunctionMapper;
 import com.sun.jna.win32.W32APITypeMapper;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collections;
 import java.util.HashMap;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/network/JavaNetworkManager.java b/bramble-java/src/main/java/org/briarproject/bramble/network/JavaNetworkManager.java
index 72ccbab2f48e1fee26aca9398e5a1a066f783627..a4df22b33d345d47f1035ce9412e34df8ab8d191 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/network/JavaNetworkManager.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/network/JavaNetworkManager.java
@@ -2,8 +2,8 @@ package org.briarproject.bramble.network;
 
 import org.briarproject.bramble.api.network.NetworkManager;
 import org.briarproject.bramble.api.network.NetworkStatus;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.net.Inet4Address;
 import java.net.InetAddress;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothConnectionFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothConnectionFactory.java
index 50f1514f2b35aace4a2c46199cb9511f2f96a4af..53a3f874fd5d82a028817e9ae1b33d55dda5d0c1 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothConnectionFactory.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothConnectionFactory.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.plugin.bluetooth;
 
 import org.briarproject.bramble.api.io.TimeoutMonitor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPlugin.java
index 4a4e2e63953c2246bef050ef92afba2649e5c875..8c28f2503438467e814bce74b3509fb9a5ea3c86 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPlugin.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPlugin.java
@@ -1,10 +1,10 @@
 package org.briarproject.bramble.plugin.bluetooth;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.security.SecureRandom;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPluginFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPluginFactory.java
index d7dbcfd1188ec62eb1aeeb0186375f399791155d..df1b6cffe0b2339f93bada22e708358c7d61d5f9 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPluginFactory.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPluginFactory.java
@@ -3,7 +3,6 @@ package org.briarproject.bramble.plugin.bluetooth;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.io.TimeoutMonitor;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -11,6 +10,7 @@ import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.SecureRandom;
 import java.util.concurrent.Executor;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothTransportConnection.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothTransportConnection.java
index 4e2d20562c6383630cba204cd20a33fe5406360e..ff5784d5b5b3b2b2c4ebdb6fc98fe7d32f7a863e 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothTransportConnection.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothTransportConnection.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.plugin.bluetooth;
 
 import org.briarproject.bramble.api.io.TimeoutMonitor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.duplex.AbstractDuplexTransportConnection;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/Modem.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/Modem.java
index a25acbad5f1277f19154555bdcd4e908f68a362b..d558da06c0f6518a2c4e74e0add0db9a196421c4 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/Modem.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/Modem.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemFactory.java
index 81866a9ac89dd0bf27c7d91b2a86390b016ac6f2..38e9a3164011b05cc63018240bb93fea439f4b46 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemFactory.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface ModemFactory {
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemFactoryImpl.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemFactoryImpl.java
index 78b8eff8b473f0091dbd3f59b343e6d87b0aa572..9f004b899285b9dd03ad170f8c167d19aab8e91d 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemFactoryImpl.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemFactoryImpl.java
@@ -1,9 +1,9 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.reliability.ReliabilityLayerFactory;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.system.SystemClock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemImpl.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemImpl.java
index 3bf2867cf6ef806eab82aba4d2a1440862cc4a1d..2a145cc31a03c20bc0e653198ad9f66cc0fc3cce 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemImpl.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemImpl.java
@@ -1,11 +1,11 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.reliability.ReliabilityLayer;
 import org.briarproject.bramble.api.reliability.ReliabilityLayerFactory;
 import org.briarproject.bramble.api.reliability.WriteHandler;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemPlugin.java
index f93854f3e1e4f28ff7fd4c4b3783a3111a3a4473..f920bd643997b0e84f837b200a455565ecc93e77 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemPlugin.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemPlugin.java
@@ -3,9 +3,6 @@ package org.briarproject.bramble.plugin.modem;
 import org.briarproject.bramble.api.Pair;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.keyagreement.KeyAgreementListener;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.ConnectionHandler;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.PluginException;
@@ -16,6 +13,9 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.rendezvous.KeyMaterialSource;
 import org.briarproject.bramble.api.rendezvous.RendezvousEndpoint;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemPluginFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemPluginFactory.java
index 459e9385ad9cce832f21adf07776f50174f5ffbd..d0e675f2cdeacaa90c0fea4c6c2dba22b7bbf979 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemPluginFactory.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/ModemPluginFactory.java
@@ -1,13 +1,13 @@
 package org.briarproject.bramble.plugin.modem;
 
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin;
 import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory;
 import org.briarproject.bramble.api.reliability.ReliabilityLayerFactory;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPort.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPort.java
index b21100c7d7582ab67b34373f37ac9b1c5d62dda7..706f268f325350975cc0ec1dc7a92f80ef462d9c 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPort.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPort.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortImpl.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortImpl.java
index f3e1aff06e87033e931071b0f27d8f9e8e2587fe..2e926568549a221bdfd40a310d3a0c6d7bc376d8 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortImpl.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortImpl.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortList.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortList.java
index 918bcd6f3b0a49fb1d151a56a68b486e84e5ef1f..911bbbc3bf0cd04f1b3d107929d386b82ba9186c 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortList.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortList.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SerialPortList {
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortListImpl.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortListImpl.java
index b2375d0d4d5cb42987ac9b0ef919feb58e30db08..63a09f2857cde78c24384e5e874394484befd349 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortListImpl.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/modem/SerialPortListImpl.java
@@ -1,6 +1,6 @@
 package org.briarproject.bramble.plugin.modem;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 class SerialPortListImpl implements SerialPortList {
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/JavaTorPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/JavaTorPlugin.java
index dcc0c9f009c9c73ca08a48fb90cbe9f969a03fbd..5dd647ead197152a261b6f099cfff8e70b3476a7 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/JavaTorPlugin.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/JavaTorPlugin.java
@@ -2,12 +2,12 @@ package org.briarproject.bramble.plugin.tor;
 
 import org.briarproject.bramble.api.battery.BatteryManager;
 import org.briarproject.bramble.api.network.NetworkManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.api.system.ResourceProvider;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.net.URI;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java
index c68dc013083fe28c5fd1434c163e4ac0e83be1d6..90de04434325fd04e411478620e5b9814cf6597f 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java
@@ -5,12 +5,12 @@ import com.sun.jna.Native;
 
 import org.briarproject.bramble.api.battery.BatteryManager;
 import org.briarproject.bramble.api.network.NetworkManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.api.system.ResourceProvider;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.util.concurrent.Executor;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java
index c31bd8e576c265d4d56ce12d17f40183b3e4d27a..cc8e29438d5ec71e3b5b327d66b9faf0e56c8bc1 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java
@@ -5,7 +5,6 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.network.NetworkManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -16,6 +15,7 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.api.system.ResourceProvider;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.util.concurrent.Executor;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPlugin.java
index 9f49416fee6d3ae93fa27de5c61cf1ffa55751a5..9bd16bd97a2a89a91f9e4de59c1ea54b11e71e0e 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPlugin.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPlugin.java
@@ -4,13 +4,13 @@ import com.sun.jna.platform.win32.Kernel32;
 
 import org.briarproject.bramble.api.battery.BatteryManager;
 import org.briarproject.bramble.api.network.NetworkManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.PluginException;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.api.system.ResourceProvider;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.util.Scanner;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPluginFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPluginFactory.java
index 9496a96899aed87c3e86b7528badedb4e3efed7a..81302a01bcfc712eabab1b5d267a17315f67e1b3 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPluginFactory.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/WindowsTorPluginFactory.java
@@ -5,7 +5,6 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.network.NetworkManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Backoff;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.PluginCallback;
@@ -16,6 +15,7 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.api.system.ResourceProvider;
 import org.briarproject.bramble.api.system.WakefulIoExecutor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.util.concurrent.Executor;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/system/JavaLocationUtils.java b/bramble-java/src/main/java/org/briarproject/bramble/system/JavaLocationUtils.java
index e9aadd8d367bacbf7ad8e35df1e8c48318c512a3..a25f9c8b9e3b733f222e2b10562d3213d229aae7 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/system/JavaLocationUtils.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/system/JavaLocationUtils.java
@@ -1,7 +1,7 @@
 package org.briarproject.bramble.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.LocationUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Locale;
 import java.util.logging.Logger;
diff --git a/bramble-java/src/main/java/org/briarproject/bramble/system/JavaResourceProvider.java b/bramble-java/src/main/java/org/briarproject/bramble/system/JavaResourceProvider.java
index faf5068b4a478631e9886a240993c86347629a48..a462f0afb7d5dc93ead15f36a11e9b4525aecd30 100644
--- a/bramble-java/src/main/java/org/briarproject/bramble/system/JavaResourceProvider.java
+++ b/bramble-java/src/main/java/org/briarproject/bramble/system/JavaResourceProvider.java
@@ -1,13 +1,13 @@
 package org.briarproject.bramble.system;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.ResourceProvider;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
 import javax.inject.Inject;
 
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @NotNullByDefault
 class JavaResourceProvider implements ResourceProvider {
diff --git a/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/BridgeTest.java b/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/BridgeTest.java
index 54575469cac2af18290388260c3cf519a54fa817..1a92ed970cd4c5b879003b2b7680d524e2b4412f 100644
--- a/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/BridgeTest.java
+++ b/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/BridgeTest.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.network.NetworkManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.BackoffFactory;
 import org.briarproject.bramble.api.plugin.TorControlPort;
 import org.briarproject.bramble.api.plugin.TorSocksPort;
@@ -21,6 +20,7 @@ import org.briarproject.bramble.test.BrambleJavaIntegrationTestComponent;
 import org.briarproject.bramble.test.BrambleTestCase;
 import org.briarproject.bramble.test.DaggerBrambleJavaIntegrationTestComponent;
 import org.briarproject.bramble.util.OsUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/TestPluginCallback.java b/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/TestPluginCallback.java
index b25038bc838599584ccf72e11e57b1ffaa94ff54..cb4cf7494ef0b7c6b6c3d9485ba2efbe0996d6d9 100644
--- a/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/TestPluginCallback.java
+++ b/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/TestPluginCallback.java
@@ -1,6 +1,5 @@
 package org.briarproject.bramble.plugin.tor;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin.State;
 import org.briarproject.bramble.api.plugin.PluginCallback;
 import org.briarproject.bramble.api.plugin.TransportConnectionReader;
@@ -8,6 +7,7 @@ import org.briarproject.bramble.api.plugin.TransportConnectionWriter;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.settings.Settings;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/ScreenshotOnFailureRule.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/ScreenshotOnFailureRule.java
index 87b8b7833793893328f34c5ab4c2bf8a37119935..bd2d2941c7034857e2767a7b65d399365b1af9bb 100644
--- a/briar-android/src/androidTest/java/org/briarproject/briar/android/ScreenshotOnFailureRule.java
+++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/ScreenshotOnFailureRule.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
diff --git a/briar-android/src/androidTest/java/org/briarproject/briar/android/UiTest.java b/briar-android/src/androidTest/java/org/briarproject/briar/android/UiTest.java
index 5c78c30431a6f9a99cbd8fde461c81098341b695..675c5f2c0d968c66809cdf5157322793ce99a499 100644
--- a/briar-android/src/androidTest/java/org/briarproject/briar/android/UiTest.java
+++ b/briar-android/src/androidTest/java/org/briarproject/briar/android/UiTest.java
@@ -5,9 +5,9 @@ import android.content.Intent;
 
 import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.ClassRule;
 
 import javax.inject.Inject;
diff --git a/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/attachment/media/PngSuiteImageCompressorTest.java b/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/attachment/media/PngSuiteImageCompressorTest.java
index 67f6b902d1136f475e8f7d50a031a84c44e9f6cd..b2b3cf422cbd2569176c214b7b82c9fdaf523c6b 100644
--- a/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/attachment/media/PngSuiteImageCompressorTest.java
+++ b/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/attachment/media/PngSuiteImageCompressorTest.java
@@ -13,8 +13,8 @@ import java.util.logging.Logger;
 import androidx.test.filters.LargeTest;
 
 import static java.util.logging.Logger.getLogger;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.test.TestUtils.isOptionalTestEnabled;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
diff --git a/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/attachment/media/PngSuiteImageSizeCalculatorTest.java b/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/attachment/media/PngSuiteImageSizeCalculatorTest.java
index 9d2054aa192d8ea2ca054db8ea8348b2f9871f5c..5cef394eebbb095a2d70dc2a56a6d5d6ccd3f522 100644
--- a/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/attachment/media/PngSuiteImageSizeCalculatorTest.java
+++ b/briar-android/src/androidTestOfficial/java/org/briarproject/briar/android/attachment/media/PngSuiteImageSizeCalculatorTest.java
@@ -15,8 +15,8 @@ import java.util.logging.Logger;
 import androidx.test.filters.LargeTest;
 
 import static java.util.logging.Logger.getLogger;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.test.TestUtils.isOptionalTestEnabled;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 import static org.junit.Assume.assumeTrue;
 
 @LargeTest
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidDatabaseConfig.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidDatabaseConfig.java
index e13b1463a939714da6a11a7c27e04ab1b87192f6..2668a3f0789fe3bca32b52dc485370a13fff8986 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidDatabaseConfig.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidDatabaseConfig.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.android;
 
 import org.briarproject.bramble.api.crypto.KeyStrengthener;
 import org.briarproject.bramble.api.db.DatabaseConfig;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidKeyStrengthener.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidKeyStrengthener.java
index f0c7d6a2624f301de01473e04151feccd7a819fb..c10a4050b25063a96137c3261a1ffd1acbaa26aa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidKeyStrengthener.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidKeyStrengthener.java
@@ -4,7 +4,7 @@ import android.security.keystore.KeyGenParameterSpec;
 
 import org.briarproject.bramble.api.crypto.KeyStrengthener;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java
index 130b9cb9e05274b6154ebad69a8826e338a96a6a..64b53bc93eb82ccda155987de8cfe08b10f26376 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AndroidNotificationManagerImpl.java
@@ -21,8 +21,6 @@ import org.briarproject.bramble.api.lifecycle.ServiceException;
 import org.briarproject.bramble.api.mailbox.MailboxStatus;
 import org.briarproject.bramble.api.mailbox.event.MailboxProblemEvent;
 import org.briarproject.bramble.api.mailbox.event.OwnMailboxConnectionStatusEvent;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent;
@@ -46,6 +44,8 @@ import org.briarproject.briar.api.conversation.ConversationResponse;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
 import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
 import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Set;
 import java.util.concurrent.Callable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
index 7fedfe6d146de0464bee7dd066e9746d8b74e863..d58039215ad98f8fa0495b81fddb7a5087ff3e4e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
@@ -16,7 +16,6 @@ import org.briarproject.bramble.api.db.DatabaseConfig;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
 import org.briarproject.bramble.api.mailbox.MailboxDirectory;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.PluginConfig;
@@ -63,6 +62,7 @@ import org.briarproject.briar.api.android.LockManager;
 import org.briarproject.briar.api.android.NetworkUsageMetrics;
 import org.briarproject.briar.api.android.ScreenFilterMonitor;
 import org.briarproject.briar.api.test.TestAvatarCreator;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.security.GeneralSecurityException;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java b/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java
index 58e9adf68f5c85d399c897337748e23a0dd47beb..563b3594780ba089ebf1a6892081c595d54cb618 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/BriarService.java
@@ -50,7 +50,6 @@ import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.bramble.api.lifecycle.LifecycleManager.StartResult.ALREADY_RUNNING;
 import static org.briarproject.bramble.api.lifecycle.LifecycleManager.StartResult.SUCCESS;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.util.AndroidUtils.isUiThread;
 import static org.briarproject.briar.android.BriarApplication.ENTRY_ACTIVITY;
 import static org.briarproject.briar.api.android.AndroidNotificationManager.FAILURE_CHANNEL_ID;
@@ -59,6 +58,7 @@ import static org.briarproject.briar.api.android.AndroidNotificationManager.ONGO
 import static org.briarproject.briar.api.android.AndroidNotificationManager.ONGOING_NOTIFICATION_ID;
 import static org.briarproject.briar.api.android.LockManager.ACTION_LOCK;
 import static org.briarproject.briar.api.android.LockManager.EXTRA_PID;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 public class BriarService extends Service {
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/LevelRaisingHandler.java b/briar-android/src/main/java/org/briarproject/briar/android/LevelRaisingHandler.java
index 6f7ba6705f7c44f6412dcfbb4f7525863c142929..ea775151ab516767a6b9cafcc25409f94993e820 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/LevelRaisingHandler.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/LevelRaisingHandler.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Handler;
 import java.util.logging.Level;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java b/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java
index 015a96d98799e6dd1bb5908e284313835c4b3dd4..2909362eba5e935a156bd298fcd1cb2e44c28d33 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java
@@ -5,7 +5,7 @@ import android.content.SharedPreferences;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Locale;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageMetricsImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageMetricsImpl.java
index b1675ecff57783755e7f50930748a80a86f8410e..77e86d804a62fcabbb5cbb95fdc09c0f3b343107 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageMetricsImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageMetricsImpl.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.android;
 import android.net.TrafficStats;
 import android.os.Process;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.android.NetworkUsageMetrics;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/RecentEmojiImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/RecentEmojiImpl.java
index f751b46d6b03e7afd415973300d58f3b4d2cf8ac..879d164714e9317f660ae12c994e7b532c9b1b8e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/RecentEmojiImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/RecentEmojiImpl.java
@@ -9,12 +9,12 @@ import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.bramble.util.StringUtils;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java
index 0cb51987a66cc4af29cde4b35405f00eabdbde97..be7ea75bb0436c0f5cf74a9089f5055492e07e41 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/ScreenFilterMonitorImpl.java
@@ -13,10 +13,10 @@ import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.Signature;
 
 import org.briarproject.bramble.api.lifecycle.Service;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.api.android.ScreenFilterMonitor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/StartupFailureActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/StartupFailureActivity.java
index 6cfdc2565252456997b1461a9b68c2d20d1e25de..82fc8b4093ba8fa5aeceda16f573614925879bdf 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/StartupFailureActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/StartupFailureActivity.java
@@ -3,13 +3,13 @@ package org.briarproject.briar.android;
 import android.content.Intent;
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BaseActivity;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.briar.android.fragment.ErrorFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/AuthorNameFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/account/AuthorNameFragment.java
index f14bba7fe1ca401b0b6ac6d009d56d30d5e799df..5997e656b54977ff6c0489a9b7adcccf7e32754b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/AuthorNameFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/AuthorNameFragment.java
@@ -10,9 +10,9 @@ import android.widget.Button;
 import com.google.android.material.textfield.TextInputEditText;
 import com.google.android.material.textfield.TextInputLayout;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java
index cec359705c9dc21f35ef37fae5fb62f66fde3815..1c22e8187cabd7ac36fa70cfc37346b8199bb854 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeFragment.java
@@ -9,10 +9,10 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ProgressBar;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.account.PowerView.OnCheckedChangedListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeView.java
index 0d59345c73952dbae39fdccbd7c487877f675f9c..8f86e9b5ee28decbefcbd3caac0158f2df7d208a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/DozeView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/DozeView.java
@@ -4,8 +4,8 @@ package org.briarproject.briar.android.account;
 import android.content.Context;
 import android.util.AttributeSet;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiAppLaunchView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiAppLaunchView.java
index aeb3522a84bf520f776087d2038f2a1bf9df775d..216dd1b82e459e8d6ea89bd74ce5429c0dc6c5a3 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiAppLaunchView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiAppLaunchView.java
@@ -6,8 +6,8 @@ import android.content.Intent;
 import android.util.AttributeSet;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiProtectedAppsView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiProtectedAppsView.java
index 42ebd141b8f077cf369e6fcff809443ad416086e..ec4b442b84d90bec82fb86d515bc85b3a58dd0a7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiProtectedAppsView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/HuaweiProtectedAppsView.java
@@ -4,8 +4,8 @@ package org.briarproject.briar.android.account;
 import android.content.Context;
 import android.util.AttributeSet;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/LockManagerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/account/LockManagerImpl.java
index e2e396958cf8046d5503b448991560722bf51de9..5ace463a3a3d6de73e0f26a84669a1e88815617f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/LockManagerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/LockManagerImpl.java
@@ -11,8 +11,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.Service;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent;
@@ -20,6 +18,8 @@ import org.briarproject.briar.R;
 import org.briarproject.briar.android.BriarService;
 import org.briarproject.briar.api.android.AndroidNotificationManager;
 import org.briarproject.briar.api.android.LockManager;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/PowerView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/PowerView.java
index 6cf3401e3c7a9e0175d2d43cd030c4a4c9c53a7a..27563b3ba78cb1c05b19f5ac38faea496abe337c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/PowerView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/PowerView.java
@@ -11,8 +11,8 @@ import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java
index 59c9b07a9031ccb269308f16a2c7c7e2b7b9a9cd..3d2c2d34acd1902abad877dd850684eae3064bee 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/SetPasswordFragment.java
@@ -12,10 +12,10 @@ import android.widget.ProgressBar;
 import com.google.android.material.textfield.TextInputEditText;
 import com.google.android.material.textfield.TextInputLayout;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.login.StrengthMeter;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/SetupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/account/SetupActivity.java
index 076cd4a10181f27664a1da98cbd9fbfc6a85964b..55d04c2383c982523a16dab795fa7c8f7408180f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/SetupActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/SetupActivity.java
@@ -4,12 +4,12 @@ import android.annotation.TargetApi;
 import android.content.Intent;
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BaseActivity;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/SetupFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/account/SetupFragment.java
index 017846064fcb6022a2d5b3ddc33bb62e9f89d183..788ecf0e90c10f46f27c44b4ac129f5166663444 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/SetupFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/SetupFragment.java
@@ -10,11 +10,11 @@ import android.view.View.OnClickListener;
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/SetupViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/account/SetupViewModel.java
index 0c1243e298d69ec603bae6b0ad64291b1ed95597..6caf70a5f3b8c4fa8f8b926859e8506b7b424795 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/SetupViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/SetupViewModel.java
@@ -6,10 +6,10 @@ import org.briarproject.android.dontkillmelib.DozeHelper;
 import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/UnlockActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/account/UnlockActivity.java
index 052864d2cac7d182df59590eb4f70a4a052660be..6db9133d949dd7aad4f2ca2c71a93eafb6d58944 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/UnlockActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/UnlockActivity.java
@@ -10,12 +10,12 @@ import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BaseActivity;
 import org.briarproject.briar.api.android.LockManager;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiLockAppsView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiLockAppsView.java
index 84cfd1cd9aa79b28f874d5e413ebfd849246bff5..d2af11a90630e69d868fc170c574f9f1c0dce337 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiLockAppsView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiLockAppsView.java
@@ -4,8 +4,8 @@ import android.content.Context;
 import android.util.AttributeSet;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiRecentAppsView.java b/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiRecentAppsView.java
index 0efef138f81145183aeed1f26526856263ee12a8..05dac77d4c46e867c82e8cdf2cc2cd985a5c8605 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiRecentAppsView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/account/XiaomiRecentAppsView.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.android.account;
 import android.content.Context;
 import android.util.AttributeSet;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java
index 30c518dbc412370c8d2645f266864cb3f43421ad..77ade1893e7a134dbff36a404c931016e12afda6 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/activity/BaseActivity.java
@@ -6,8 +6,6 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.AndroidComponent;
 import org.briarproject.briar.android.BriarApplication;
@@ -21,6 +19,8 @@ import org.briarproject.briar.android.widget.TapSafeFrameLayout;
 import org.briarproject.briar.android.widget.TapSafeFrameLayout.OnTapFilteredListener;
 import org.briarproject.briar.api.android.ScreenFilterMonitor;
 import org.briarproject.briar.api.android.ScreenFilterMonitor.AppDetails;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
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 a2b8900f31b7c4f50294f78ef3bb6dff2e764ac2..8c72093ba3f2855761749189ca9a200aa010e7b0 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
@@ -5,8 +5,6 @@ import android.transition.Transition;
 import android.view.Window;
 import android.widget.CheckBox;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidWakeLockManager;
 import org.briarproject.bramble.api.system.Wakeful;
 import org.briarproject.briar.R;
@@ -18,6 +16,8 @@ import org.briarproject.briar.android.controller.handler.UiResultHandler;
 import org.briarproject.briar.android.login.StartupActivity;
 import org.briarproject.briar.android.logout.ExitActivity;
 import org.briarproject.briar.api.android.LockManager;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreationTask.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreationTask.java
index f2451de10376a4aead34feb48535114c506aa42e..e85c240482838052ce9c91fa817bfca33cdf5125 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreationTask.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreationTask.java
@@ -5,11 +5,11 @@ import android.net.Uri;
 
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.attachment.media.ImageCompressor;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.messaging.MessagingManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreator.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreator.java
index 1d83950817df18b30cefc139107eb52a5ca8542c..8a937b8ec4bfe90f6ec31b095cdd6d1c007d9396 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreator.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreator.java
@@ -3,10 +3,10 @@ package org.briarproject.briar.android.attachment;
 import android.net.Uri;
 
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreatorImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreatorImpl.java
index 348300a09ff72f0d985c331db9e2d51b2728d4a3..e01d84ee59e862f746fb7d19a720123479e8118d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreatorImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentCreatorImpl.java
@@ -6,7 +6,6 @@ import android.net.Uri;
 
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
@@ -15,6 +14,7 @@ import org.briarproject.briar.api.attachment.Attachment;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.attachment.FileTooBigException;
 import org.briarproject.briar.api.messaging.MessagingManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentDimensions.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentDimensions.java
index 36e83644aabecb7dde589caa1a8c4c183d8b7b09..041750b228e72d5d30af3bfc4be853315a2b91a4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentDimensions.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentDimensions.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.attachment;
 
 import android.content.res.Resources;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentItem.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentItem.java
index 46abaf78e99a274504f8abb9adde4fdce7b28d96..58c95c67e399dfe044b18ab6f37dabaecb08c873 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentItem.java
@@ -3,10 +3,10 @@ package org.briarproject.briar.android.attachment;
 import android.os.Parcel;
 import android.os.Parcelable;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentItemResult.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentItemResult.java
index 1254a851d8b3b4c0f2fed7d95003258ce4dae0f9..0612d4cc80361da0babe27dbb51cf7403648e340 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentItemResult.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentItemResult.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.android.attachment;
 
 import android.net.Uri;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentManager.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentManager.java
index 07f48d44ac224df09bf1de60bbb47612ee7a863c..cc15637b0610a6db6437855fd36dd9d330fb8306 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentManager.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentManager.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.attachment;
 
 import android.net.Uri;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentResult.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentResult.java
index 776d2ab59b57425882dd278401d3c71ac7b0f3fb..a73e49e19af207a15ed09d6754a5a36817385e4f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentResult.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentResult.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.attachment;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetriever.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetriever.java
index 3df13d61eda64cccf975edd63446e83661992412..0d226220fb858e70b755e7a0050f81e70ba707ee 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetriever.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetriever.java
@@ -2,12 +2,12 @@ package org.briarproject.briar.android.attachment;
 
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.attachment.Attachment;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.messaging.PrivateMessageHeader;
 import org.briarproject.briar.api.messaging.event.AttachmentReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 import java.util.List;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetrieverImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetrieverImpl.java
index eeb1e37a03610cf50eef639bd73274c926ae9838..7d38ca8ffd688a5d62c6a9782a7cd3eea0a93dbf 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetrieverImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/AttachmentRetrieverImpl.java
@@ -3,7 +3,6 @@ package org.briarproject.briar.android.attachment;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.NoSuchMessageException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.android.attachment.AttachmentItem.State;
 import org.briarproject.briar.android.attachment.media.ImageHelper;
@@ -13,6 +12,7 @@ import org.briarproject.briar.api.attachment.Attachment;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.attachment.AttachmentReader;
 import org.briarproject.briar.api.messaging.PrivateMessageHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.BufferedInputStream;
 import java.io.InputStream;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageHelper.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageHelper.java
index b8ef6d4b0f6fd0121b6fffeb89e832416ea69c25..2bc492eab2bc44cca6f076117d84122aa52c5388 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageHelper.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageHelper.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.attachment.media;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageHelperImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageHelperImpl.java
index 97a59667465d60d79dc17c37910a8558e254eb0a..e283c57aab7c9d732dfbd8e9eaa15ebeee826bd0 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageHelperImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageHelperImpl.java
@@ -3,7 +3,7 @@ package org.briarproject.briar.android.attachment.media;
 import android.graphics.BitmapFactory;
 import android.webkit.MimeTypeMap;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageSizeCalculator.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageSizeCalculator.java
index 52d34791d4dbc3c5edfe19d854d0d72d594b4d28..494a458a3e12116d4073e5378fc0e517b1a10ba1 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageSizeCalculator.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageSizeCalculator.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.attachment.media;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageSizeCalculatorImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageSizeCalculatorImpl.java
index d0e6d6daeee9ae238dd159d94f54c241e5d79a3c..c3d50cf2f02ad2dd6031d9e4605d0f200d9e59ea 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageSizeCalculatorImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/ImageSizeCalculatorImpl.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.attachment.media;
 
 import com.bumptech.glide.util.MarkEnforcingInputStream;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.attachment.media.ImageHelper.DecodeResult;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/Size.java b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/Size.java
index 90413c13817b42e344f0fe778fceca0c9f4a6782..81eeb44007cf28d294007e13c8dc039013169adf 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/Size.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/attachment/media/Size.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.attachment.media;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BaseViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BaseViewModel.java
index 1dd159ea15eb58edc2b417465a8acf585760a600..e4360d81cc4c99c857cbf7e30df410073639a20b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BaseViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BaseViewModel.java
@@ -11,7 +11,6 @@ import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.AndroidExecutor;
@@ -23,6 +22,7 @@ import org.briarproject.briar.api.blog.BlogCommentHeader;
 import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogPostHeader;
 import org.briarproject.briar.util.HtmlUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogActivity.java
index ae8da2f67c108429482d6604a3f89bc6ff46e0e1..f7cc8452bb043c7a86779f22f66398170ad8dde4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogActivity.java
@@ -3,8 +3,6 @@ package org.briarproject.briar.android.blog;
 import android.content.Intent;
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
@@ -13,6 +11,8 @@ import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.briar.android.sharing.BlogSharingStatusActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
index 451790de0261afddc6c41ade1b657e1a050c76a9..d77e847e8ee8d124f4c15b2fb6ba6437438c84fb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
@@ -10,8 +10,6 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
@@ -22,6 +20,8 @@ import org.briarproject.briar.android.sharing.ShareBlogActivity;
 import org.briarproject.briar.android.util.BriarSnackbarBuilder;
 import org.briarproject.briar.android.view.BriarRecyclerView;
 import org.briarproject.briar.android.widget.LinkDialogFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostAdapter.java
index 484a6b13ed34abc5b3f196812900e883eb2cdbc3..6880c9849033545517e4b3f8213e027796494c23 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostAdapter.java
@@ -4,9 +4,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.recyclerview.widget.DiffUtil;
 import androidx.recyclerview.widget.ListAdapter;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java
index b7790571eced597ee7e05449e065cf642f87f743..a4ddc0bcd58c0a19ce486bfa5b398f4c0cdec8f9 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostFragment.java
@@ -9,14 +9,14 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ProgressBar;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.widget.LinkDialogFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java
index 85457f16f0ce81ef00423247484e4767c4cbd72f..46067a4966a6c23ee20cf4ab23d07cc56ce1c7fd 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java
@@ -9,12 +9,12 @@ import android.view.ViewGroup;
 import android.widget.ImageButton;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.view.AuthorView;
 import org.briarproject.briar.api.blog.BlogCommentHeader;
 import org.briarproject.briar.api.blog.BlogPostHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.UiThread;
 import androidx.core.view.ViewCompat;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogViewModel.java
index f601d6e1b08bc84b5c932618f2a73df451af68bd..fe694493f121a3035b212886cac0d0b6bc1f8d9a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogViewModel.java
@@ -12,8 +12,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.event.GroupRemovedEvent;
 import org.briarproject.bramble.api.system.AndroidExecutor;
@@ -27,6 +25,8 @@ import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
 import org.briarproject.briar.api.sharing.event.ContactLeftShareableEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java
index 9c57be9addd4c5df692b8e9263d26fdb6e5b213f..85f8c797435d377f957eb2e84adf794f6ae9f97d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java
@@ -9,8 +9,6 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
@@ -20,6 +18,8 @@ import org.briarproject.briar.android.util.BriarSnackbarBuilder;
 import org.briarproject.briar.android.view.BriarRecyclerView;
 import org.briarproject.briar.android.widget.LinkDialogFragment;
 import org.briarproject.briar.api.blog.Blog;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedViewModel.java
index a14f4b4d426e981e4995d5876f9fdcc027e9a5e4..7ec147a2ec4103fd7b27d36308269698b5d8f6ad 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedViewModel.java
@@ -11,7 +11,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.event.GroupRemovedEvent;
 import org.briarproject.bramble.api.system.AndroidExecutor;
@@ -20,6 +19,7 @@ import org.briarproject.briar.api.android.AndroidNotificationManager;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java
index 72beffa1a80e71e78f439d939895c2c8a1b6d4bd..240dd5b79d0bddb837094075fc862d44e7a572c9 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/ReblogFragment.java
@@ -7,8 +7,6 @@ import android.view.ViewGroup;
 import android.widget.ProgressBar;
 import android.widget.ScrollView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
@@ -20,6 +18,8 @@ import org.briarproject.briar.android.view.TextSendController.SendListener;
 import org.briarproject.briar.android.view.TextSendController.SendState;
 import org.briarproject.briar.android.widget.LinkDialogFragment;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedActivity.java
index 15c64e12823488fb20d3530aabb2126c9313e3be..e64af07d6459f611c83f961150ec890f7c5d0cd5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedActivity.java
@@ -3,12 +3,12 @@ package org.briarproject.briar.android.blog;
 import android.os.Bundle;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedAdapter.java
index ecf373058c109bc5d8658912a0b113a3caad5431..4ef04ffe0ff5bbb5e5865374944c6305ac087c01 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedAdapter.java
@@ -7,9 +7,9 @@ import android.view.ViewGroup;
 import android.widget.ImageButton;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.api.feed.Feed;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.recyclerview.widget.DiffUtil;
 import androidx.recyclerview.widget.ListAdapter;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedDeleteFeedDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedDeleteFeedDialogFragment.java
index 8fa06e113ef65dea2d0310ef630ae86d422f24b7..611ac6f55f6b0d98c59b6f9ea7f12e2a936024f6 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedDeleteFeedDialogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedDeleteFeedDialogFragment.java
@@ -4,11 +4,11 @@ import android.app.Dialog;
 import android.content.Context;
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.BaseActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFailedDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFailedDialogFragment.java
index 1ba7cc14b84880b13f50098626fdc25e8ca88e6f..a8f44f3d013dfaa4ba282f3e0ee7f1d2b13ba24d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFailedDialogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFailedDialogFragment.java
@@ -4,10 +4,10 @@ import android.app.Dialog;
 import android.content.Context;
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.BaseActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFragment.java
index 96845f9bc6843fdf24d32be0fb430ed4fcac8917..f4a9f5b9309fc844b548c070e7c1b070ddc4d5e4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedImportFragment.java
@@ -10,11 +10,11 @@ import android.widget.Button;
 import android.widget.EditText;
 import android.widget.ProgressBar;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageFragment.java
index fb38661284c780aa8cf2d38842ed44041e8eec48..d8ce1c751277f01e14246ceee319d1bc21d988c4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedManageFragment.java
@@ -9,13 +9,13 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.view.BriarRecyclerView;
 import org.briarproject.briar.api.feed.Feed;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
@@ -24,9 +24,9 @@ import androidx.lifecycle.ViewModelProvider;
 import androidx.recyclerview.widget.LinearLayoutManager;
 
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.briar.android.activity.BriarActivity.GROUP_ID;
 import static org.briarproject.briar.android.blog.RssFeedAdapter.RssFeedListener;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedViewModel.java
index e992dbd7ae317ced306730df067fe03b6177a923..785d34c46274570efd6c5ebbe9a7f8b11308ecff 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/RssFeedViewModel.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.android.viewmodel.DbViewModel;
@@ -18,6 +17,7 @@ import org.briarproject.briar.android.viewmodel.LiveResult;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
 import org.briarproject.briar.api.feed.Feed;
 import org.briarproject.briar.api.feed.FeedManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.net.MalformedURLException;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/WriteBlogPostActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/WriteBlogPostActivity.java
index 070eb66611f10f292b63203d6eae02bcee9ee874..4c4b36d337eee2d244f5bddd52b9f6e28db0917c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/WriteBlogPostActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/WriteBlogPostActivity.java
@@ -9,8 +9,6 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
@@ -23,6 +21,8 @@ import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogPost;
 import org.briarproject.briar.api.blog.BlogPostFactory;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.List;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactItem.java
index 803eb5d733ffb32c0a94659cdbf1c2f397131803..91d86d2d6e720b3a6a1507bef44aedff69edcd91 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactItem.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.android.contact;
 
 import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactItemViewHolder.java
index 300ef37bd5dfe283b2bfe4c7655df4a8e680d100..6efb35691b0f98939674543a56853d5c4498c791 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactItemViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactItemViewHolder.java
@@ -5,10 +5,10 @@ import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.view.TrustIndicatorView;
 import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListAdapter.java
index e6d38054b0f30d9011003290ff645031f681b78f..4b4ec0b4932f4e91bf12e581ff2915a82f29b063 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListAdapter.java
@@ -4,9 +4,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NullSafety;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NullSafety;
 
 import androidx.recyclerview.widget.DiffUtil.ItemCallback;
 import androidx.recyclerview.widget.ListAdapter;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java
index 4f586eb6e272af20c6f4aab948ac9418fd370b62..7ee423ab0fd9e6a1e1e63acf1ffde4b889dd73ce 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java
@@ -11,8 +11,6 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
 import com.google.android.material.snackbar.Snackbar;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contact.add.nearby.AddNearbyContactActivity;
@@ -22,6 +20,8 @@ import org.briarproject.briar.android.conversation.ConversationActivity;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.util.BriarSnackbarBuilder;
 import org.briarproject.briar.android.view.BriarRecyclerView;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListItem.java
index e917625da4db332504194a4fe3e6e5a02cc0bd52..07e5c78849bcf5c2b57bf6c3883d12876854b6d4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListItem.java
@@ -1,11 +1,10 @@
 package org.briarproject.briar.android.contact;
 
 import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.client.MessageTracker.GroupCount;
-import org.briarproject.briar.api.conversation.ConversationMessageHeader;
 import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListItemViewHolder.java
index 149a26972ff1fe9564daac1b085a4d8c2a55431a..fde8e8aa1d6f4c8d928ced494b6eb1e9a611b100 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListItemViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListItemViewHolder.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.android.contact;
 import android.view.View;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Locale;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListViewModel.java
index 9fa4c3cc7107ca7cf16c37f36c8357719b595747..c15d45e510a3a0a223bec76210c293a3e67f797d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListViewModel.java
@@ -12,11 +12,11 @@ import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.api.android.AndroidNotificationManager;
 import org.briarproject.briar.api.conversation.ConversationManager;
 import org.briarproject.briar.api.identity.AuthorManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactsViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactsViewModel.java
index 266b4c26c9172818010d3a78d3963bfa09242c59..cf50a08713f462087dbc39f1341e946553419d84 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactsViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactsViewModel.java
@@ -17,7 +17,6 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.event.ContactConnectedEvent;
 import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent;
 import org.briarproject.bramble.api.system.AndroidExecutor;
@@ -26,11 +25,10 @@ import org.briarproject.briar.android.viewmodel.LiveResult;
 import org.briarproject.briar.api.avatar.event.AvatarUpdatedEvent;
 import org.briarproject.briar.api.client.MessageTracker;
 import org.briarproject.briar.api.conversation.ConversationManager;
-import org.briarproject.briar.api.conversation.ConversationMessageHeader;
-import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
 import org.briarproject.briar.api.conversation.event.ConversationMessageTrackedEvent;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactActivity.java
index 18a40b22e3912acd0e000dbc0227172eeef91b63..d58524e30a4be43e971c6291c9d9095eec26f1a1 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactActivity.java
@@ -6,8 +6,6 @@ import android.view.MenuItem;
 import android.widget.Toast;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
@@ -18,6 +16,8 @@ import org.briarproject.briar.android.contact.add.nearby.AddNearbyContactViewMod
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.briar.android.util.ActivityLaunchers.RequestBluetoothDiscoverable;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactErrorFragment.java
index 9944f3663f6dad8192ecd77338a3696eb0e3e1ea..34f985a1f1d208a1389a5a3f17f45e78ab45b09b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactErrorFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactErrorFragment.java
@@ -8,12 +8,12 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.util.UiUtils;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java
index 09ba81b3233bc646da1f1aaf49bf3dcb478351b7..81b386d017f7b1606a685aea627ea093087dd43a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactFragment.java
@@ -10,8 +10,6 @@ import android.widget.LinearLayout.LayoutParams;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contact.add.nearby.AddContactState.ContactExchangeStarted;
@@ -23,6 +21,8 @@ import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.qrcode.CameraException;
 import org.briarproject.briar.android.qrcode.CameraView;
 import org.briarproject.briar.android.view.QrCodeView;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactIntroFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactIntroFragment.java
index e89d691ecf9fe339980b072acae4210237024231..7136b497ee944198ebb635c6607b0d13e73f5443 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactIntroFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactIntroFragment.java
@@ -6,11 +6,11 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ScrollView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java
index 4eca97b9ae94bb255795f63d3a932e94af6a1696..f5c543145c03034c0c38328dd6a479974ae48b68 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java
@@ -34,7 +34,6 @@ import org.briarproject.bramble.api.keyagreement.event.KeyAgreementListeningEven
 import org.briarproject.bramble.api.keyagreement.event.KeyAgreementStartedEvent;
 import org.briarproject.bramble.api.keyagreement.event.KeyAgreementWaitingEvent;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.Plugin;
@@ -57,6 +56,7 @@ import org.briarproject.briar.android.qrcode.QrCodeDecoder;
 import org.briarproject.briar.android.qrcode.QrCodeUtils;
 import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.nio.charset.Charset;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java
index f97ed08638f78af537940f541c93a04ddf3a1e48..b7784285c30ba7d01ce8b94f66b9405e2fb89fb0 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactActivity.java
@@ -5,12 +5,12 @@ import android.os.Bundle;
 import android.view.MenuItem;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java
index a57c4e35e41c7b89d9ef0fb3ee0405d7612daae0..d3343b57cf5fbcde6d224c6c2664074b6cdbae63 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/AddContactViewModel.java
@@ -11,12 +11,12 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.NoSuchPendingContactException;
 import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.android.viewmodel.DbViewModel;
 import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.LiveResult;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.concurrent.Executor;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java
index e83134873801a44484b8305731a1a0abd2a47198..38f46b4f43f4603ebdba5f81ed6d358180b6e652 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/LinkExchangeFragment.java
@@ -16,11 +16,11 @@ import android.widget.Toast;
 import com.google.android.material.textfield.TextInputEditText;
 import com.google.android.material.textfield.TextInputLayout;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.regex.Matcher;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java
index 00012a58e15b18648c95e33fd7d3ad4822397bbf..f273af2854d8714492d9788682e9edcb063ae318 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/NicknameFragment.java
@@ -20,11 +20,11 @@ import org.briarproject.bramble.api.contact.PendingContact;
 import org.briarproject.bramble.api.db.ContactExistsException;
 import org.briarproject.bramble.api.db.PendingContactExistsException;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactItem.java
index ec6d5a0f6f9bea49a4ea700bfface42c32490a0e..2fa28c77abc217d1c05f60f5c594985d08a5562c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactItem.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.android.contact.add.remote;
 
 import org.briarproject.bramble.api.contact.PendingContact;
 import org.briarproject.bramble.api.contact.PendingContactState;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java
index 359f793967301d320b8a861876614a181df8cdfd..2918935b9b4a466ff5ece3b4af586fab037391c0 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListActivity.java
@@ -7,13 +7,13 @@ import android.view.MenuItem;
 import com.google.android.material.snackbar.Snackbar;
 
 import org.briarproject.bramble.api.contact.PendingContactId;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.util.BriarSnackbarBuilder;
 import org.briarproject.briar.android.view.BriarRecyclerView;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListAdapter.java
index 1aa31a0a8cf151e3978609527706e317ecb762c5..237eb8d96836ab034af21c72301364b6f9b618c9 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListAdapter.java
@@ -6,9 +6,9 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import org.briarproject.bramble.api.contact.PendingContact;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.util.BriarAdapter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 class PendingContactListAdapter extends
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java
index dfcc379993b356afc965203e3427ce039d637e5d..34c1cd14f7a79ac4f929cdf506ed8ffcca2e2fa8 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactListViewModel.java
@@ -16,11 +16,11 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.rendezvous.RendezvousPoller;
 import org.briarproject.bramble.api.rendezvous.event.RendezvousPollEvent;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.android.viewmodel.DbViewModel;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactViewHolder.java
index 85dbc52b7b20e3ddaa9280970757297fe4df65c2..886e3ba3f24dd8a80693ffe86d9b365d81409b92 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/remote/PendingContactViewHolder.java
@@ -4,9 +4,9 @@ import android.view.View;
 import android.widget.TextView;
 
 import org.briarproject.bramble.api.contact.PendingContact;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.view.TextAvatarView;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.appcompat.widget.AppCompatImageButton;
 import androidx.core.content.ContextCompat;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/BluetoothIntroFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/BluetoothIntroFragment.java
index 52d02c0f44ee203a141861844862893bff96b2f0..ed774bcd2d1d2be3a9b4b6aa60b52b098f91ef5c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/BluetoothIntroFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/BluetoothIntroFragment.java
@@ -9,10 +9,10 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.util.ActivityLaunchers.RequestBluetoothDiscoverable;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/BluetoothProgressFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/BluetoothProgressFragment.java
index fee273f58dd2155c657a7d9763f8495df211b144..6dd9b46643b293a3ec9a9ac22b2e41cd7075cdc9 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/BluetoothProgressFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/BluetoothProgressFragment.java
@@ -5,9 +5,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/ConnectViaBluetoothActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/ConnectViaBluetoothActivity.java
index de84135143e78c9b1de3cdaf1f97c94a52a42427..3f3f46df13e3cbe9ca3dac6b659577b218974248 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/ConnectViaBluetoothActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/ConnectViaBluetoothActivity.java
@@ -6,11 +6,11 @@ import android.view.MenuItem;
 import android.widget.Toast;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/ConnectViaBluetoothViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/ConnectViaBluetoothViewModel.java
index d73d2db34e0cf371f4b468e0b458d6a5ee573b53..3a1cf0f754e2e5aa3a9406317116398118c81996 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/ConnectViaBluetoothViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/connect/ConnectViaBluetoothViewModel.java
@@ -14,7 +14,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection;
 import org.briarproject.bramble.api.plugin.event.ConnectionOpenedEvent;
@@ -27,6 +26,7 @@ import org.briarproject.briar.android.contact.connect.ConnectViaBluetoothState.S
 import org.briarproject.briar.android.viewmodel.DbViewModel;
 import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorAdapter.java
index 6f9f7ddca93346b0155dcc95c7104b6114f83340..94319ec3429e75231b50d2ec40b7ec7c793cd1e1 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorAdapter.java
@@ -3,10 +3,10 @@ package org.briarproject.briar.android.contactselection;
 import android.content.Context;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.contact.BaseContactListAdapter;
 import org.briarproject.briar.android.contact.ContactItemViewHolder;
 import org.briarproject.briar.android.contact.OnContactClickListener;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java
index 5d5ce1df30b1c6536999744660458b1d805c8d3c..858e0154a0b4277cccc66180548bd44310b0fe03 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseContactSelectorFragment.java
@@ -8,8 +8,6 @@ import android.view.ViewGroup;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.contact.ContactItemViewHolder;
@@ -17,6 +15,8 @@ import org.briarproject.briar.android.contact.OnContactClickListener;
 import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.view.BriarRecyclerView;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseSelectableContactHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseSelectableContactHolder.java
index 1e4388c262e17afed1e4d177f59bee0de0aadf3b..57cc644efc3dd3f2b82efe2d395a098b6d39b4ba 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseSelectableContactHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/BaseSelectableContactHolder.java
@@ -4,10 +4,10 @@ import android.view.View;
 import android.widget.CheckBox;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.contact.ContactItemViewHolder;
 import org.briarproject.briar.android.contact.OnContactClickListener;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorActivity.java
index 8f9002f5995dbbc9e732db320b0769679ba83418..5eecdfd97a4c908e1d856afbbc60a5d79e142cde 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorActivity.java
@@ -3,12 +3,12 @@ package org.briarproject.briar.android.contactselection;
 import android.os.Bundle;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorAdapter.java
index 97c45b5c58b2febc179ed41b5e3641b8f57178a4..e67cdd199350f5219ab6400b8b3f094e33e5081a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorAdapter.java
@@ -5,9 +5,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.contact.OnContactClickListener;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 class ContactSelectorAdapter extends
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorController.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorController.java
index 778a0385334fd1ca1fd4a3e6856089d8c69e6b5a..a472995b7dbc2d723673f49bf51439a73c6ebbaa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorController.java
@@ -2,10 +2,10 @@ package org.briarproject.briar.android.contactselection;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.controller.DbController;
 import org.briarproject.briar.android.controller.handler.ResultExceptionHandler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorControllerImpl.java
index da25fbda3f3906706e1e3a9bbeadbc87641358dc..054ac6cd5e1656f5669a182f7841ea8dcc5276e5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorControllerImpl.java
@@ -6,12 +6,12 @@ import org.briarproject.bramble.api.contact.ContactManager;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.controller.DbControllerImpl;
 import org.briarproject.briar.android.controller.handler.ResultExceptionHandler;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorFragment.java
index 634d855fecc7dd81361630481f9dfe0070d00eb7..1475eeba55da889d353231b54a36dfff87bd72c8 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorFragment.java
@@ -5,10 +5,10 @@ import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.contact.OnContactClickListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorListener.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorListener.java
index b9dc45d2ab32f5acf3010774ac6466e40d27df6d..dfcf1858f4d01ce8b6e98ad214882e5a603e6be3 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorListener.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/ContactSelectorListener.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.contactselection;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/SelectableContactHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/SelectableContactHolder.java
index 5ec6c782c82f3ddb88395a61c08647f845812831..cc390239395af643b44f6fed454cfd08083c6394 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/SelectableContactHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/SelectableContactHolder.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.contactselection;
 
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.contact.OnContactClickListener;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/SelectableContactItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/SelectableContactItem.java
index a3d09f8ceca6d4ee74e09d5d919d81be1106e12e..29f4aa809362c7437c14b720fd69532d96092d4d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contactselection/SelectableContactItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contactselection/SelectableContactItem.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.android.contactselection;
 
 import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.contact.ContactItem;
 import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarController.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarController.java
index 33cbb9e64b115f6957fa7476afa64b360af12f5f..4763804607195c8015cce6892104fb6203e6e690 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarController.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.android.controller;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Wakeful;
 import org.briarproject.briar.android.controller.handler.ResultHandler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface BriarController extends ActivityLifecycleController {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarControllerImpl.java
index c544e1c9db087408a404782f2ac38bf0894dc007..47dfa1ba8e3e68e123290d08f845c2ae194dd82b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/BriarControllerImpl.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.account.AccountManager;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.system.AndroidWakeLockManager;
@@ -17,6 +16,7 @@ import org.briarproject.briar.android.BriarService;
 import org.briarproject.briar.android.BriarService.BriarServiceConnection;
 import org.briarproject.briar.android.controller.handler.ResultHandler;
 import org.briarproject.briar.api.android.DozeWatchdog;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/DbController.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/DbController.java
index 8e2078597e36671cb194b84cefe4776b680be023..e4d4810c322eb5a0e11414ef0db992d3468dc368 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/DbController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/DbController.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.controller;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @Deprecated
 @NotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/DbControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/DbControllerImpl.java
index b77ad09953f2e323109204ae2502aadf6a61bd51..ea92e918e0687de744b21e866af8b2692d575aee 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/DbControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/DbControllerImpl.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.android.controller;
 
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/handler/UiExceptionHandler.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/handler/UiExceptionHandler.java
index abf7d271206101aeffc8f1c78675f7de8bf849f9..f7f43afa0771eec11a9faff4ba634acfdcdc14f7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/handler/UiExceptionHandler.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/handler/UiExceptionHandler.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.controller.handler;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.DestroyableContext;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/handler/UiResultExceptionHandler.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/handler/UiResultExceptionHandler.java
index d2cd5c04fa8f42e9714bbfd233dbc6f1fb8044f2..96c92c64b4d0fe377b9c0f2a6d6791de5ae3278f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/handler/UiResultExceptionHandler.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/handler/UiResultExceptionHandler.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.controller.handler;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.DestroyableContext;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java
index fddc8d98ab7019708b1ed4d3874cc96a55a48b90..fd74cc522fcda1623f0285de29547a3469f0514a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/AliasDialogFragment.java
@@ -11,11 +11,11 @@ import android.widget.EditText;
 import com.google.android.material.textfield.TextInputLayout;
 
 import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BaseActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java
index 1695970abdb2dff9b736ba14583d4337da15c560..22f8fa17813158827739e6582b26963fa1982ec5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationActivity.java
@@ -34,8 +34,6 @@ import org.briarproject.bramble.api.db.NoSuchContactException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.event.ContactConnectedEvent;
 import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent;
 import org.briarproject.bramble.api.sync.ClientId;
@@ -86,6 +84,8 @@ import org.briarproject.briar.api.introduction.IntroductionManager;
 import org.briarproject.briar.api.messaging.MessagingManager;
 import org.briarproject.briar.api.messaging.PrivateMessageHeader;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationAdapter.java
index 36a2c5fa4c571688cc2438958c960dde5938d201..3b2409c5bec018112067dac8577797ccb9dc2bac 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationAdapter.java
@@ -7,11 +7,11 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import org.briarproject.bramble.api.Pair;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.util.BriarAdapter;
 import org.briarproject.briar.android.util.ItemReturningAdapter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItem.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItem.java
index c3d96e46262464a841a406b906503605fa7fc19b..437a2b1ede41be2e665d60502d71efb59d159f1c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItem.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.android.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.conversation.ConversationMessageHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemDetailsLookup.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemDetailsLookup.java
index 021c769c28fbaba6c457c058d0dc2a0ea51544b8..06c7568cbe8982faae94209d255b59c1181d8942 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemDetailsLookup.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemDetailsLookup.java
@@ -3,7 +3,7 @@ package org.briarproject.briar.android.conversation;
 import android.view.MotionEvent;
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.recyclerview.selection.ItemDetailsLookup;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemKeyProvider.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemKeyProvider.java
index 8e611400c7cbaa45b6247f8c70f1658da1273e82..c0c2ad5e32b3839316a2afaa21df8e7a8a03323f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemKeyProvider.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemKeyProvider.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.recyclerview.selection.ItemKeyProvider;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java
index c09a2cbf72fb6bcb940cfbdad02cbdc242189f84..42fdd03c31553975bc6e66d9749a5da34e2fbd07 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationItemViewHolder.java
@@ -5,8 +5,8 @@ import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.CallSuper;
 import androidx.annotation.Nullable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationListener.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationListener.java
index 65a25e343a2bc8fd0bb8c49052a88fed94cdea04..ad392705ef3a14409119b752774b9e332b1b6068 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationListener.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationListener.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.conversation;
 
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.attachment.AttachmentItem;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.UiThread;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationMessageItem.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationMessageItem.java
index b9185c1cea3f154c860143762a73717604f79e85..2f3dcd9605b1eba98a048ec38a87e364e87daf31 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationMessageItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationMessageItem.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.android.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.attachment.AttachmentItem;
 import org.briarproject.briar.api.messaging.PrivateMessageHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationMessageViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationMessageViewHolder.java
index 5baed8f1ca398fae7b742a53c5356e527393ace0..529fcf3e8cb1f4068a42eb74a645efbae569be99 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationMessageViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationMessageViewHolder.java
@@ -4,9 +4,9 @@ import android.content.res.ColorStateList;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.attachment.AttachmentItem;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.UiThread;
 import androidx.constraintlayout.widget.ConstraintSet;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationNoticeItem.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationNoticeItem.java
index 50400017a17520b06f7ef447dbe50c3a6000648e..f830daa2177e2f832d828023c0c10440c1818a66 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationNoticeItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationNoticeItem.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.android.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.conversation.ConversationRequest;
 import org.briarproject.briar.api.conversation.ConversationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationNoticeViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationNoticeViewHolder.java
index 2244b7ca8e02f826d44176c78c121e0f85f8fd09..2109b5f57174721c79fc44557fb39e763babd60a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationNoticeViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationNoticeViewHolder.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.android.conversation;
 import android.view.View;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.CallSuper;
 import androidx.annotation.UiThread;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationRequestItem.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationRequestItem.java
index 5f7027d636ba5f3ecdff3badc37b1d1ef972830a..ba721430e9143f11d2226cf08eed2a8acae43868 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationRequestItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationRequestItem.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.android.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationRequest;
 import org.briarproject.briar.api.sharing.InvitationRequest;
 import org.briarproject.briar.api.sharing.Shareable;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationRequestViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationRequestViewHolder.java
index d5f578339fd06b0bcdf3b457f6cdad20b3360a3f..86c7133681a893578b7e18bf9fff5a25ddd90c3b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationRequestViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationRequestViewHolder.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.android.conversation;
 import android.view.View;
 import android.widget.Button;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.UiThread;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationScrollListener.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationScrollListener.java
index da90aa0cfe209d88af78b9d3771a58a7669cee1d..9b996fc4981fa0fa717f86233aa504c48db61061 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationScrollListener.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationScrollListener.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.view.BriarRecyclerViewScrollListener;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 class ConversationScrollListener extends
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsDialog.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsDialog.java
index b3c8417b243307bf34e2eee03a8472a339aead8a..6030fd224ec5248741edbd516100ced8f09206f5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsDialog.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationSettingsDialog.java
@@ -8,12 +8,12 @@ import android.view.ViewGroup;
 import android.widget.Button;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.widget.OnboardingFullDialogFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationViewModel.java
index dcc42e49c90d07f75f6039def1389a4aaaf1ceb8..379f00c375bb374333fb90078c19f5435d511e11 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationViewModel.java
@@ -16,7 +16,6 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -47,6 +46,7 @@ import org.briarproject.briar.api.messaging.PrivateMessageFactory;
 import org.briarproject.briar.api.messaging.PrivateMessageFormat;
 import org.briarproject.briar.api.messaging.PrivateMessageHeader;
 import org.briarproject.briar.api.messaging.event.AttachmentReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java
index 061a57ccbd9da071559c7d598ef55d10ee601e3a..ee887e1b15030242f97d389d62478e5e94a4395b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ConversationVisitor.java
@@ -2,7 +2,6 @@ package org.briarproject.briar.android.conversation;
 
 import android.content.Context;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.attachment.AttachmentItem;
@@ -16,6 +15,7 @@ import org.briarproject.briar.api.introduction.IntroductionResponse;
 import org.briarproject.briar.api.messaging.PrivateMessageHeader;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java
index 67db6804afda9ca65af58ce6eac46d41f0b1d199..63004390c121785382d7354d56c6070f26f18f71 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageActivity.java
@@ -16,8 +16,6 @@ import android.widget.TextView;
 
 import com.google.android.material.appbar.AppBarLayout;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
@@ -26,6 +24,8 @@ import org.briarproject.briar.android.attachment.AttachmentItem;
 import org.briarproject.briar.android.util.ActivityLaunchers.CreateDocumentAdvanced;
 import org.briarproject.briar.android.util.BriarSnackbarBuilder;
 import org.briarproject.briar.android.view.PullDownLayout;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageAdapter.java
index 02f97730c90743af681052214e2c2802cd02a762..032bcdfe55455380cb3ab057aeaa278b69154334 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageAdapter.java
@@ -8,10 +8,10 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.view.WindowManager;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.attachment.AttachmentItem;
 import org.briarproject.briar.android.conversation.glide.Radii;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageFragment.java
index c80308b0b7cb6431dffe05c7e811ba818ec0f9d4..94135a7d19b646f1387b8c96e3a9a5756b818069 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageFragment.java
@@ -14,13 +14,13 @@ import com.bumptech.glide.request.RequestListener;
 import com.bumptech.glide.request.target.Target;
 import com.github.chrisbanes.photoview.PhotoView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BaseActivity;
 import org.briarproject.briar.android.attachment.AttachmentItem;
 import org.briarproject.briar.android.conversation.glide.GlideApp;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
 
 import javax.annotation.ParametersAreNonnullByDefault;
 import javax.inject.Inject;
@@ -34,11 +34,11 @@ import androidx.lifecycle.ViewModelProvider;
 import static android.os.Build.VERSION.SDK_INT;
 import static android.widget.ImageView.ScaleType.FIT_START;
 import static com.bumptech.glide.load.engine.DiskCacheStrategy.NONE;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.briar.android.attachment.AttachmentItem.State.AVAILABLE;
 import static org.briarproject.briar.android.attachment.AttachmentItem.State.ERROR;
 import static org.briarproject.briar.android.conversation.ImageActivity.ATTACHMENT_POSITION;
 import static org.briarproject.briar.android.conversation.ImageActivity.ITEM_ID;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @MethodsNotNullByDefault
 @ParametersAreNonnullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageItemDecoration.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageItemDecoration.java
index 3f1ee6568392c9523becb969406c04fb78434db5..63fe2acbdf4ea8733db326996cc574a91f1e2786 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageItemDecoration.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageItemDecoration.java
@@ -5,8 +5,8 @@ import android.content.res.Resources;
 import android.graphics.Rect;
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.RecyclerView.ItemDecoration;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewHolder.java
index a2dba12e2a4b3ce8b89150d64b53fa358f2b2612..4370b5604f86167b320a2b3c715f806b5726fb00 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewHolder.java
@@ -6,13 +6,13 @@ import android.widget.ImageView;
 
 import com.bumptech.glide.load.Transformation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.attachment.AttachmentItem;
 import org.briarproject.briar.android.conversation.glide.BriarImageTransformation;
 import org.briarproject.briar.android.conversation.glide.GlideApp;
 import org.briarproject.briar.android.conversation.glide.Radii;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.DrawableRes;
 import androidx.recyclerview.widget.RecyclerView.ViewHolder;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewModel.java
index b8a7ff902e56e5551473f2894ed54dc106f4f79a..c832f45dace63c3877d612b477f505ce79e4b94a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/ImageViewModel.java
@@ -14,7 +14,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.android.attachment.AttachmentItem;
@@ -24,6 +23,7 @@ import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
 import org.briarproject.briar.api.attachment.Attachment;
 import org.briarproject.briar.api.attachment.AttachmentReader;
 import org.briarproject.briar.api.messaging.event.AttachmentReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.FileOutputStream;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/OutItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/OutItemViewHolder.java
index 5fee04f20ed13dd771d7ecc65c76b260306b7dbf..9a2d4143d28797bf1eb32cb0d91959fd6639325f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/OutItemViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/OutItemViewHolder.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.android.conversation;
 import android.view.View;
 import android.widget.ImageView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.UiThread;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarDataFetcher.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarDataFetcher.java
index 44bb41aa0c438e7805811209bbf952b9c4296eb1..651a0ff8e6454893c4bfb7977473f3e85adc5e8f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarDataFetcher.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarDataFetcher.java
@@ -6,10 +6,10 @@ import com.bumptech.glide.load.data.DataFetcher;
 
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.attachment.Attachment;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.attachment.AttachmentReader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 import java.util.concurrent.Executor;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarDataFetcherFactory.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarDataFetcherFactory.java
index 63867df74c568d323a5922d43987cc4f3fb905e4..31eca56f809041af495cbba2c9db8712c4c6703a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarDataFetcherFactory.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarDataFetcherFactory.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.android.conversation.glide;
 
 import org.briarproject.bramble.api.db.DatabaseExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.attachment.AttachmentReader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarGlideModule.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarGlideModule.java
index b269a03073f83eb8bb88cd6d47f3e2e1b0b40e27..636968c8b7a428ed72706d8c7cc08ae0ed78e659 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarGlideModule.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarGlideModule.java
@@ -8,9 +8,9 @@ import com.bumptech.glide.Registry;
 import com.bumptech.glide.annotation.GlideModule;
 import com.bumptech.glide.module.AppGlideModule;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.BriarApplication;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarModelLoader.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarModelLoader.java
index 952a3bf6f4630205443b411d1e9a3c494aa7a835..1bb791ed36155f9eb71dce936d1640a289ad81c5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarModelLoader.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarModelLoader.java
@@ -5,10 +5,10 @@ import com.bumptech.glide.load.Options;
 import com.bumptech.glide.load.model.ModelLoader;
 import com.bumptech.glide.signature.ObjectKey;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.android.BriarApplication;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarModelLoaderFactory.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarModelLoaderFactory.java
index adb6b95e8515a10ec626f0d4835f4f2e9d890fe2..0386571268a7e84399ced6fa0d91550c8ff09c7f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarModelLoaderFactory.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/BriarModelLoaderFactory.java
@@ -4,9 +4,9 @@ import com.bumptech.glide.load.model.ModelLoader;
 import com.bumptech.glide.load.model.ModelLoaderFactory;
 import com.bumptech.glide.load.model.MultiModelLoaderFactory;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.BriarApplication;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/CustomCornersTransformation.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/CustomCornersTransformation.java
index 3c237be6f4e2c3cff9024696d67f4db97507dcea..2a8918d64dde9bf5358480080ec7f7a64d36c448 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/CustomCornersTransformation.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/CustomCornersTransformation.java
@@ -9,7 +9,7 @@ import android.graphics.RectF;
 import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
 import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.MessageDigest;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/Radii.java b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/Radii.java
index 4f773edd0bd57c409c2073762b0de2fc7f0d3d7f..e129d94c17a1a80d35cbb031a44cff1a170e1b11 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/Radii.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/conversation/glide/Radii.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.conversation.glide;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/CreateForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/CreateForumActivity.java
index c17592e370c2c52b042c271e9025ae2caf8bc382..e6988ea186782bbeec07103ecf91e30835a6a233 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/CreateForumActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/CreateForumActivity.java
@@ -12,14 +12,14 @@ import android.widget.Toast;
 import com.google.android.material.textfield.TextInputLayout;
 
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.api.forum.Forum;
 import org.briarproject.briar.api.forum.ForumManager;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
@@ -36,7 +36,6 @@ import static org.briarproject.bramble.util.LogUtils.logException;
 import static org.briarproject.bramble.util.LogUtils.now;
 import static org.briarproject.briar.android.util.UiUtils.enterPressed;
 import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard;
-import static org.briarproject.briar.android.util.UiUtils.showSoftKeyboard;
 import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_NAME_LENGTH;
 
 @MethodsNotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java
index abb30abc5d7b64fd2c01f67af32dd4c7d418481f..364d730b19faeab1052f31a57525c00f1786e6ce 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java
@@ -7,8 +7,6 @@ import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.sharing.ForumSharingStatusActivity;
@@ -16,6 +14,8 @@ import org.briarproject.briar.android.sharing.ShareForumActivity;
 import org.briarproject.briar.android.threaded.ThreadItemAdapter;
 import org.briarproject.briar.android.threaded.ThreadListActivity;
 import org.briarproject.briar.android.threaded.ThreadListViewModel;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListAdapter.java
index c97b491ae19c8fa2454fa79bd2a655eb9c4c07d4..65d15bc61dc310496738b25205c944331fbd0d24 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListAdapter.java
@@ -4,8 +4,8 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.recyclerview.widget.DiffUtil.ItemCallback;
 import androidx.recyclerview.widget.ListAdapter;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java
index 093968a6809591b18dad49dc5e2795fae955db28..3c8797371acef3a3cd23ba5cfa4a2189a10b9faf 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListFragment.java
@@ -12,14 +12,14 @@ import android.view.ViewGroup;
 
 import com.google.android.material.snackbar.Snackbar;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.sharing.ForumInvitationActivity;
 import org.briarproject.briar.android.util.BriarSnackbarBuilder;
 import org.briarproject.briar.android.view.BriarRecyclerView;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListViewModel.java
index 76e56be51531c0e3ce6cd0c5fdbfe72ab09f33bf..d4da63301d7cddbff67426c90592e20ccf63eccc 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumListViewModel.java
@@ -11,8 +11,6 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.event.GroupAddedEvent;
 import org.briarproject.bramble.api.sync.event.GroupRemovedEvent;
@@ -27,6 +25,8 @@ import org.briarproject.briar.api.forum.ForumPostHeader;
 import org.briarproject.briar.api.forum.ForumSharingManager;
 import org.briarproject.briar.api.forum.event.ForumInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collections;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumViewModel.java
index 91c7a5613a15b80aa37e32bc2aea3711f7a4a762..f4442730005c428b44b2615d4b445b338f2af62d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumViewModel.java
@@ -15,8 +15,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.bramble.api.system.Clock;
@@ -35,6 +33,8 @@ import org.briarproject.briar.api.forum.ForumSharingManager;
 import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
 import org.briarproject.briar.api.sharing.event.ContactLeftShareableEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java
index 22f1be68df9c3ed98d922295b9ce365eb4be41de..76ee04fb00ba14f666748a1723d4084ac2748fec 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/BaseFragment.java
@@ -5,10 +5,10 @@ import android.content.Context;
 import android.os.Bundle;
 import android.view.MenuItem;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.android.DestroyableContext;
 import org.briarproject.briar.android.activity.ActivityComponent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.CallSuper;
 import androidx.annotation.Nullable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java
index c6e1d85f8a946612c36748587fc126d7c957dcf8..fd34b8d38f90b7e24e9ad980c223aa20811a5754 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java
@@ -6,9 +6,9 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/FinalFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/FinalFragment.java
index daddcf4b045c0b987b7bb9b9e74a2849bfea0108..d6cacf4f8fd3d6a65ed4d02a2fcb3549956b9825 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/FinalFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/FinalFragment.java
@@ -10,9 +10,9 @@ import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.activity.OnBackPressedCallback;
 import androidx.annotation.ColorRes;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ScreenFilterDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ScreenFilterDialogFragment.java
index 26484301c281994b98c9f27738f9c420a616f5fd..923f0f7759f0ed0fcd4863dfb3e1ea460c83f939 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ScreenFilterDialogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ScreenFilterDialogFragment.java
@@ -13,12 +13,12 @@ import android.view.View;
 import android.widget.CheckBox;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.BaseActivity;
 import org.briarproject.briar.api.android.ScreenFilterMonitor;
 import org.briarproject.briar.api.android.ScreenFilterMonitor.AppDetails;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/AbstractTabsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/AbstractTabsFragment.java
index 7d39be90315ebc267e1eacbf137280b7b5836ce8..56f7af208a0e39ab7fe09f7290a6ab9c1ad88695 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/AbstractTabsFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/AbstractTabsFragment.java
@@ -14,9 +14,9 @@ import android.widget.TextView;
 import com.google.android.material.tabs.TabLayout;
 import com.google.android.material.tabs.TabLayoutMediator;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/FallbackFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/FallbackFragment.java
index 3b8d57bc8a85cecad6bd745fbe33eba4ccb0e5e0..62580156de30fe0c0642e84f3fc752027a8226c4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/FallbackFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/FallbackFragment.java
@@ -11,11 +11,11 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ProgressBar;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.util.ActivityLaunchers.CreateDocumentAdvanced;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.List;
 
@@ -34,9 +34,9 @@ import static android.os.Build.VERSION.SDK_INT;
 import static android.view.View.INVISIBLE;
 import static android.view.View.VISIBLE;
 import static androidx.transition.TransitionManager.beginDelayedTransition;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.briar.android.AppModule.getAndroidComponent;
 import static org.briarproject.briar.android.hotspot.HotspotViewModel.getApkFileName;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java
index edbe226b7759a465f4ef1420d896830db2d46ba2..492ddcc5f1ff8d28874535d9294de9081846d89a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java
@@ -4,14 +4,14 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.view.MenuItem;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.briar.android.hotspot.HotspotState.HotspotError;
 import org.briarproject.briar.android.hotspot.HotspotState.HotspotStarted;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java
index eb0b73165bf6da9b2ac8723ea7ecc42f1afaf48d..a90dbae9c39820caab566faabd630404c7e8f2fa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java
@@ -7,10 +7,10 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotFragment.java
index 7decec77c79736e988c6a94cb39aafb7b5aeb7ce..d4a2174f58f6c5c8f27b1833623cc19b867277b6 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotFragment.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.android.hotspot;
 import android.os.Bundle;
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotHelpFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotHelpFragment.java
index aef52c5acc08c273457256320c40777436067fff..874cbbd3e7dfb9f991cff757a0f691416354efc3 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotHelpFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotHelpFragment.java
@@ -5,9 +5,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotIntroFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotIntroFragment.java
index 85e3869447f4441969b617d37e95261da9e58299..1a8223e6762b9ea794914a90e134426dfbf49501 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotIntroFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotIntroFragment.java
@@ -14,9 +14,9 @@ import android.widget.TextView;
 
 import com.google.android.material.snackbar.Snackbar;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotManager.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotManager.java
index 72df53b7cde37fd7f533880b39e9b612605db519..e69dc19def0e76452e9a825bd1b6a131e1d5506d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotManager.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotManager.java
@@ -17,14 +17,14 @@ import android.util.DisplayMetrics;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.hotspot.HotspotState.NetworkConfig;
 import org.briarproject.briar.android.qrcode.QrCodeUtils;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.security.SecureRandom;
 import java.util.concurrent.Executor;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotState.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotState.java
index a152874ebf2a462518908908c3032a861f96bdb1..706e41dc424a74b64ce8aadbac60c0d18de3b916 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotState.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotState.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.android.hotspot;
 
 import android.graphics.Bitmap;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotViewModel.java
index a5b2d34f85826b354e636c9a7174effc7e7453cf..bac6b7d2e1c852e845fa71575d81f96b0a1150d1 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotViewModel.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.hotspot.HotspotManager.HotspotListener;
@@ -21,6 +20,7 @@ import org.briarproject.briar.android.viewmodel.DbViewModel;
 import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
 import org.briarproject.briar.api.android.AndroidNotificationManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ManualHotspotFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ManualHotspotFragment.java
index 4f2fa72f7fbd6d59522c0e33eaf7edb4a9e4c754..a97015db0312da39b98eadba22c882d8af1bc177 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ManualHotspotFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ManualHotspotFragment.java
@@ -10,9 +10,9 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/QrHotspotFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/QrHotspotFragment.java
index a613804f5458f2a2b4c82bb2e11f56d5dbed0118..2c3a767f4294d8ec7594052d57a78adde6742721 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/QrHotspotFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/QrHotspotFragment.java
@@ -10,10 +10,10 @@ import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.hotspot.HotspotState.HotspotStarted;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServer.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServer.java
index a4a05f9e1f165bfdee7c7dbd58a5ba24b6552eb3..a04dc92bcffe492991a1499a289cbedcd207e2fc 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServer.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServer.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.hotspot;
 
 import android.content.Context;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServerManager.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServerManager.java
index e212ebbafe735764d40d2c943aeebcc20c79c4f9..d5390993ef9390d9a5baad9b6b46d0091a887438 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServerManager.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServerManager.java
@@ -5,10 +5,10 @@ import android.graphics.Bitmap;
 import android.util.DisplayMetrics;
 
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.android.hotspot.HotspotState.WebsiteConfig;
 import org.briarproject.briar.android.qrcode.QrCodeUtils;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.net.InetAddress;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebsiteFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebsiteFragment.java
index 6ccf4d9a7c93c2a6675235c7c29826f41def6ee8..31ff0b9ab2960f5111414970479619f0d2c73da7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebsiteFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebsiteFragment.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.android.hotspot;
 import android.os.Bundle;
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java
index 389a30fb62ec7c73daa5992e33fd70ee8ce18b43..edbe8a51e226136b858363f5bdc71d7ceb570e14 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/introduction/ContactChooserFragment.java
@@ -5,8 +5,6 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contact.ContactListAdapter;
@@ -14,6 +12,8 @@ import org.briarproject.briar.android.contact.ContactListItem;
 import org.briarproject.briar.android.contact.OnContactClickListener;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.view.BriarRecyclerView;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java
index 1d4016e8cfdac6d8df69b398626e184db05bee3a..23b4127a525c11b49f41abe9c431d8a18a7feebe 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java
@@ -8,8 +8,6 @@ import android.view.ViewGroup;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contact.ContactItem;
@@ -18,6 +16,8 @@ import org.briarproject.briar.android.view.TextInputView;
 import org.briarproject.briar.android.view.TextSendController;
 import org.briarproject.briar.android.view.TextSendController.SendListener;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionViewModel.java
index 77a898500bc0973df8dc9c3e62e64bb09f01498f..7a13a2e5ef94c8bb7d6fef3fcf04b3e96093c691 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionViewModel.java
@@ -12,7 +12,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.contact.ContactItem;
@@ -23,6 +22,7 @@ import org.briarproject.briar.api.conversation.ConversationManager;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorManager;
 import org.briarproject.briar.api.introduction.IntroductionManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/logging/BriefLogFormatter.java b/briar-android/src/main/java/org/briarproject/briar/android/logging/BriefLogFormatter.java
index 0256cf1b4681ef2ff7473acf57ffd91a40455dc2..b926db994343e529d5a488d723dc2737cef81cb5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/logging/BriefLogFormatter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/logging/BriefLogFormatter.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.logging;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/logging/CachingLogHandler.java b/briar-android/src/main/java/org/briarproject/briar/android/logging/CachingLogHandler.java
index 5037105e1f27a5932a25faae7f4771e5a02b38bc..029d8fcf88570895cd2980ab11581fce0f50da7d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/logging/CachingLogHandler.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/logging/CachingLogHandler.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.logging;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/logging/LogDecrypter.java b/briar-android/src/main/java/org/briarproject/briar/android/logging/LogDecrypter.java
index 2295838de3c76c1671afe9f417e36ba42377114c..c93d67a7e3c916db5bfedaefd9656c7314884b36 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/logging/LogDecrypter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/logging/LogDecrypter.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.logging;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.AndroidUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/logging/LogDecrypterImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/logging/LogDecrypterImpl.java
index 61cfaa1369e7ed0d81742ded18fef32904de8b90..c24b45d86e26505a8bf62b7052a22cea020b2e37 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/logging/LogDecrypterImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/logging/LogDecrypterImpl.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.android.logging;
 
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.reporting.DevConfig;
 import org.briarproject.bramble.api.transport.StreamReaderFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/logging/LogEncrypter.java b/briar-android/src/main/java/org/briarproject/briar/android/logging/LogEncrypter.java
index 354e22ecca804db189835c8526ce16c71e7cd199..982546d2f7050bfc70a9ed06bf272d02bce00e0f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/logging/LogEncrypter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/logging/LogEncrypter.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.logging;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.AndroidUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/logging/LogEncrypterImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/logging/LogEncrypterImpl.java
index f868f6ed311ce1604251795e4a023cd9bcd23a47..cdc175970c6b9ec956708bde0a438a85b11b4620 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/logging/LogEncrypterImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/logging/LogEncrypterImpl.java
@@ -2,10 +2,10 @@ package org.briarproject.briar.android.logging;
 
 import org.briarproject.bramble.api.crypto.CryptoComponent;
 import org.briarproject.bramble.api.crypto.SecretKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.reporting.DevConfig;
 import org.briarproject.bramble.api.transport.StreamWriter;
 import org.briarproject.bramble.api.transport.StreamWriterFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.FileOutputStream;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/ChangePasswordViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/login/ChangePasswordViewModel.java
index 9a622a15ce4cb14125d1e3276e636c994f47d99c..e6ffb1bbeea06b4057935122f8bf7046560710ae 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/ChangePasswordViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/ChangePasswordViewModel.java
@@ -5,9 +5,9 @@ import org.briarproject.bramble.api.crypto.DecryptionException;
 import org.briarproject.bramble.api.crypto.DecryptionResult;
 import org.briarproject.bramble.api.crypto.PasswordStrengthEstimator;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/LoginUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/login/LoginUtils.java
index eb0869d911840596680495b60f92ac0555eec45a..fe706bc845bf5ef210c6759e08b037141ce72baa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/LoginUtils.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/LoginUtils.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.login;
 
 import android.content.Context;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.appcompat.app.AlertDialog;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/OpenDatabaseFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/login/OpenDatabaseFragment.java
index f56c705228d168ad90c04b1c208cbed6daf2bc58..a1f55fd13d4fe724845fb64f6ba867945bb68008 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/OpenDatabaseFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/OpenDatabaseFragment.java
@@ -7,11 +7,11 @@ import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java
index c0ea14cb51a0e5694423020721c9d5c586b3b819..30d224c0a01d7f472b456b489ecf690f59be9fef 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/PasswordFragment.java
@@ -13,11 +13,11 @@ import com.google.android.material.textfield.TextInputEditText;
 import com.google.android.material.textfield.TextInputLayout;
 
 import org.briarproject.bramble.api.crypto.DecryptionResult;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/StartupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/login/StartupActivity.java
index 6c43e01262519fef3f9a42fc6f4a6fc5cfc01b51..71a806e8c49360a83c6bff2baf0ac5de5f9827e7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/StartupActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/StartupActivity.java
@@ -3,8 +3,6 @@ package org.briarproject.briar.android.login;
 import android.content.Intent;
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.BriarService;
 import org.briarproject.briar.android.account.SetupActivity;
@@ -12,6 +10,8 @@ import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BaseActivity;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.briar.android.login.StartupViewModel.State;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/login/StartupViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/login/StartupViewModel.java
index 1a8d9d1f97cfc1c9ccf23d3a77c30a06b68f5db0..4d42630d1acbb40ef07db1c352d804445dddc60f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/login/StartupViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/login/StartupViewModel.java
@@ -12,10 +12,10 @@ import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState;
 import org.briarproject.bramble.api.lifecycle.event.LifecycleEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
 import org.briarproject.briar.api.android.AndroidNotificationManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/logout/SignOutFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/logout/SignOutFragment.java
index 5a56ff1988d0d890318683d5f0a69dc60bd21cda..4e0ce178b512d7cf239141b18485fc9fb5d9aedd 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/logout/SignOutFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/logout/SignOutFragment.java
@@ -5,10 +5,10 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/ErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/ErrorFragment.java
index ffc37c11aea6cfa3bdc33bb62ab781aa1e48dad2..47468e98a4e2081bc94365eebfbd604d4ab18c5c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/ErrorFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/ErrorFragment.java
@@ -6,10 +6,10 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.fragment.FinalFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/ErrorWizardFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/ErrorWizardFragment.java
index 44f9407fdc769bbe4afd9772f194bbb85b5b238d..c0f789fb2a86c7e02bc27d7990048fbeb3872218 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/ErrorWizardFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/ErrorWizardFragment.java
@@ -12,10 +12,10 @@ import android.widget.ScrollView;
 
 import com.google.android.material.animation.ArgbEvaluatorCompat;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.view.BriarButton;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java
index 1c57f3691f316944aa207d3daada359ee815ef01..39908db6c1d2f3d41c3f5bf302d4f371bbcc279b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java
@@ -6,13 +6,13 @@ import android.widget.ProgressBar;
 import android.widget.Toast;
 
 import org.briarproject.bramble.api.mailbox.MailboxPairingState;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.fragment.FinalFragment;
 import org.briarproject.briar.android.view.BlankFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxConnectingFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxConnectingFragment.java
index 3361c01cd499a59330ec7fbafaac0dea258e51e0..3da20a80ec713a5bc6193a70540ca6b06eda81b1 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxConnectingFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxConnectingFragment.java
@@ -5,9 +5,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxScanFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxScanFragment.java
index 80afa4863d271eb277ed70d0239c218da854170b..6b9c556533d9eb817cfd434a25fa9b48050f1e7e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxScanFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxScanFragment.java
@@ -7,11 +7,11 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.qrcode.CameraException;
 import org.briarproject.briar.android.qrcode.CameraView;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxStatusFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxStatusFragment.java
index f70476bea40a1147e8728c6e62ede1a24e89a33f..6f3db3e582903a898ac353754d0c3473c4b8baaa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxStatusFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxStatusFragment.java
@@ -14,10 +14,10 @@ import android.widget.ProgressBar;
 import android.widget.TextView;
 
 import org.briarproject.bramble.api.mailbox.MailboxStatus;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.view.BriarButton;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java
index 0d4402a817c58613cea9d508c4d0639e4619ed13..a3f38c272b7062e9ae3720a35da5c66d49c3bc12 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java
@@ -18,7 +18,6 @@ import org.briarproject.bramble.api.mailbox.MailboxPairingState;
 import org.briarproject.bramble.api.mailbox.MailboxPairingTask;
 import org.briarproject.bramble.api.mailbox.MailboxStatus;
 import org.briarproject.bramble.api.mailbox.event.OwnMailboxConnectionStatusEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.TorConstants;
@@ -31,6 +30,7 @@ import org.briarproject.briar.android.viewmodel.DbViewModel;
 import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
 import org.briarproject.briar.api.android.AndroidNotificationManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/OfflineFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/OfflineFragment.java
index 3ae1f6c18d67525567696419d3e8c64972b69019..740b1069820954332e10f49f373abf75e9eb6039 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/OfflineFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/OfflineFragment.java
@@ -8,10 +8,10 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.navdrawer.TransportsActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/OfflineStatusFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/OfflineStatusFragment.java
index ce2af02f870ead2d78440af4fd32a8e1be0f687c..aa46e5157942cc4f9590999ec0f07f0dd83052aa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/OfflineStatusFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/OfflineStatusFragment.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.mailbox;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/SetupDownloadFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/SetupDownloadFragment.java
index 1d76a6c2f2cb6467b43341af731487157e134585..74595a0152ab2b36b77fcd0b4646a4628276c406 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/SetupDownloadFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/SetupDownloadFragment.java
@@ -8,9 +8,9 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ScrollView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/SetupIntroFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/SetupIntroFragment.java
index febe902a497227319cb39884ab9037df7e832fe1..f3f231422517f38f615f1da73793c674cec7c1d5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/SetupIntroFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/SetupIntroFragment.java
@@ -8,9 +8,9 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ScrollView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
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 adce3a3020431f31ef378f9d3eafc9a28117b2f4..bc1d329044a9ba29d5d07920974e9099cf0532cf 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
@@ -20,8 +20,6 @@ import com.google.android.material.navigation.NavigationView;
 import com.google.android.material.navigation.NavigationView.OnNavigationItemSelectedListener;
 
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.Plugin.State;
@@ -40,6 +38,8 @@ import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener
 import org.briarproject.briar.android.logout.SignOutFragment;
 import org.briarproject.briar.android.privategroup.list.GroupListFragment;
 import org.briarproject.briar.android.settings.SettingsActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerViewModel.java
index d4f047ff3d27d738df79f02d94fcf5343c836ba1..0d2bae46bc8a0b51eb48832ca8367ad9a847bcbb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerViewModel.java
@@ -6,12 +6,12 @@ import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.android.BriarApplication;
 import org.briarproject.briar.android.viewmodel.DbViewModel;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java
index f3a7e0810ea1d0536428c8744e47a046e5099c07..5d0c48bcdbdda0d135451245d943fd1f01d3f0ce 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/PluginViewModel.java
@@ -17,7 +17,6 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager;
 import org.briarproject.bramble.api.network.NetworkManager;
 import org.briarproject.bramble.api.network.NetworkStatus;
 import org.briarproject.bramble.api.network.event.NetworkStatusEvent;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.Plugin;
@@ -31,6 +30,7 @@ import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.android.viewmodel.DbViewModel;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/TransportsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/TransportsActivity.java
index d79b500d86bd8fe28e533dbf624c2a003738e9b9..81de79aa4d9ca9f4eb245c833f17206424c7d3f4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/TransportsActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/TransportsActivity.java
@@ -13,8 +13,6 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import org.briarproject.bramble.api.network.NetworkStatus;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.Plugin.State;
@@ -23,6 +21,8 @@ import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.List;
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 f75167fb4a2cf07cc7bd0c338ddaa344483ae50c..8a76132c335b7d399294bbcebad44655df198d7a 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
@@ -4,10 +4,10 @@ import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java
index d6e74b1bb2490c47546bd5c17994181a0473ff3a..cc0b8289f4b9491712832e4266bd4b98401e4ac2 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java
@@ -6,8 +6,6 @@ import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.privategroup.creation.GroupInviteActivity;
@@ -15,6 +13,8 @@ import org.briarproject.briar.android.privategroup.memberlist.GroupMemberListAct
 import org.briarproject.briar.android.privategroup.reveal.RevealContactsActivity;
 import org.briarproject.briar.android.threaded.ThreadListActivity;
 import org.briarproject.briar.android.threaded.ThreadListViewModel;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
@@ -25,10 +25,10 @@ import androidx.lifecycle.ViewModelProvider;
 
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_GROUP_INVITE;
 import static org.briarproject.briar.android.util.UiUtils.observeOnce;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_TEXT_LENGTH;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupMessageAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupMessageAdapter.java
index 4eedbd580543002b49577b90b1067f7c45360f3d..512ecdc6c6fc5073f40072af02703ec7dbdebd69 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupMessageAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupMessageAdapter.java
@@ -4,11 +4,11 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.threaded.BaseThreadItemViewHolder;
 import org.briarproject.briar.android.threaded.ThreadItemAdapter;
 import org.briarproject.briar.android.threaded.ThreadPostViewHolder;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.LayoutRes;
 import androidx.annotation.UiThread;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupViewModel.java
index 5a6281f9741c2c434e6f98c3968d007a7fd27314..437d5136dd4a5ef37de15590fc2a522cacb438e5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupViewModel.java
@@ -14,8 +14,6 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.AndroidExecutor;
@@ -37,6 +35,8 @@ import org.briarproject.briar.api.privategroup.event.GroupDissolvedEvent;
 import org.briarproject.briar.api.privategroup.event.GroupInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/JoinMessageItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/JoinMessageItemViewHolder.java
index 6ee712071b3dfde9a7969264ff77a0a6b9b0ba52..c95f9229796e2a9c05177b9d764740dd17c1c9fb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/JoinMessageItemViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/JoinMessageItemViewHolder.java
@@ -3,10 +3,10 @@ package org.briarproject.briar.android.privategroup.conversation;
 import android.content.Context;
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.threaded.BaseThreadItemViewHolder;
 import org.briarproject.briar.android.threaded.ThreadItemAdapter.ThreadItemListener;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.UiThread;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java
index deb020e273239105f24456654598f38eef85046d..4a5e1f035ecd67c95f03adf35f78f7dd3d012b28 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupActivity.java
@@ -4,14 +4,14 @@ import android.content.Intent;
 import android.os.Bundle;
 
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler;
 import org.briarproject.briar.android.privategroup.conversation.GroupActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupController.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupController.java
index ffd605c98ee00fe00b30fdf7095127b9a62c8f8b..3daac888019a0c73448aa8080fc3bcbf8f8b9e3d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupController.java
@@ -2,11 +2,11 @@ package org.briarproject.briar.android.privategroup.creation;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.contactselection.ContactSelectorController;
 import org.briarproject.briar.android.contactselection.SelectableContactItem;
 import org.briarproject.briar.android.controller.handler.ResultExceptionHandler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupControllerImpl.java
index 4bae607e8d1d8dafb642f3a800f530822851dadd..35c707fd212631dabf6e5fde5e18a76bb4c7f04a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupControllerImpl.java
@@ -12,7 +12,6 @@ import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl;
@@ -27,6 +26,7 @@ import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroupManager;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -41,8 +41,8 @@ import androidx.annotation.Nullable;
 
 import static java.util.logging.Level.WARNING;
 import static java.util.logging.Logger.getLogger;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.util.LogUtils.logException;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @Immutable
 @NotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupFragment.java
index 141091fdd6bdb82985d4fa9b1ae5679c18cd0c12..95de304aa36d67cecd92a0dc0ec5dda3ffb9047f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupFragment.java
@@ -13,12 +13,12 @@ import android.widget.ProgressBar;
 
 import com.google.android.material.textfield.TextInputLayout;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupMessageFragment.java
index 19e8fefee325267c5b1cbc93d24c77d3681255c4..1092c3aa2434e7ff66a953d4cfaacb0feeeff830 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupMessageFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupMessageFragment.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.android.privategroup.creation;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.sharing.BaseMessageFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.StringRes;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java
index d859f29ef6640947cbddee339f1a0d2739daf569..f5fae56c9163a30274abf53efc596ad7b481e3bb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java
@@ -5,13 +5,13 @@ import android.os.Bundle;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contactselection.ContactSelectorActivity;
 import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler;
 import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteFragment.java
index ba1dda0305cc1a7ad2515484ef56f8dd7a375109..889a0aee73bd69498560894b0f36ead7143002da 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteFragment.java
@@ -2,14 +2,14 @@ package org.briarproject.briar.android.privategroup.creation;
 
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contactselection.ContactSelectorController;
 import org.briarproject.briar.android.contactselection.ContactSelectorFragment;
 import org.briarproject.briar.android.contactselection.SelectableContactItem;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationActivity.java
index a6dd2dd4eac2efd32189160ef07b2069532323de..565d3ea244a7a43e2421a31693559ac561973973 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationActivity.java
@@ -2,13 +2,13 @@ package org.briarproject.briar.android.privategroup.invitation;
 
 import android.content.Context;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.sharing.InvitationActivity;
 import org.briarproject.briar.android.sharing.InvitationAdapter;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationItem;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationController.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationController.java
index 0cb87e987368db5ac3886d6da47d4b6fd18c2e0d..22b5837d2ebd3fcf1645fd4ca081ca90cc2411d7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationController.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.android.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.sharing.InvitationController;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationItem;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface GroupInvitationController
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationControllerImpl.java
index 1a2cae3ed9a6927183e6c0a6cddfb00279dcee0e..48b2706b118bba06cb0414399937a450b3f78d9f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/invitation/GroupInvitationControllerImpl.java
@@ -6,7 +6,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.briar.android.controller.handler.ExceptionHandler;
 import org.briarproject.briar.android.sharing.InvitationControllerImpl;
@@ -15,6 +14,7 @@ import org.briarproject.briar.api.privategroup.event.GroupInvitationRequestRecei
 import org.briarproject.briar.api.privategroup.event.GroupInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationItem;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java
index f7f361216ef6f81ce4512d14b7970165b2816188..15a7900d3d1e6a286dcc1687fd9fa88fa226a2b6 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupItem.java
@@ -1,12 +1,12 @@
 package org.briarproject.briar.android.privategroup.list;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.briar.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.client.MessageTracker.GroupCount;
+import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.privategroup.GroupMessageHeader;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListAdapter.java
index a2a4805bc17b0e631e6168a8505ccb8743cbb912..849514a5440f24d9e947ddee4abc5d359aed3bec 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListAdapter.java
@@ -4,10 +4,10 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.privategroup.list.GroupViewHolder.OnGroupRemoveClickListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.recyclerview.widget.DiffUtil.ItemCallback;
 import androidx.recyclerview.widget.ListAdapter;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java
index dcd023e5fa2173f9ba344ebe384b54b4d683eb01..0ed8a25b3568c40f6fb855b8db98895a2f47019f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java
@@ -12,8 +12,6 @@ import android.view.ViewGroup;
 
 import com.google.android.material.snackbar.Snackbar;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
@@ -22,6 +20,8 @@ import org.briarproject.briar.android.privategroup.invitation.GroupInvitationAct
 import org.briarproject.briar.android.privategroup.list.GroupViewHolder.OnGroupRemoveClickListener;
 import org.briarproject.briar.android.util.BriarSnackbarBuilder;
 import org.briarproject.briar.android.view.BriarRecyclerView;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java
index 35f6ada3e29bef3dabad2e89aec3ab860149cb7f..474dbcefdb0150474cd2efedad413f811a165465 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListViewModel.java
@@ -11,8 +11,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.event.GroupAddedEvent;
@@ -31,6 +29,8 @@ import org.briarproject.briar.api.privategroup.event.GroupDissolvedEvent;
 import org.briarproject.briar.api.privategroup.event.GroupInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java
index 4179b40618d210cae913690a264b8c4df69e56f6..f1d2293ddbea68144e7dd4e918de9c018f59d3bf 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupViewHolder.java
@@ -7,13 +7,13 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.privategroup.conversation.GroupActivity;
 import org.briarproject.briar.android.util.UiUtils;
 import org.briarproject.briar.android.view.TextAvatarView;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.recyclerview.widget.RecyclerView;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java
index 7847f905c0766dc76b39c858050492f50030c4a6..267c9c9d0e6075e5667f0913b4281fd4f0ef1a2b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/GroupMemberListActivity.java
@@ -9,8 +9,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.event.GroupRemovedEvent;
 import org.briarproject.briar.R;
@@ -20,6 +18,8 @@ import org.briarproject.briar.android.controller.handler.UiResultExceptionHandle
 import org.briarproject.briar.android.view.BriarRecyclerView;
 import org.briarproject.briar.api.privategroup.JoinMessageHeader;
 import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItem.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItem.java
index 2b57b4e69427a316d96756633d15a89209e7d9d9..5ce3458520a06cccba909c3e0ba96f0e5854f4da 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItem.java
@@ -4,8 +4,8 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorInfo.Status;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.privategroup.GroupMember;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java
index dd3d958b7cab771faf072db2853d8d15b4c3932c..f673800b39944e21a65c30aa54f64c7490d4d877 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/memberlist/MemberListItemHolder.java
@@ -4,17 +4,17 @@ import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.view.AuthorView;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.UiThread;
 import androidx.recyclerview.widget.RecyclerView;
 
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
-import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
 import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
+import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
 
 @UiThread
 @NotNullByDefault
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java
index 5d7f70bff7197ad63faad4fbe35b67b689382577..201eaba172c2caf5fcadf954a78186b593a2e345 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsActivity.java
@@ -11,14 +11,14 @@ import android.widget.Button;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contactselection.ContactSelectorActivity;
 import org.briarproject.briar.android.controller.handler.UiExceptionHandler;
 import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsController.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsController.java
index 52c38546b56e3f9342d468faf67532e01f517e8f..6ec630bea827b50eba4c4e4a404b56624ce44825 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsController.java
@@ -2,11 +2,11 @@ package org.briarproject.briar.android.privategroup.reveal;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.contactselection.ContactSelectorController;
 import org.briarproject.briar.android.controller.handler.ExceptionHandler;
 import org.briarproject.briar.android.controller.handler.ResultExceptionHandler;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsControllerImpl.java
index edf50600c9a1a6a7dc66b1c256f69a124693e201..50e7c06b01eb34375a14485f5d0010f1fa18c606 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsControllerImpl.java
@@ -6,7 +6,6 @@ import org.briarproject.bramble.api.contact.ContactManager;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -19,6 +18,7 @@ import org.briarproject.briar.api.identity.AuthorManager;
 import org.briarproject.briar.api.privategroup.GroupMember;
 import org.briarproject.briar.api.privategroup.PrivateGroupManager;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsFragment.java
index 4cf47c5f2f653b13259acfebaba303da2cc578fc..7085964878e8ad35123db1744d0d1594ed2998ef 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealContactsFragment.java
@@ -4,13 +4,13 @@ import android.content.Context;
 import android.os.Bundle;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contact.OnContactClickListener;
 import org.briarproject.briar.android.contactselection.BaseContactSelectorFragment;
 import org.briarproject.briar.android.contactselection.ContactSelectorController;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactAdapter.java
index 271b97ebbcad05ecfff8339008b16f0147b219e5..d4af86f3c1b5a14474959179e90a27ba015edaef 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactAdapter.java
@@ -6,10 +6,10 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.contact.OnContactClickListener;
 import org.briarproject.briar.android.contactselection.BaseContactSelectorAdapter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactItem.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactItem.java
index 57f84947ffb704bba9163505ee26935398e0ebfc..e298f30f51cc8eddad686936e87f90eebe643a35 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactItem.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.android.privategroup.reveal;
 
 import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.contactselection.SelectableContactItem;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.privategroup.Visibility;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactViewHolder.java
index 02bfa90a9cd0a8651ea4323549f3e18fe916a2df..bb13f100c6439a4181f9373d3e2ff6af01ac9186 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/reveal/RevealableContactViewHolder.java
@@ -3,10 +3,10 @@ package org.briarproject.briar.android.privategroup.reveal;
 import android.view.View;
 import android.widget.ImageView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.contact.OnContactClickListener;
 import org.briarproject.briar.android.contactselection.BaseSelectableContactHolder;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/qrcode/CameraView.java b/briar-android/src/main/java/org/briarproject/briar/android/qrcode/CameraView.java
index 1540e76856225df4fffd03a75d4df4cdb74632a3..cff3f2c08671c5d03d2c6eaf1b7abfbf453be66e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/qrcode/CameraView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/qrcode/CameraView.java
@@ -14,8 +14,8 @@ import android.view.SurfaceView;
 import android.view.View;
 import android.view.WindowManager;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/qrcode/PreviewConsumer.java b/briar-android/src/main/java/org/briarproject/briar/android/qrcode/PreviewConsumer.java
index 3eb8832bcc59f32884c0bac466e32a025f4495c0..20a6436bdce79e47735d4bba432e22b1519a62c8 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/qrcode/PreviewConsumer.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/qrcode/PreviewConsumer.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.android.qrcode;
 
 import android.hardware.Camera;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.UiThread;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/qrcode/QrCodeDecoder.java b/briar-android/src/main/java/org/briarproject/briar/android/qrcode/QrCodeDecoder.java
index d03c841b39aadb5dd0062d8495cf3b83f7e0c1f6..b5c96079abb94e9f1f45e8e3a17b70c467b17e99 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/qrcode/QrCodeDecoder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/qrcode/QrCodeDecoder.java
@@ -14,10 +14,10 @@ import com.google.zxing.common.HybridBinarizer;
 import com.google.zxing.qrcode.QRCodeReader;
 
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/qrcode/QrCodeUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/qrcode/QrCodeUtils.java
index d7f30e0f35d64eab9fb18e1371f4720f8f8c039a..0917f3776232a7026456044a8fbe1e729632e790 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/qrcode/QrCodeUtils.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/qrcode/QrCodeUtils.java
@@ -7,7 +7,7 @@ import com.google.zxing.WriterException;
 import com.google.zxing.common.BitMatrix;
 import com.google.zxing.qrcode.QRCodeWriter;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ChooserFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ChooserFragment.java
index b23e60330ff17dddc81081cc79dcf041a769e0c1..c6a4f9465d3db0f7fe5be85351fd8fe3b685b6ab 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ChooserFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ChooserFragment.java
@@ -8,10 +8,10 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ScrollView;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.widget.OnboardingFullDialogFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ErrorFragment.java
index c1bf9441c8da70c495cf698ef8c28c0b597392fe..7ab791b889490e05ca096963fa6925c5354215dc 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ErrorFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ErrorFragment.java
@@ -6,10 +6,10 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.fragment.FinalFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java
index 1e7f5e3081074882d9e7fbaacde84013796cbd4c..c927d26abcb76cf4132daa622ad6d3173c3a1889 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/ReceiveFragment.java
@@ -11,11 +11,11 @@ import android.widget.ProgressBar;
 import android.widget.ScrollView;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.util.ActivityLaunchers.GetContentAdvanced;
 import org.briarproject.briar.android.util.ActivityLaunchers.OpenDocumentAdvanced;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveActivity.java
index 501f458fb948b5250f2e4fedb2a1b8fda862e8d4..91bd94d2ff226e51d28933ba33eb6d53db69f887 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveActivity.java
@@ -5,8 +5,6 @@ import android.os.Bundle;
 import android.view.MenuItem;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
@@ -14,6 +12,8 @@ import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.fragment.FinalFragment;
 import org.briarproject.briar.android.removabledrive.RemovableDriveViewModel.Action;
 import org.briarproject.briar.android.removabledrive.TransferDataState.TaskAvailable;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveViewModel.java
index 142526eef60559a6b5019ddcbac384ff0e22d97a..96099cfeec3ed5dd6ac2946f3c361c28b5a0035a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/RemovableDriveViewModel.java
@@ -10,7 +10,6 @@ import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveManager;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask.State;
@@ -19,6 +18,7 @@ import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.android.viewmodel.DbViewModel;
 import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java
index 1acab3a937f9036de992f5e1d2a7084587a2b2e1..a39326bba7fb6d2457cb11c2cc6a73983721492f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/SendFragment.java
@@ -13,11 +13,11 @@ import android.widget.ScrollView;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.util.ActivityLaunchers.CreateDocumentAdvanced;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/TransferDataState.java b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/TransferDataState.java
index e8ac8505837db932a60690f64754d6f673b8197b..e8581aee54455c4323855d7d904727192d3441d6 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/TransferDataState.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/removabledrive/TransferDataState.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.removabledrive;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.file.RemovableDriveTask;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 abstract class TransferDataState {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarExceptionHandler.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarExceptionHandler.java
index 870285954c0a9aaf258b11f2ac308a42c2a8fa41..a229717c21da6a825710b71179b6d6644cbb22bd 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarExceptionHandler.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarExceptionHandler.java
@@ -4,8 +4,8 @@ import android.app.Application;
 import android.os.Process;
 import android.util.Log;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.logging.LogEncrypter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.lang.Thread.UncaughtExceptionHandler;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarReportCollector.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarReportCollector.java
index 068899224d217524adad60abc3bbd924ce62146d..ef9e6ad941ff986cf23674936eab315b7209d142 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarReportCollector.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/BriarReportCollector.java
@@ -21,7 +21,6 @@ import android.os.Build;
 import android.os.Environment;
 
 import org.briarproject.bramble.api.Pair;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.BuildConfig;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.reporting.ReportData.MultiReportInfo;
@@ -30,6 +29,7 @@ import org.briarproject.briar.android.reporting.ReportData.SingleReportInfo;
 import org.briarproject.briar.api.android.MemoryStats;
 import org.briarproject.briar.api.android.NetworkUsageMetrics;
 import org.briarproject.briar.api.android.NetworkUsageMetrics.Metrics;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 import java.io.PrintWriter;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashFragment.java
index 370adc927ca52e166db0a17cf071ab11469f4c66..cad46395af69f0f913bbd8cc07b0ec0008bd29ad 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashFragment.java
@@ -5,11 +5,11 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashReportActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashReportActivity.java
index fae4f2ada8ac2b11c351dbb1b2b14772cc28dbe2..940cd0b0db998670cfbcd2a7c32933a629516d95 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashReportActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/CrashReportActivity.java
@@ -7,8 +7,6 @@ import android.os.Looper;
 import android.os.Process;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BaseActivity;
@@ -16,6 +14,8 @@ import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.briar.android.logout.HideUiActivity;
 import org.briarproject.briar.api.android.MemoryStats;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportData.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportData.java
index a1c5807663d107fd1670fed7dfebace78b7e4bd4..9dcf854be579f151d6c3d4c122a157f8769b406a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportData.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportData.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.reporting;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.json.JSONException;
 import org.json.JSONObject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportDataAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportDataAdapter.java
index a49e67b20c7f6854fa3fbb13a025a99394099f01..53ac3445d5b042eb9f433853607aa44d80371110 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportDataAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportDataAdapter.java
@@ -6,9 +6,9 @@ import android.view.ViewGroup;
 import android.widget.CheckBox;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.reporting.ReportData.ReportItem;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java
index fb7746f51f33fc5c415540914f6857593dbd1024..8eff6d704d35e8f125a89de5a9e45cc142b7fa91 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportFormFragment.java
@@ -16,11 +16,11 @@ import android.widget.EditText;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.fragment.BaseFragment;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportViewModel.java
index 3ebd470979e90652536e70c62bf76a838485bf2f..1aba53d7b7c4592f4b2f753b5016ffdfeb36b3e8 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/reporting/ReportViewModel.java
@@ -4,7 +4,6 @@ import android.app.Application;
 import android.os.Handler;
 import android.os.Looper;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.Plugin;
 import org.briarproject.bramble.api.plugin.PluginManager;
 import org.briarproject.bramble.api.plugin.TorConstants;
@@ -20,6 +19,7 @@ import org.briarproject.briar.android.viewmodel.LiveEvent;
 import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
 import org.briarproject.briar.api.android.MemoryStats;
 import org.briarproject.briar.api.android.NetworkUsageMetrics;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.json.JSONException;
 
 import java.io.File;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/AboutFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/AboutFragment.java
index e29bb6538505aa888398731120c37914b1d01a30..664e7f2863750337985149ca1e4413284530d8e2 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/AboutFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/AboutFragment.java
@@ -10,10 +10,10 @@ import android.view.ViewGroup;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.BuildConfig;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/AvatarPreference.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/AvatarPreference.java
index 77812b14fa946cf1e93b29be32e41f8484e6620f..670d83b2e3b03b505b3767f34d4c14137b123634 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/AvatarPreference.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/AvatarPreference.java
@@ -5,8 +5,8 @@ import android.util.AttributeSet;
 import android.view.View;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.preference.Preference;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/ConfirmAvatarDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/ConfirmAvatarDialogFragment.java
index c3d200aa4e94743f0070dbfbe74ebbd6d0ebaf0c..72775dd20583cd5178caf3ca86c6bf635bf1b0f3 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/ConfirmAvatarDialogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/ConfirmAvatarDialogFragment.java
@@ -11,11 +11,11 @@ import android.widget.TextView;
 
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.BaseActivity;
 import org.briarproject.briar.android.conversation.glide.GlideApp;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsFragment.java
index f669636f610e73950330546339c20b69b43cba14..afb594ab59384eb70cca94c5b62127527abcf0dc 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsFragment.java
@@ -4,9 +4,9 @@ import android.content.Context;
 import android.os.Bundle;
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsManager.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsManager.java
index 61fbfd6e48115464b557ffa049716481d051af81..16eabf930461abdcb74d3bdeeb80f592328719eb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsManager.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsManager.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.android.settings;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.TorConstants;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsStore.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsStore.java
index 94a12d53baea8bcfedea791623aea1bf3dbea86f..ed7046e6bea72502e60bc33d67dc47c9e7967e1e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsStore.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/ConnectionsStore.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.settings;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.SettingsManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java
index 3103a68044da32aa76bae008ea62b7689d6d513a..f71a7d00fd7a631c41aee9c4901e6dbed6b9a53c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java
@@ -4,10 +4,10 @@ import android.app.AlertDialog;
 import android.content.Intent;
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.Localizer;
 import org.briarproject.briar.android.util.UiUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/NotificationsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/NotificationsFragment.java
index b39192743f3c5e72d2da2dcf62d26713126c1fb3..958680e770c7585c1bf1bf9d5e2ac4ff94ebc9fb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/NotificationsFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/NotificationsFragment.java
@@ -8,9 +8,9 @@ import android.os.Bundle;
 import android.view.View;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/NotificationsManager.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/NotificationsManager.java
index 83a18c0cecfe087b8abb6faafbfcaeb2227737bd..5ed3fd1e1148d046c66230c6643c8bd14c8ea6bd 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/NotificationsManager.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/NotificationsManager.java
@@ -7,11 +7,11 @@ import android.net.Uri;
 import android.widget.Toast;
 
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/OwnIdentityInfo.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/OwnIdentityInfo.java
index b6a3780f3e3ce4955c0c1b365cdf7719e780d98f..5b44d9326ae1b0457922f4c0294f5a00ca39f6b6 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/OwnIdentityInfo.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/OwnIdentityInfo.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.android.settings;
 
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SecurityFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SecurityFragment.java
index 36a10f2283f3536d3297faa5f13aa555bd62a1e0..a35380fc98203c7050e12973382ed9b324392ae0 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SecurityFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SecurityFragment.java
@@ -4,9 +4,9 @@ import android.content.Context;
 import android.os.Bundle;
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java
index 18b3c0f6cfbba452c58032f64d92d7cf008b3fcd..00e4583a24cc117998b3e2dccd58c351219e5f0e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java
@@ -3,11 +3,11 @@ package org.briarproject.briar.android.settings;
 import android.os.Bundle;
 import android.view.MenuItem;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.ActionBar;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java
index 348fcc4ac1e23a160b2422374abaee87a5cbb6fd..beae7774080236b987c2ba8daf3cfde578e444de 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsFragment.java
@@ -6,12 +6,12 @@ import android.net.Uri;
 import android.os.Bundle;
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.mailbox.MailboxActivity;
 import org.briarproject.briar.android.util.ActivityLaunchers.GetImageAdvanced;
 import org.briarproject.briar.android.util.ActivityLaunchers.OpenImageDocumentAdvanced;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsStore.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsStore.java
index b5752de5142d4f3865a20606bf27acc67adeafce..a7dfcfb36482deabdfbd1b2c58266f74330262ea 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsStore.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsStore.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.android.settings;
 
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.settings.Settings;
 import org.briarproject.bramble.api.settings.SettingsManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java
index df178871279eb2dd8670911cefb826dcbe9f4290..85cc559e4c88c2ea258ac77ba70172c483020cfe 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsViewModel.java
@@ -16,8 +16,6 @@ import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.TorConstants;
@@ -34,6 +32,8 @@ import org.briarproject.briar.android.viewmodel.DbViewModel;
 import org.briarproject.briar.api.avatar.AvatarManager;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorManager;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/TorSummaryProvider.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/TorSummaryProvider.java
index 5e0ba6e8b0839cbc5321b37b3df82f0fc1fc2b63..73c7d24aedc5aa9ccc792f3dc78f9c43fa16d5dd 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/settings/TorSummaryProvider.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/TorSummaryProvider.java
@@ -2,10 +2,10 @@ package org.briarproject.briar.android.settings;
 
 import android.content.Context;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.LocationUtils;
 import org.briarproject.bramble.plugin.tor.CircumventionProvider;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.preference.ListPreference;
 import androidx.preference.Preference.SummaryProvider;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java
index bd2d368c230f5fb433abdb2507d1361e81458494..2d74dd2353f8b2e925dc255085f15d8b8e0f95ad 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java
@@ -7,9 +7,6 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.view.LargeTextInputView;
@@ -17,6 +14,9 @@ import org.briarproject.briar.android.view.TextSendController;
 import org.briarproject.briar.android.view.TextSendController.SendListener;
 import org.briarproject.briar.android.view.TextSendController.SendState;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogInvitationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogInvitationActivity.java
index e49b63278092298c7e9cfe80786940e962ea8aef..a3256309a307ba463918b03bc98577d80be11e7f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogInvitationActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogInvitationActivity.java
@@ -2,11 +2,11 @@ package org.briarproject.briar.android.sharing;
 
 import android.content.Context;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.api.sharing.SharingInvitationItem;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogInvitationControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogInvitationControllerImpl.java
index 62e63301696d67ca4da2177de2308a658c6943bb..9854e8d2f97afc4bcaa34e40e0751efb5f5e7734 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogInvitationControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogInvitationControllerImpl.java
@@ -6,13 +6,13 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.briar.android.controller.handler.ExceptionHandler;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.sharing.SharingInvitationItem;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogSharingStatusActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogSharingStatusActivity.java
index 35d606f9656db3feea1bde4d774acce7654d8a98..d5f587a935c88c038e9b3451b85802247c1596f0 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogSharingStatusActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BlogSharingStatusActivity.java
@@ -4,13 +4,13 @@ import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.api.blog.BlogInvitationResponse;
 import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumInvitationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumInvitationActivity.java
index 59fb3683b7f12005ecb3e9009bbd624f65f745af..67b3a0f66398cfa26646e869e1ee60c75c310e02 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumInvitationActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumInvitationActivity.java
@@ -2,11 +2,11 @@ package org.briarproject.briar.android.sharing;
 
 import android.content.Context;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.api.sharing.SharingInvitationItem;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumInvitationControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumInvitationControllerImpl.java
index 0979afe6a8a2b71e100d5d2568d6eca95eafcdf0..1ee143d31a3982621d99234caf24f75e30f6aabe 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumInvitationControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumInvitationControllerImpl.java
@@ -6,13 +6,13 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.briar.android.controller.handler.ExceptionHandler;
 import org.briarproject.briar.api.forum.Forum;
 import org.briarproject.briar.api.forum.ForumSharingManager;
 import org.briarproject.briar.api.forum.event.ForumInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.sharing.SharingInvitationItem;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java
index 3c820312829834d0757374f2fc4913c2a890a8dd..e7e1ee189c842d01fc8170cfc35ad74725e40760 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ForumSharingStatusActivity.java
@@ -4,13 +4,13 @@ import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.db.DatabaseExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.api.forum.ForumInvitationResponse;
 import org.briarproject.briar.api.forum.ForumSharingManager;
 import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationActivity.java
index e82b19ad61414cf3bdf645daed1462238855ec74..e145a696116e76c874faf0e9344640bff09ebb37 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationActivity.java
@@ -5,8 +5,6 @@ import android.os.Bundle;
 import android.widget.Toast;
 
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.controller.handler.UiExceptionHandler;
@@ -14,6 +12,8 @@ import org.briarproject.briar.android.controller.handler.UiResultExceptionHandle
 import org.briarproject.briar.android.sharing.InvitationController.InvitationListener;
 import org.briarproject.briar.android.view.BriarRecyclerView;
 import org.briarproject.briar.api.sharing.InvitationItem;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationController.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationController.java
index f4e3949c04b3c48272c5921593f9bf608c7a9015..a9a8a654bcdd4bd2267cd43281328f271338215f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationController.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.android.sharing;
 
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.controller.ActivityLifecycleController;
 import org.briarproject.briar.android.controller.handler.ExceptionHandler;
 import org.briarproject.briar.android.controller.handler.ResultExceptionHandler;
 import org.briarproject.briar.api.sharing.InvitationItem;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationControllerImpl.java
index 47b0ba5b7fbf7784bbbfc8952eb6864f58bc34b7..54b4af3178fd2e32e730ed7b96f1935dfdb09afa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/InvitationControllerImpl.java
@@ -9,14 +9,14 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.event.GroupAddedEvent;
 import org.briarproject.bramble.api.sync.event.GroupRemovedEvent;
 import org.briarproject.briar.android.controller.DbControllerImpl;
 import org.briarproject.briar.android.controller.handler.ResultExceptionHandler;
 import org.briarproject.briar.api.sharing.InvitationItem;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java
index dbba270a2c3093d5bda291cd177510796ad2f127..74c9ce5dd644a125b67b514916e1ec2def077fe3 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java
@@ -4,11 +4,11 @@ import android.content.Intent;
 import android.os.Bundle;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.contactselection.ContactSelectorActivity;
 import org.briarproject.briar.android.sharing.BaseMessageFragment.MessageFragmentListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java
index 9bc3cda43532f0802f994405c28218c3ea0c220a..8b9d5cf8364913eed11be90b5c183b6f5401bd03 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java
@@ -5,11 +5,11 @@ import android.widget.Toast;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.controller.handler.UiExceptionHandler;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogControllerImpl.java
index f07cdd130d8b6999035e85c3e5d11badb20c2011..abb14de673c2e1d8001eb29c230eae6c6985378e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogControllerImpl.java
@@ -8,12 +8,12 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.NoSuchContactException;
 import org.briarproject.bramble.api.db.NoSuchGroupException;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl;
 import org.briarproject.briar.android.controller.handler.ExceptionHandler;
 import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.identity.AuthorManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogFragment.java
index ab0d97e1c051e02a997190868991874cb1f649ee..3e28ac119f077f64ceab7d1856fdb00f14c0fad6 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogFragment.java
@@ -2,13 +2,13 @@ package org.briarproject.briar.android.sharing;
 
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contactselection.ContactSelectorController;
 import org.briarproject.briar.android.contactselection.ContactSelectorFragment;
 import org.briarproject.briar.android.contactselection.SelectableContactItem;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogMessageFragment.java
index e2ed19bc3eed4fe148ec47686194fce330280fb1..80905e3470876d52de738f4757684b284dad44f7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogMessageFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogMessageFragment.java
@@ -5,9 +5,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java
index f2c1d63e55f2384c81bca9a377c0df63bfbe2770..2e6385a16f3936dacc2637a44444d87368f210bd 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java
@@ -5,11 +5,11 @@ import android.widget.Toast;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.controller.handler.UiExceptionHandler;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumControllerImpl.java
index dcbf5af91f209a2fecf8b527a1ca33479b4653a9..92d8eb8a30f8dbbfaef6d37286c2075c77458ccc 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumControllerImpl.java
@@ -8,12 +8,12 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.NoSuchContactException;
 import org.briarproject.bramble.api.db.NoSuchGroupException;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl;
 import org.briarproject.briar.android.controller.handler.ExceptionHandler;
 import org.briarproject.briar.api.forum.ForumSharingManager;
 import org.briarproject.briar.api.identity.AuthorManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumFragment.java
index c7bdd59fda8047ec0d9745364b01f54b78847545..88725262e3ceeba9c026fc6dd1bdc09b79989fc3 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumFragment.java
@@ -2,13 +2,13 @@ package org.briarproject.briar.android.sharing;
 
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.contactselection.ContactSelectorController;
 import org.briarproject.briar.android.contactselection.ContactSelectorFragment;
 import org.briarproject.briar.android.contactselection.SelectableContactItem;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumMessageFragment.java
index b86bcb0fe17b03893251503b19f08688d0d3db92..58698bfcf9a072d27b8830db2953449813e9f6ba 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumMessageFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumMessageFragment.java
@@ -5,9 +5,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingController.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingController.java
index 3fd3f4e962626971f848a76eef382589d91bdf58..d0e3ed8f8a1676cc91f146cec283cb6e706e2444 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingController.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.android.sharing;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.EventBus;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingControllerImpl.java
index b58ab1a087e82f908b5bc9e76016962928a875e4..3a70d38036f4161d85bdad9d6e7cdaf8d1fae6b4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingControllerImpl.java
@@ -5,9 +5,9 @@ import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.event.ContactConnectedEvent;
 import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.HashSet;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingStatusActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingStatusActivity.java
index db667f0517bc6174126a42edd79e83994daa46dc..fcee4d10d74fe3bf74dc445397c02c626d26bd28 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingStatusActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingStatusActivity.java
@@ -12,8 +12,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.event.GroupRemovedEvent;
 import org.briarproject.briar.R;
@@ -23,6 +21,8 @@ import org.briarproject.briar.android.view.BriarRecyclerView;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorManager;
 import org.briarproject.briar.api.sharing.event.ContactLeftShareableEvent;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/splash/ExpiredOldAndroidActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/splash/ExpiredOldAndroidActivity.java
index 43cf5398893b2b4e82954a4549d15c7502ec4f54..c9fe83229b448aa0f6d487d25b75fd9783d8fc45 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/splash/ExpiredOldAndroidActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/splash/ExpiredOldAndroidActivity.java
@@ -3,14 +3,14 @@ package org.briarproject.briar.android.splash;
 import android.content.Intent;
 import android.os.Bundle;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidWakeLockManager;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BaseActivity;
 import org.briarproject.briar.android.controller.BriarController;
 import org.briarproject.briar.android.logout.ExitActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.inject.Inject;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java
index b8905f76453863eda0959f7bd14e2f8dd0e22284..b989445665be5d1202125b66b429fa03a500960e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/splash/SplashScreenActivity.java
@@ -7,12 +7,12 @@ import android.os.Handler;
 import android.transition.Fade;
 
 import org.briarproject.bramble.api.account.AccountManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BaseActivity;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java
index ee31ff5e68a34b1b284b3bb161baf408983c4b9f..3de0b5ce558e5d22033c839fe407b2fbdcf38382 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/BaseThreadItemViewHolder.java
@@ -9,11 +9,11 @@ import android.view.ViewGroup;
 import android.view.animation.AccelerateInterpolator;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.threaded.ThreadItemAdapter.ThreadItemListener;
 import org.briarproject.briar.android.view.AuthorView;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.CallSuper;
 import androidx.annotation.UiThread;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItem.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItem.java
index bde7c3e7dee8a520706405d3194cc5d1de79cede..979fcad9e46e2da3fbd69e8f199a735ec414f789 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItem.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.android.threaded;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.briar.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.MessageTree.MessageNode;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.NotThreadSafe;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItemAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItemAdapter.java
index 7e5bf01ae670ee29605f03869574ca87b8348839..cca103919d1b55ac0b73526683350bfe46b9f5bc 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItemAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItemAdapter.java
@@ -4,10 +4,10 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.util.ItemReturningAdapter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java
index 40933e20f6006815496a122ff1503ad5b6dde103..00306161822b18105e36a34dda5e18deb37bb5bb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java
@@ -6,8 +6,6 @@ import android.view.MenuItem;
 
 import com.google.android.material.snackbar.Snackbar;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.R;
@@ -22,6 +20,8 @@ import org.briarproject.briar.android.view.TextSendController.SendListener;
 import org.briarproject.briar.android.view.TextSendController.SendState;
 import org.briarproject.briar.android.view.UnreadMessageButton;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListViewModel.java
index 88a4b0fce4e92b6adf3aed4a0929c284521ac85c..ecd6ffde597d63451ec71ba74a710b684b340ddb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListViewModel.java
@@ -12,8 +12,6 @@ import org.briarproject.bramble.api.event.EventBus;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.event.GroupRemovedEvent;
@@ -27,6 +25,8 @@ import org.briarproject.briar.api.android.AndroidNotificationManager;
 import org.briarproject.briar.api.client.MessageTracker;
 import org.briarproject.briar.api.client.MessageTree;
 import org.briarproject.briar.client.MessageTreeImpl;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.List;
 import java.util.concurrent.Executor;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadPostViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadPostViewHolder.java
index 71c028b14832c1362377875633f2076fc08c626d..eb9be9acb429ba1a426eacfc3fbd0bf813fc7af7 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadPostViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadPostViewHolder.java
@@ -3,9 +3,9 @@ package org.briarproject.briar.android.threaded;
 import android.view.View;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.threaded.ThreadItemAdapter.ThreadItemListener;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Locale;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadScrollListener.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadScrollListener.java
index e0f1ec32786248bbefddd39e30589491f2eab5ea..6871f906849b8c431602774edc534f5ff1f7397d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadScrollListener.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadScrollListener.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.android.threaded;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.view.BriarRecyclerViewScrollListener;
 import org.briarproject.briar.android.view.UnreadMessageButton;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/ActivityLaunchers.java b/briar-android/src/main/java/org/briarproject/briar/android/util/ActivityLaunchers.java
index f71755596d199a2fa35bb7813a97b8010275c292..186c9b7ee364bf141a3a8f44662424c9ca8510ba 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/util/ActivityLaunchers.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/util/ActivityLaunchers.java
@@ -3,7 +3,7 @@ package org.briarproject.briar.android.util;
 import android.content.Context;
 import android.content.Intent;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.activity.result.contract.ActivityResultContract;
 import androidx.activity.result.contract.ActivityResultContracts.CreateDocument;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/BriarSnackbarBuilder.java b/briar-android/src/main/java/org/briarproject/briar/android/util/BriarSnackbarBuilder.java
index 785befbebd862a9b0a5117faefc034eb0b12b761..178e5e2df0af57ae2360541af6173c0f565faca4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/util/BriarSnackbarBuilder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/util/BriarSnackbarBuilder.java
@@ -6,8 +6,8 @@ import android.view.View.OnClickListener;
 import com.google.android.material.snackbar.Snackbar;
 import com.google.android.material.snackbar.Snackbar.Callback;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.ColorRes;
 import androidx.annotation.Nullable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
index 0952431bc8c2d465cf041137b2e9a6da4a7a8479..baa8939640bce589940c537242d0404ee90fafd5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
@@ -34,14 +34,14 @@ import com.google.android.material.textfield.TextInputLayout;
 
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.reporting.FeedbackActivity;
 import org.briarproject.briar.android.view.ArticleMovementMethod;
 import org.briarproject.briar.api.android.MemoryStats;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.Locale;
 import java.util.logging.Logger;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/BlankFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/view/BlankFragment.java
index 6014e899456453a4746a92dd71a6ee58ae83db71..3c25b4bfb363c63bfbbf8b75f275525a938e2b5b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/BlankFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/BlankFragment.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.view;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.fragment.app.Fragment;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/BriarButton.java b/briar-android/src/main/java/org/briarproject/briar/android/view/BriarButton.java
index 261a76c32f55cc9e97fbbf7109bdca769e5727c3..944cb85878ec0bea508cbcd515354674e18edd12 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/BriarButton.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/BriarButton.java
@@ -8,8 +8,8 @@ import android.widget.Button;
 import android.widget.FrameLayout;
 import android.widget.ProgressBar;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.appcompat.view.ContextThemeWrapper;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerViewScrollListener.java b/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerViewScrollListener.java
index 7c23c894b308626e132c230889e04b201543e27a..52b25e0933b46ba2bfd66da331d519a93493c83e 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerViewScrollListener.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/BriarRecyclerViewScrollListener.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.android.view;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.util.ItemReturningAdapter;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.CallSuper;
 import androidx.recyclerview.widget.LinearLayoutManager;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreview.java b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreview.java
index 661ddaefa59267bda8f0a3f8a2a0314dba2466f0..150644ae6e9d5e6bcdc3dce5ca3e59dcd774ebb4 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreview.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreview.java
@@ -4,9 +4,9 @@ import android.content.Context;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.attachment.AttachmentItemResult;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewAdapter.java
index c11a70363054749a1e0ad8782f0a8a8392f888b4..0a94a098460b274fd6d4b4c213620bd86af5aa47 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewAdapter.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewAdapter.java
@@ -4,9 +4,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.attachment.AttachmentItemResult;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewDecoration.java b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewDecoration.java
index ea4893ed7c9a9f5dcbf830541cb2d275cc5e31ed..7c8a2e69cda2e475de82b90fa346b589e75a6bff 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewDecoration.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewDecoration.java
@@ -5,8 +5,8 @@ import android.content.res.Resources;
 import android.graphics.Rect;
 import android.view.View;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.RecyclerView.ItemDecoration;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewItem.java b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewItem.java
index 004b5fd485a36ed775594b367383c1dee99889c2..c7998ae576a5c42aea8cdba54c6feb08dd3b49a9 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewItem.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.view;
 
 import android.net.Uri;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.attachment.AttachmentItem;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewViewHolder.java
index 5d75f85c3b6ed70a51c7d13ad8fdd94031c6eb93..924da875ce6618152e48edfc246759810682d904 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewViewHolder.java
@@ -10,9 +10,9 @@ import com.bumptech.glide.load.engine.GlideException;
 import com.bumptech.glide.request.RequestListener;
 import com.bumptech.glide.request.target.Target;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.conversation.glide.GlideApp;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.DrawableRes;
 import androidx.annotation.Nullable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/LargeTextInputView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/LargeTextInputView.java
index d3f34fa4fa13c4085658a9735ce0e2301111e2bc..ed08ca394d682843faaaa94c92d3a948ff75509a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/LargeTextInputView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/LargeTextInputView.java
@@ -6,9 +6,9 @@ import android.util.AttributeSet;
 import android.view.ViewGroup;
 import android.widget.Button;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/PullDownLayout.java b/briar-android/src/main/java/org/briarproject/briar/android/view/PullDownLayout.java
index 8050438e38244dcf5e051d80d77d7bc07e34141d..2503f4ecd3c3d3dc9f9f25a9a71bbfb7eeb3a382 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/PullDownLayout.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/PullDownLayout.java
@@ -31,7 +31,7 @@ import android.view.View;
 import android.view.ViewConfiguration;
 import android.widget.FrameLayout;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.core.view.ViewCompat;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/SnackbarAwareBehavior.java b/briar-android/src/main/java/org/briarproject/briar/android/view/SnackbarAwareBehavior.java
index 7444c9557cf3d451c4e650fe1dc824499eaf01c5..77d0cc9fa967f167695483a5e72cb62add4efe4f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/SnackbarAwareBehavior.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/SnackbarAwareBehavior.java
@@ -6,7 +6,7 @@ import android.view.View;
 
 import com.google.android.material.snackbar.Snackbar.SnackbarLayout;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.coordinatorlayout.widget.CoordinatorLayout;
 import androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/TextAttachmentController.java b/briar-android/src/main/java/org/briarproject/briar/android/view/TextAttachmentController.java
index f6b751412d3222d17572ddbd052844a5b88706fa..2e65125b4a5dd957b7ba9d7707a775629e13d373 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/TextAttachmentController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/TextAttachmentController.java
@@ -9,12 +9,12 @@ import android.os.Parcel;
 import android.os.Parcelable;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.attachment.AttachmentItemResult;
 import org.briarproject.briar.android.attachment.AttachmentManager;
 import org.briarproject.briar.android.attachment.AttachmentResult;
 import org.briarproject.briar.android.view.ImagePreview.ImagePreviewListener;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/TextInputView.java b/briar-android/src/main/java/org/briarproject/briar/android/view/TextInputView.java
index 18c7521ba87c9eca2f4522cf557cf6d11a575fa2..33050f4173b6bfc769ee7f7ae13d14d76772c6fc 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/TextInputView.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/TextInputView.java
@@ -9,10 +9,10 @@ import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.widget.LinearLayout;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.view.EmojiTextInputView.OnKeyboardShownListener;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import androidx.annotation.LayoutRes;
 import androidx.annotation.Nullable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/TextSendController.java b/briar-android/src/main/java/org/briarproject/briar/android/view/TextSendController.java
index 0d6c432c7bd1cc71ff599d9634c49b571d570076..5a0352a60d383377b02eb0e715d3c04e2b5ccd84 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/TextSendController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/TextSendController.java
@@ -7,10 +7,10 @@ import android.widget.Toast;
 
 import com.google.android.material.snackbar.Snackbar;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.view.EmojiTextInputView.TextInputListener;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/UnreadMessageButton.java b/briar-android/src/main/java/org/briarproject/briar/android/view/UnreadMessageButton.java
index 24a1df1c4147ad0db4afb852dbfe1cbcc4e647bc..9d35d96a5c4bcf69a8a19b40a96682ae93aa5f22 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/view/UnreadMessageButton.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/view/UnreadMessageButton.java
@@ -9,8 +9,8 @@ import android.widget.TextView;
 
 import com.google.android.material.floatingactionbutton.FloatingActionButton;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Locale;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/DbViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/DbViewModel.java
index 583a42f16fba9017eacacc64ba44da38b45470e5..f102ffec35c98fc0d9c629da21662a1369cab73f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/DbViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/DbViewModel.java
@@ -9,9 +9,9 @@ import org.briarproject.bramble.api.db.DbRunnable;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.db.TransactionManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.AndroidExecutor;
 import org.briarproject.briar.android.util.UiUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveEvent.java b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveEvent.java
index e4e8e8308fc8e1a61a36cd602e869f61e74937e4..ad78e3221ccce14d96d0e622461066adac12bdc5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveEvent.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveEvent.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.viewmodel;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java
index dffb946b1fbd3ec91f6da9dc78f81c33682851e7..42b039efa39125292eb95dd68e5dbc403fb256be 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/LiveResult.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.viewmodel;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 import androidx.core.util.Consumer;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/MutableLiveEvent.java b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/MutableLiveEvent.java
index fda307d5d2911b90e025ba5cf74939b7d834f5b5..d2dda40532c85a45ecbea6824cb6a96a7f6b9015 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/MutableLiveEvent.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/MutableLiveEvent.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.android.viewmodel;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public class MutableLiveEvent<T> extends LiveEvent<T> {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/ViewModelFactory.java b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/ViewModelFactory.java
index 19ee29469ec97564e6c1055c3c6bd42170e72d6b..a1dbdd34834063871e44dd28d239480f010c09f8 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/ViewModelFactory.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/viewmodel/ViewModelFactory.java
@@ -15,7 +15,7 @@
  */
 package org.briarproject.briar.android.viewmodel;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 import java.util.Map.Entry;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/widget/LinkDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/widget/LinkDialogFragment.java
index 481c298a78cf5b9bb162c4cc56c12b28d153ac0c..ee84b8b5e4e056af49006e997b15d5fbf0536968 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/widget/LinkDialogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/widget/LinkDialogFragment.java
@@ -13,9 +13,9 @@ import android.widget.Button;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/widget/OnboardingFullDialogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/widget/OnboardingFullDialogFragment.java
index cf2fd2d72f8e51dbaa0b78e643e41b82908a13e9..14b2f537f2ba268df283ae8567219000ab3ce61c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/widget/OnboardingFullDialogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/widget/OnboardingFullDialogFragment.java
@@ -6,8 +6,8 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.R;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/widget/TapSafeFrameLayout.java b/briar-android/src/main/java/org/briarproject/briar/android/widget/TapSafeFrameLayout.java
index 9215b75dcf44145c0dc828735ffd9af358e3d369..fa5d210f9bf92c05c5686d6d63a0783ef341d6d5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/widget/TapSafeFrameLayout.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/widget/TapSafeFrameLayout.java
@@ -5,8 +5,8 @@ import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.widget.FrameLayout;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.android.util.UiUtils;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/widget/TouchInterceptingLinearLayout.java b/briar-android/src/main/java/org/briarproject/briar/android/widget/TouchInterceptingLinearLayout.java
index 8e3955c0b4069c9139c88aa400790de621ee1b4f..f5b735d164100669c5b76e251549e66c18f415d1 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/widget/TouchInterceptingLinearLayout.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/widget/TouchInterceptingLinearLayout.java
@@ -6,7 +6,7 @@ import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.widget.LinearLayout;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import androidx.annotation.Nullable;
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/api/android/NetworkUsageMetrics.java b/briar-android/src/main/java/org/briarproject/briar/api/android/NetworkUsageMetrics.java
index 2dc1a115d7c6227e9baec2febb0ee6a7739fec4d..a2368dd89de246385543d2617be5deb4d1f9ae52 100644
--- a/briar-android/src/main/java/org/briarproject/briar/api/android/NetworkUsageMetrics.java
+++ b/briar-android/src/main/java/org/briarproject/briar/api/android/NetworkUsageMetrics.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.api.android;
 
 import org.briarproject.bramble.api.lifecycle.Service;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface NetworkUsageMetrics extends Service {
diff --git a/briar-android/src/main/java/org/briarproject/briar/api/android/ScreenFilterMonitor.java b/briar-android/src/main/java/org/briarproject/briar/api/android/ScreenFilterMonitor.java
index 9d1cb9a0c0e6e4df1c281db5595742ec4a9710f7..4bad1964d4b19d16e1bb9edf956d4e5f5fae48ae 100644
--- a/briar-android/src/main/java/org/briarproject/briar/api/android/ScreenFilterMonitor.java
+++ b/briar-android/src/main/java/org/briarproject/briar/api/android/ScreenFilterMonitor.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.api.android;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/logging/LoggingTestModule.java b/briar-android/src/test/java/org/briarproject/briar/android/logging/LoggingTestModule.java
index a4bbb6165e1052a78a408a73fce00e91922e699b..8d8483fef080076f42182712c81dcbdf3341dbc2 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/logging/LoggingTestModule.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/logging/LoggingTestModule.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.android.logging;
 
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.reporting.DevConfig;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.File;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/attachment/Attachment.java b/briar-api/src/main/java/org/briarproject/briar/api/attachment/Attachment.java
index a6abd37b40ad10631828b5e9f92dbb117b5b121a..3a180e09cc992f3b034ba7643eb17699ef4789f9 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/attachment/Attachment.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/attachment/Attachment.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.api.attachment;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.InputStream;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/attachment/AttachmentHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/attachment/AttachmentHeader.java
index ab1efe121b9a65f83943ee9c00defc6be171e7cc..f2f8b4b756e0eb7f1819705dc7127b4cec8a5d84 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/attachment/AttachmentHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/attachment/AttachmentHeader.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.api.attachment;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/autodelete/AutoDeleteManager.java b/briar-api/src/main/java/org/briarproject/briar/api/autodelete/AutoDeleteManager.java
index b5e2bc7f3d0f8099d381dc4304c6e290f134345f..1c79141e43467d76fa75e37076b3e9fcf5b23146 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/autodelete/AutoDeleteManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/autodelete/AutoDeleteManager.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.api.autodelete;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import static java.util.concurrent.TimeUnit.DAYS;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/autodelete/event/AutoDeleteTimerMirroredEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/autodelete/event/AutoDeleteTimerMirroredEvent.java
index a3f392985b9c0c904ea9251f753e2c8c90519463..f03869f21be546ea60baff3303e214eb27d2ffd5 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/autodelete/event/AutoDeleteTimerMirroredEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/autodelete/event/AutoDeleteTimerMirroredEvent.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.api.autodelete.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/autodelete/event/ConversationMessagesDeletedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/autodelete/event/ConversationMessagesDeletedEvent.java
index 407f0363bc3d6e609e6afc60d75062cf2df9529b..80f6fa8a0c307987574cf812df3413791bae6ebb 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/autodelete/event/ConversationMessagesDeletedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/autodelete/event/ConversationMessagesDeletedEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.api.autodelete.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/avatar/AvatarManager.java b/briar-api/src/main/java/org/briarproject/briar/api/avatar/AvatarManager.java
index 631ceb27d72a8a3cc69675cfc260656321c8b3b1..2e74068baa86e5d7ad8c79268d713584c998b44a 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/avatar/AvatarManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/avatar/AvatarManager.java
@@ -3,9 +3,9 @@ package org.briarproject.briar.api.avatar;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/avatar/event/AvatarUpdatedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/avatar/event/AvatarUpdatedEvent.java
index 382b1572abdb989820b7b01b40ef5ffc59567e26..75c96d2ae05a64e77d4ee11e2c65b085a1993c4f 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/avatar/event/AvatarUpdatedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/avatar/event/AvatarUpdatedEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.api.avatar.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/Blog.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/Blog.java
index a0e4fff021f700be77017977701959a79d2eca8a..6347303c417dec90a752deeba65e0c430ed5a392 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/Blog.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/Blog.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.blog;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.briar.api.client.BaseGroup;
 import org.briarproject.briar.api.sharing.Shareable;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogCommentHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogCommentHeader.java
index 02ab6a2d54bcd9fa2b863945007e1f04b0442e33..5890ec9902ab96775825412e1ca72e17ee4fe4b8 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogCommentHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogCommentHeader.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.blog;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.briar.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogFactory.java
index a9d057501da211b41d383b1cad7bf47f110e748f..448eff9d4247a774f0f66cec8cd542ef1c244692 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogFactory.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.api.blog;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface BlogFactory {
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java
index 2f2db1da88317eba793df25c1feb928f2575727e..98d32907206e03e83fa63cd4aba37b0a76a74cb2 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.api.blog;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
 import org.briarproject.briar.api.sharing.InvitationRequest;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationResponse.java
index c1fc813ef21ad7edcbca32a57b4f8d1e823beb8b..f8a9adaec04a91d6b973a02316df101fe8c7ae83 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationResponse.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationResponse.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.api.blog;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
 import org.briarproject.briar.api.sharing.InvitationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public class BlogInvitationResponse extends InvitationResponse {
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java
index 9953cbac4b8dc25dbad530d1a5e1def2faa2b459..b7cc96f417b6a2d5e404ce12f1ae3d32ec607f4f 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java
@@ -4,10 +4,10 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPost.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPost.java
index 53037b732cbf7658b57ba04f49727d1786a596c1..442d7ae5e40cca4dddb44236d5a1362b48e92626 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPost.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPost.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.blog;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.forum.ForumPost;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostFactory.java
index 1b7cd03dee06774f137693ad4edf7794e6925849..d1f52ec8e9bef832aac2b47d1ada34e2abe82947 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostFactory.java
@@ -3,10 +3,10 @@ package org.briarproject.briar.api.blog;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostHeader.java
index 4d99b10f9187e9ed507b0e922087cd368db62fdc..f230f6f9f45f7a2f930305cd38ee444d93f434ce 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostHeader.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.api.blog;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.briar.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.PostHeader;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java
index 9a6d6b8da12ac950160e6f98ca8282ac316fb5b8..a63bd74c61597c5b9178bc579864db47fcf33b61 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.blog.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.conversation.ConversationRequest;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationResponseReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationResponseReceivedEvent.java
index d7f5e4da73cdb13f63f052d68eda040ff24df271..ab82c8aa9042450a281b1054013e57ea08e0a78f 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationResponseReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationResponseReceivedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.blog.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.blog.BlogInvitationResponse;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogPostAddedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogPostAddedEvent.java
index 77d9892cb801f060a51129311705fb4da9f20d4a..586ad32121b62d2df48a3cfbea29caa10c34ad75 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogPostAddedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogPostAddedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.blog.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.blog.BlogPostHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/BaseGroup.java b/briar-api/src/main/java/org/briarproject/briar/api/client/BaseGroup.java
index d26b8190f41abb6293db13ef7a44efb1a1cc9e76..cac5a37bc8bf21f816578e432d291bddc2166ec4 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/client/BaseGroup.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/client/BaseGroup.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.api.client;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTracker.java b/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTracker.java
index 717e9b31dac9f23d341ea161adeb449c79ef92db..6f483d3cb12bcf85bd797e8343dbeac719a9c57e 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTracker.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTracker.java
@@ -2,11 +2,11 @@ package org.briarproject.briar.api.client;
 
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.conversation.ConversationManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTree.java b/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTree.java
index 579059a0106c97ccc30555842657e7ef83c94be6..6636e01c63be69b770aec8053b5196fbc4bd9c99 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTree.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTree.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.api.client;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/NamedGroup.java b/briar-api/src/main/java/org/briarproject/briar/api/client/NamedGroup.java
index 2bd0a066806f63fdb84bd3ef7145655b7f4b6c8d..8298f7b6b651d52293b2b2aea361e5189c48e44b 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/client/NamedGroup.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/client/NamedGroup.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.api.client;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/PostHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/client/PostHeader.java
index 9957d8dfacb5bab840ed0279bd08c6532b927b4a..c1c4a78b40eaf7886bf38b110f366c4150e576d1 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/client/PostHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/client/PostHeader.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.client;
 
 import org.briarproject.bramble.api.identity.Author;
+import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorInfo.Status;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/SessionId.java b/briar-api/src/main/java/org/briarproject/briar/api/client/SessionId.java
index 07494d0f3cde1aead9a6687d9d2fc6100e1edbac..ba9389137a849457e0265d4ebb226c47577b15b0 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/client/SessionId.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/client/SessionId.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.api.client;
 
 import org.briarproject.bramble.api.UniqueId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.ThreadSafe;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/ThreadedMessage.java b/briar-api/src/main/java/org/briarproject/briar/api/client/ThreadedMessage.java
index 71a1b442b9037abf9822a7be9b8b84a9068b1997..75a35954d4d626a461cf80c9d3e0e35a041e9a6e 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/client/ThreadedMessage.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/client/ThreadedMessage.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.client;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationManager.java b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationManager.java
index 2c869d9f39b9f33f1987503987c85a15fd51ae48..dd8dc3519fbf6c86d02d437fa7ef749dfcb39ca7 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationManager.java
@@ -4,13 +4,13 @@ import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.MessageTracker.GroupCount;
 import org.briarproject.briar.api.messaging.MessagingManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.Set;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationMessageHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationMessageHeader.java
index e648869bb90b693189c3d4c910cababc38dd43fa..515562aa444ebb33da94e37f547ff17642b17580 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationMessageHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationMessageHeader.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.api.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationMessageVisitor.java b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationMessageVisitor.java
index 4846088b69769292e5a2ac70ea077f9f37f57318..cdae24ea2742eaa758df771cc53f0abdd28ad9f1 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationMessageVisitor.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationMessageVisitor.java
@@ -1,6 +1,5 @@
 package org.briarproject.briar.api.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.blog.BlogInvitationRequest;
 import org.briarproject.briar.api.blog.BlogInvitationResponse;
 import org.briarproject.briar.api.forum.ForumInvitationRequest;
@@ -10,6 +9,7 @@ import org.briarproject.briar.api.introduction.IntroductionResponse;
 import org.briarproject.briar.api.messaging.PrivateMessageHeader;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface ConversationMessageVisitor<T> {
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationRequest.java
index 62d33ca4666271c1ed2de17096d235f8cd8eef04..a379da623db01f1cc32811bc9873f1440bf7869e 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationRequest.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.conversation;
 
 import org.briarproject.bramble.api.Nameable;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationResponse.java
index 19abb9ea7529c02b750327cd764d175efaffbe0f..e6e42d48b819d5d20b12008662de60c09a5f219b 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationResponse.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationResponse.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/conversation/DeletionResult.java b/briar-api/src/main/java/org/briarproject/briar/api/conversation/DeletionResult.java
index b8c7b20affeb072280f9361cfaf98af78ec1bc9d..73cc8dcccd3d5026b1d8152d6439aee88cd3cf36 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/conversation/DeletionResult.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/conversation/DeletionResult.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.api.conversation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.NotThreadSafe;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/conversation/event/ConversationMessageReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/conversation/event/ConversationMessageReceivedEvent.java
index 2a070a533712c4163e153bd731ad7feb9729d06b..d79655db4f9e96f1bf8ddc8d7443476529fb19df 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/conversation/event/ConversationMessageReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/conversation/event/ConversationMessageReceivedEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.api.conversation.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.conversation.ConversationMessageHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/conversation/event/ConversationMessageTrackedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/conversation/event/ConversationMessageTrackedEvent.java
index 6a6889a0fa0309f652011c7ab89b870311724d58..e683c32018c65dd5a4b3cdf5102f6a3a7fdbeb5b 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/conversation/event/ConversationMessageTrackedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/conversation/event/ConversationMessageTrackedEvent.java
@@ -2,9 +2,7 @@ package org.briarproject.briar.api.conversation.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.sync.Message;
-import org.briarproject.briar.api.conversation.ConversationMessageHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/feed/Feed.java b/briar-api/src/main/java/org/briarproject/briar/api/feed/Feed.java
index ef747723d68894752c796c296e71d17bd8a3b19c..18a469c723d69b1f3c1ec4226f11ddf317c17cfb 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/feed/Feed.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/feed/Feed.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.feed;
 
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.blog.Blog;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/feed/FeedManager.java b/briar-api/src/main/java/org/briarproject/briar/api/feed/FeedManager.java
index f0fcf5cd383910587936006dcdb7dabe77542d70..d51c2b001345c5e92f164bc9df018179da85d3ae 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/feed/FeedManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/feed/FeedManager.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.api.feed;
 
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.util.List;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/Forum.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/Forum.java
index 98cabde3e158a85b9e7ff690c68aadce4c979a6c..a57c8b6ed109ea854fffcd77ac37f7751cbc8e1d 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/Forum.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/Forum.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.forum;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.briar.api.client.NamedGroup;
 import org.briarproject.briar.api.sharing.Shareable;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumFactory.java
index 1b14a06bef733312a4f3735f2868088f260a0ac1..07fa9bf59efee2d7a9b3b2977c21a92262b68c21 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.api.forum;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface ForumFactory {
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java
index 954e344bf4221d6eb2c1142a4d3948cc8acac56d..60ace0fa5b6583a3e90ac882f9ea20cab0299568 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.api.forum;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
 import org.briarproject.briar.api.sharing.InvitationRequest;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationResponse.java
index 3b2e46367a9a2278edcf4af88c4bb9d1e64fcc2f..0eb67c638f3ae8494cf677fd39fbfc82553f26f2 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationResponse.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationResponse.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.api.forum;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
 import org.briarproject.briar.api.sharing.InvitationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumManager.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumManager.java
index cb1e0878bc875d81e3775cb83a65966de187a46b..1b0cd636c6bae74d1db43fdad7a3fa0f84e5ba35 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumManager.java
@@ -4,11 +4,11 @@ import org.briarproject.bramble.api.crypto.CryptoExecutor;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.MessageTracker.GroupCount;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPost.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPost.java
index fe35ca6ddc34c782fa0746c4e5cc148748cb7a36..038e2620de293a78c77cf9bfa74cbf408c697726 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPost.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPost.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.forum;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.ThreadedMessage;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostFactory.java
index 3abe250dffca626668d0ec00f3d37e3d7de5913c..812bda4471a65ca507b8ae17def069d61f7568c6 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostFactory.java
@@ -3,9 +3,9 @@ package org.briarproject.briar.api.forum;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.crypto.CryptoExecutor;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostHeader.java
index ebf93b621840847eec4fb310750e4e3666e4b468..1f5df8b4f6227fc0c34d5cbf4cc425ce6bf35954 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostHeader.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.forum;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.briar.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.PostHeader;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java
index 85084858f9555581e9ab60fafda6095a70397155..064ca32fde54ee5ffcba62c36fcdc6cb6484c639 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.forum.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.conversation.ConversationRequest;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
 import org.briarproject.briar.api.forum.Forum;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationResponseReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationResponseReceivedEvent.java
index 5a99517bf70ad1ab12d9180f3eda423fef829194..5b54cc31f9d7b3e5ba39b7f17a4fe18418688e83 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationResponseReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationResponseReceivedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.forum.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
 import org.briarproject.briar.api.forum.ForumInvitationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumPostReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumPostReceivedEvent.java
index 28582acf66fa874b3daf0da14bc226ab70006e49..fb654b055e17e4c285eb44d94d163eb1cfccf8b3 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumPostReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumPostReceivedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.forum.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.forum.ForumPostHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorInfo.java b/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorInfo.java
index 098531aa34fe046228ae4a7be90eeca248e9a876..39be5b5708515cd66f1c64a7044d5b16df0f9e01 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorInfo.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorInfo.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.api.identity;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NullSafety;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NullSafety;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorManager.java b/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorManager.java
index 46381a3c03c3a97aae8b941b2e90ab65e05a1556..22f2627920035ccf83dcc58f07e0b66268d8e938 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/identity/AuthorManager.java
@@ -5,7 +5,7 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface AuthorManager {
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java
index 53c6903987f1f5ac0ba0ceae51f66ab5159e4d88..84b4b30287ed7d36e33a4868f27e908f38b52303 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java
@@ -4,10 +4,10 @@ import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java
index bc342596e6d2c78f2c06dd47701416450801b5d8..8f624e29c5549a5d708243cefe5492448874c52c 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java
@@ -1,13 +1,13 @@
 package org.briarproject.briar.api.introduction;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.briar.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
 import org.briarproject.briar.api.conversation.ConversationRequest;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java
index 716432e3ceb60ca0b7356fdf86890107a0c5a7b6..fdb5c15c5d33d1a2ede2295641e5f1b1f5dae974 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java
@@ -1,13 +1,13 @@
 package org.briarproject.briar.api.introduction;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
 import org.briarproject.briar.api.conversation.ConversationResponse;
 import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/Role.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/Role.java
index 38f0bd44cf85fb804fcff9f49e520474423e4a19..e70ceb25fae085e6940b04d40596fe2024ba7d69 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/Role.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/Role.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.api.introduction;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionAbortedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionAbortedEvent.java
index 113ba400efdebb484b0b41b84d70ccc64443f2b3..bbce380c15226766e861e69f800ded8a57bb2163 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionAbortedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionAbortedEvent.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.api.introduction.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionRequestReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionRequestReceivedEvent.java
index 9d6e6c685f4808652664b7a2ab957561ca5c2747..0a6a4e993a7e4ca53dd7d8ca2e03351b83da22ec 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionRequestReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionRequestReceivedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.introduction.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
 import org.briarproject.briar.api.introduction.IntroductionRequest;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionResponseReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionResponseReceivedEvent.java
index cf205ca77c1376d3fa0b9f9ec0c1cadc1b9c46e9..828b53ffc74cf0115c186de914150b7531808f56 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionResponseReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/event/IntroductionResponseReceivedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.introduction.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
 import org.briarproject.briar.api.introduction.IntroductionResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingManager.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingManager.java
index c1f17e187172808a4c5513937d1506231b08f569..31c928d622462add47c7520f250698e3ab91d46c 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingManager.java
@@ -3,13 +3,13 @@ package org.briarproject.briar.api.messaging;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.attachment.FileTooBigException;
 import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessage.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessage.java
index 23bc39dde6c82d25cbbb10656484baa2fe437b2e..f7e1abef327d4a609bb188b3475ef8e1a09f2096 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessage.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.api.messaging;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageFactory.java
index b3274a0571a857bce33f0b6e83fbbc231b0d45e2..c25d142aa552b87883c984ab37bac0d93c5fddb8 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageFactory.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.messaging;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java
index afe3638b1b1a4206d0eb32cc48be812c96a7c75b..212da1e2514bb6a3787adeace931bf518a0b7a99 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.api.messaging;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.conversation.ConversationMessageHeader;
 import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/event/AttachmentReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/event/AttachmentReceivedEvent.java
index e5f6e2b4f4232fbaebf98a7593564612b76dfba7..bde9ea9c6730ea0b2e64f027791575570795d249 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/event/AttachmentReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/event/AttachmentReceivedEvent.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.api.messaging.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/event/PrivateMessageReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/event/PrivateMessageReceivedEvent.java
index 32e2d3a564ce2ed5f44082b898d99b21961d249a..0b40f09b35799b5be51ed92be159dac84b7fa361 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/event/PrivateMessageReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/event/PrivateMessageReceivedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.messaging.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
 import org.briarproject.briar.api.messaging.PrivateMessageHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMember.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMember.java
index 5f842f0202067214bdb602f260780e2058f2424b..03deb49c2aa42881a4de389aa912e9b2c862af3d 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMember.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMember.java
@@ -3,7 +3,7 @@ package org.briarproject.briar.api.privategroup;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.briar.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessage.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessage.java
index 7f57e1c1245a8e33178b15fcbb1079d5871f784b..c63ba647447abd3ba24730090ee2042d870ee3b1 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessage.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessage.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.privategroup;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.ThreadedMessage;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageFactory.java
index 03b0ea3fd0c0f5ececde02bbeedea7912920088d..cc667295875e2ea28b4a8c8b5988f33af5094466 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageFactory.java
@@ -2,9 +2,9 @@ package org.briarproject.briar.api.privategroup;
 
 import org.briarproject.bramble.api.crypto.CryptoExecutor;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageHeader.java
index 724b077cbc3658926a3c5156f25ae2cffd2902d4..f703493e24d818baf894136a1b4a00d6f4446573 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageHeader.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.api.privategroup;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.briar.api.identity.AuthorInfo;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.PostHeader;
+import org.briarproject.briar.api.identity.AuthorInfo;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/JoinMessageHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/JoinMessageHeader.java
index f84b59d82e2e8f3329e5d58fe7adc13fb1d7b762..518cc54d957a467d09d217f8c0dde6b9ea030245 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/JoinMessageHeader.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/JoinMessageHeader.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.api.privategroup;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/MessageType.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/MessageType.java
index 9927ae4f2dd3be80853db0c174472d8967d9c95a..2f31d16465b1103aa7b367d651f86915b7827241 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/MessageType.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/MessageType.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.api.privategroup;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroup.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroup.java
index 37303c868e06882f103a7c0df8950727cb6798f4..216849c41c2f7534ff55da6d0f9b1722dd421318 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroup.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroup.java
@@ -1,10 +1,10 @@
 package org.briarproject.briar.api.privategroup;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.briar.api.client.NamedGroup;
 import org.briarproject.briar.api.sharing.Shareable;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupFactory.java
index 759128c8a869145d40f599057f9bb7ad441a347a..59b69417a640a71410d7f5cd6437ed73d999a863 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupFactory.java
@@ -2,8 +2,8 @@ package org.briarproject.briar.api.privategroup;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface PrivateGroupFactory {
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupManager.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupManager.java
index ba1fb730c96893ee8173dae633b2320dae03b167..ceeb8d9c611189e23d41aabf7a54108f3ac3dcde 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupManager.java
@@ -5,11 +5,11 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.MessageTracker.GroupCount;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/Visibility.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/Visibility.java
index c8c97c1bad2deb1e0103a3a1694111d035346bc0..c8932a416ee1795ba89fe9fb94a3013c6b76c0ae 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/Visibility.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/Visibility.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.api.privategroup;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/ContactRelationshipRevealedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/ContactRelationshipRevealedEvent.java
index 31a2b2ee09024c97d1721730d973bbaeba05f2cb..47de866edf5c3f7040afee4ba56facc3828daa44 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/ContactRelationshipRevealedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/ContactRelationshipRevealedEvent.java
@@ -3,9 +3,9 @@ package org.briarproject.briar.api.privategroup.event;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.privategroup.Visibility;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupDissolvedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupDissolvedEvent.java
index 030bd266fa15a02450102c503cba2682561e4f8e..df16b82432eb9fb3d204fcfbce56213eea824fe9 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupDissolvedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupDissolvedEvent.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.api.privategroup.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupInvitationRequestReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupInvitationRequestReceivedEvent.java
index 71edf29fb83e24af202fbbe9721b8871b947d7a4..9bd21364a19999d49c45eeaa8aa382a5cc07aca9 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupInvitationRequestReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupInvitationRequestReceivedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.privategroup.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupInvitationResponseReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupInvitationResponseReceivedEvent.java
index 74619ffe85db51e0d8f982cb838bc0714045057b..8656dde4e9f3711d5d9a09dc112894953d8d0399 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupInvitationResponseReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupInvitationResponseReceivedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.privategroup.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.conversation.event.ConversationMessageReceivedEvent;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupMessageAddedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupMessageAddedEvent.java
index 80c25bd0becaca5dd80b8dca734797fdccc1cc48..55effdd98348919631aa4fb93727b8abca6a302b 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupMessageAddedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupMessageAddedEvent.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.privategroup.event;
 
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.privategroup.GroupMessageHeader;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationFactory.java
index 061afd6e1287366b1cc73cda34df1dca33b65505..58f024ada0da8e4b57546eaf4b35b7159ae2f414 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationFactory.java
@@ -5,8 +5,8 @@ import org.briarproject.bramble.api.crypto.CryptoExecutor;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager.CLIENT_ID;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationItem.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationItem.java
index 215e3b756d66aaa6ba303653f5eb547406d4231f..84c31cb33d46ab01c1a731e5c361554a35e6869b 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationItem.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationItem.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.api.privategroup.invitation;
 
 import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.sharing.InvitationItem;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java
index 061064e9c72d6c54c22377a067ad6edcad40d458..f552d4859c84b85a7de3b02c0a8aecd5c154fce1 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java
@@ -3,13 +3,13 @@ package org.briarproject.briar.api.privategroup.invitation;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.client.ProtocolStateException;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java
index 0282145f28ce6f22d74fa71d0a6c039455a14f22..1bd151e2caa58e35c86cf47b188467c74cd162a7 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java
@@ -1,12 +1,12 @@
 package org.briarproject.briar.api.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.sharing.InvitationRequest;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationResponse.java
index 0f7d0636769d247fb0c6732ac5b077f5a6983d5d..8c352e5e12038a84eb9d20e9a9dc67a41134ad8e 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationResponse.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationResponse.java
@@ -1,11 +1,11 @@
 package org.briarproject.briar.api.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationMessageVisitor;
 import org.briarproject.briar.api.sharing.InvitationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationItem.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationItem.java
index 34735e7940d4543004b78645ca8650ef6a876775..0a3e23f27956be22fa13d784d642336bd8ee0016 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationItem.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationItem.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.api.sharing;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/Shareable.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/Shareable.java
index c04f210f3640bca4c7c6615004f566db4e9d9776..e197f8a9623ae23f37cf47c4c943a45ffd193030 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/Shareable.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/Shareable.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.api.sharing;
 
 import org.briarproject.bramble.api.Nameable;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface Shareable extends Nameable {
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingInvitationItem.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingInvitationItem.java
index e04a38cf25cd6cc79b9605cdaef9c364f2ddf2c1..8cd9951381f2511132516c41160bd72eec48e4b7 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingInvitationItem.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingInvitationItem.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.api.sharing;
 
 import org.briarproject.bramble.api.contact.Contact;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java
index e3de2fd91f3ac374ab3381a456675c30a7b37018..87241aacbe428c5d2d462a6e89183ee0e46dccb9 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java
@@ -4,10 +4,10 @@ import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/event/ContactLeftShareableEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/event/ContactLeftShareableEvent.java
index 69ffbab3c927f5ba52650bd113e05a719258ae0c..66afdb19c85090d46788782d7dcf63c4a357edaf 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/event/ContactLeftShareableEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/event/ContactLeftShareableEvent.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.api.sharing.event;
 
 import org.briarproject.bramble.api.contact.ContactId;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java b/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java
index b96100e0ff6ed04be2b63efe8dca2b56a8dc8c0a..b40fd67d33f1116954904a145eb7eccfbf0744e2 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java
@@ -3,7 +3,7 @@ package org.briarproject.briar.api.test;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 public interface TestDataCreator {
diff --git a/briar-core/src/main/java/org/briarproject/briar/attachment/CountingInputStream.java b/briar-core/src/main/java/org/briarproject/briar/attachment/CountingInputStream.java
index 8c1d8ecf9e49d227dce9dfc826addc12f7689f41..b0190c3d6818d8937490030be69ac667a1b5d963 100644
--- a/briar-core/src/main/java/org/briarproject/briar/attachment/CountingInputStream.java
+++ b/briar-core/src/main/java/org/briarproject/briar/attachment/CountingInputStream.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.attachment;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-core/src/main/java/org/briarproject/briar/autodelete/AutoDeleteManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/autodelete/AutoDeleteManagerImpl.java
index 5a4d87d864fed202dd4c1012e6a52148349f9ad2..666839767cbee922f5bf22a04eeeeb7f6b825381 100644
--- a/briar-core/src/main/java/org/briarproject/briar/autodelete/AutoDeleteManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/autodelete/AutoDeleteManagerImpl.java
@@ -12,11 +12,11 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupFactory;
 import org.briarproject.briar.api.autodelete.AutoDeleteManager;
 import org.briarproject.briar.api.autodelete.event.AutoDeleteTimerMirroredEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.logging.Logger;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarManagerImpl.java
index ab3097bd271821552234f018aa938cd7e65ec260..2c720367c32ec78ff0a7cff92b9ccfe8aeac47e7 100644
--- a/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarManagerImpl.java
@@ -16,7 +16,6 @@ import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Group.Visibility;
 import org.briarproject.bramble.api.sync.GroupFactory;
@@ -31,6 +30,7 @@ import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.avatar.AvatarManager;
 import org.briarproject.briar.api.avatar.AvatarMessageEncoder;
 import org.briarproject.briar.api.avatar.event.AvatarUpdatedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarMessageEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarMessageEncoderImpl.java
index c4308a4697dbc8dfbaa1f916e7aafe8628e390bb..cecd152e44272d74924d1ed5d61d034512cbbdc8 100644
--- a/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarMessageEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarMessageEncoderImpl.java
@@ -4,12 +4,12 @@ import org.briarproject.bramble.api.Pair;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.attachment.FileTooBigException;
 import org.briarproject.briar.api.avatar.AvatarMessageEncoder;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarValidator.java b/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarValidator.java
index 9f0b6c532dd8300af2be6882cf8a75ca8a75c15c..30ec7cb377926c095b385d372d1f00699540316b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/avatar/AvatarValidator.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.data.BdfReader;
 import org.briarproject.bramble.api.data.BdfReaderFactory;
 import org.briarproject.bramble.api.data.MetadataEncoder;
 import org.briarproject.bramble.api.db.Metadata;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.Message;
@@ -15,6 +14,7 @@ import org.briarproject.bramble.api.sync.MessageContext;
 import org.briarproject.bramble.api.sync.validation.MessageValidator;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.attachment.CountingInputStream;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogFactoryImpl.java
index ca7887f0d76707b9b7c3fde120bbd71d39a34938..ae71e5b8d3ab29127b6339e7bc7d3b5f58a3f412 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogFactoryImpl.java
@@ -4,11 +4,11 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupFactory;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.blog.BlogFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
index c37c8c2908f59cfb27958475bce186b599408577..2c55ff4fd391d62eba633c107a9ca1a20573ac19 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
@@ -17,7 +17,6 @@ import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
@@ -33,6 +32,7 @@ import org.briarproject.briar.api.blog.MessageType;
 import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostFactoryImpl.java
index 12e2ff435376db418c0d2018cb319c5d16ec0f63..4bef7fe854b86cffae9212697a3d13f77572fc3c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostFactoryImpl.java
@@ -4,7 +4,6 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
@@ -13,6 +12,7 @@ import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.api.blog.BlogPost;
 import org.briarproject.briar.api.blog.BlogPostFactory;
 import org.briarproject.briar.api.blog.MessageType;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostValidator.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostValidator.java
index 86347dd3445a8d1cf67f64a492aea1da2a36243b..d4c1352814773ecb3bfd5776ad319f39c805a087 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostValidator.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupFactory;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
@@ -19,6 +18,7 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.blog.BlogFactory;
 import org.briarproject.briar.api.blog.MessageType;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.Collection;
diff --git a/briar-core/src/main/java/org/briarproject/briar/client/ConversationClientImpl.java b/briar-core/src/main/java/org/briarproject/briar/client/ConversationClientImpl.java
index aeae278996dba0c21df3e3a2acb1caf692f38c14..a7a2a5e8d065f94390ada96a536a6f7321899284 100644
--- a/briar-core/src/main/java/org/briarproject/briar/client/ConversationClientImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/client/ConversationClientImpl.java
@@ -8,11 +8,11 @@ import org.briarproject.bramble.api.data.MetadataParser;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.client.MessageTracker;
 import org.briarproject.briar.api.client.MessageTracker.GroupCount;
 import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/client/MessageTrackerImpl.java b/briar-core/src/main/java/org/briarproject/briar/client/MessageTrackerImpl.java
index 4c7c650308169c8d17a809b5adc9abf14c6815d0..1da61592699f8dff365a6be32ce810913975756f 100644
--- a/briar-core/src/main/java/org/briarproject/briar/client/MessageTrackerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/client/MessageTrackerImpl.java
@@ -7,12 +7,12 @@ import org.briarproject.bramble.api.data.BdfEntry;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.client.MessageTracker;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/client/MessageTreeImpl.java b/briar-core/src/main/java/org/briarproject/briar/client/MessageTreeImpl.java
index caca96b115f33b76a4efe7e4f362c4802efb2dd3..7f08fe97be2007868551644aa4de1417171a4b90 100644
--- a/briar-core/src/main/java/org/briarproject/briar/client/MessageTreeImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/client/MessageTreeImpl.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.client;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.MessageTree;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-core/src/main/java/org/briarproject/briar/conversation/ConversationManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/conversation/ConversationManagerImpl.java
index d1f04ffcccc94ddf245d9b622ae9da5607c516c4..ee2589f42b83420c2b4f6fe35e23fe6857728823 100644
--- a/briar-core/src/main/java/org/briarproject/briar/conversation/ConversationManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/conversation/ConversationManagerImpl.java
@@ -6,7 +6,6 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
@@ -17,6 +16,7 @@ import org.briarproject.briar.api.conversation.ConversationManager;
 import org.briarproject.briar.api.conversation.ConversationMessageHeader;
 import org.briarproject.briar.api.conversation.DeletionResult;
 import org.briarproject.briar.api.conversation.event.ConversationMessageTrackedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-core/src/main/java/org/briarproject/briar/feed/FeedManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/feed/FeedManagerImpl.java
index 323bf7cfa8521964c75da1cdc1d6dd0ce7d7b786..b200ec451cfd407ccc9da23ce6cbd595c18874a0 100644
--- a/briar-core/src/main/java/org/briarproject/briar/feed/FeedManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/feed/FeedManagerImpl.java
@@ -22,7 +22,6 @@ import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TorConstants;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.plugin.event.TransportActiveEvent;
@@ -40,6 +39,7 @@ import org.briarproject.briar.api.blog.BlogPost;
 import org.briarproject.briar.api.blog.BlogPostFactory;
 import org.briarproject.briar.api.feed.Feed;
 import org.briarproject.briar.api.feed.FeedManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-core/src/main/java/org/briarproject/briar/forum/ForumFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/forum/ForumFactoryImpl.java
index e49acc5eef62ac7809b2d9a6c1589feb0bdedadf..4237cdc541821eb1fbbfd39cc493a5492d54c3fb 100644
--- a/briar-core/src/main/java/org/briarproject/briar/forum/ForumFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/forum/ForumFactoryImpl.java
@@ -3,12 +3,12 @@ package org.briarproject.briar.forum;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupFactory;
 import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.api.forum.Forum;
 import org.briarproject.briar.api.forum.ForumFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.SecureRandom;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java
index a5dc6cebccdeca0be1ea3c32e149dcb0e613849c..1bd80f4e3b430140f0e901764ea942a5a51d64b2 100644
--- a/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java
@@ -12,7 +12,6 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
@@ -28,6 +27,7 @@ import org.briarproject.briar.api.forum.ForumPostHeader;
 import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
diff --git a/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostFactoryImpl.java
index c07987d9cc04f4d3fa48b581726d0956a7c2a1c1..a27df2acf35ee3ccae483275de9c0c54d5e8ea80 100644
--- a/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostFactoryImpl.java
@@ -4,12 +4,12 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.forum.ForumPost;
 import org.briarproject.briar.api.forum.ForumPostFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostValidator.java b/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostValidator.java
index 818a9b9e36ffeacb8f3cef2f84516e7f5ee8fcf5..429e99330cd2ee17b0eaa0264d102cb5623b4f0a 100644
--- a/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostValidator.java
@@ -9,12 +9,12 @@ import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.Collection;
diff --git a/briar-core/src/main/java/org/briarproject/briar/identity/AuthorManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/identity/AuthorManagerImpl.java
index 7b1b64ec03f7f2b2b9f2797b9ac086243611adfe..22516904763b3ead4bd20b8f347143da0c3edf15 100644
--- a/briar-core/src/main/java/org/briarproject/briar/identity/AuthorManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/identity/AuthorManagerImpl.java
@@ -7,11 +7,11 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.avatar.AvatarManager;
 import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/AbortMessage.java b/briar-core/src/main/java/org/briarproject/briar/introduction/AbortMessage.java
index fe90afa3c951fbeba9194dda295c74bfa9648d93..5c0140baf2caee0765499489a59f4b0e3af78529 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/AbortMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/AbortMessage.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractIntroductionMessage.java b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractIntroductionMessage.java
index d72130337f265e2b050a144d1631b699befbeac7..5de9ce8702dc5eba2fc4c0209dc427c43ae9bf2d 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractIntroductionMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractIntroductionMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java
index faf65ae15711f3e45657bd4c918d065dea1c0ae7..3f664bee70f46fb4da3f329445bd24bd6e402f64 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java
@@ -15,7 +15,6 @@ import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -31,6 +30,7 @@ import org.briarproject.briar.api.identity.AuthorInfo;
 import org.briarproject.briar.api.identity.AuthorManager;
 import org.briarproject.briar.api.introduction.IntroductionResponse;
 import org.briarproject.briar.api.introduction.event.IntroductionResponseReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/AcceptMessage.java b/briar-core/src/main/java/org/briarproject/briar/introduction/AcceptMessage.java
index e021ff7f853ab6cf04f393d38b05e3a7aec66e36..06870f3e131e01b6e152f82447eada9337f6a7d8 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/AcceptMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/AcceptMessage.java
@@ -1,12 +1,12 @@
 package org.briarproject.briar.introduction;
 
 import org.briarproject.bramble.api.crypto.PublicKey;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/ActivateMessage.java b/briar-core/src/main/java/org/briarproject/briar/introduction/ActivateMessage.java
index 4f53f2c322c5b563ccc32802daf3a13a33fdf248..e2ccda64680aa53cd80f8465af7ea1e051482246 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/ActivateMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/ActivateMessage.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/AuthMessage.java b/briar-core/src/main/java/org/briarproject/briar/introduction/AuthMessage.java
index 09c09c35b97b45decd6495725ffcae386740b5c7..dd511166fd5d0568f14391f663cb68193b710284 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/AuthMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/AuthMessage.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/DeclineMessage.java b/briar-core/src/main/java/org/briarproject/briar/introduction/DeclineMessage.java
index 631312019d5d336f01b2a9fabaf1a19e9fccf52f..137cd8abb0c9637c2d2d223b9ec1a400454ecee5 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/DeclineMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/DeclineMessage.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java
index 700317da9a70296bccd71ff3d9a06de0e7ea459f..6d48a89c5f2a2960b8fe70d269f25470ba732313 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java
@@ -17,7 +17,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
@@ -37,6 +36,7 @@ import org.briarproject.briar.api.identity.AuthorManager;
 import org.briarproject.briar.api.introduction.IntroductionRequest;
 import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
 import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.Collection;
@@ -49,7 +49,6 @@ import javax.inject.Inject;
 
 import static java.lang.Math.max;
 import static java.util.logging.Level.WARNING;
-import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
 import static org.briarproject.bramble.api.system.Clock.MIN_REASONABLE_TIME_MS;
 import static org.briarproject.bramble.util.LogUtils.logException;
 import static org.briarproject.briar.introduction.IntroduceeState.AWAIT_AUTH;
@@ -59,6 +58,7 @@ import static org.briarproject.briar.introduction.IntroduceeState.LOCAL_DECLINED
 import static org.briarproject.briar.introduction.IntroduceeState.REMOTE_ACCEPTED;
 import static org.briarproject.briar.introduction.IntroduceeState.REMOTE_DECLINED;
 import static org.briarproject.briar.introduction.IntroduceeState.START;
+import static org.briarproject.nullsafety.NullSafety.requireNonNull;
 
 @Immutable
 @NotNullByDefault
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeSession.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeSession.java
index 80f9d95b3d11cdf2e9bc834bed7932d7fb0866ab..1f7412a2f7853ceb64d4670fb756bfa042c22adb 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeSession.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeSession.java
@@ -4,7 +4,6 @@ import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -13,6 +12,7 @@ import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.transport.KeySetId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.introduction.Role;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeState.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeState.java
index c422af82a661e69d2366d7d0f6eb0cba2929b658..a86ae6ec75ec876f203189dc0de5e1643f386ddd 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeState.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeState.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.introduction;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java
index 1fdc76c73f8b3a2f0b4f92cace409efbe64481c9..39396518e7ba4678bffc4450770f01fd1ad790c4 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
@@ -21,6 +20,7 @@ import org.briarproject.briar.api.conversation.ConversationManager;
 import org.briarproject.briar.api.identity.AuthorManager;
 import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
 import org.briarproject.briar.introduction.IntroducerSession.Introducee;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerSession.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerSession.java
index 70fd6c0ac9bbd4b3dbd12ef10d84f97bbbd3ce40..93b6132dc1bc5f3777ea98e8fdcb42b137c56afc 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerSession.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerSession.java
@@ -1,12 +1,12 @@
 package org.briarproject.briar.introduction;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.introduction.Role;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerState.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerState.java
index 809380647883a32ec6c008ab325173ba0154359e..b8e7eb7b1d31744feee9ee11c342b0e6cd5112f7 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerState.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerState.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.introduction;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionCryptoImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionCryptoImpl.java
index 877c95d4548c961fe39de3ca75e5b78f26bda8be..0cfae7b02be8c68d1d28dc79149d5baaf2403211 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionCryptoImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionCryptoImpl.java
@@ -10,10 +10,10 @@ import org.briarproject.bramble.api.crypto.SecretKey;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.introduction.IntroduceeSession.Common;
 import org.briarproject.briar.introduction.IntroduceeSession.Remote;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
index bc7bf0f3b3b447916dd4ce4362558409b9814d08..b3b1a6077cdd1132407ae4b2af2fa1e365564991 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
@@ -20,7 +20,6 @@ import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Group.Visibility;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -42,6 +41,7 @@ import org.briarproject.briar.api.introduction.IntroductionResponse;
 import org.briarproject.briar.api.introduction.Role;
 import org.briarproject.briar.client.ConversationClientImpl;
 import org.briarproject.briar.introduction.IntroducerSession.Introducee;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionValidator.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionValidator.java
index adaaa0aefa0a1c7cba52f76b3cfa9f1e8847caf5..02fa86274a32678c6fc86f5cf3e1f4b1cff052dc 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionValidator.java
@@ -8,12 +8,12 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoder.java b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoder.java
index 516b3de2aaff86b535bae34fc224ef728556f49f..da73bb221d56bb408c556d885584960ba907a798 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoder.java
@@ -3,13 +3,13 @@ package org.briarproject.briar.introduction;
 import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoderImpl.java
index d4ff9cb4e3af3f3cbf7ce8a32f68900546f92606..c8c5752270ad39e48bd799eb94683b9ddf45ebea 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoderImpl.java
@@ -6,7 +6,6 @@ import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -14,6 +13,7 @@ import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageMetadata.java b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageMetadata.java
index 581f48c4c1483b50384e97ba33d0ba5a0e592d2f..0c8b8e2790bde64e353ced91d30ff6134c4b90b3 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageMetadata.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageMetadata.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParser.java b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParser.java
index 503dd4cc66077228053a147ac1e5dc92b546cfee..a6b158d23a4922f72353ef2b7e1a61f3345389da 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParser.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParser.java
@@ -3,9 +3,9 @@ package org.briarproject.briar.introduction;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface MessageParser {
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParserImpl.java
index 9e0e33309064fd2aac2a4ab6553aab739a9a9732..5fd50c59c288f14f3b0ee1a5e1cfe90490849852 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParserImpl.java
@@ -8,12 +8,12 @@ import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfEntry;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageType.java b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageType.java
index 67365399b0bc22a8627bdf6bba31355116be22ab..54adacb17cadc71022822520e3829d25e1c30ad5 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageType.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageType.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.introduction;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/PeerSession.java b/briar-core/src/main/java/org/briarproject/briar/introduction/PeerSession.java
index 3c453d2fa9e8cc311623768c48362f65b197a2ad..5e6b90ec3b41283557a8c7e042ae49f2aa934683 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/PeerSession.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/PeerSession.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/ProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/ProtocolEngine.java
index 8992b57bbaba7417a76401c1847eceec24e3c612..d0ab46a68347665b2d46d035aec0358564f779f7 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/ProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/ProtocolEngine.java
@@ -3,7 +3,7 @@ package org.briarproject.briar.introduction;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/RequestMessage.java b/briar-core/src/main/java/org/briarproject/briar/introduction/RequestMessage.java
index b192f5e78164e2a9c611501734090a0ea5bfb3b9..65c0b8deda636641eb8a80fb79c7180f1375420d 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/RequestMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/RequestMessage.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.introduction;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/Session.java b/briar-core/src/main/java/org/briarproject/briar/introduction/Session.java
index 086dfb1a2975defaf177206dbce5cb65cac7edcb..ede5edf10ba08b0255eadb0ea29459522dadefcb 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/Session.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/Session.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.introduction;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.introduction.Role;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/SessionEncoder.java b/briar-core/src/main/java/org/briarproject/briar/introduction/SessionEncoder.java
index 70cfff1bba1077426bc4e087cf60a6627829ae3b..1f0333b52ada837c6bbe40e7eeb33ce3e58df1ef 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/SessionEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/SessionEncoder.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.introduction;
 
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SessionEncoder {
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/SessionEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/SessionEncoderImpl.java
index 8f9819cf89e9901449050f7ffadc82c12efa9517..f8c18ba2edb1f83bd09f7183f9eb424b01b45e7a 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/SessionEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/SessionEncoderImpl.java
@@ -4,13 +4,13 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfEntry;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.transport.KeySetId;
 import org.briarproject.briar.introduction.IntroduceeSession.Common;
 import org.briarproject.briar.introduction.IntroduceeSession.Local;
 import org.briarproject.briar.introduction.IntroduceeSession.Remote;
 import org.briarproject.briar.introduction.IntroducerSession.Introducee;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 import java.util.Map.Entry;
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/SessionParser.java b/briar-core/src/main/java/org/briarproject/briar/introduction/SessionParser.java
index c58cac3d951012cbd1298f2283b97e2747f13681..00b8f427212d171b8075b76660deb1b16ebc1bc0 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/SessionParser.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/SessionParser.java
@@ -2,10 +2,10 @@ package org.briarproject.briar.introduction;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.client.SessionId;
 import org.briarproject.briar.api.introduction.Role;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SessionParser {
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/SessionParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/SessionParserImpl.java
index 938a6a7ab23de8d6f8f834c3b9d04f88157837d0..203ebec57791628c5131247da832838db8146d58 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/SessionParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/SessionParserImpl.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.api.crypto.PublicKey;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfEntry;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.TransportId;
 import org.briarproject.bramble.api.properties.TransportProperties;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -20,6 +19,7 @@ import org.briarproject.briar.api.introduction.Role;
 import org.briarproject.briar.introduction.IntroduceeSession.Local;
 import org.briarproject.briar.introduction.IntroduceeSession.Remote;
 import org.briarproject.briar.introduction.IntroducerSession.Introducee;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
index e8beca4397b6b2d98601a77020f9819697865b4b..af0460fd9351c60df5b7a583b289b533390cb8b8 100644
--- a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
@@ -17,7 +17,6 @@ import org.briarproject.bramble.api.db.Metadata;
 import org.briarproject.bramble.api.db.NoSuchMessageException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Group.Visibility;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -44,6 +43,7 @@ import org.briarproject.briar.api.messaging.PrivateMessageFormat;
 import org.briarproject.briar.api.messaging.PrivateMessageHeader;
 import org.briarproject.briar.api.messaging.event.AttachmentReceivedEvent;
 import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageFactoryImpl.java
index a598ce718d104a84f510d642818ebdbdf3ce20ee..921503b4e5712864634abac473622263d22dec65 100644
--- a/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageFactoryImpl.java
@@ -3,12 +3,12 @@ package org.briarproject.briar.messaging;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.briar.api.attachment.AttachmentHeader;
 import org.briarproject.briar.api.messaging.PrivateMessage;
 import org.briarproject.briar.api.messaging.PrivateMessageFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.List;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageValidator.java b/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageValidator.java
index 6cefd59c0b756801f5af5547fe330c9fc886aa73..44fb4f4adf7f0af82f7543542f1bc498ef5fbf6a 100644
--- a/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageValidator.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.api.data.BdfReader;
 import org.briarproject.bramble.api.data.BdfReaderFactory;
 import org.briarproject.bramble.api.data.MetadataEncoder;
 import org.briarproject.bramble.api.db.Metadata;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.Message;
@@ -17,6 +16,7 @@ import org.briarproject.bramble.api.sync.MessageContext;
 import org.briarproject.bramble.api.sync.validation.MessageValidator;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.attachment.CountingInputStream;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageFactoryImpl.java
index a0033ace7b35a144b551e04e0445854939018c3a..faeaeb05aac041d7021c9ff26ced6fda5fa72192 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageFactoryImpl.java
@@ -4,12 +4,12 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.privategroup.GroupMessage;
 import org.briarproject.briar.api.privategroup.GroupMessageFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageValidator.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageValidator.java
index 0c192911295f4c631aa05b971c9367302a22371e..02abed6078c3cd660e943e13888182df72db1852 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageValidator.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.InvalidMessageException;
 import org.briarproject.bramble.api.sync.Message;
@@ -17,6 +16,7 @@ import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.ArrayList;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupFactoryImpl.java
index 864ad23aba1d802980e3b8f09b29758a3fe74608..5c14b19cf973a444186c9d6522294986cd8baf91 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupFactoryImpl.java
@@ -4,12 +4,12 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupFactory;
 import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.SecureRandom;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java
index 0a8577ea965f1be8fe783ad8bbb8756e3ff4044c..3a5ca662aa3256f96ef43d46f86bf0320a80c122 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java
@@ -17,7 +17,6 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
@@ -40,6 +39,7 @@ import org.briarproject.briar.api.privategroup.Visibility;
 import org.briarproject.briar.api.privategroup.event.ContactRelationshipRevealedEvent;
 import org.briarproject.briar.api.privategroup.event.GroupDissolvedEvent;
 import org.briarproject.briar.api.privategroup.event.GroupMessageAddedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbortMessage.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbortMessage.java
index 23d69d074624aaa8d32b3292784428e2eef3ecca..bb74def439f9e564d2552a4b6c718c21eb2fe333 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbortMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbortMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java
index 779d008cf079332369e8211ea8f23f3ada9d2f94..26705cc01e63627bbb3eec0b799e9eab8f6fa0ec 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java
@@ -10,7 +10,6 @@ import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Group.Visibility;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -29,6 +28,7 @@ import org.briarproject.briar.api.privategroup.PrivateGroupManager;
 import org.briarproject.briar.api.privategroup.event.GroupInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Collection;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java
index c56601496df7d4ac1b8ed6c0c4049a5a3848c51e..0f7036671edb7e57e71127b0b60da304db7bde77 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager;
@@ -20,6 +19,7 @@ import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroupManager;
 import org.briarproject.briar.api.privategroup.event.GroupInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorSession.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorSession.java
index f152158248c92e48866a29299ce008b7669dde18..fad32f14549dcfc478646e0dd73100e735583d69 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorSession.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorSession.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorState.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorState.java
index 779618f6c71c26fb5091f3c9a4282909c42ec395..4bc332990a5af8ff188ef9a9578decff0ebc8fef 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorState.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorState.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group.Visibility;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/DeletableGroupInvitationMessage.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/DeletableGroupInvitationMessage.java
index 328180b3f0992addac8d19755be0d3b5d4d0de06..37c156bb63f4d4e780ff34afd6b75e3228e2fbb3 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/DeletableGroupInvitationMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/DeletableGroupInvitationMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationFactoryImpl.java
index 9172e33f6bb2483276c2be10fc0b99a3cd14c8fe..c9074563dfb5845852eeae4f9cc75c9bfa96262b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationFactoryImpl.java
@@ -7,10 +7,10 @@ import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.crypto.PrivateKey;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.AuthorId;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java
index 8e780423448f607f02d4544972816bb492c0bbf6..40d1733f9969f18035a6afe4e5777454e84f2170 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java
@@ -16,7 +16,6 @@ import org.briarproject.bramble.api.db.Metadata;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Group.Visibility;
 import org.briarproject.bramble.api.sync.GroupId;
@@ -39,6 +38,7 @@ import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse;
 import org.briarproject.briar.client.ConversationClientImpl;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationMessage.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationMessage.java
index 9344d52135b0a8c8e84335975b019f5039db685c..05fa2664262972081e8776d9607cdb076263835c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidator.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidator.java
index 34111cf04f96b57de91cace98dc67193a10ccd21..f04d38fa5c4572572535a7d969e5cd692c063c3d 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidator.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
@@ -17,6 +16,7 @@ import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.security.GeneralSecurityException;
 import java.util.Collections;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteMessage.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteMessage.java
index a9dc593294978326aa3fb5ef96f992c00e275a69..e6817802c1d6f1c8aa66ca667547e190a1b745d9 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteMessage.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java
index e53d7116232b8c616d987fe486eeec8909a23235..6ce6d07c6ff2a191c4191742170de1426590ee35 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
@@ -23,6 +22,7 @@ import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroupManager;
 import org.briarproject.briar.api.privategroup.event.GroupInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeSession.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeSession.java
index cade5865cbbd0ad08dc2cf5f6a58d06d6999d1b0..c7001f972612cc25516088dd7222ad286cb49c7a 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeSession.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeSession.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeState.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeState.java
index e44990a894e0119d47900d3a4b6fdb0795783261..c2e16a5633d22b16250d88d7e9111fc763c63c09 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeState.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeState.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group.Visibility;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/JoinMessage.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/JoinMessage.java
index 4b4c2b0ebf8871e08ceb03f2ab8d903de602307b..c3100a4c1e54a75fec73cd749412715d7b6bf1ee 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/JoinMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/JoinMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/LeaveMessage.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/LeaveMessage.java
index a442ba894ea798fde2355635b752d1852edc3fd3..e4cc60fd61182668415784ae41fd8110b487bf8e 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/LeaveMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/LeaveMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoder.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoder.java
index 72e8b91d699ecb100abf6e23d6fe4014461816be..ca29c1312b27af75775d929f92847d7ac5954366 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoder.java
@@ -2,10 +2,10 @@ package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoderImpl.java
index 2ef288951ef4e349966def98630ddd7fca6b7b6f..c324eaf8cc1b241b4097b86d5185510c548114d0 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoderImpl.java
@@ -5,11 +5,11 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageMetadata.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageMetadata.java
index 51812f86d92d5f20e77b8ba34782860ae4f0bca1..5bc9186416d736483243962e88bb4c68532083da 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageMetadata.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageMetadata.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParser.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParser.java
index 8300b305c8c8ba7d299a40694aa56f5cfa85026d..60e70e927d53d38c2fdac134f97a54085b97ac00 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParser.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParser.java
@@ -5,10 +5,10 @@ import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface MessageParser {
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParserImpl.java
index aac5ec988a4dc501167de8b09d8db21a8ea5da36..244ac68532cedafc44c595be4015f6f690ed4d36 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParserImpl.java
@@ -8,12 +8,12 @@ import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.privategroup.PrivateGroup;
 import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageType.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageType.java
index 090d2e193c5f3a4ef42b130416073f9dea6c741a..048e8164f02330f1beb7e20dfebaf9531903b7ed 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageType.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageType.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngine.java
index 42a56ee1855e623b82c8d5682deeb49615879493..10778a5dc93e6bdd8927227c09f7190c6f494f3b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngine.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager;
@@ -18,6 +17,7 @@ import org.briarproject.briar.api.conversation.ConversationManager;
 import org.briarproject.briar.api.privategroup.GroupMessageFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroupManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerSession.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerSession.java
index e0e1b56c071496a5432aca32df650de0eda73b2d..99e2282f1c0e8fb1c7839d0063c47172b003b741 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerSession.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerSession.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerState.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerState.java
index ca7fd08e41b6c8e7154a9a7144595d14d058978e..d74174331a38a655dec65f79b33d4100e05b1eac 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerState.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerState.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group.Visibility;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngine.java
index d44359d896609e98e6d13bfe012442e985b49a46..fd6924d7a2638917730b8f7998f235469b57233c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngine.java
@@ -3,7 +3,7 @@ package org.briarproject.briar.privategroup.invitation;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngineFactory.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngineFactory.java
index 00ddc95b7f2021b3edfd098408bf2f18fbe12308..74a73388a80ca47c10c863b193510cd15ab83ea4 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngineFactory.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngineFactory.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface ProtocolEngineFactory {
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngineFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngineFactoryImpl.java
index b4c7c8bba37a1296d04ffe950f36d114fd077e37..c770be7d7a9c2b2ad005a8e649f5e627c3cba286 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngineFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngineFactoryImpl.java
@@ -3,7 +3,6 @@ package org.briarproject.briar.privategroup.invitation;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.identity.IdentityManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager;
 import org.briarproject.briar.api.autodelete.AutoDeleteManager;
@@ -11,6 +10,7 @@ import org.briarproject.briar.api.conversation.ConversationManager;
 import org.briarproject.briar.api.privategroup.GroupMessageFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroupManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/Role.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/Role.java
index b79794276c00d5b4d0a9d9fe54987a36ca64438b..c9d85bc2275e3b29a649c1fa99d60e79e3b1b551 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/Role.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/Role.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/Session.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/Session.java
index 040ab401a83c1f0e9e459b668b8a3f7fdc2b6fb3..1baef4eedefb389312a9d5fd7d24a1b3ebffbd28 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/Session.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/Session.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionEncoder.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionEncoder.java
index 876a53feae94b7b59576b9dfc30fb645a52a4335..60838c4a556c8bb9b6704844d489ed640bed930c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionEncoder.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SessionEncoder {
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionEncoderImpl.java
index 86fe5e3a044e52dc295e1660726812ac76d8a328..b3b93fa5c06ad8318f683af030d40baa369e0ab4 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionEncoderImpl.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionParser.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionParser.java
index b6d0b61b9891a2eba576467cfba73a661019d4eb..976c5e3df19701802f7598c59fb9af456193adb1 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionParser.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionParser.java
@@ -2,9 +2,9 @@ package org.briarproject.briar.privategroup.invitation;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SessionParser {
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionParserImpl.java
index bbcd5149317d89efc02683d6caa812c53ef32379..a21c80273836588551a42a0988867d31bf1cfd12 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/SessionParserImpl.java
@@ -3,10 +3,10 @@ package org.briarproject.briar.privategroup.invitation;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfEntry;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/AbortMessage.java b/briar-core/src/main/java/org/briarproject/briar/sharing/AbortMessage.java
index 188c0b5013aa017336a2ace5aeb3a769844784b5..5832eb4a87ef6ae8e80e8e0d5f7e9ef72d6d16cb 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/AbortMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/AbortMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/AcceptMessage.java b/briar-core/src/main/java/org/briarproject/briar/sharing/AcceptMessage.java
index 33644cb63dafb6e729cc1c9e3089bff59800f5e6..3c06f85001a022ba6f84e3d0c458477eacb4f6da 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/AcceptMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/AcceptMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogMessageParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogMessageParserImpl.java
index e111bcd1581637f3594c158e018fde243fe3d975..01fe4e0d09181d22da2985e3ce5bae18b0d9450a 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogMessageParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogMessageParserImpl.java
@@ -4,9 +4,9 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.blog.Blog;
 import org.briarproject.briar.api.blog.BlogFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java
index 47169b822f2e070e8eb99e94513bce9b6330b84c..bcc1767ab5d62bee6dd7b3477081a77851448b5a 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
@@ -21,6 +20,7 @@ import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent;
 import org.briarproject.briar.api.conversation.ConversationManager;
 import org.briarproject.briar.api.conversation.ConversationRequest;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java
index 26852845dac5329ed1c1155e6be18d2c24bbd716..33311e5beaa0987fb9aafe30de1ec337b7155c86 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java
@@ -10,7 +10,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager;
 import org.briarproject.briar.api.blog.Blog;
@@ -19,6 +18,7 @@ import org.briarproject.briar.api.blog.BlogManager;
 import org.briarproject.briar.api.blog.BlogManager.RemoveBlogHook;
 import org.briarproject.briar.api.blog.BlogSharingManager;
 import org.briarproject.briar.api.client.MessageTracker;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingValidator.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingValidator.java
index 1f64b02a3c05f892b5ba45bcd5e0049005e89f12..cba2c0e6c7dea531c8b9e4f750e9600ad4cfd49e 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingValidator.java
@@ -5,10 +5,10 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.blog.BlogFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/DeclineMessage.java b/briar-core/src/main/java/org/briarproject/briar/sharing/DeclineMessage.java
index e392ef701a589883ff8c58f495c2b24aa18adf58..0f63e7fe7261439b1682082bd1dff6e47c1196f5 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/DeclineMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/DeclineMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumMessageParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumMessageParserImpl.java
index 76e5569ba07f7c9027120e03df2a0a21af34a343..a9a45335dfdb5fd955faf112fd3b518d975fd4d7 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumMessageParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumMessageParserImpl.java
@@ -3,9 +3,9 @@ package org.briarproject.briar.sharing;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.forum.Forum;
 import org.briarproject.briar.api.forum.ForumFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java
index 0342ee0355780c6d32b66b26633a94f70a0fb930..db53641d46656ff2add672bbb639566dc7b41226 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
@@ -21,6 +20,7 @@ import org.briarproject.briar.api.forum.ForumManager;
 import org.briarproject.briar.api.forum.ForumSharingManager;
 import org.briarproject.briar.api.forum.event.ForumInvitationRequestReceivedEvent;
 import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingManagerImpl.java
index 9b3cd97e16dd9c3893dcf26be9381473f4a53b46..27dc14529d4fcc1c235231ff6e57b2e009b4e3b3 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingManagerImpl.java
@@ -6,7 +6,6 @@ import org.briarproject.bramble.api.data.MetadataParser;
 import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.versioning.ClientVersioningManager;
 import org.briarproject.briar.api.client.MessageTracker;
@@ -15,6 +14,7 @@ import org.briarproject.briar.api.forum.ForumInvitationResponse;
 import org.briarproject.briar.api.forum.ForumManager;
 import org.briarproject.briar.api.forum.ForumManager.RemoveForumHook;
 import org.briarproject.briar.api.forum.ForumSharingManager;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.inject.Inject;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingValidator.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingValidator.java
index dd66181d7f5a63b09069a51afed50cb31edcf645..37acdd25e392696e32b525ba4851a3c3904f8695 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumSharingValidator.java
@@ -4,11 +4,11 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.forum.Forum;
 import org.briarproject.briar.api.forum.ForumFactory;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/InviteMessage.java b/briar-core/src/main/java/org/briarproject/briar/sharing/InviteMessage.java
index d83a3a3f74df0d1629aab1757c1d73cb23dd0bf0..59f9eefcc478af96085823792945b871c154c889 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/InviteMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/InviteMessage.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.sharing.Shareable;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/LeaveMessage.java b/briar-core/src/main/java/org/briarproject/briar/sharing/LeaveMessage.java
index f518570551a286d843616f0792a76f961f03a843..d7e47b475345af9775f21ffc72d7d599f2e4f69b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/LeaveMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/LeaveMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoder.java b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoder.java
index c64bdcafbe8a66181099ab6932ca1909efde5c57..c0294c6e1b35c9947e82e101f1364136b0513dfa 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoder.java
@@ -2,10 +2,10 @@ package org.briarproject.briar.sharing;
 
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoderImpl.java
index 05ef6bd6598146a1b560a6eff27d64eb4aac9df3..51b5c5776f80a40d62f82cf7f92034af468bb191 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoderImpl.java
@@ -4,11 +4,11 @@ import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageMetadata.java b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageMetadata.java
index 212d60810cc761fbb0286720102903ba2776c192..fb505f89f94a79bd29266c57b6a629c30c80909b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageMetadata.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageMetadata.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParser.java b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParser.java
index e164dfdd8d16b3a8053ff6aa148c02d818c179ff..b338a9f68970f436ff59b56294344e5907843d0b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParser.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParser.java
@@ -5,11 +5,11 @@ import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.sharing.Shareable;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface MessageParser<S extends Shareable> {
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParserImpl.java
index bf832bc277aff58d1e6805aba96d48a035cffe08..dd8768bcc122fb4e80bcc51e65c9d614a937a9e5 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParserImpl.java
@@ -7,11 +7,11 @@ import org.briarproject.bramble.api.data.BdfEntry;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.sharing.Shareable;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageType.java b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageType.java
index 1af500a745d73bd0178c44551bc8f88a7fef6e65..bb96c5c10deeab1c2809d0a7cc229ddf53e43fc2 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageType.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageType.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.sharing;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngine.java
index 4f759fe0bf764580974a52088e523e7374197754..6ab15e8c18386e91b408c125600359811c3628b0 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngine.java
@@ -3,8 +3,8 @@ package org.briarproject.briar.sharing;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.briar.api.sharing.Shareable;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngineImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngineImpl.java
index b7c135365f1ef893c6638b1a6ce0d10f67511d30..172954b2a4dc064f86b3e5ee067b633ca028c9b2 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngineImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngineImpl.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.event.Event;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Group.Visibility;
@@ -23,6 +22,7 @@ import org.briarproject.briar.api.client.ProtocolStateException;
 import org.briarproject.briar.api.conversation.ConversationManager;
 import org.briarproject.briar.api.sharing.Shareable;
 import org.briarproject.briar.api.sharing.event.ContactLeftShareableEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.Map;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/Session.java b/briar-core/src/main/java/org/briarproject/briar/sharing/Session.java
index 6e0a5520180d7b3ea984d8b098f324953e109ae0..e9f0c31ecf0149460eed745e00e54552cc867bab 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/Session.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/Session.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SessionEncoder.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SessionEncoder.java
index 61862e8936612d168f425ad1992b7871f244d145..f8487b7c9655e06f6d3657ec76bc6c46b8a4a44a 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SessionEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SessionEncoder.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.sharing;
 
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SessionEncoder {
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SessionEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SessionEncoderImpl.java
index 641731a4aa9180cbb7dcb62545866ddce137b014..2453d0a93131ac1acb9d01aec4f9f3640929524e 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SessionEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SessionEncoderImpl.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.sharing;
 
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SessionParser.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SessionParser.java
index 2467573b6c7ad0aeb70b5764f6391ec0c87385c8..7eb84706bd55352187a17cc2339e7bcc28cb26a4 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SessionParser.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SessionParser.java
@@ -2,9 +2,9 @@ package org.briarproject.briar.sharing;
 
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 @NotNullByDefault
 interface SessionParser {
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SessionParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SessionParserImpl.java
index 1c2eaa49865c843420ebf36e4ab766fb411129a1..a29b25e0c10093f123b8f66254d8395306c5c863 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SessionParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SessionParserImpl.java
@@ -3,10 +3,10 @@ package org.briarproject.briar.sharing;
 import org.briarproject.bramble.api.FormatException;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfEntry;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.briar.api.client.SessionId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
index 5ef16e12fb300484b80f733e667363661a2010e2..22473416f0ddaac49d9d4f997f397ae147bb4156 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
@@ -15,7 +15,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Metadata;
 import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.ClientId;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Group.Visibility;
@@ -36,6 +35,7 @@ import org.briarproject.briar.api.sharing.Shareable;
 import org.briarproject.briar.api.sharing.SharingInvitationItem;
 import org.briarproject.briar.api.sharing.SharingManager;
 import org.briarproject.briar.client.ConversationClientImpl;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingMessage.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingMessage.java
index 5d18579e050e284a82869f78c81d77876c4169b0..5a58135699ba2b3961624fb94d2d0e98f7afd925 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingMessage.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.sharing;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingValidator.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingValidator.java
index 4698ff0e2535feb30a01a13a45e5857fb4849914..e03af82d773a563b80db34a24589b5b3807dbac4 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingValidator.java
@@ -8,12 +8,12 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.api.data.MetadataEncoder;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.system.Clock;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/State.java b/briar-core/src/main/java/org/briarproject/briar/sharing/State.java
index 18defd67147951c76f50209c25679185526a0670..4d8c47f789f8cd0c4f554358583189e4ea31e564 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/State.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/State.java
@@ -1,8 +1,8 @@
 package org.briarproject.briar.sharing;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group.Visibility;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.concurrent.Immutable;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java b/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java
index 474237ada5fdfdc5ce94f46cb12365abd350f75c..7bc6d4ec72332d70d8dbb8f3b1cf6939f1e2218d 100644
--- a/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java
@@ -13,7 +13,6 @@ import org.briarproject.bramble.api.identity.AuthorId;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.IoExecutor;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.plugin.BluetoothConstants;
 import org.briarproject.bramble.api.plugin.LanTcpConstants;
 import org.briarproject.bramble.api.plugin.TorConstants;
@@ -40,6 +39,7 @@ import org.briarproject.briar.api.messaging.PrivateMessage;
 import org.briarproject.briar.api.messaging.PrivateMessageFactory;
 import org.briarproject.briar.api.test.TestAvatarCreator;
 import org.briarproject.briar.api.test.TestDataCreator;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-core/src/main/java/org/briarproject/briar/util/HtmlUtils.java b/briar-core/src/main/java/org/briarproject/briar/util/HtmlUtils.java
index 0a312c67390a3acdc136c46a95b4191a1c49b139..37c5775a2150db6c970f2cd59c711ea169ace737 100644
--- a/briar-core/src/main/java/org/briarproject/briar/util/HtmlUtils.java
+++ b/briar-core/src/main/java/org/briarproject/briar/util/HtmlUtils.java
@@ -1,6 +1,6 @@
 package org.briarproject.briar.util;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.jsoup.Jsoup;
 import org.jsoup.safety.Safelist;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/util/ValidationUtils.java b/briar-core/src/main/java/org/briarproject/briar/util/ValidationUtils.java
index 58b8ddf6c2dbf715e66e5f6d6bcb0960a1509bb5..56f4f5a63c20877636972c4e206ece29e780ea05 100644
--- a/briar-core/src/main/java/org/briarproject/briar/util/ValidationUtils.java
+++ b/briar-core/src/main/java/org/briarproject/briar/util/ValidationUtils.java
@@ -1,7 +1,7 @@
 package org.briarproject.briar.util;
 
 import org.briarproject.bramble.api.FormatException;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
diff --git a/briar-core/src/test/java/org/briarproject/briar/client/MessageTreeImplTest.java b/briar-core/src/test/java/org/briarproject/briar/client/MessageTreeImplTest.java
index f324990ac053a29617ed36b8b7fb2a824a9bc610..f4973d12a7099fc0b773500d86bc8ae36711f0ba 100644
--- a/briar-core/src/test/java/org/briarproject/briar/client/MessageTreeImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/client/MessageTreeImplTest.java
@@ -1,9 +1,9 @@
 package org.briarproject.briar.client;
 
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.client.MessageTree;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.Test;
 
 import java.util.Arrays;
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java
index dd980aa18d80ac532705741c911534f9bb250464..68ea9011995177cd4ebf732f5d100e0c943862a8 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java
@@ -16,9 +16,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
 import org.briarproject.bramble.api.identity.Author;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.properties.TransportPropertyManager;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.Message;
@@ -36,6 +33,9 @@ import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
 import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent;
 import org.briarproject.briar.api.introduction.event.IntroductionResponseReceivedEvent;
 import org.briarproject.briar.test.BriarIntegrationTest;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java
index ba63b7bda0473fd38beba0b1a2a6e1874f9c6f2f..1c11bd79a3cdff1a814b9dc5284ea76a21a486bc 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/SimplexMessagingIntegrationTest.java
@@ -9,7 +9,6 @@ import org.briarproject.bramble.api.identity.Author;
 import org.briarproject.bramble.api.identity.Identity;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.api.sync.event.MessageStateChangedEvent;
@@ -24,6 +23,7 @@ import org.briarproject.briar.api.messaging.PrivateMessage;
 import org.briarproject.briar.api.messaging.PrivateMessageFactory;
 import org.briarproject.briar.api.messaging.event.AttachmentReceivedEvent;
 import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
index 173d3bebf091031e4e36fde6f436cf5ee629bcc0..e3578248f78012ca64fc895b46e733cfdd6b3591 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
@@ -7,7 +7,6 @@ import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.NoSuchGroupException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.test.TestDatabaseConfigModule;
 import org.briarproject.briar.api.blog.Blog;
@@ -23,6 +22,7 @@ import org.briarproject.briar.api.conversation.ConversationResponse;
 import org.briarproject.briar.test.BriarIntegrationTest;
 import org.briarproject.briar.test.BriarIntegrationTestComponent;
 import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
index a9304901806522988191df78348089fa8d989e0f..50f288d1e8ea3fb53df70f323b0043d818e2e094 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
@@ -30,6 +29,7 @@ import org.briarproject.briar.api.sharing.SharingInvitationItem;
 import org.briarproject.briar.test.BriarIntegrationTest;
 import org.briarproject.briar.test.BriarIntegrationTestComponent;
 import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
+import org.briarproject.nullsafety.NotNullByDefault;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
diff --git a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTest.java
index 71830e597873a6e6f93683d45d0eb7094748dc2e..220ba21f8cb2b21c7354aa83ded35f5fba2bfda2 100644
--- a/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/test/BriarIntegrationTest.java
@@ -13,8 +13,6 @@ import org.briarproject.bramble.api.identity.Identity;
 import org.briarproject.bramble.api.identity.IdentityManager;
 import org.briarproject.bramble.api.identity.LocalAuthor;
 import org.briarproject.bramble.api.lifecycle.LifecycleManager;
-import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.MessageFactory;
 import org.briarproject.bramble.api.sync.MessageId;
 import org.briarproject.bramble.test.BrambleIntegrationTest;
@@ -28,6 +26,8 @@ import org.briarproject.briar.api.forum.ForumPostFactory;
 import org.briarproject.briar.api.privategroup.GroupMessageFactory;
 import org.briarproject.briar.api.privategroup.PrivateGroupFactory;
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory;
+import org.briarproject.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.nullsafety.ParametersNotNullByDefault;
 import org.junit.After;
 import org.junit.Before;
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/test/TestEventListener.java b/briar-core/src/test/java/org/briarproject/briar/test/TestEventListener.java
index c4a52f701f9080de09530dd40afd80634a3cf9bc..f2d68331d6ca0ffb2d97714623fdb1d8a098646f 100644
--- a/briar-core/src/test/java/org/briarproject/briar/test/TestEventListener.java
+++ b/briar-core/src/test/java/org/briarproject/briar/test/TestEventListener.java
@@ -2,7 +2,7 @@ package org.briarproject.briar.test;
 
 import org.briarproject.bramble.api.event.Event;
 import org.briarproject.bramble.api.event.EventListener;
-import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+import org.briarproject.nullsafety.NotNullByDefault;
 
 import java.util.concurrent.atomic.AtomicReference;