From e4e7d84bde9e1d89b39431988a35086017416d44 Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Thu, 29 Sep 2022 13:08:02 +0100
Subject: [PATCH 1/2] Use null safety library.

---
 .../bramble/api/system/AlarmListener.java     |  2 +-
 .../bramble/api/system/AndroidWakeLock.java   |  2 +-
 .../api/system/AndroidWakeLockManager.java    |  2 +-
 .../network/AndroidNetworkManager.java        |  6 +--
 .../AndroidBluetoothConnectionFactory.java    |  2 +-
 .../bluetooth/AndroidBluetoothPlugin.java     |  4 +-
 .../AndroidBluetoothPluginFactory.java        |  2 +-
 .../AndroidBluetoothTransportConnection.java  |  2 +-
 .../file/AndroidRemovableDrivePlugin.java     |  2 +-
 .../AndroidRemovableDrivePluginFactory.java   |  2 +-
 .../plugin/tcp/AndroidLanTcpPlugin.java       |  4 +-
 .../tcp/AndroidLanTcpPluginFactory.java       |  2 +-
 .../bramble/plugin/tor/AndroidTorPlugin.java  |  4 +-
 .../plugin/tor/AndroidTorPluginFactory.java   |  2 +-
 .../bramble/system/AlarmConstants.java        |  2 +-
 .../bramble/system/AndroidLocationUtils.java  |  2 +-
 .../system/AndroidResourceProvider.java       |  2 +-
 .../system/AndroidSecureRandomProvider.java   |  2 +-
 .../bramble/system/AndroidTaskScheduler.java  |  2 +-
 .../bramble/system/AndroidWakeLockImpl.java   |  2 +-
 .../system/AndroidWakeLockManagerImpl.java    |  4 +-
 .../bramble/system/RenewableWakeLock.java     |  4 +-
 .../bramble/system/SharedWakeLock.java        |  2 +-
 .../bramble/util/AndroidUtils.java            |  4 +-
 bramble-api/build.gradle                      |  2 +
 .../org/briarproject/bramble/api/Bytes.java   |  2 +-
 .../briarproject/bramble/api/Consumer.java    |  2 +-
 .../briarproject/bramble/api/Multiset.java    |  2 +-
 .../briarproject/bramble/api/Nameable.java    |  2 +-
 .../org/briarproject/bramble/api/Pair.java    |  2 +-
 .../briarproject/bramble/api/Predicate.java   |  2 +-
 .../briarproject/bramble/api/UniqueId.java    |  2 +-
 .../bramble/api/WeakSingletonProvider.java    |  2 +-
 .../bramble/api/account/AccountManager.java   |  2 +-
 .../bramble/api/cleanup/CleanupHook.java      |  2 +-
 .../bramble/api/cleanup/CleanupManager.java   |  2 +-
 .../event/CleanupTimerStartedEvent.java       |  2 +-
 .../api/client/BdfIncomingMessageHook.java    |  2 +-
 .../bramble/api/client/BdfMessageContext.java |  2 +-
 .../api/client/BdfMessageValidator.java       |  2 +-
 .../bramble/api/client/ClientHelper.java      |  2 +-
 .../api/client/ContactGroupFactory.java       |  2 +-
 .../api/connection/ConnectionManager.java     |  2 +-
 .../api/connection/ConnectionRegistry.java    |  2 +-
 .../connection/InterruptibleConnection.java   |  2 +-
 .../bramble/api/contact/Contact.java          |  2 +-
 .../api/contact/ContactExchangeManager.java   |  2 +-
 .../bramble/api/contact/ContactId.java        |  2 +-
 .../bramble/api/contact/ContactManager.java   |  2 +-
 .../bramble/api/contact/HandshakeManager.java |  2 +-
 .../bramble/api/contact/PendingContact.java   |  2 +-
 .../bramble/api/contact/PendingContactId.java |  2 +-
 .../api/contact/event/ContactAddedEvent.java  |  2 +-
 .../event/ContactAliasChangedEvent.java       |  2 +-
 .../contact/event/ContactRemovedEvent.java    |  2 +-
 .../contact/event/ContactVerifiedEvent.java   |  2 +-
 .../event/PendingContactAddedEvent.java       |  2 +-
 .../event/PendingContactRemovedEvent.java     |  2 +-
 .../PendingContactStateChangedEvent.java      |  2 +-
 .../api/crypto/AgreementPrivateKey.java       |  2 +-
 .../api/crypto/AgreementPublicKey.java        |  2 +-
 .../bramble/api/crypto/CryptoComponent.java   |  2 +-
 .../api/crypto/DecryptionException.java       |  2 +-
 .../bramble/api/crypto/KeyPair.java           |  2 +-
 .../bramble/api/crypto/KeyParser.java         |  2 +-
 .../bramble/api/crypto/KeyStrengthener.java   |  2 +-
 .../api/crypto/PasswordStrengthEstimator.java |  2 +-
 .../bramble/api/crypto/PrivateKey.java        |  2 +-
 .../bramble/api/crypto/PublicKey.java         |  2 +-
 .../api/crypto/SignaturePrivateKey.java       |  2 +-
 .../api/crypto/SignaturePublicKey.java        |  2 +-
 .../bramble/api/crypto/StreamDecrypter.java   |  2 +-
 .../api/crypto/StreamDecrypterFactory.java    |  2 +-
 .../bramble/api/crypto/StreamEncrypter.java   |  2 +-
 .../api/crypto/StreamEncrypterFactory.java    |  2 +-
 .../bramble/api/data/BdfEntry.java            |  2 +-
 .../bramble/api/data/BdfReader.java           |  2 +-
 .../bramble/api/data/BdfReaderFactory.java    |  2 +-
 .../bramble/api/data/BdfStringUtils.java      |  2 +-
 .../bramble/api/data/BdfWriterFactory.java    |  2 +-
 .../bramble/api/data/MetadataEncoder.java     |  2 +-
 .../bramble/api/data/MetadataParser.java      |  2 +-
 .../bramble/api/db/DatabaseComponent.java     |  2 +-
 .../bramble/api/db/DatabaseConfig.java        |  2 +-
 .../bramble/api/db/DbCallable.java            |  2 +-
 .../bramble/api/db/DbRunnable.java            |  2 +-
 .../bramble/api/db/NullableDbCallable.java    |  2 +-
 .../bramble/api/db/TransactionManager.java    |  2 +-
 .../bramble/api/event/EventBus.java           |  2 +-
 .../bramble/api/event/EventListener.java      |  2 +-
 .../bramble/api/identity/Author.java          |  2 +-
 .../bramble/api/identity/AuthorFactory.java   |  2 +-
 .../bramble/api/identity/AuthorId.java        |  2 +-
 .../bramble/api/identity/Identity.java        |  2 +-
 .../bramble/api/identity/IdentityManager.java |  2 +-
 .../bramble/api/identity/LocalAuthor.java     |  2 +-
 .../identity/event/IdentityAddedEvent.java    |  2 +-
 .../identity/event/IdentityRemovedEvent.java  |  2 +-
 .../keyagreement/KeyAgreementConnection.java  |  2 +-
 .../api/keyagreement/KeyAgreementTask.java    |  2 +-
 .../bramble/api/keyagreement/Payload.java     |  2 +-
 .../api/keyagreement/PayloadEncoder.java      |  2 +-
 .../api/keyagreement/PayloadParser.java       |  2 +-
 .../api/keyagreement/TransportDescriptor.java |  2 +-
 .../event/KeyAgreementAbortedEvent.java       |  2 +-
 .../event/KeyAgreementFinishedEvent.java      |  2 +-
 .../event/KeyAgreementListeningEvent.java     |  2 +-
 .../api/lifecycle/LifecycleManager.java       |  2 +-
 .../api/lifecycle/ShutdownManager.java        |  2 +-
 .../mailbox/InvalidMailboxIdException.java    |  2 +-
 .../bramble/api/mailbox/MailboxAuthToken.java |  2 +-
 .../bramble/api/mailbox/MailboxFileId.java    |  2 +-
 .../bramble/api/mailbox/MailboxFolderId.java  |  2 +-
 .../bramble/api/mailbox/MailboxHelper.java    |  2 +-
 .../bramble/api/mailbox/MailboxId.java        |  2 +-
 .../api/mailbox/MailboxPairingTask.java       |  2 +-
 .../api/mailbox/MailboxProperties.java        |  4 +-
 .../api/mailbox/MailboxSettingsManager.java   |  2 +-
 .../bramble/api/mailbox/MailboxStatus.java    |  2 +-
 .../bramble/api/mailbox/MailboxUpdate.java    |  2 +-
 .../api/mailbox/MailboxUpdateManager.java     |  2 +-
 .../api/mailbox/MailboxUpdateWithMailbox.java |  2 +-
 .../bramble/api/mailbox/MailboxVersion.java   |  2 +-
 .../api/mailbox/event/MailboxPairedEvent.java |  2 +-
 .../mailbox/event/MailboxProblemEvent.java    |  2 +-
 .../mailbox/event/MailboxUnpairedEvent.java   |  2 +-
 .../MailboxUpdateSentToNewContactEvent.java   |  2 +-
 .../OwnMailboxConnectionStatusEvent.java      |  2 +-
 .../event/RemoteMailboxUpdateEvent.java       |  2 +-
 .../bramble/api/network/NetworkManager.java   |  2 +-
 .../bramble/api/network/NetworkStatus.java    |  2 +-
 .../api/network/event/NetworkStatusEvent.java |  2 +-
 .../nullsafety/FieldsNotNullByDefault.java    | 26 ------------
 .../nullsafety/MethodsNotNullByDefault.java   | 28 -------------
 .../api/nullsafety/NotNullByDefault.java      | 32 ---------------
 .../bramble/api/nullsafety/NullSafety.java    | 40 -------------------
 .../ParametersNotNullByDefault.java           | 28 -------------
 .../bramble/api/plugin/ConnectionHandler.java |  2 +-
 .../bramble/api/plugin/Plugin.java            |  2 +-
 .../bramble/api/plugin/PluginCallback.java    |  2 +-
 .../bramble/api/plugin/PluginConfig.java      |  2 +-
 .../bramble/api/plugin/PluginFactory.java     |  2 +-
 .../bramble/api/plugin/PluginManager.java     |  2 +-
 .../api/plugin/TransportConnectionReader.java |  2 +-
 .../api/plugin/TransportConnectionWriter.java |  2 +-
 .../AbstractDuplexTransportConnection.java    |  2 +-
 .../api/plugin/duplex/DuplexPlugin.java       |  2 +-
 .../plugin/duplex/DuplexPluginFactory.java    |  2 +-
 .../duplex/DuplexTransportConnection.java     |  2 +-
 .../plugin/event/ConnectionClosedEvent.java   |  2 +-
 .../plugin/event/ConnectionOpenedEvent.java   |  2 +-
 .../plugin/event/ContactConnectedEvent.java   |  2 +-
 .../event/ContactDisconnectedEvent.java       |  2 +-
 .../plugin/event/TransportActiveEvent.java    |  2 +-
 .../plugin/event/TransportInactiveEvent.java  |  2 +-
 .../api/plugin/event/TransportStateEvent.java |  2 +-
 .../plugin/file/RemovableDriveManager.java    |  2 +-
 .../api/plugin/file/RemovableDriveTask.java   |  2 +-
 .../api/plugin/simplex/SimplexPlugin.java     |  2 +-
 .../plugin/simplex/SimplexPluginFactory.java  |  2 +-
 .../properties/TransportPropertyManager.java  |  2 +-
 ...RemoteTransportPropertiesUpdatedEvent.java |  2 +-
 .../bramble/api/record/Record.java            |  2 +-
 .../bramble/api/record/RecordReader.java      |  2 +-
 .../bramble/api/record/RecordWriter.java      |  2 +-
 .../bramble/api/reliability/ReadHandler.java  |  2 +-
 .../api/reliability/ReliabilityLayer.java     |  2 +-
 .../reliability/ReliabilityLayerFactory.java  |  2 +-
 .../bramble/api/reliability/WriteHandler.java |  2 +-
 .../api/rendezvous/KeyMaterialSource.java     |  2 +-
 .../RendezvousConnectionClosedEvent.java      |  2 +-
 .../RendezvousConnectionOpenedEvent.java      |  2 +-
 .../rendezvous/event/RendezvousPollEvent.java |  2 +-
 .../bramble/api/reporting/DevConfig.java      |  2 +-
 .../bramble/api/reporting/DevReporter.java    |  2 +-
 .../bramble/api/settings/SettingsManager.java |  2 +-
 .../settings/event/SettingsUpdatedEvent.java  |  2 +-
 .../briarproject/bramble/api/sync/Ack.java    |  2 +-
 .../bramble/api/sync/ClientId.java            |  2 +-
 .../bramble/api/sync/GroupFactory.java        |  2 +-
 .../bramble/api/sync/GroupId.java             |  2 +-
 .../bramble/api/sync/Message.java             |  2 +-
 .../bramble/api/sync/MessageContext.java      |  2 +-
 .../bramble/api/sync/MessageFactory.java      |  2 +-
 .../bramble/api/sync/MessageId.java           |  2 +-
 .../briarproject/bramble/api/sync/Offer.java  |  2 +-
 .../api/sync/OutgoingSessionRecord.java       |  2 +-
 .../bramble/api/sync/Priority.java            |  2 +-
 .../bramble/api/sync/PriorityHandler.java     |  2 +-
 .../bramble/api/sync/Request.java             |  2 +-
 .../bramble/api/sync/SyncRecordReader.java    |  2 +-
 .../api/sync/SyncRecordReaderFactory.java     |  2 +-
 .../bramble/api/sync/SyncRecordWriter.java    |  2 +-
 .../api/sync/SyncRecordWriterFactory.java     |  2 +-
 .../bramble/api/sync/SyncSessionFactory.java  |  2 +-
 .../bramble/api/sync/Versions.java            |  2 +-
 .../sync/event/CloseSyncConnectionsEvent.java |  2 +-
 .../api/sync/event/GroupAddedEvent.java       |  2 +-
 .../api/sync/event/GroupRemovedEvent.java     |  2 +-
 .../event/GroupVisibilityUpdatedEvent.java    |  2 +-
 .../api/sync/event/MessageAddedEvent.java     |  2 +-
 .../api/sync/event/MessageRequestedEvent.java |  2 +-
 .../api/sync/event/MessageSharedEvent.java    |  2 +-
 .../sync/event/MessageStateChangedEvent.java  |  2 +-
 .../api/sync/event/MessageToAckEvent.java     |  2 +-
 .../api/sync/event/MessageToRequestEvent.java |  2 +-
 .../api/sync/event/MessagesAckedEvent.java    |  2 +-
 .../api/sync/event/MessagesSentEvent.java     |  2 +-
 .../sync/event/SyncVersionsUpdatedEvent.java  |  2 +-
 .../sync/validation/ValidationManager.java    |  2 +-
 .../bramble/api/system/LocationUtils.java     |  2 +-
 .../bramble/api/system/ResourceProvider.java  |  2 +-
 .../api/system/SecureRandomProvider.java      |  2 +-
 .../bramble/api/system/TaskScheduler.java     |  2 +-
 .../bramble/api/transport/IncomingKeys.java   |  2 +-
 .../bramble/api/transport/KeySetId.java       |  2 +-
 .../bramble/api/transport/OutgoingKeys.java   |  2 +-
 .../bramble/api/transport/StreamContext.java  |  4 +-
 .../api/transport/StreamReaderFactory.java    |  2 +-
 .../api/transport/StreamWriterFactory.java    |  2 +-
 .../api/transport/TransportKeySet.java        |  4 +-
 .../bramble/api/transport/TransportKeys.java  |  2 +-
 .../TransportKeyAgreementManager.java         |  2 +-
 .../api/versioning/ClientMajorVersion.java    |  2 +-
 .../bramble/api/versioning/ClientVersion.java |  2 +-
 .../versioning/ClientVersioningManager.java   |  2 +-
 .../event/ClientVersionUpdatedEvent.java      |  2 +-
 .../briarproject/bramble/util/IoUtils.java    |  2 +-
 .../bramble/util/NetworkUtils.java            |  2 +-
 .../briarproject/bramble/util/OsUtils.java    |  2 +-
 .../bramble/util/PrivacyUtils.java            |  2 +-
 .../bramble/util/StringUtils.java             |  2 +-
 .../bramble/util/ValidationUtils.java         |  2 +-
 .../briarproject/bramble/PoliteExecutor.java  |  2 +-
 .../bramble/TimeLoggingExecutor.java          |  2 +-
 .../bramble/account/AccountManagerImpl.java   |  4 +-
 .../bramble/cleanup/CleanupManagerImpl.java   |  2 +-
 .../bramble/client/ClientHelperImpl.java      |  2 +-
 .../client/ContactGroupFactoryImpl.java       |  2 +-
 .../bramble/connection/Connection.java        |  2 +-
 .../connection/ConnectionManagerImpl.java     |  2 +-
 .../connection/ConnectionRegistryImpl.java    |  2 +-
 .../connection/DuplexSyncConnection.java      |  4 +-
 .../connection/HandshakeConnection.java       |  2 +-
 .../IncomingDuplexSyncConnection.java         |  2 +-
 .../IncomingHandshakeConnection.java          |  2 +-
 .../IncomingSimplexSyncConnection.java        |  2 +-
 .../OutgoingDuplexSyncConnection.java         |  2 +-
 .../OutgoingHandshakeConnection.java          |  2 +-
 .../OutgoingSimplexSyncConnection.java        |  4 +-
 .../bramble/connection/SyncConnection.java    |  4 +-
 .../contact/ContactExchangeCrypto.java        |  2 +-
 .../contact/ContactExchangeCryptoImpl.java    |  2 +-
 .../contact/ContactExchangeManagerImpl.java   |  2 +-
 .../bramble/contact/ContactManagerImpl.java   |  2 +-
 .../bramble/contact/HandshakeCrypto.java      |  2 +-
 .../bramble/contact/HandshakeCryptoImpl.java  |  2 +-
 .../bramble/contact/HandshakeManagerImpl.java |  2 +-
 .../bramble/crypto/AgreementKeyParser.java    |  2 +-
 .../bramble/crypto/AsciiArmour.java           |  2 +-
 .../bramble/crypto/AuthenticatedCipher.java   |  2 +-
 .../bramble/crypto/CryptoComponentImpl.java   |  2 +-
 .../bramble/crypto/EdSignature.java           |  2 +-
 .../bramble/crypto/FrameEncoder.java          |  2 +-
 .../bramble/crypto/MessageEncrypter.java      |  2 +-
 .../crypto/PasswordStrengthEstimatorImpl.java |  2 +-
 .../bramble/crypto/Sec1KeyParser.java         |  2 +-
 .../bramble/crypto/Sec1PrivateKey.java        |  2 +-
 .../bramble/crypto/Sec1PublicKey.java         |  2 +-
 .../bramble/crypto/Sec1Utils.java             |  2 +-
 .../bramble/crypto/Signature.java             |  2 +-
 .../bramble/crypto/SignatureKeyParser.java    |  2 +-
 .../crypto/StreamDecrypterFactoryImpl.java    |  2 +-
 .../bramble/crypto/StreamDecrypterImpl.java   |  2 +-
 .../crypto/StreamEncrypterFactoryImpl.java    |  2 +-
 .../bramble/crypto/StreamEncrypterImpl.java   |  2 +-
 .../XSalsa20Poly1305AuthenticatedCipher.java  |  2 +-
 .../bramble/data/BdfReaderFactoryImpl.java    |  2 +-
 .../bramble/data/BdfReaderImpl.java           |  2 +-
 .../bramble/data/BdfWriterFactoryImpl.java    |  2 +-
 .../bramble/data/BdfWriterImpl.java           |  2 +-
 .../bramble/data/MetadataEncoderImpl.java     |  2 +-
 .../bramble/data/MetadataParserImpl.java      |  2 +-
 .../org/briarproject/bramble/db/Database.java |  2 +-
 .../bramble/db/DatabaseComponentImpl.java     |  2 +-
 .../briarproject/bramble/db/H2Database.java   |  2 +-
 .../bramble/db/HyperSqlDatabase.java          |  2 +-
 .../briarproject/bramble/db/JdbcDatabase.java |  2 +-
 .../briarproject/bramble/db/JdbcUtils.java    |  2 +-
 .../bramble/event/EventBusImpl.java           |  2 +-
 .../bramble/identity/AuthorFactoryImpl.java   |  2 +-
 .../bramble/identity/IdentityManagerImpl.java |  4 +-
 .../org/briarproject/bramble/io/NoDns.java    |  2 +-
 .../bramble/io/TimeoutInputStream.java        |  2 +-
 .../keyagreement/ConnectionChooserImpl.java   |  2 +-
 .../keyagreement/KeyAgreementConnector.java   |  2 +-
 .../keyagreement/KeyAgreementProtocol.java    |  2 +-
 .../keyagreement/KeyAgreementTaskImpl.java    |  4 +-
 .../keyagreement/KeyAgreementTransport.java   |  2 +-
 .../keyagreement/PayloadEncoderImpl.java      |  2 +-
 .../keyagreement/PayloadParserImpl.java       |  2 +-
 .../lifecycle/LifecycleManagerImpl.java       |  2 +-
 .../lifecycle/ShutdownManagerImpl.java        |  2 +-
 .../bramble/mailbox/ConnectivityChecker.java  |  2 +-
 .../mailbox/ConnectivityCheckerImpl.java      |  2 +-
 .../bramble/mailbox/ContactMailboxClient.java |  2 +-
 .../ContactMailboxConnectivityChecker.java    |  2 +-
 .../mailbox/ContactMailboxDownloadWorker.java |  4 +-
 .../bramble/mailbox/MailboxApi.java           |  2 +-
 .../bramble/mailbox/MailboxApiCaller.java     |  2 +-
 .../bramble/mailbox/MailboxApiCallerImpl.java |  2 +-
 .../bramble/mailbox/MailboxApiImpl.java       |  2 +-
 .../bramble/mailbox/MailboxClient.java        |  2 +-
 .../bramble/mailbox/MailboxClientFactory.java |  2 +-
 .../mailbox/MailboxClientFactoryImpl.java     |  2 +-
 .../bramble/mailbox/MailboxClientManager.java |  4 +-
 .../mailbox/MailboxDownloadWorker.java        |  2 +-
 .../bramble/mailbox/MailboxFileManager.java   |  2 +-
 .../mailbox/MailboxFileManagerImpl.java       |  4 +-
 .../bramble/mailbox/MailboxManagerImpl.java   |  2 +-
 .../mailbox/MailboxPairingTaskFactory.java    |  2 +-
 .../MailboxPairingTaskFactoryImpl.java        |  2 +-
 .../mailbox/MailboxPairingTaskImpl.java       |  2 +-
 .../mailbox/MailboxSettingsManagerImpl.java   |  2 +-
 .../mailbox/MailboxUpdateManagerImpl.java     |  4 +-
 .../mailbox/MailboxUpdateValidator.java       |  2 +-
 .../bramble/mailbox/MailboxUploadWorker.java  |  2 +-
 .../bramble/mailbox/MailboxWorker.java        |  2 +-
 .../bramble/mailbox/MailboxWorkerFactory.java |  2 +-
 .../mailbox/MailboxWorkerFactoryImpl.java     |  2 +-
 .../bramble/mailbox/OwnMailboxClient.java     |  2 +-
 .../OwnMailboxConnectivityChecker.java        |  2 +-
 .../mailbox/OwnMailboxContactListWorker.java  |  4 +-
 .../mailbox/OwnMailboxDownloadWorker.java     |  2 +-
 .../bramble/mailbox/SimpleApiCall.java        |  2 +-
 .../mailbox/TorReachabilityMonitor.java       |  2 +-
 .../mailbox/TorReachabilityMonitorImpl.java   |  2 +-
 .../bramble/mailbox/UrlConverter.java         |  2 +-
 .../bramble/mailbox/UrlConverterImpl.java     |  2 +-
 .../bramble/plugin/BackoffFactoryImpl.java    |  2 +-
 .../bramble/plugin/BackoffImpl.java           |  2 +-
 .../bramble/plugin/PluginManagerImpl.java     |  2 +-
 .../bramble/plugin/PollerImpl.java            |  2 +-
 .../bluetooth/AbstractBluetoothPlugin.java    |  6 +--
 .../bluetooth/BluetoothConnectionFactory.java |  2 +-
 .../bluetooth/BluetoothConnectionLimiter.java |  2 +-
 .../BluetoothConnectionLimiterImpl.java       |  2 +-
 .../plugin/bluetooth/BluetoothPlugin.java     |  2 +-
 .../file/AbstractRemovableDrivePlugin.java    |  2 +-
 .../bramble/plugin/file/FilePlugin.java       |  2 +-
 .../bramble/plugin/file/MailboxPlugin.java    |  2 +-
 .../plugin/file/MailboxPluginFactory.java     |  2 +-
 .../file/RemovableDriveManagerImpl.java       |  2 +-
 .../plugin/file/RemovableDrivePlugin.java     |  2 +-
 .../file/RemovableDrivePluginFactory.java     |  2 +-
 .../plugin/file/RemovableDriveReaderTask.java |  2 +-
 .../file/RemovableDriveTaskFactory.java       |  2 +-
 .../file/RemovableDriveTaskFactoryImpl.java   |  2 +-
 .../plugin/file/RemovableDriveTaskImpl.java   |  4 +-
 .../file/RemovableDriveTaskRegistry.java      |  2 +-
 .../plugin/file/RemovableDriveWriterTask.java |  2 +-
 .../file/TransportInputStreamReader.java      |  2 +-
 .../file/TransportOutputStreamWriter.java     |  2 +-
 .../bramble/plugin/tcp/LanTcpPlugin.java      |  2 +-
 .../plugin/tcp/LanTcpPluginFactory.java       |  2 +-
 .../bramble/plugin/tcp/MappingResult.java     |  2 +-
 .../bramble/plugin/tcp/PortMapperImpl.java    |  4 +-
 .../bramble/plugin/tcp/TcpPlugin.java         |  6 +--
 .../plugin/tcp/TcpTransportConnection.java    |  2 +-
 .../bramble/plugin/tcp/WanTcpPlugin.java      |  4 +-
 .../plugin/tcp/WanTcpPluginFactory.java       |  2 +-
 .../plugin/tor/CircumventionProvider.java     |  2 +-
 .../plugin/tor/CircumventionProviderImpl.java |  4 +-
 .../bramble/plugin/tor/TorPlugin.java         |  6 +--
 .../bramble/plugin/tor/TorPluginFactory.java  |  2 +-
 .../plugin/tor/TorTransportConnection.java    |  2 +-
 .../TransportPropertyManagerImpl.java         |  2 +-
 .../TransportPropertyValidator.java           |  2 +-
 .../bramble/record/RecordReaderImpl.java      |  2 +-
 .../bramble/record/RecordWriterImpl.java      |  2 +-
 .../briarproject/bramble/reliability/Ack.java |  2 +-
 .../bramble/reliability/Crc32.java            |  2 +-
 .../bramble/reliability/Data.java             |  2 +-
 .../bramble/reliability/Frame.java            |  2 +-
 .../bramble/reliability/Receiver.java         |  2 +-
 .../reliability/ReceiverInputStream.java      |  2 +-
 .../ReliabilityLayerFactoryImpl.java          |  2 +-
 .../reliability/ReliabilityLayerImpl.java     |  4 +-
 .../bramble/reliability/Sender.java           |  2 +-
 .../reliability/SenderOutputStream.java       |  2 +-
 .../bramble/reliability/SlipDecoder.java      |  2 +-
 .../bramble/reliability/SlipEncoder.java      |  2 +-
 .../rendezvous/KeyMaterialSourceImpl.java     |  2 +-
 .../bramble/rendezvous/RendezvousCrypto.java  |  2 +-
 .../rendezvous/RendezvousCryptoImpl.java      |  2 +-
 .../rendezvous/RendezvousPollerImpl.java      |  6 +--
 .../bramble/reporting/DevReportServer.java    |  2 +-
 .../bramble/reporting/DevReporterImpl.java    |  2 +-
 .../bramble/settings/SettingsManagerImpl.java |  2 +-
 .../bramble/sync/DuplexOutgoingSession.java   |  2 +-
 .../sync/EagerSimplexOutgoingSession.java     |  2 +-
 .../bramble/sync/GroupFactoryImpl.java        |  2 +-
 .../bramble/sync/IncomingSession.java         |  2 +-
 .../bramble/sync/MailboxOutgoingSession.java  |  2 +-
 .../bramble/sync/MessageFactoryImpl.java      |  2 +-
 .../bramble/sync/SimplexOutgoingSession.java  |  2 +-
 .../sync/SyncRecordReaderFactoryImpl.java     |  2 +-
 .../bramble/sync/SyncRecordReaderImpl.java    |  2 +-
 .../sync/SyncRecordWriterFactoryImpl.java     |  2 +-
 .../bramble/sync/SyncRecordWriterImpl.java    |  2 +-
 .../bramble/sync/SyncSessionFactoryImpl.java  |  2 +-
 .../validation/ValidationManagerImpl.java     |  2 +-
 .../system/AbstractSecureRandomProvider.java  |  2 +-
 .../bramble/system/TaskSchedulerImpl.java     |  2 +-
 .../system/UnixSecureRandomProvider.java      |  2 +-
 .../bramble/transport/KeyManagerImpl.java     |  2 +-
 .../transport/MutableIncomingKeys.java        |  2 +-
 .../transport/MutableOutgoingKeys.java        |  2 +-
 .../transport/MutableTransportKeySet.java     |  4 +-
 .../transport/MutableTransportKeys.java       |  2 +-
 .../bramble/transport/ReorderingWindow.java   |  2 +-
 .../transport/StreamReaderFactoryImpl.java    |  2 +-
 .../bramble/transport/StreamReaderImpl.java   |  2 +-
 .../transport/StreamWriterFactoryImpl.java    |  2 +-
 .../bramble/transport/StreamWriterImpl.java   |  2 +-
 .../transport/TransportKeyManager.java        |  2 +-
 .../transport/TransportKeyManagerFactory.java |  2 +-
 .../TransportKeyManagerFactoryImpl.java       |  2 +-
 .../transport/TransportKeyManagerImpl.java    |  4 +-
 .../transport/agreement/MessageEncoder.java   |  2 +-
 .../agreement/MessageEncoderImpl.java         |  2 +-
 .../transport/agreement/MessageType.java      |  2 +-
 .../bramble/transport/agreement/Session.java  |  2 +-
 .../transport/agreement/SessionEncoder.java   |  2 +-
 .../agreement/SessionEncoderImpl.java         |  2 +-
 .../transport/agreement/SessionParser.java    |  2 +-
 .../agreement/SessionParserImpl.java          |  2 +-
 .../bramble/transport/agreement/State.java    |  2 +-
 .../TransportKeyAgreementConstants.java       |  2 +-
 .../TransportKeyAgreementCrypto.java          |  2 +-
 .../TransportKeyAgreementCryptoImpl.java      |  2 +-
 .../TransportKeyAgreementManagerImpl.java     |  4 +-
 .../TransportKeyAgreementValidator.java       |  2 +-
 .../ClientVersioningManagerImpl.java          |  2 +-
 .../versioning/ClientVersioningValidator.java |  2 +-
 .../client/BdfMessageValidatorTest.java       |  2 +-
 .../ContactExchangeIntegrationTest.java       |  2 +-
 .../bramble/crypto/PseudoRandom.java          |  2 +-
 .../crypto/TestAuthenticatedCipher.java       |  2 +-
 .../bramble/db/DatabaseMigrationTest.java     |  2 +-
 .../bramble/db/H2MigrationTest.java           |  2 +-
 ...leepDatabasePerformanceComparisonTest.java |  2 +-
 .../bramble/db/HyperSqlMigrationTest.java     |  2 +-
 .../mailbox/ContactMailboxClientTest.java     |  2 +-
 .../mailbox/MailboxClientManagerTest.java     |  2 +-
 .../OwnMailboxContactListWorkerTest.java      |  2 +-
 .../file/RemovableDriveIntegrationTest.java   |  2 +-
 .../RemovableDriveIntegrationTestModule.java  |  2 +-
 .../bramble/plugin/tcp/LanTcpPluginTest.java  |  2 +-
 .../bramble/system/TestTaskScheduler.java     |  2 +-
 .../bramble/test/BrambleIntegrationTest.java  |  4 +-
 .../bramble/test/CollectionMatcher.java       |  2 +-
 .../bramble/test/ImmediateExecutor.java       |  2 +-
 .../bramble/test/PairMatcher.java             |  2 +-
 .../bramble/test/TestDatabaseConfig.java      |  2 +-
 .../test/TestDuplexTransportConnection.java   |  2 +-
 .../bramble/test/TestMessageFactory.java      |  2 +-
 .../bramble/test/TestPluginConfigModule.java  |  2 +-
 .../test/TestSecureRandomProvider.java        |  2 +-
 .../test/TestTransportConnectionReader.java   |  2 +-
 .../test/TestTransportConnectionWriter.java   |  2 +-
 .../transport/TestStreamDecrypter.java        |  2 +-
 .../transport/TestStreamEncrypter.java        |  2 +-
 .../lifecycle/WindowsShutdownManagerImpl.java |  2 +-
 .../bramble/network/JavaNetworkManager.java   |  4 +-
 .../JavaBluetoothConnectionFactory.java       |  2 +-
 .../plugin/bluetooth/JavaBluetoothPlugin.java |  4 +-
 .../bluetooth/JavaBluetoothPluginFactory.java |  2 +-
 .../JavaBluetoothTransportConnection.java     |  2 +-
 .../bramble/plugin/modem/Modem.java           |  2 +-
 .../bramble/plugin/modem/ModemFactory.java    |  2 +-
 .../plugin/modem/ModemFactoryImpl.java        |  2 +-
 .../bramble/plugin/modem/ModemImpl.java       |  4 +-
 .../bramble/plugin/modem/ModemPlugin.java     |  6 +--
 .../plugin/modem/ModemPluginFactory.java      |  2 +-
 .../bramble/plugin/modem/SerialPort.java      |  2 +-
 .../bramble/plugin/modem/SerialPortImpl.java  |  2 +-
 .../bramble/plugin/modem/SerialPortList.java  |  2 +-
 .../plugin/modem/SerialPortListImpl.java      |  2 +-
 .../bramble/plugin/tor/JavaTorPlugin.java     |  2 +-
 .../bramble/plugin/tor/UnixTorPlugin.java     |  2 +-
 .../plugin/tor/UnixTorPluginFactory.java      |  2 +-
 .../bramble/plugin/tor/WindowsTorPlugin.java  |  2 +-
 .../plugin/tor/WindowsTorPluginFactory.java   |  2 +-
 .../bramble/system/JavaLocationUtils.java     |  2 +-
 .../bramble/system/JavaResourceProvider.java  |  4 +-
 .../bramble/plugin/tor/BridgeTest.java        |  2 +-
 .../plugin/tor/TestPluginCallback.java        |  2 +-
 .../android/ScreenshotOnFailureRule.java      |  2 +-
 .../briarproject/briar/android/UiTest.java    |  2 +-
 .../media/PngSuiteImageCompressorTest.java    |  2 +-
 .../PngSuiteImageSizeCalculatorTest.java      |  2 +-
 .../briar/android/AndroidDatabaseConfig.java  |  2 +-
 .../briar/android/AndroidKeyStrengthener.java |  2 +-
 .../AndroidNotificationManagerImpl.java       |  4 +-
 .../briarproject/briar/android/AppModule.java |  2 +-
 .../briar/android/BriarService.java           |  2 +-
 .../briar/android/LevelRaisingHandler.java    |  2 +-
 .../briarproject/briar/android/Localizer.java |  2 +-
 .../android/NetworkUsageMetricsImpl.java      |  2 +-
 .../briar/android/RecentEmojiImpl.java        |  4 +-
 .../android/ScreenFilterMonitorImpl.java      |  2 +-
 .../briar/android/StartupFailureActivity.java |  4 +-
 .../android/account/AuthorNameFragment.java   |  4 +-
 .../briar/android/account/DozeFragment.java   |  4 +-
 .../briar/android/account/DozeView.java       |  2 +-
 .../android/account/HuaweiAppLaunchView.java  |  2 +-
 .../account/HuaweiProtectedAppsView.java      |  2 +-
 .../android/account/LockManagerImpl.java      |  4 +-
 .../briar/android/account/PowerView.java      |  2 +-
 .../android/account/SetPasswordFragment.java  |  4 +-
 .../briar/android/account/SetupActivity.java  |  4 +-
 .../briar/android/account/SetupFragment.java  |  4 +-
 .../briar/android/account/SetupViewModel.java |  4 +-
 .../briar/android/account/UnlockActivity.java |  4 +-
 .../android/account/XiaomiLockAppsView.java   |  2 +-
 .../android/account/XiaomiRecentAppsView.java |  2 +-
 .../briar/android/activity/BaseActivity.java  |  4 +-
 .../briar/android/activity/BriarActivity.java |  4 +-
 .../attachment/AttachmentCreationTask.java    |  2 +-
 .../android/attachment/AttachmentCreator.java |  2 +-
 .../attachment/AttachmentCreatorImpl.java     |  2 +-
 .../attachment/AttachmentDimensions.java      |  2 +-
 .../android/attachment/AttachmentItem.java    |  2 +-
 .../attachment/AttachmentItemResult.java      |  2 +-
 .../android/attachment/AttachmentManager.java |  2 +-
 .../android/attachment/AttachmentResult.java  |  2 +-
 .../attachment/AttachmentRetriever.java       |  2 +-
 .../attachment/AttachmentRetrieverImpl.java   |  2 +-
 .../android/attachment/media/ImageHelper.java |  2 +-
 .../attachment/media/ImageHelperImpl.java     |  2 +-
 .../attachment/media/ImageSizeCalculator.java |  2 +-
 .../media/ImageSizeCalculatorImpl.java        |  2 +-
 .../briar/android/attachment/media/Size.java  |  2 +-
 .../briar/android/blog/BaseViewModel.java     |  2 +-
 .../briar/android/blog/BlogActivity.java      |  4 +-
 .../briar/android/blog/BlogFragment.java      |  4 +-
 .../briar/android/blog/BlogPostAdapter.java   |  4 +-
 .../briar/android/blog/BlogPostFragment.java  |  4 +-
 .../android/blog/BlogPostViewHolder.java      |  2 +-
 .../briar/android/blog/BlogViewModel.java     |  4 +-
 .../briar/android/blog/FeedFragment.java      |  4 +-
 .../briar/android/blog/FeedViewModel.java     |  2 +-
 .../briar/android/blog/ReblogFragment.java    |  4 +-
 .../briar/android/blog/RssFeedActivity.java   |  4 +-
 .../briar/android/blog/RssFeedAdapter.java    |  2 +-
 .../blog/RssFeedDeleteFeedDialogFragment.java |  4 +-
 .../RssFeedImportFailedDialogFragment.java    |  4 +-
 .../android/blog/RssFeedImportFragment.java   |  4 +-
 .../android/blog/RssFeedManageFragment.java   |  6 +--
 .../briar/android/blog/RssFeedViewModel.java  |  2 +-
 .../android/blog/WriteBlogPostActivity.java   |  4 +-
 .../briar/android/contact/ContactItem.java    |  2 +-
 .../contact/ContactItemViewHolder.java        |  2 +-
 .../android/contact/ContactListAdapter.java   |  4 +-
 .../android/contact/ContactListFragment.java  |  4 +-
 .../android/contact/ContactListItem.java      |  3 +-
 .../contact/ContactListItemViewHolder.java    |  2 +-
 .../android/contact/ContactListViewModel.java |  2 +-
 .../android/contact/ContactsViewModel.java    |  4 +-
 .../add/nearby/AddNearbyContactActivity.java  |  4 +-
 .../nearby/AddNearbyContactErrorFragment.java |  4 +-
 .../add/nearby/AddNearbyContactFragment.java  |  4 +-
 .../nearby/AddNearbyContactIntroFragment.java |  4 +-
 .../add/nearby/AddNearbyContactViewModel.java |  2 +-
 .../add/remote/AddContactActivity.java        |  4 +-
 .../add/remote/AddContactViewModel.java       |  2 +-
 .../add/remote/LinkExchangeFragment.java      |  4 +-
 .../contact/add/remote/NicknameFragment.java  |  4 +-
 .../add/remote/PendingContactItem.java        |  2 +-
 .../remote/PendingContactListActivity.java    |  4 +-
 .../add/remote/PendingContactListAdapter.java |  2 +-
 .../remote/PendingContactListViewModel.java   |  2 +-
 .../add/remote/PendingContactViewHolder.java  |  2 +-
 .../connect/BluetoothIntroFragment.java       |  4 +-
 .../connect/BluetoothProgressFragment.java    |  4 +-
 .../connect/ConnectViaBluetoothActivity.java  |  4 +-
 .../connect/ConnectViaBluetoothViewModel.java |  2 +-
 .../BaseContactSelectorAdapter.java           |  2 +-
 .../BaseContactSelectorFragment.java          |  4 +-
 .../BaseSelectableContactHolder.java          |  2 +-
 .../ContactSelectorActivity.java              |  4 +-
 .../ContactSelectorAdapter.java               |  2 +-
 .../ContactSelectorController.java            |  2 +-
 .../ContactSelectorControllerImpl.java        |  2 +-
 .../ContactSelectorFragment.java              |  4 +-
 .../ContactSelectorListener.java              |  2 +-
 .../SelectableContactHolder.java              |  2 +-
 .../SelectableContactItem.java                |  2 +-
 .../android/controller/BriarController.java   |  2 +-
 .../controller/BriarControllerImpl.java       |  2 +-
 .../android/controller/DbController.java      |  2 +-
 .../android/controller/DbControllerImpl.java  |  2 +-
 .../handler/UiExceptionHandler.java           |  2 +-
 .../handler/UiResultExceptionHandler.java     |  2 +-
 .../conversation/AliasDialogFragment.java     |  4 +-
 .../conversation/ConversationActivity.java    |  4 +-
 .../conversation/ConversationAdapter.java     |  2 +-
 .../conversation/ConversationItem.java        |  2 +-
 .../ConversationItemDetailsLookup.java        |  2 +-
 .../ConversationItemKeyProvider.java          |  2 +-
 .../ConversationItemViewHolder.java           |  2 +-
 .../conversation/ConversationListener.java    |  2 +-
 .../conversation/ConversationMessageItem.java |  2 +-
 .../ConversationMessageViewHolder.java        |  2 +-
 .../conversation/ConversationNoticeItem.java  |  2 +-
 .../ConversationNoticeViewHolder.java         |  2 +-
 .../conversation/ConversationRequestItem.java |  2 +-
 .../ConversationRequestViewHolder.java        |  2 +-
 .../ConversationScrollListener.java           |  2 +-
 .../ConversationSettingsDialog.java           |  4 +-
 .../conversation/ConversationViewModel.java   |  2 +-
 .../conversation/ConversationVisitor.java     |  2 +-
 .../android/conversation/ImageActivity.java   |  4 +-
 .../android/conversation/ImageAdapter.java    |  2 +-
 .../android/conversation/ImageFragment.java   |  4 +-
 .../conversation/ImageItemDecoration.java     |  2 +-
 .../android/conversation/ImageViewHolder.java |  2 +-
 .../android/conversation/ImageViewModel.java  |  2 +-
 .../conversation/OutItemViewHolder.java       |  2 +-
 .../conversation/glide/BriarDataFetcher.java  |  2 +-
 .../glide/BriarDataFetcherFactory.java        |  2 +-
 .../conversation/glide/BriarGlideModule.java  |  2 +-
 .../conversation/glide/BriarModelLoader.java  |  4 +-
 .../glide/BriarModelLoaderFactory.java        |  2 +-
 .../glide/CustomCornersTransformation.java    |  2 +-
 .../android/conversation/glide/Radii.java     |  2 +-
 .../android/forum/CreateForumActivity.java    |  5 +--
 .../briar/android/forum/ForumActivity.java    |  4 +-
 .../briar/android/forum/ForumListAdapter.java |  2 +-
 .../android/forum/ForumListFragment.java      |  4 +-
 .../android/forum/ForumListViewModel.java     |  4 +-
 .../briar/android/forum/ForumViewModel.java   |  4 +-
 .../briar/android/fragment/BaseFragment.java  |  4 +-
 .../briar/android/fragment/ErrorFragment.java |  4 +-
 .../briar/android/fragment/FinalFragment.java |  4 +-
 .../fragment/ScreenFilterDialogFragment.java  |  4 +-
 .../android/hotspot/AbstractTabsFragment.java |  4 +-
 .../android/hotspot/FallbackFragment.java     |  6 +--
 .../android/hotspot/HotspotActivity.java      |  4 +-
 .../android/hotspot/HotspotErrorFragment.java |  4 +-
 .../android/hotspot/HotspotFragment.java      |  4 +-
 .../android/hotspot/HotspotHelpFragment.java  |  4 +-
 .../android/hotspot/HotspotIntroFragment.java |  4 +-
 .../briar/android/hotspot/HotspotManager.java |  4 +-
 .../briar/android/hotspot/HotspotState.java   |  2 +-
 .../android/hotspot/HotspotViewModel.java     |  2 +-
 .../hotspot/ManualHotspotFragment.java        |  4 +-
 .../android/hotspot/QrHotspotFragment.java    |  4 +-
 .../briar/android/hotspot/WebServer.java      |  2 +-
 .../android/hotspot/WebServerManager.java     |  4 +-
 .../android/hotspot/WebsiteFragment.java      |  4 +-
 .../introduction/ContactChooserFragment.java  |  4 +-
 .../IntroductionMessageFragment.java          |  4 +-
 .../introduction/IntroductionViewModel.java   |  2 +-
 .../android/logging/BriefLogFormatter.java    |  2 +-
 .../android/logging/CachingLogHandler.java    |  2 +-
 .../briar/android/logging/LogDecrypter.java   |  2 +-
 .../android/logging/LogDecrypterImpl.java     |  2 +-
 .../briar/android/logging/LogEncrypter.java   |  2 +-
 .../android/logging/LogEncrypterImpl.java     |  2 +-
 .../login/ChangePasswordViewModel.java        |  2 +-
 .../briar/android/login/LoginUtils.java       |  2 +-
 .../android/login/OpenDatabaseFragment.java   |  4 +-
 .../briar/android/login/PasswordFragment.java |  4 +-
 .../briar/android/login/StartupActivity.java  |  4 +-
 .../briar/android/login/StartupViewModel.java |  2 +-
 .../briar/android/logout/SignOutFragment.java |  4 +-
 .../briar/android/mailbox/ErrorFragment.java  |  4 +-
 .../android/mailbox/ErrorWizardFragment.java  |  4 +-
 .../android/mailbox/MailboxActivity.java      |  4 +-
 .../mailbox/MailboxConnectingFragment.java    |  4 +-
 .../android/mailbox/MailboxScanFragment.java  |  4 +-
 .../mailbox/MailboxStatusFragment.java        |  4 +-
 .../android/mailbox/MailboxViewModel.java     |  2 +-
 .../android/mailbox/OfflineFragment.java      |  4 +-
 .../mailbox/OfflineStatusFragment.java        |  4 +-
 .../mailbox/SetupDownloadFragment.java        |  4 +-
 .../android/mailbox/SetupIntroFragment.java   |  4 +-
 .../android/navdrawer/NavDrawerActivity.java  |  4 +-
 .../android/navdrawer/NavDrawerViewModel.java |  2 +-
 .../android/navdrawer/PluginViewModel.java    |  2 +-
 .../android/navdrawer/TransportsActivity.java |  4 +-
 .../android/panic/PanicResponderActivity.java |  4 +-
 .../conversation/GroupActivity.java           |  6 +--
 .../conversation/GroupMessageAdapter.java     |  2 +-
 .../conversation/GroupViewModel.java          |  4 +-
 .../JoinMessageItemViewHolder.java            |  2 +-
 .../creation/CreateGroupActivity.java         |  4 +-
 .../creation/CreateGroupController.java       |  2 +-
 .../creation/CreateGroupControllerImpl.java   |  4 +-
 .../creation/CreateGroupFragment.java         |  4 +-
 .../creation/CreateGroupMessageFragment.java  |  4 +-
 .../creation/GroupInviteActivity.java         |  4 +-
 .../creation/GroupInviteFragment.java         |  4 +-
 .../invitation/GroupInvitationActivity.java   |  4 +-
 .../invitation/GroupInvitationController.java |  2 +-
 .../GroupInvitationControllerImpl.java        |  2 +-
 .../android/privategroup/list/GroupItem.java  |  4 +-
 .../privategroup/list/GroupListAdapter.java   |  4 +-
 .../privategroup/list/GroupListFragment.java  |  4 +-
 .../privategroup/list/GroupListViewModel.java |  4 +-
 .../privategroup/list/GroupViewHolder.java    |  4 +-
 .../memberlist/GroupMemberListActivity.java   |  4 +-
 .../memberlist/MemberListItem.java            |  2 +-
 .../memberlist/MemberListItemHolder.java      |  4 +-
 .../reveal/RevealContactsActivity.java        |  4 +-
 .../reveal/RevealContactsController.java      |  2 +-
 .../reveal/RevealContactsControllerImpl.java  |  2 +-
 .../reveal/RevealContactsFragment.java        |  4 +-
 .../reveal/RevealableContactAdapter.java      |  2 +-
 .../reveal/RevealableContactItem.java         |  2 +-
 .../reveal/RevealableContactViewHolder.java   |  2 +-
 .../briar/android/qrcode/CameraView.java      |  4 +-
 .../briar/android/qrcode/PreviewConsumer.java |  2 +-
 .../briar/android/qrcode/QrCodeDecoder.java   |  6 +--
 .../briar/android/qrcode/QrCodeUtils.java     |  2 +-
 .../removabledrive/ChooserFragment.java       |  4 +-
 .../android/removabledrive/ErrorFragment.java |  4 +-
 .../removabledrive/ReceiveFragment.java       |  4 +-
 .../RemovableDriveActivity.java               |  4 +-
 .../RemovableDriveViewModel.java              |  2 +-
 .../android/removabledrive/SendFragment.java  |  4 +-
 .../removabledrive/TransferDataState.java     |  2 +-
 .../reporting/BriarExceptionHandler.java      |  2 +-
 .../reporting/BriarReportCollector.java       |  2 +-
 .../android/reporting/CrashFragment.java      |  4 +-
 .../reporting/CrashReportActivity.java        |  4 +-
 .../briar/android/reporting/ReportData.java   |  2 +-
 .../android/reporting/ReportDataAdapter.java  |  2 +-
 .../android/reporting/ReportFormFragment.java |  4 +-
 .../android/reporting/ReportViewModel.java    |  2 +-
 .../briar/android/settings/AboutFragment.java |  4 +-
 .../android/settings/AvatarPreference.java    |  2 +-
 .../settings/ConfirmAvatarDialogFragment.java |  4 +-
 .../android/settings/ConnectionsFragment.java |  4 +-
 .../android/settings/ConnectionsManager.java  |  2 +-
 .../android/settings/ConnectionsStore.java    |  2 +-
 .../android/settings/DisplayFragment.java     |  2 +-
 .../settings/NotificationsFragment.java       |  4 +-
 .../settings/NotificationsManager.java        |  4 +-
 .../android/settings/OwnIdentityInfo.java     |  2 +-
 .../android/settings/SecurityFragment.java    |  4 +-
 .../android/settings/SettingsActivity.java    |  4 +-
 .../android/settings/SettingsFragment.java    |  4 +-
 .../briar/android/settings/SettingsStore.java |  2 +-
 .../android/settings/SettingsViewModel.java   |  4 +-
 .../android/settings/TorSummaryProvider.java  |  2 +-
 .../android/sharing/BaseMessageFragment.java  |  6 +--
 .../sharing/BlogInvitationActivity.java       |  4 +-
 .../sharing/BlogInvitationControllerImpl.java |  2 +-
 .../sharing/BlogSharingStatusActivity.java    |  4 +-
 .../sharing/ForumInvitationActivity.java      |  4 +-
 .../ForumInvitationControllerImpl.java        |  2 +-
 .../sharing/ForumSharingStatusActivity.java   |  4 +-
 .../android/sharing/InvitationActivity.java   |  4 +-
 .../android/sharing/InvitationController.java |  2 +-
 .../sharing/InvitationControllerImpl.java     |  4 +-
 .../briar/android/sharing/ShareActivity.java  |  4 +-
 .../android/sharing/ShareBlogActivity.java    |  4 +-
 .../sharing/ShareBlogControllerImpl.java      |  2 +-
 .../android/sharing/ShareBlogFragment.java    |  4 +-
 .../sharing/ShareBlogMessageFragment.java     |  4 +-
 .../android/sharing/ShareForumActivity.java   |  4 +-
 .../sharing/ShareForumControllerImpl.java     |  2 +-
 .../android/sharing/ShareForumFragment.java   |  4 +-
 .../sharing/ShareForumMessageFragment.java    |  4 +-
 .../android/sharing/SharingController.java    |  2 +-
 .../sharing/SharingControllerImpl.java        |  2 +-
 .../sharing/SharingStatusActivity.java        |  4 +-
 .../splash/ExpiredOldAndroidActivity.java     |  4 +-
 .../android/splash/SplashScreenActivity.java  |  4 +-
 .../threaded/BaseThreadItemViewHolder.java    |  2 +-
 .../briar/android/threaded/ThreadItem.java    |  4 +-
 .../android/threaded/ThreadItemAdapter.java   |  2 +-
 .../android/threaded/ThreadListActivity.java  |  4 +-
 .../android/threaded/ThreadListViewModel.java |  4 +-
 .../threaded/ThreadPostViewHolder.java        |  2 +-
 .../threaded/ThreadScrollListener.java        |  2 +-
 .../briar/android/util/ActivityLaunchers.java |  2 +-
 .../android/util/BriarSnackbarBuilder.java    |  2 +-
 .../briar/android/util/UiUtils.java           |  4 +-
 .../briar/android/view/BlankFragment.java     |  4 +-
 .../briar/android/view/BriarButton.java       |  2 +-
 .../view/BriarRecyclerViewScrollListener.java |  2 +-
 .../briar/android/view/ImagePreview.java      |  2 +-
 .../android/view/ImagePreviewAdapter.java     |  2 +-
 .../android/view/ImagePreviewDecoration.java  |  2 +-
 .../briar/android/view/ImagePreviewItem.java  |  2 +-
 .../android/view/ImagePreviewViewHolder.java  |  2 +-
 .../android/view/LargeTextInputView.java      |  4 +-
 .../briar/android/view/PullDownLayout.java    |  2 +-
 .../android/view/SnackbarAwareBehavior.java   |  2 +-
 .../view/TextAttachmentController.java        |  2 +-
 .../briar/android/view/TextInputView.java     |  4 +-
 .../android/view/TextSendController.java      |  2 +-
 .../android/view/UnreadMessageButton.java     |  2 +-
 .../briar/android/viewmodel/DbViewModel.java  |  2 +-
 .../briar/android/viewmodel/LiveEvent.java    |  2 +-
 .../briar/android/viewmodel/LiveResult.java   |  2 +-
 .../android/viewmodel/MutableLiveEvent.java   |  2 +-
 .../android/viewmodel/ViewModelFactory.java   |  2 +-
 .../android/widget/LinkDialogFragment.java    |  4 +-
 .../widget/OnboardingFullDialogFragment.java  |  2 +-
 .../android/widget/TapSafeFrameLayout.java    |  2 +-
 .../widget/TouchInterceptingLinearLayout.java |  2 +-
 .../api/android/NetworkUsageMetrics.java      |  2 +-
 .../api/android/ScreenFilterMonitor.java      |  2 +-
 .../android/logging/LoggingTestModule.java    |  2 +-
 .../briar/api/attachment/Attachment.java      |  2 +-
 .../api/attachment/AttachmentHeader.java      |  2 +-
 .../api/autodelete/AutoDeleteManager.java     |  2 +-
 .../event/AutoDeleteTimerMirroredEvent.java   |  2 +-
 .../ConversationMessagesDeletedEvent.java     |  2 +-
 .../briar/api/avatar/AvatarManager.java       |  2 +-
 .../api/avatar/event/AvatarUpdatedEvent.java  |  2 +-
 .../org/briarproject/briar/api/blog/Blog.java |  2 +-
 .../briar/api/blog/BlogCommentHeader.java     |  4 +-
 .../briar/api/blog/BlogFactory.java           |  2 +-
 .../briar/api/blog/BlogInvitationRequest.java |  2 +-
 .../api/blog/BlogInvitationResponse.java      |  2 +-
 .../briar/api/blog/BlogManager.java           |  2 +-
 .../briarproject/briar/api/blog/BlogPost.java |  2 +-
 .../briar/api/blog/BlogPostFactory.java       |  2 +-
 .../briar/api/blog/BlogPostHeader.java        |  4 +-
 .../BlogInvitationRequestReceivedEvent.java   |  2 +-
 .../BlogInvitationResponseReceivedEvent.java  |  2 +-
 .../api/blog/event/BlogPostAddedEvent.java    |  2 +-
 .../briar/api/client/BaseGroup.java           |  2 +-
 .../briar/api/client/MessageTracker.java      |  2 +-
 .../briar/api/client/MessageTree.java         |  2 +-
 .../briar/api/client/NamedGroup.java          |  2 +-
 .../briar/api/client/PostHeader.java          |  4 +-
 .../briar/api/client/SessionId.java           |  2 +-
 .../briar/api/client/ThreadedMessage.java     |  2 +-
 .../api/conversation/ConversationManager.java |  2 +-
 .../ConversationMessageHeader.java            |  2 +-
 .../ConversationMessageVisitor.java           |  2 +-
 .../api/conversation/ConversationRequest.java |  2 +-
 .../conversation/ConversationResponse.java    |  2 +-
 .../api/conversation/DeletionResult.java      |  2 +-
 .../ConversationMessageReceivedEvent.java     |  2 +-
 .../ConversationMessageTrackedEvent.java      |  4 +-
 .../org/briarproject/briar/api/feed/Feed.java |  2 +-
 .../briar/api/feed/FeedManager.java           |  2 +-
 .../briarproject/briar/api/forum/Forum.java   |  2 +-
 .../briar/api/forum/ForumFactory.java         |  2 +-
 .../api/forum/ForumInvitationRequest.java     |  2 +-
 .../api/forum/ForumInvitationResponse.java    |  2 +-
 .../briar/api/forum/ForumManager.java         |  2 +-
 .../briar/api/forum/ForumPost.java            |  2 +-
 .../briar/api/forum/ForumPostFactory.java     |  2 +-
 .../briar/api/forum/ForumPostHeader.java      |  4 +-
 .../ForumInvitationRequestReceivedEvent.java  |  2 +-
 .../ForumInvitationResponseReceivedEvent.java |  2 +-
 .../forum/event/ForumPostReceivedEvent.java   |  2 +-
 .../briar/api/identity/AuthorInfo.java        |  4 +-
 .../briar/api/identity/AuthorManager.java     |  2 +-
 .../api/introduction/IntroductionManager.java |  2 +-
 .../api/introduction/IntroductionRequest.java |  4 +-
 .../introduction/IntroductionResponse.java    |  2 +-
 .../briar/api/introduction/Role.java          |  2 +-
 .../event/IntroductionAbortedEvent.java       |  2 +-
 .../IntroductionRequestReceivedEvent.java     |  2 +-
 .../IntroductionResponseReceivedEvent.java    |  2 +-
 .../briar/api/messaging/MessagingManager.java |  2 +-
 .../briar/api/messaging/PrivateMessage.java   |  2 +-
 .../api/messaging/PrivateMessageFactory.java  |  2 +-
 .../api/messaging/PrivateMessageHeader.java   |  2 +-
 .../event/AttachmentReceivedEvent.java        |  2 +-
 .../event/PrivateMessageReceivedEvent.java    |  2 +-
 .../briar/api/privategroup/GroupMember.java   |  2 +-
 .../briar/api/privategroup/GroupMessage.java  |  2 +-
 .../api/privategroup/GroupMessageFactory.java |  2 +-
 .../api/privategroup/GroupMessageHeader.java  |  4 +-
 .../api/privategroup/JoinMessageHeader.java   |  2 +-
 .../briar/api/privategroup/MessageType.java   |  2 +-
 .../briar/api/privategroup/PrivateGroup.java  |  2 +-
 .../api/privategroup/PrivateGroupFactory.java |  2 +-
 .../api/privategroup/PrivateGroupManager.java |  2 +-
 .../briar/api/privategroup/Visibility.java    |  2 +-
 .../ContactRelationshipRevealedEvent.java     |  2 +-
 .../event/GroupDissolvedEvent.java            |  2 +-
 .../GroupInvitationRequestReceivedEvent.java  |  2 +-
 .../GroupInvitationResponseReceivedEvent.java |  2 +-
 .../event/GroupMessageAddedEvent.java         |  2 +-
 .../invitation/GroupInvitationFactory.java    |  2 +-
 .../invitation/GroupInvitationItem.java       |  2 +-
 .../invitation/GroupInvitationManager.java    |  2 +-
 .../invitation/GroupInvitationRequest.java    |  2 +-
 .../invitation/GroupInvitationResponse.java   |  2 +-
 .../briar/api/sharing/InvitationItem.java     |  2 +-
 .../briar/api/sharing/Shareable.java          |  2 +-
 .../api/sharing/SharingInvitationItem.java    |  2 +-
 .../briar/api/sharing/SharingManager.java     |  2 +-
 .../event/ContactLeftShareableEvent.java      |  2 +-
 .../briar/api/test/TestDataCreator.java       |  2 +-
 .../briar/attachment/CountingInputStream.java |  2 +-
 .../autodelete/AutoDeleteManagerImpl.java     |  2 +-
 .../briar/avatar/AvatarManagerImpl.java       |  2 +-
 .../avatar/AvatarMessageEncoderImpl.java      |  2 +-
 .../briar/avatar/AvatarValidator.java         |  2 +-
 .../briar/blog/BlogFactoryImpl.java           |  2 +-
 .../briar/blog/BlogManagerImpl.java           |  2 +-
 .../briar/blog/BlogPostFactoryImpl.java       |  2 +-
 .../briar/blog/BlogPostValidator.java         |  2 +-
 .../briar/client/ConversationClientImpl.java  |  2 +-
 .../briar/client/MessageTrackerImpl.java      |  2 +-
 .../briar/client/MessageTreeImpl.java         |  2 +-
 .../conversation/ConversationManagerImpl.java |  2 +-
 .../briar/feed/FeedManagerImpl.java           |  2 +-
 .../briar/forum/ForumFactoryImpl.java         |  2 +-
 .../briar/forum/ForumManagerImpl.java         |  2 +-
 .../briar/forum/ForumPostFactoryImpl.java     |  2 +-
 .../briar/forum/ForumPostValidator.java       |  2 +-
 .../briar/identity/AuthorManagerImpl.java     |  2 +-
 .../briar/introduction/AbortMessage.java      |  2 +-
 .../AbstractIntroductionMessage.java          |  2 +-
 .../introduction/AbstractProtocolEngine.java  |  2 +-
 .../briar/introduction/AcceptMessage.java     |  2 +-
 .../briar/introduction/ActivateMessage.java   |  2 +-
 .../briar/introduction/AuthMessage.java       |  2 +-
 .../briar/introduction/DeclineMessage.java    |  2 +-
 .../IntroduceeProtocolEngine.java             |  4 +-
 .../briar/introduction/IntroduceeSession.java |  2 +-
 .../briar/introduction/IntroduceeState.java   |  2 +-
 .../IntroducerProtocolEngine.java             |  2 +-
 .../briar/introduction/IntroducerSession.java |  2 +-
 .../briar/introduction/IntroducerState.java   |  2 +-
 .../introduction/IntroductionCryptoImpl.java  |  2 +-
 .../introduction/IntroductionManagerImpl.java |  2 +-
 .../introduction/IntroductionValidator.java   |  2 +-
 .../briar/introduction/MessageEncoder.java    |  2 +-
 .../introduction/MessageEncoderImpl.java      |  2 +-
 .../briar/introduction/MessageMetadata.java   |  2 +-
 .../briar/introduction/MessageParser.java     |  2 +-
 .../briar/introduction/MessageParserImpl.java |  2 +-
 .../briar/introduction/MessageType.java       |  2 +-
 .../briar/introduction/PeerSession.java       |  2 +-
 .../briar/introduction/ProtocolEngine.java    |  2 +-
 .../briar/introduction/RequestMessage.java    |  2 +-
 .../briar/introduction/Session.java           |  2 +-
 .../briar/introduction/SessionEncoder.java    |  2 +-
 .../introduction/SessionEncoderImpl.java      |  2 +-
 .../briar/introduction/SessionParser.java     |  2 +-
 .../briar/introduction/SessionParserImpl.java |  2 +-
 .../briar/messaging/MessagingManagerImpl.java |  2 +-
 .../messaging/PrivateMessageFactoryImpl.java  |  2 +-
 .../messaging/PrivateMessageValidator.java    |  2 +-
 .../privategroup/GroupMessageFactoryImpl.java |  2 +-
 .../privategroup/GroupMessageValidator.java   |  2 +-
 .../privategroup/PrivateGroupFactoryImpl.java |  2 +-
 .../privategroup/PrivateGroupManagerImpl.java |  2 +-
 .../privategroup/invitation/AbortMessage.java |  2 +-
 .../invitation/AbstractProtocolEngine.java    |  2 +-
 .../invitation/CreatorProtocolEngine.java     |  2 +-
 .../invitation/CreatorSession.java            |  2 +-
 .../privategroup/invitation/CreatorState.java |  2 +-
 .../DeletableGroupInvitationMessage.java      |  2 +-
 .../GroupInvitationFactoryImpl.java           |  2 +-
 .../GroupInvitationManagerImpl.java           |  2 +-
 .../invitation/GroupInvitationMessage.java    |  2 +-
 .../invitation/GroupInvitationValidator.java  |  2 +-
 .../invitation/InviteMessage.java             |  2 +-
 .../invitation/InviteeProtocolEngine.java     |  2 +-
 .../invitation/InviteeSession.java            |  2 +-
 .../privategroup/invitation/InviteeState.java |  2 +-
 .../privategroup/invitation/JoinMessage.java  |  2 +-
 .../privategroup/invitation/LeaveMessage.java |  2 +-
 .../invitation/MessageEncoder.java            |  2 +-
 .../invitation/MessageEncoderImpl.java        |  2 +-
 .../invitation/MessageMetadata.java           |  2 +-
 .../invitation/MessageParser.java             |  2 +-
 .../invitation/MessageParserImpl.java         |  2 +-
 .../privategroup/invitation/MessageType.java  |  2 +-
 .../invitation/PeerProtocolEngine.java        |  2 +-
 .../privategroup/invitation/PeerSession.java  |  2 +-
 .../privategroup/invitation/PeerState.java    |  2 +-
 .../invitation/ProtocolEngine.java            |  2 +-
 .../invitation/ProtocolEngineFactory.java     |  2 +-
 .../invitation/ProtocolEngineFactoryImpl.java |  2 +-
 .../briar/privategroup/invitation/Role.java   |  2 +-
 .../privategroup/invitation/Session.java      |  2 +-
 .../invitation/SessionEncoder.java            |  2 +-
 .../invitation/SessionEncoderImpl.java        |  2 +-
 .../invitation/SessionParser.java             |  2 +-
 .../invitation/SessionParserImpl.java         |  2 +-
 .../briar/sharing/AbortMessage.java           |  2 +-
 .../briar/sharing/AcceptMessage.java          |  2 +-
 .../briar/sharing/BlogMessageParserImpl.java  |  2 +-
 .../briar/sharing/BlogProtocolEngineImpl.java |  2 +-
 .../briar/sharing/BlogSharingManagerImpl.java |  2 +-
 .../briar/sharing/BlogSharingValidator.java   |  2 +-
 .../briar/sharing/DeclineMessage.java         |  2 +-
 .../briar/sharing/ForumMessageParserImpl.java |  2 +-
 .../sharing/ForumProtocolEngineImpl.java      |  2 +-
 .../sharing/ForumSharingManagerImpl.java      |  2 +-
 .../briar/sharing/ForumSharingValidator.java  |  2 +-
 .../briar/sharing/InviteMessage.java          |  2 +-
 .../briar/sharing/LeaveMessage.java           |  2 +-
 .../briar/sharing/MessageEncoder.java         |  2 +-
 .../briar/sharing/MessageEncoderImpl.java     |  2 +-
 .../briar/sharing/MessageMetadata.java        |  2 +-
 .../briar/sharing/MessageParser.java          |  2 +-
 .../briar/sharing/MessageParserImpl.java      |  2 +-
 .../briar/sharing/MessageType.java            |  2 +-
 .../briar/sharing/ProtocolEngine.java         |  2 +-
 .../briar/sharing/ProtocolEngineImpl.java     |  2 +-
 .../briarproject/briar/sharing/Session.java   |  2 +-
 .../briar/sharing/SessionEncoder.java         |  2 +-
 .../briar/sharing/SessionEncoderImpl.java     |  2 +-
 .../briar/sharing/SessionParser.java          |  2 +-
 .../briar/sharing/SessionParserImpl.java      |  2 +-
 .../briar/sharing/SharingManagerImpl.java     |  2 +-
 .../briar/sharing/SharingMessage.java         |  2 +-
 .../briar/sharing/SharingValidator.java       |  2 +-
 .../org/briarproject/briar/sharing/State.java |  2 +-
 .../briar/test/TestDataCreatorImpl.java       |  2 +-
 .../briarproject/briar/util/HtmlUtils.java    |  2 +-
 .../briar/util/ValidationUtils.java           |  2 +-
 .../briar/client/MessageTreeImplTest.java     |  2 +-
 .../IntroductionIntegrationTest.java          |  6 +--
 .../SimplexMessagingIntegrationTest.java      |  2 +-
 .../sharing/BlogSharingIntegrationTest.java   |  2 +-
 .../sharing/ForumSharingIntegrationTest.java  |  2 +-
 .../briar/test/BriarIntegrationTest.java      |  4 +-
 .../briar/test/TestEventListener.java         |  2 +-
 1037 files changed, 1244 insertions(+), 1402 deletions(-)
 delete mode 100644 bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/FieldsNotNullByDefault.java
 delete mode 100644 bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/MethodsNotNullByDefault.java
 delete mode 100644 bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/NotNullByDefault.java
 delete mode 100644 bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/NullSafety.java
 delete mode 100644 bramble-api/src/main/java/org/briarproject/bramble/api/nullsafety/ParametersNotNullByDefault.java

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 e1dab1d571..d3db167950 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 307a860868..2ef13da487 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 bd96ef61b3..a44a088a5d 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 11694ba92e..3deb3a2a9d 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 b14d5459b8..ecc468258a 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 bf92597520..70f0229cf9 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 e3a2745749..6ea75cb27f 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 b36652cd96..accc2ea5dc 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 6d325a02f4..09a9107789 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 216d40f482..cad61f9b20 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 11e164148c..dec03505dc 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 de30981133..70005b25c3 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 2acd670567..1789ffcb02 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 ce0e2675bc..59d0ff03e3 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 b86be5fc69..38099ee0c3 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 21d2075c15..22d9890279 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 89f7f31e34..fdd67dbf37 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 66130cc42b..0f7ad28351 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 c426f7d6a3..b57a91d1f5 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 625d43760b..5da499d1e1 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 7fd1e80e3d..8c0f444e03 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 122180fd67..498c3e8d41 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 db0a07043a..d8c430eecb 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 bd5f5156be..7e3adef925 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 926386b029..667fde15e2 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 d8a727b71f..6b92f91cf6 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 4e025a728a..649eb0b684 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 58db606b59..06964afcc9 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 8e6ad49811..d40b3e1105 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 f412448868..cd81f1adce 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 0bd0520e4d..a99eeacec2 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 352f4ac8a2..c70a48c90d 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 bef7184d85..a564e963a8 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 f33b445941..05dd3c5b39 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 6dca7a2241..46972de404 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 d416d8fed2..5f0962dbb2 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 f941cd806a..cda531da10 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 8597c0117f..f1dd552efc 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 fe238b9e02..5ed72d2a26 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 3dfde81bf5..4caed6438e 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 da9ee31630..9ccd18f1de 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 896acb221f..04210c5d8e 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 63a9b36ae3..8750bc2534 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 d23b0144af..125ad99bc1 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 59b46b1eca..ce5670ea49 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 14e890c07d..40be25aadb 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 dad6ae6b1d..29afba6447 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 4a4f138e44..050ee372b1 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 23fd34ac5f..4d4a0ae7ed 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 1f586ada5c..990d22a5a9 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 6db81412c0..d763c38c5b 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 6a601fbc7d..0b89ef5d94 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 76550bea3c..2cff343dec 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 5972e41139..3ca68a8a12 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 703c87a85c..d76cde6143 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 d2db5985ea..547eeec0d0 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 f57e6a24e3..62dffbfc5d 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 4d9c0e2815..d349ef9804 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 6e7b454c30..de6fb2789f 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 3e1cd624e6..8fc653bb30 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 fa595fa4c5..3038cdb4c4 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 7dba858351..cf45b43168 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 9a2a5333de..6e4487acf0 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 28b2b10369..d0c87fb01f 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 7f416d31ac..fc0546abba 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 5913aae5dc..607278631a 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 f9cf35561d..b76f5f737f 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 f53ef5ef89..afda2b2d4c 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 c091e6e0ac..1aa98070d1 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 1680d54af1..520c72b3c9 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 12b743d10c..93bfcf1365 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 131fb74969..4fa54bb0f6 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 47e97ae00e..1281592511 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 7a1e3ed77b..a2bfa21721 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 4b68c04411..95759b807a 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 d915a85d2f..3fb4b26783 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 ad581382f8..ab81a39cb5 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 ac2551dde9..bc41a66d39 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 7f02ecbd0b..dd191bd23a 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 669c5dfa38..274f9fa802 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 fe9864a7e6..a3d3871ee3 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 94428e0e5c..b3a0abbbb1 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 191ffb6a71..108868fa87 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 16d587c1d4..ff1f3b16f0 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 1f024b0dd0..6a9db32a3d 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 5d2344e748..a95d580959 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 4ed459118c..1f89adb2d7 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 2ed25caf33..1806da31a3 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 cf57b67ed5..444c2ea422 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 20989bfc3f..b9f36adf8e 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 d6643c252c..4e5185efb9 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 162a68aa07..a4ee59220e 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 6a9d5681d2..27aa928065 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 4d60768eb1..227f732684 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 be2e28d3e4..e29be5d886 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 1bc8df84b2..e1af5eb1d5 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 d6f09697e0..1b538f92f4 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 1c232c6429..781f3cf12d 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 8a381ae09e..95549bcd79 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 f5d5150c44..9feaff1473 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 c554d24e93..47d1712c7d 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 4744d46400..5e073318f1 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 90403669d4..c6458443a8 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 329bf27ab9..858ed720a4 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 b0b8bf2c3c..89719caede 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 81950fbcb2..c1cc9f628b 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 6d8da3aeff..fef244b005 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 1f5a2c1569..8d4a97bbbd 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 78e2ee60b2..c8a12738c5 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 dfb54d84e0..0c651e0881 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 d2b9329692..73b83e20a9 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 7814658dad..d5c713532f 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 7a1819d042..632046a044 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 304fded5e4..c504853b7a 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 a4ca809f26..ad8257402c 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 0f8cd05d70..047cb635ea 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 d16cba6b8f..b5bb6ffd0a 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 e2aab69dc8..a47184f077 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 5b729a7b3d..e602f10d4f 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 891a8e5a99..1e285400e1 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 2c82db3315..2576f7b6af 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 87cad6b59b..8a9e9f1f2c 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 48c40a812c..379dffd587 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 1bf89529d5..5596d958c0 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 4c00cac989..1ef3d5db19 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 846f8298c4..a3ff9cd1b4 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 efba3afd7c..28e8be14e3 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 4a4b6b93ec..f256e16eec 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 aeee7da39c..41340f0efd 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 f95eddc7d7..872a32060e 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 348c29f0df..dbebeab6b0 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 f37bff94dc..4ed8e9ddbb 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 54d04f43fd..0000000000
--- 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 9fbfe4f0b0..0000000000
--- 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 23fd38c7e7..0000000000
--- 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 e54bad748e..0000000000
--- 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 eb183de2eb..0000000000
--- 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 17e7d0f592..9675484645 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 0ace3778a3..8a93d40eb0 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 3c0f3ca4da..fc4d89ab9d 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 61063030c9..46690824c2 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 d0cf92e9b4..6a4bd94685 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 5132ba3c61..2146d06a55 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 941bb59d8a..786da48ec1 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 540e56acc3..f755752e1c 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 157a033447..a3bfab974f 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 9e14e7ab59..ea9445f662 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 991747494b..18cbad2a44 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 d0e98bfba5..d49438c86d 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 6d5e5293b6..04b2ade66b 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 ba21c185d8..c51a4df85e 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 46f6b46bc9..daaf625fc6 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 77b1764840..2cb02eb7e5 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 de9c49c90f..4618c37355 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 e2167c0f59..fa8b45cefc 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 376b5303fe..9aa5aab371 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 2838f87cf2..1c78297b71 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 6067271608..78e29738b1 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 f7cf1e8014..eb492fdc51 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 2b345d5104..cd1c53af31 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 de10f2aca6..d000f19efa 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 89b7ec1317..ea609fd0d3 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 fedb7212c2..3e910ce28f 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 14756860c8..ada8f19402 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 893e5ff53c..8e0319bda6 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 6a8176516c..58d50e7ddd 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 bdf066bee4..78e9c4e820 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 89a06a07ff..1e2b73fd51 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 395e208a77..a35d478bfc 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 87d1960da1..8ab55610a2 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 c9ec9ac768..e2b593eb1a 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 5324c081d4..cdb365de7e 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 0281a9017a..9dcbe505e9 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 8c7c890002..41f6edd199 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 392886a2f1..97ee57a52d 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 731664018a..d2eaa9f622 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 e8f57c4cbc..f75afbc4f1 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 0f21a64ead..001211ee2c 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 a0f4e66754..cb509caea2 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 9924c51b85..f5219db968 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 6cfef90768..9600aa0165 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 b2f30debd1..3ec71b072b 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 c47718c16f..888ada18fc 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 cab854381d..4423abf2da 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 d25584eba2..7b3a2ab6e6 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 6cfeb5b04e..2f3e316f59 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 6f1077a23e..5de9559f06 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 44a2169b77..49dc47ccb1 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 57b2bcf987..b490ea1170 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 f4e6e1f2ca..c3a51c1e2f 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 c0f9b947ac..354340fa74 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 1f66bdbadc..19d738391a 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 4234f50fbf..9f02547de6 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 32c7c0c36c..4ee72ccfb1 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 65250938fb..e3660dd3d4 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 9517d02e65..9d9606934f 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 92d2b3c19c..22d75a6e89 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 3ff5b795c6..9b92fe5158 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 9804547169..8520a52a55 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 7d151a48dd..570db5e0a2 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 960dddc661..3c649b3577 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 eab1405425..fd4b090737 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 d7ef7d802b..4d5e8205b3 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 7a6829e7c7..7bac4e52fc 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 cc35d59a95..dcf2f4302d 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 e1a7fb969f..36989ccc90 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 fb1b1dd21d..47190a1fd0 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 179907a3a2..df741cb35a 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 00d1f5b7b1..ed46dff005 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 fcaa5ee771..1951a7342b 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 61a83d95c0..4b3e1be3b8 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 e4bf0b63c0..1642e7b294 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 7d821ba2cd..b0ab9e0b66 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 8c3b599b28..0ebe69db93 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 465dec55af..de2862d4d2 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 fb6a929df6..7fe7aad389 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 9fa6245d03..0856b87739 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 c27abc891e..7ef4810239 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 dc60242f82..8ee274a2c8 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 6090a7d147..b81285340b 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 7a3b1dc122..81bef3a391 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 200f05bd1d..60c98b174f 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 1b8fc6bc1f..dc22887830 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 d57eb987eb..87284a5afc 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 719c1e38cc..2664132249 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 53baed0683..6b299d611c 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 0e9985c771..0718cda3e2 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 3c07f76c3f..b37dbdbb6d 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 f6a4cdc830..dd1538ef64 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 8821838ef4..99bac6951f 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 10df6686cc..c39fc5e860 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 e98d2b648d..2797aaf724 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 346edc1f78..097480fb54 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-core/src/main/java/org/briarproject/bramble/PoliteExecutor.java b/bramble-core/src/main/java/org/briarproject/bramble/PoliteExecutor.java
index 152210598a..885a4e20e3 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 c786d1b960..dc0b96d3d4 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 3410c394fd..879c4505b7 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 4c88e57c73..39a3be88f0 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 35a8ddb732..1e1939cd8a 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 091bc95f7e..d3475b8f76 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 9db61721c2..614c895ef0 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 f3224e5db5..096c109617 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 2e551f520f..6b39b89b02 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 33b90c68f1..127f05ae9c 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 7405bbe2e4..df5d84a8cc 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 abf34ca0ff..2238df97ab 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 d919c1bd4c..2fd4354f34 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 68b9d969c0..705661d6ae 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 d7f777b7b8..61a2a43c55 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 7a2e5264e8..a59edf4503 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 d128d9d712..943851ab4f 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 6de535552b..2db5deda5c 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 5c21eb23a5..e3c0e55001 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 6a3a3c44a1..1f376f8ca9 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 27870ca23e..5040cf959f 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 3319258e6d..d460736ea1 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 bab35e6d14..b7bf351ca8 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 199bf16afc..f5ebb5e1d5 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 7edeaf7868..acd1c80e7f 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 7b966aa2f4..525f74fff4 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 2bf79875ef..c6cb671330 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 b70358e5da..677c6876d6 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 0d15777982..c81ef00d0b 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 aeb95836f2..4094f6933a 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 b56119b24e..d2e4f01651 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 a9494c9575..3e00e2d1bb 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 04c52ac9fb..2cde3c56e0 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 979551275c..dc6d6d19bc 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 0861597574..4bd8279d12 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 c22fe6fbba..5b310ab5d2 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 f87d727009..eb6594d6ed 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 8cfc20fae5..10f1724f73 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 4e7b38c5bd..37a6f794c0 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 093136662e..579944a5ab 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 16edc2c740..e97eff0a15 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 ae8db9fb71..fb49c1830a 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 2a060b03fa..55224c7298 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 5b89fd40bc..700c316ac1 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 758ac5eb9a..48d61ca631 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 788826a575..d5badb88e4 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 252ed843c0..92f9073674 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 e9979e9ffc..aa862e5723 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 7605b1da74..f28b8637e8 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 217a9425e8..3056975c14 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 4522bf5e42..418770eace 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 2353bf4f63..09ae70b86e 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 7fad1c3fde..ce9a6912c4 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 64dd03e046..91a22531c7 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 6085ec50a8..2c8052bc81 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 52cc608207..e1e419f6d5 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 4b1bd20afc..e8274f14de 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 85885414f1..5b812d4565 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 d5d5e0b6f4..608771728c 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 91a8616ed8..dafc7f4288 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 1a433254f2..68c33b1073 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 5b69243e1d..5cbaa4a0ac 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 23af3589e6..8efba939b6 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 682041c90f..a5ea1a09da 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 e2735c3940..502eb25a81 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 f3c19076d1..e5e1e2ca3d 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 6630448988..b0ee035e5f 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 f574360a7e..585516c645 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 bd2a35b99d..c6a2ed3957 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 f5f422c4a6..5bbea8acce 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 d0a6ab57d3..d0bf32c547 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 aa3e97930e..b445e41b0b 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 ef880bc08d..f78a6a1da4 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 e29eb5e5cc..a5deb6a079 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 2b1bad8fd9..cdfdefa2b8 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 2939ab9682..adc819c18b 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 3da4616edd..0316a20a17 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 fd625b084c..ce08b2f252 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 8ae436a611..a7ad6108e2 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 24a6210306..942047efc9 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 f147a206d0..5b3225c4db 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 4e6e115801..3f5bb43829 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 fe91f1b324..8e28e37816 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 faf39752f7..59d5bf1e0c 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 91553a7d68..1def99404c 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 82c7c47cbd..a84bc572ec 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 753e7cfef5..5913a883bf 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 749a7f31ca..871da79ac1 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 c688fc5110..d90f05d902 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 4335b614af..544a38bf1c 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 62dc1e5842..ed1f9895eb 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 50e29c802c..7c584afb23 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 e717f911f8..a6c537f063 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 b3f4ead6b0..443125db96 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 75b0f7ce73..e1e58d3db9 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 dc36443d04..6e36049618 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 7fff2782c5..d77fad407a 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 24b7b2760d..b190a247d6 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 1882cc5f4f..c955c9527b 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 5fb674f725..6c8d6be25b 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 44afd8ce11..0298a2be9b 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 9a34a6244b..1f80bd7788 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 5dd10b3653..5e8d4ca977 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 8620aee011..359e704605 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 3be0eae4ea..264d8e664b 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 2b293a1a35..0c1bc6dafe 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 7640a95715..93767bc8d0 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 a4522cbb4c..4cce8f0462 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 ef03a78fd9..64b53e0033 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 873a19e7a1..97efc501cd 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 5d41a0bb63..374c10d4f4 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 27689f979c..6c296c3c65 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 23e2586cff..dce606cc4d 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 ac002a3cf5..487676c68d 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 5ff607fb88..a1b1bb5d36 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 ccdf7f56b1..6c47737a7e 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 54587dc9c6..d9da037c09 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 a70e657087..6bd7bc7e0b 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 351368c842..bfd37ab1ca 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 c7a250d601..0f89bf2c99 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 d3464d725a..8745d99ccc 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 a05b50715a..0142d42e49 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 5dc4b6762a..743fcf03ae 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 c6a126d818..ab2130a97a 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 596f0b11e2..8c798d22cd 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 c17cc48acf..463cac5e0f 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 ca29b473e0..41180dba08 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 e78fae50e9..fdaba0dc48 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 8971136c95..29f54521a6 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 ec2f6240a7..b7283f2557 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 6330a50cf3..1354900a7a 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 80f4fa1d00..6fd413abcd 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 aa9c271f55..5d2e8fe0d5 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 8b5adc876e..f3ace3e2b8 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 baa0502550..eec3628765 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 34c7d7a746..7951892f84 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 4dd061724f..7ba4b7c326 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 9468d68231..a607efa0e9 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 7e1c4c83bb..ef8cbb7cc0 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 8ad07f8d86..81e6eee027 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 792cf43d53..579c58eb5f 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
@@ -15,9 +15,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;
@@ -35,6 +32,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 a221651516..f1efd88251 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 e6a1c5f262..bfbaf1a309 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 cabf9f95dd..7f17fed489 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 e74ca3f693..d0dd2b91b2 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 70d909fb28..fb6abb151e 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 137af59dc9..fc66f52725 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 737e32fd53..a5694641f6 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 b4cf7bc25d..fb5953e205 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 ab33b67cd4..14ee04b015 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 6e5d1969c5..b4ff625076 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 9e0b37b507..88395a837e 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 6c0b838b97..d4fffb3574 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 fbe4b18233..12f7904158 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 0de0e491f7..68c1594a00 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 982055eead..e9486e3473 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 b90494b529..fcae8aab54 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 b4ca04c94d..da67a71c0d 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 1d77108453..0233f47bd8 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 a7c9d42ecf..f10ed22f43 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 0fcd84417a..c718e812b1 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 c0cf89f944..a7e9cafc8c 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 54cc2ef082..b134280be0 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 127bbcc8f3..213d45e1b2 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 e32f4757c9..ab513d2851 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 e4e03989cf..113fbc26cf 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 42a466e1ea..b6613ddbe0 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 1cc62de9fb..6e801f8037 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 0e34cf6b4d..9e0a3d1cc8 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 6414b0490d..1c4adea4b5 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 afe7a72a84..48bfc519c5 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 f979abab0e..58f1e3b0e9 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 a9efdcabe7..c89bd5aec5 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 7124f8810f..358bd0ded9 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 8d88574601..2329999cee 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 d83bda1a8b..258df1253a 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 38964b640d..2079198b3d 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 fcd599af58..a503d5e778 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 ac22c3593f..a684ca9b7e 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 66b7df1599..dd375abe77 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 3638215376..186e64aa00 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 a992b955cf..8254babe67 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 d1b014385b..1b1764137e 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 994013044d..d33a964864 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 44ba3a3ea2..a99a7ffd9c 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 55480107b3..8f0eaf1c20 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 192c764152..d6ccff4837 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 4b0ea2bc69..3f404a16cb 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 2b85960472..7908f1b3af 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 770592c739..5fc0c0f489 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 38262fc997..5af24f1a4f 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 2a2279e35e..0b4e3be8f0 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 0448e8bc7a..a5a48f8e7b 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 64907dc412..c761cdb372 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 5799ca7ea2..44fc6f6ff1 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 769be9c39d..788d51d3ca 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 058fc894db..9d2eec898c 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 35d019a79a..ae3d1b53d6 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 1e63464e36..035c6e4c35 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 f431bdfd15..4a19c46e01 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 949ed977bb..2266c71688 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 8b79f45faf..3909ab4fb2 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 7b9e2a3e86..e719ee8e08 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 14ba99fb86..a0d18f3807 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 9ab3f97da6..294631fe12 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 ae2fd4474c..7bb9c2caa0 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 888e33d6e8..bb04bdb066 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 5fed461e13..cbf4588770 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 8fab1c8b26..82a17af1ea 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 c371fca773..ca43a94c4f 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 fdaa6a80fa..72d5515612 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 e2fc20913b..b6fbb0c5dd 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 4c0bf14186..a6b93c6ccb 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 c664eb3d0d..11e8a63c8c 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 ccb80a42f9..235aa94a5c 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 dd7982795a..334f7cc843 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 a752d072a4..14dd92530a 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 4646a05b4c..808bbc8256 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 641f208059..276dcdc4fc 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 66ffeea029..8d99bee2f0 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 c0c7986f26..ca4bc5b6a0 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 c658a6d760..2115a5501f 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 12232122e1..1297fcf81c 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 b924beb5f9..59e0b67f6c 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 5f3e19842a..77d2dea0f6 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 6b2cd71017..6f68815998 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 541ba57a9a..6e9f453283 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 68e9fe39bd..e4cd518269 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 365878217c..da81834610 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 7d488ecc71..3e7427079c 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 5e834fb5e0..f000cc1ad3 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 ed4afd6226..16bf35271e 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 83ec8129ed..5e30614c40 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 6a7f090952..c4a33299ae 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 efab0271eb..27fc9c8d3a 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 c34c227d16..112a764b77 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 866813b8d6..94a1a2256f 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 9c9cc48fd1..178ef5d807 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 2823539d07..eaa4cbf739 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 4ff790b946..2790cce645 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 094754ddf4..d9892eaaf8 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 72ccbab2f4..a4df22b33d 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 50f1514f2b..53a3f874fd 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 4a4e2e6395..8c28f25034 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 d7dbcfd118..df1b6cffe0 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 4e2d20562c..ff5784d5b5 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 a25acbad5f..d558da06c0 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 81866a9ac8..38e9a31640 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 78b8eff8b4..9f004b8992 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 3bf2867cf6..2a145cc31a 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 f93854f3e1..f920bd6439 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 459e9385ad..d0e675f2cd 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 b21100c7d7..706f268f32 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 f3e1aff06e..2e92656854 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 918bcd6f3b..911bbbc3bf 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 b2375d0d4d..63a09f2857 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 dcc0c9f009..5dd647ead1 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 c68dc01308..90de044343 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 c31bd8e576..cc8e29438d 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 9f49416fee..9bd16bd97a 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 9496a96899..81302a01bc 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 e9aadd8d36..a25f9c8b9e 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 faf5068b4a..a462f0afb7 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 54575469ca..1a92ed970c 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 b25038bc83..cb4cf7494e 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 87b8b78337..bd2d2941c7 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 5c78c30431..675c5f2c0d 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 67f6b902d1..b2b3cf422c 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 9d2054aa19..5cef394eeb 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 e13b1463a9..2668a3f078 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 f0c7d6a262..c10a4050b2 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 130b9cb9e0..64b53bc93e 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 7fedfe6d14..d58039215a 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 58e9adf68f..563b359478 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 6f7ba6705f..ea775151ab 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 015a96d987..2909362eba 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 b1675ecff5..77e86d804a 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 f751b46d6b..879d164714 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 0cb51987a6..be7ea75bb0 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 6cfdc25652..82fc8b4093 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 f14bba7fe1..5997e656b5 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 cec359705c..1c22e8187c 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 0d59345c73..8f86e9b5ee 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 aeb3522a84..216dd1b82e 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 42ebd141b8..ec4b442b84 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 e2e396958c..5ace463a3a 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 6cf3401e3c..27563b3ba7 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 59c9b07a90..3d2c2d34ac 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 076cd4a101..55d04c2383 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 017846064f..788ecf0e90 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 0c1243e298..6caf70a5f3 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 052864d2ca..6db9133d94 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 84cfd1cd9a..d2af11a906 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 0efef138f8..05dac77d4c 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 30c518dbc4..77ade1893e 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 a2b8900f31..8c72093ba3 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 f2451de103..e85c240482 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 1d83950817..8a937b8ec4 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 348300a09f..e01d84ee59 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 36e83644aa..041750b228 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 46abaf78e9..58c95c67e3 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 1254a851d8..0612d4cc80 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 07f48d44ac..cc15637b06 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 776d2ab59b..a73e49e19a 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 3df13d61ed..0d226220fb 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 eeb1e37a03..7d38ca8ffd 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 b8ef6d4b0f..2bc492eab2 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 97a5966746..e283c57aab 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 52d34791d4..494a458a3e 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 d0e6d6daee..c3d50cf2f0 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 90413c1381..81eeb44007 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 1dd159ea15..e4360d81cc 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 ae8da2f67c..f7cc8452bb 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 451790de02..d77e847e8e 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 484a6b13ed..6880c98490 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 b7790571ec..a4ddc0bcd5 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 85457f16f0..46067a4966 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 f601d6e1b0..fe694493f1 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 9c57be9add..85f8c79743 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 a14f4b4d42..7ec147a2ec 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 72beffa1a8..240dd5b79d 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 15c64e1282..e64af07d64 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 ecf373058c..4ef04ffe0f 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 8fa06e113e..611ac6f55f 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 1ba7cc14b8..a8f44f3d01 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 96845f9bc6..f4a9f5b930 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 fb38661284..d8ce1c7512 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 e992dbd7ae..785d34c462 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 070eb66611..4c4b36d337 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 803eb5d733..91d86d2d6e 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 300ef37bd5..6efb35691b 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 e6d38054b0..4b4ec0b493 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 4f586eb6e2..7ee423ab0f 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 e917625da4..07e5c78849 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 149a26972f..fde8e8aa1d 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 9fa4c3cc71..c15d45e510 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 266b4c26c9..cf50a08713 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 18a40b22e3..d58524e30a 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 9944f3663f..34f985a1f1 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 09ba81b323..81b386d017 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 e89d691ecf..7136b497ee 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 4eca97b9ae..f5c543145c 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 f97ed08638..b7784285c3 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 a57c4e35e4..d3343b57cf 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 e831348738..38f46b4f43 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 00012a58e1..f273af2854 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 ec6d5a0f6f..2fa28c77ab 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 359f793967..2918935b9b 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 1aa31a0a8c..237eb8d968 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 dfcc379993..34c1cd14f7 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 85dbc52b7b..886e3ba3f2 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 52d02c0f44..ed774bcd2d 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 fee273f58d..6dd9b46643 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 de84135143..3f3f46df13 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 d73d2db34e..3a1cf0f754 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 6f9f7ddca9..94319ec342 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 5d5ce1df30..858e0154a0 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 1e4388c262..57cc644efc 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 8f9002f599..5eecdfd97a 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 97c45b5c58..e67cdd1993 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 778a038533..a472995b7d 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 da25fbda3f..054ac6cd5e 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 634d855fec..1475eeba55 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 b9dc45d2ab..dfcf1858f4 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 5ec6c782c8..cc39023939 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 a3d09f8cec..29f4aa8093 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 33cbb9e64b..4763804607 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 c544e1c9db..47dfa1ba8e 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 8e2078597e..e4d4810c32 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 b77ad09953..ea92e918e0 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 abf7d27120..f7f43afa07 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 d2cd5c04fa..96c92c64b4 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 fddc8d98ab..fd74cc522f 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 1695970abd..22f8fa1781 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 36a2c5fa4c..3b2409c5be 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 c3d96e4626..437a2b1ede 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 021c769c28..06c7568cbe 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 8e611400c7..c0c2ad5e32 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 c09a2cbf72..42fdd03c31 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 65a25e343a..ad392705ef 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 b9185c1cea..2f3dcd9605 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 5baed8f1ca..529fcf3e8c 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 50400017a1..f830daa217 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 2244b7ca8e..2109b5f571 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 5f7027d636..ba721430e9 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 d5f578339f..86c7133681 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 da90aa0cfe..9b996fc498 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 b3c8417b24..6030fd224e 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 dcc42e49c9..379f00c375 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 061a57ccbd..ee887e1b15 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 67db6804af..63004390c1 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 02f97730c9..032bcdfe55 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 c80308b0b7..94135a7d19 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 3f1ee65683..63fe2acbdf 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 a2dba12e2a..4370b5604f 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 b8a7ff902e..c832f45dac 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 5fee04f20e..9a2d4143d2 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 44bb41aa0c..651a0ff8e6 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 63867df74c..31eca56f80 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 b269a03073..636968c8b7 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 952a3bf6f4..1bb791ed36 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 adb6b95e85..0386571268 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 3c237be6f4..2a8918d64d 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 4f773edd0b..e129d94c17 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 c17592e370..e6988ea186 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 abb30abc5d..364d730b19 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 c97b491ae1..65d15bc61d 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 093968a680..3c8797371a 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 76e56be515..d4da63301d 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 91c7a5613a..f444273000 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 22f1be68df..76ee04fb00 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 c6e1d85f8a..fd34b8d38f 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 daddcf4b04..d6cacf4f8f 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 26484301c2..923f0f7759 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 7d39be9031..56f7af208a 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 3b8d57bc8a..62580156de 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 edbe226b77..492ddcc5f1 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 eb0b73165b..a90dbae9c3 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 7decec77c7..d4a2174f58 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 aef52c5acc..874cbbd3e7 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 85e3869447..1a8223e676 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 72df53b7cd..e69dc19def 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 a152874ebf..706e41dc42 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 a5b2d34f85..bac6b7d2e1 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 4f2fa72f7f..a97015db03 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 a613804f54..2c3a767f42 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 a4a05f9e1f..a04dc92bcf 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 e212ebbafe..d5390993ef 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 6ccf4d9a7c..31ff0b9ab2 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 389a30fb62..edbe8a51e2 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 1d4016e8cf..23b4127a52 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 77a898500b..7a13a2e5ef 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 0256cf1b46..b926db9943 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 5037105e1f..029d8fcf88 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 2295838de3..c93d67a7e3 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 61cfaa1369..c24b45d86e 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 354e22ecca..982546d2f7 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 f868f6ed31..cdc175970c 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 9a622a15ce..e6ffb1bbee 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 eb0869d911..fe706bc845 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 f56c705228..a1f55fd13d 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 c0ea14cb51..30d224c0a0 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 6c43e01262..71a806e8c4 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 1a8d9d1f97..4d42630d1a 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 5a56ff1988..4e0ce178b5 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 ffc37c11ae..47468e98a4 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 44f9407fdc..c0f789fb2a 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 1c57f3691f..39908db6c1 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 3361c01cd4..3da20a80ec 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 80afa4863d..6b9c556533 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 f70476bea4..6f3db3e582 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 0d4402a817..a3f38c272b 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 3ae1f6c18d..740b106982 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 ce2af02f87..aa46e51579 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 1d76a6c2f2..74595a0152 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 febe902a49..f3f2314225 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 adce3a3020..bc1d329044 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 d4f047ff3d..0d2bae46bc 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 f3a7e0810e..5d0c48bcdb 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 d79b500d86..81de79aa4d 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 f75167fb4a..8a76132c33 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 d6e74b1bb2..cc0b8289f4 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 4eedbd5805..512ecdc6c6 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 5a6281f974..437d5136dd 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 6ee712071b..c95f922979 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 deb020e273..4a5e1f035e 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 ffd605c98e..3daac88801 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 4bae607e8d..35c707fd21 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 141091fdd6..95de304aa3 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 19e8fefee3..1092c3aa24 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 d859f29ef6..f5fae56c91 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 ba1dda0305..889a0aee73 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 a6dd2dd4ea..565d3ea244 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 0cb87e9873..22b5837d2e 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 1a2cae3ed9..48b2706b11 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 f7f361216e..15a7900d3d 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 a2a4805bc1..849514a544 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 dcd023e5fa..0ed8a25b35 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 35f6ada3e2..474dbcefdb 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 4179b40618..f1d2293ddb 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 7847f905c0..267c9c9d0e 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 2b57b4e694..5ce3458520 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 dd3d958b7c..f673800b39 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 5d7f70bff7..201eaba172 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 52c38546b5..6ec630bea8 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 edf50600c9..50e7c06b01 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 4cf47c5f2f..7085964878 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 271b97ebbc..d4af86f3c1 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 57f84947ff..e298f30f51 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 02bfa90a9c..bb13f100c6 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 1540e76856..cff3f2c086 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 3eb8832bcc..20a6436bdc 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 d03c841b39..b5c96079ab 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 d7f30e0f35..0917f37762 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 b23e60330f..c6a4f9465d 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 c1bf9441c8..7ab791b889 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 1e7f5e3081..c927d26abc 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 501f458fb9..91bd94d2ff 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 142526eef6..96099cfeec 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 1acab3a937..a39326bba7 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 e8ac850583..e8581aee54 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 870285954c..a229717c21 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 068899224d..ef9e6ad941 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 370adc927c..cad46395af 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 fae4f2ada8..940cd0b0db 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 a1c5807663..9dcf854be5 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 a49e67b20c..53ac3445d5 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 fb7746f51f..8eff6d704d 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 3ebd470979..1aba53d7b7 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 e29bb65385..664e7f2863 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 77812b14fa..670d83b2e3 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 c3d200aa4e..72775dd205 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 f669636f61..afb594ab59 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 61fbfd6e48..16eabf9304 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 94a12d53ba..ed7046e6be 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 3103a68044..f71a7d00fd 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 b39192743f..958680e770 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 83a18c0cec..5ed3fd1e11 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 b6a3780f3e..5b44d9326a 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 36a10f2283..a35380fc98 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 18b3c0f6cf..00e4583a24 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 348fcc4ac1..beae777408 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 b5752de514..a7dfcfb364 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 df17887127..85cc559e4c 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 5e0ba6e8b0..73c7d24aed 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 bd2d368c23..2d74dd2353 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 e49b632780..a3256309a3 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 62e6330169..9854e8d2f9 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 35d606f965..d5f587a935 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 59fb3683b7..67b3a0f663 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 0979afe6a8..1ee143d31a 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 3c82031282..e7e1ee189c 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 e82b19ad61..e145a69611 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 f4e3949c04..a9a8a654bc 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 47b0ba5b7f..54b4af3178 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 dbba270a2c..74c9ce5dd6 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 9bc3cda435..8b9d5cf836 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 f07cdd130d..abb14de673 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 ab0d97e1c0..3e28ac119f 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 e2ed19bc3e..80905e3470 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 f2c1d63e55..2e6385a16f 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 dcbf5af91f..92d8eb8a30 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 c7bdd59fda..88725262e3 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 b86bcb0fe1..58698bfcf9 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 3fd3f4e962..d0e3ed8f8a 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 b58ab1a087..3a70d38036 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 db667f0517..fcee4d10d7 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 43cf539889..c9fe83229b 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 b8905f7645..b989445665 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 ee31ff5e68..3de0b5ce55 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 bde7c3e7de..979fcad9e4 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 7e5bf01ae6..cca103919d 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 40933e20f6..0030616182 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 88a4b0fce4..ecd6ffde59 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 71c028b148..eb9be9acb4 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 e0f1ec3278..6871f90684 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 f71755596d..186c9b7ee3 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 785befbebd..178e5e2df0 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 0952431bc8..baa8939640 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 6014e89945..3c25b4bfb3 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 261a76c32f..944cb85878 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 7c23c894b3..52b25e0933 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 661ddaefa5..150644ae6e 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 c11a703630..0a94a09846 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 ea4893ed7c..7c8a2e69cd 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 004b5fd485..c7998ae576 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 5d75f85c3b..924da875ce 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 d3f34fa4fa..ed08ca394d 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 8050438e38..2503f4ecd3 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 7444c9557c..77d0cc9fa9 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 f6b751412d..2e65125b4a 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 18c7521ba8..33050f4173 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 0d6c432c7b..5a0352a60d 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 24a1df1c41..9d35d96a5c 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 583a42f16f..f102ffec35 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 e4e8e8308f..ad78e3221c 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 dffb946b1f..42b039efa3 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 fda307d5d2..d2dda40532 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 19ee29469e..a1dbdd3483 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 481c298a78..ee84b8b5e4 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 cf2fd2d72f..14b2f537f2 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 9215b75dcf..fa5d210f9b 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 8e3955c0b4..f5b735d164 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 2dc1a115d7..a2368dd89d 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 9d1cb9a0c0..4bad1964d4 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 a4bbb6165e..8d8483fef0 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 a6abd37b40..3a180e09cc 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 ab1efe121b..f2f8b4b756 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 b5e2bc7f3d..1c79141e43 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 a3f392985b..f03869f21b 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 407f0363bc..80f6fa8a0c 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 631ceb27d7..2e74068baa 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 382b1572ab..75c96d2ae0 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 a0e4fff021..6347303c41 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 02ab6a2d54..5890ec9902 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 a9d057501d..448eff9d42 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 2f2db1da88..98d3290720 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 c1fc813ef2..f8a9adaec0 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 9953cbac4b..b7cc96f417 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 53037b732c..442d7ae5e4 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 1b7cd03dee..d1f52ec8e9 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 4d99b10f91..f230f6f9f4 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 9a6d6b8da1..a63bd74c61 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 d7f5e4da73..ab82c8aa90 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 77d9892cb8..586ad32121 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 d26b8190f4..cac5a37bc8 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 717e9b31da..6f483d3cb1 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 579059a010..6636e01c63 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 2bd0a06680..8298f7b6b6 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 9957d8dfac..c1c4a78b40 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 07494d0f3c..ba9389137a 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 71a1b442b9..75a35954d4 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 2c869d9f39..dd8dc3519f 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 e648869bb9..515562aa44 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 4846088b69..cdae24ea27 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 62d33ca466..a379da623d 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 19abb9ea75..e6e42d48b8 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 b8c7b20aff..73cc8dcccd 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 2a070a5337..d79655db4f 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 6a6889a0fa..e683c32018 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 ef747723d6..18a469c723 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 f0fcf5cd38..d51c2b0013 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 98cabde3e1..a57c8b6ed1 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 1b14a06bef..07fa9bf59e 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 954e344bf4..60ace0fa5b 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 3b2e46367a..0eb67c638f 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 cb1e0878bc..1b0cd636c6 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 fe35ca6ddc..038e2620de 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 3abe250dff..812bda4471 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 ebf93b6218..1f5df8b4f6 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 85084858f9..064ca32fde 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 5a99517bf7..5b54cc31f9 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 28582acf66..fb654b055e 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 098531aa34..39be5b5708 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 46381a3c03..22f2627920 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 53c6903987..84b4b30287 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 bc342596e6..8f624e29c5 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 716432e3ce..fdb5c15c5d 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 38f0bd44cf..e70ceb25fa 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 113ba400ef..bbce380c15 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 9d6e6c685f..0a6a4e993a 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 cf205ca77c..828b53ffc7 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 c1f17e1871..31c928d622 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 23bc39dde6..f7e1abef32 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 b3274a0571..c25d142aa5 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 afe3638b1b..212da1e251 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 e5f6e2b4f4..bde9ea9c67 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 32e2d3a564..0b40f09b35 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 5f842f0202..03deb49c2a 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 7f57e1c124..c63ba64744 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 03b0ea3fd0..cc66729587 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 724b077cbc..f703493e24 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 f84b59d82e..518cc54d95 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 9927ae4f2d..2f31d16465 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 37303c868e..216849c41c 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 759128c8a8..59b69417a6 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 ba1fb730c9..ceeb8d9c61 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 c8c97c1bad..c8932a416e 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 31a2b2ee09..47de866edf 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 030bd266fa..df16b82432 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 71edf29fb8..9bd21364a1 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 74619ffe85..8656dde4e9 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 80c25bd0be..55effdd983 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 061afd6e12..58f024ada0 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 215e3b756d..84c31cb33d 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 061064e9c7..f552d4859c 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 0282145f28..1bd151e2ca 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 0f7d063676..8c352e5e12 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 34735e7940..0a3e23f279 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 c04f210f36..e197f8a962 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 e04a38cf25..8cd9951381 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 e3de2fd91f..87241aacbe 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 69ffbab3c9..66afdb19c8 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 b96100e0ff..b40fd67d33 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 8c1d8ecf9e..b0190c3d68 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 5a4d87d864..666839767c 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 ab3097bd27..2c720367c3 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 c4308a4697..cecd152e44 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 9f0b6c532d..30ec7cb377 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 ca7887f0d7..ae71e5b8d3 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 c37c8c2908..2c55ff4fd3 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 12e2ff4353..4bef7fe854 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 86347dd344..d4c1352814 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 aeae278996..a7a2a5e8d0 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 4c7c650308..1da6159269 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 caca96b115..7f08fe97be 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 d1f04ffccc..ee2589f42b 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 323bf7cfa8..b200ec451c 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 e49acc5eef..4237cdc541 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 a5dc6cebcc..1bd80f4e3b 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 c07987d9cc..a27df2acf3 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 818a9b9e36..429e99330c 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 7b1b64ec03..2251690476 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 fe90afa3c9..5c0140baf2 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 d72130337f..5de9ce8702 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 faf65ae157..3f664bee70 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 e021ff7f85..06870f3e13 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 4f53f2c322..e2ccda6468 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 09c09c35b9..dd511166fd 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 631312019d..137cd8abb0 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 700317da9a..6d48a89c5f 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 80f9d95b3d..1f7412a2f7 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 c422af82a6..a86ae6ec75 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 1fdc76c73f..39396518e7 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 70fd6c0ac9..93b6132dc1 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 8093806478..b8e7eb7b1d 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 877c95d454..0cfae7b02b 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 bc7bf0f3b3..b3b1a6077c 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 adaaa0aefa..02fa86274a 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 516b3de2aa..da73bb221d 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 d4ff9cb4e3..c8c5752270 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 581f48c4c1..0c8b8e2790 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 503dd4cc66..a6b158d23a 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 9e0e333090..5fd50c59c2 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 67365399b0..54adacb17c 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 3c453d2fa9..5e6b90ec3b 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 8992b57bba..d0ab46a683 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 b192f5e781..65c0b8deda 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 086dfb1a29..ede5edf10b 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 70cfff1bba..1f0333b52a 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 8f9819cf89..f8c18ba2ed 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 c58cac3d95..00b8f42721 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 938a6a7ab2..203ebec577 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 e8beca4397..af0460fd93 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 a598ce718d..921503b4e5 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 6cefd59c0b..44fb4f4adf 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 a0033ace7b..faeaeb05aa 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 0c19291129..02abed6078 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 864ad23aba..5c14b19cf9 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 0a8577ea96..3a5ca662aa 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 23d69d0746..bb74def439 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 779d008cf0..26705cc01e 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 c56601496d..0f7036671e 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 f152158248..fad32f1454 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 779618f6c7..4bc332990a 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 328180b3f0..37c156bb63 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 9172e33f6b..c9074563df 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 8e78042344..40d1733f99 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 9344d52135..05fa266426 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 34111cf04f..f04d38fa5c 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 a9dc593294..e6817802c1 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 e53d711623..6ce6d07c6f 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 cade5865cb..c7001f9726 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 e44990a894..c2e16a5633 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 4b4c2b0ebf..c3100a4c1e 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 a442ba894e..e4cc60fd61 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 72e8b91d69..ca29c1312b 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 2ef288951e..c324eaf8cc 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 51812f86d9..5bc9186416 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 8300b305c8..60e70e927d 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 aac5ec988a..244ac68532 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 090d2e193c..048e8164f0 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 42a56ee185..10778a5dc9 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 e0e1b56c07..99e2282f1c 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 ca7fd08e41..d74174331a 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 d44359d896..fd6924d7a2 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 00ddc95b7f..74a73388a8 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 b4c7c8bba3..c770be7d7a 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 b79794276c..c9d85bc227 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 040ab401a8..1baef4eede 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 876a53feae..60838c4a55 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 86fe5e3a04..b3b93fa5c0 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 b6d0b61b98..976c5e3df1 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 bbcd514931..a21c802738 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 188c0b5013..5832eb4a87 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 33644cb63d..3c06f85001 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 e111bcd158..01fe4e0d09 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 47169b822f..bcc1767ab5 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 26852845da..33311e5bea 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 1f64b02a3c..cba2c0e6c7 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 e392ef701a..0f63e7fe72 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 76e5569ba0..a9a45335df 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 0342ee0355..db53641d46 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 9b3cd97e16..27dc14529d 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 dd66181d7f..37acdd25e3 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 d83a3a3f74..59f9eefcc4 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 f518570551..d7e47b4753 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 c64bdcafbe..c0294c6e1b 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 05ef6bd659..51b5c5776f 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 212d60810c..fb505f89f9 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 e164dfdd8d..b338a9f689 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 bf832bc277..dd8768bcc1 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 1af500a745..bb96c5c10d 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 4f759fe0bf..6ab15e8c18 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 b7c135365f..172954b2a4 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 6e0a552018..e9f0c31ecf 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 61862e8936..f8487b7c96 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 641731a4aa..2453d0a931 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 2467573b6c..7eb84706bd 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 1c2eaa4986..a29b25e0c1 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 5ef16e12fb..22473416f0 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 5d18579e05..5a58135699 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 4698ff0e25..e03af82d77 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 18defd6714..4d8c47f789 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 474237ada5..7bc6d4ec72 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 0a312c6739..37c5775a21 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 58b8ddf6c2..56f4f5a63c 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 f324990ac0..f4973d12a7 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 dd980aa18d..68ea901199 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 ba63b7bda0..1c11bd79a3 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 173d3bebf0..e3578248f7 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 a930490180..50f288d1e8 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 71830e5978..220ba21f8c 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 c4a52f701f..f2d68331d6 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;
 
-- 
GitLab


From 6c1232bfaab7157151a080f0d2b63f3feae354c9 Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Thu, 29 Sep 2022 13:33:54 +0100
Subject: [PATCH 2/2] Update dependency checksums.

---
 bramble-api/witness.gradle | 1 +
 1 file changed, 1 insertion(+)

diff --git a/bramble-api/witness.gradle b/bramble-api/witness.gradle
index 2b9110cf05..2b05f3a065 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',
-- 
GitLab