From 832476412c1870a91b7e85b4a59c708e3c34aac7 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Wed, 8 Jan 2014 16:18:30 +0000
Subject: [PATCH] Changed the root package from net.sf.briar to
 org.briarproject.

---
 briar-android/AndroidManifest.xml             |  44 +++---
 briar-android/res/values/roboguice.xml        |  24 ++--
 .../android/AndroidExecutorImpl.java          |   4 +-
 .../android/AndroidFileUtils.java             |   4 +-
 .../briarproject}/android/AndroidModule.java  |  38 +++---
 .../android/AscendingHeaderComparator.java    |   4 +-
 .../briarproject}/android/BriarService.java   |  10 +-
 .../android/HomeScreenActivity.java           |  38 +++---
 .../android/ReferenceManagerImpl.java         |   4 +-
 .../briarproject}/android/SetupActivity.java  |  26 ++--
 .../android/SplashScreenActivity.java         |   6 +-
 .../android/contact/ContactItem.java          |   4 +-
 .../contact/ContactItemComparator.java        |   2 +-
 .../android/contact/ContactListActivity.java  |  58 ++++----
 .../android/contact/ContactListAdapter.java   |   6 +-
 .../android/contact/ContactListItem.java      |   8 +-
 .../android/contact/ConversationActivity.java |  70 +++++-----
 .../android/contact/ConversationAdapter.java  |   8 +-
 .../android/contact/ConversationItem.java     |   4 +-
 .../contact/ConversationItemComparator.java   |   2 +-
 .../contact/ReadPrivateMessageActivity.java   |  58 ++++----
 .../android/contact/SelectContactsDialog.java |   8 +-
 .../contact/WritePrivateMessageActivity.java  |  46 +++----
 .../groups/ConfigureGroupActivity.java        |  38 +++---
 .../android/groups/CreateGroupActivity.java   |  28 ++--
 .../android/groups/GroupActivity.java         |  64 ++++-----
 .../android/groups/GroupAdapter.java          |  10 +-
 .../android/groups/GroupItem.java             |   4 +-
 .../android/groups/GroupItemComparator.java   |   4 +-
 .../android/groups/GroupListActivity.java     |  54 ++++----
 .../android/groups/GroupListAdapter.java      |   8 +-
 .../android/groups/GroupListItem.java         |   8 +-
 .../android/groups/ManageGroupsActivity.java  |  40 +++---
 .../android/groups/ManageGroupsAdapter.java   |   8 +-
 .../android/groups/ManageGroupsItem.java      |   4 +-
 .../android/groups/NoContactsDialog.java      |   4 +-
 .../android/groups/ReadGroupPostActivity.java |  50 +++----
 .../groups/WriteGroupPostActivity.java        |  56 ++++----
 .../identity/CreateIdentityActivity.java      |  26 ++--
 .../android/identity/LocalAuthorItem.java     |   4 +-
 .../identity/LocalAuthorItemComparator.java   |   6 +-
 .../identity/LocalAuthorSpinnerAdapter.java   |   8 +-
 .../invitation/AddContactActivity.java        |  58 ++++----
 .../android/invitation/AddContactView.java    |   4 +-
 .../invitation/BluetoothStatusView.java       |   6 +-
 .../android/invitation/CodeEntryListener.java |   2 +-
 .../android/invitation/CodeEntryView.java     |   6 +-
 .../invitation/CodesDoNotMatchView.java       |   6 +-
 .../invitation/ConfirmationCodeView.java      |   4 +-
 .../android/invitation/ConnectedView.java     |   4 +-
 .../invitation/ConnectionFailedView.java      |   6 +-
 .../android/invitation/ConnectionView.java    |   4 +-
 .../invitation/ContactDetailsView.java        |   4 +-
 .../invitation/InvitationCodeView.java        |   4 +-
 .../android/invitation/NetworkSetupView.java  |  18 +--
 .../invitation/WaitForContactView.java        |   4 +-
 .../android/invitation/WifiStatusView.java    |   6 +-
 .../android/util/CommonLayoutParams.java      |   2 +-
 .../android/util/HorizontalBorder.java        |   4 +-
 .../android/util/HorizontalSpace.java         |   2 +-
 .../android/util/ListLoadingProgressBar.java  |   6 +-
 .../plugins/droidtooth/DroidtoothPlugin.java  |  24 ++--
 .../droidtooth/DroidtoothPluginFactory.java   |  16 +--
 .../DroidtoothTransportConnection.java        |   6 +-
 .../plugins/droidtooth/InsecureBluetooth.java |   2 +-
 .../plugins/tcp/DroidLanTcpPlugin.java        |  10 +-
 .../plugins/tcp/DroidLanTcpPluginFactory.java |  14 +-
 .../briarproject}/plugins/tor/TorPlugin.java  |  22 +--
 .../plugins/tor/TorPluginFactory.java         |  12 +-
 .../plugins/tor/TorTransportConnection.java   |   6 +-
 .../duplex/DuplexConnectionFactory.java       |  15 ---
 .../simplex/SimplexConnectionFactory.java     |  16 ---
 .../briarproject}/api/Author.java             |   2 +-
 .../briarproject}/api/AuthorConstants.java    |   2 +-
 .../briarproject}/api/AuthorFactory.java      |   2 +-
 .../briarproject}/api/AuthorId.java           |   2 +-
 .../briar => org/briarproject}/api/Bytes.java |   2 +-
 .../briarproject}/api/Contact.java            |   2 +-
 .../briarproject}/api/ContactId.java          |   2 +-
 .../briarproject}/api/FormatException.java    |   2 +-
 .../briarproject}/api/LocalAuthor.java        |   2 +-
 .../briarproject}/api/TransportConfig.java    |   2 +-
 .../briarproject}/api/TransportId.java        |   2 +-
 .../api/TransportProperties.java              |   2 +-
 .../api/TransportPropertyConstants.java       |   2 +-
 .../briarproject}/api/UniqueId.java           |   2 +-
 .../api/android/AndroidExecutor.java          |   2 +-
 .../api/android/DatabaseUiExecutor.java       |   2 +-
 .../api/android/ReferenceManager.java         |   2 +-
 .../api/crypto/AuthenticatedCipher.java       |   2 +-
 .../api/crypto/CryptoComponent.java           |   2 +-
 .../api/crypto/CryptoExecutor.java            |   2 +-
 .../briarproject}/api/crypto/KeyManager.java  |  12 +-
 .../briarproject}/api/crypto/KeyPair.java     |   2 +-
 .../briarproject}/api/crypto/KeyParser.java   |   2 +-
 .../api/crypto/MessageDigest.java             |   2 +-
 .../briarproject}/api/crypto/PrivateKey.java  |   2 +-
 .../api/crypto/PseudoRandom.java              |   2 +-
 .../briarproject}/api/crypto/PublicKey.java   |   2 +-
 .../briarproject}/api/crypto/SecretKey.java   |   2 +-
 .../briarproject}/api/crypto/Signature.java   |   2 +-
 .../api/db/ContactExistsException.java        |   2 +-
 .../api/db/DatabaseComponent.java             |  52 ++++----
 .../briarproject}/api/db/DatabaseConfig.java  |   2 +-
 .../api/db/DatabaseExecutor.java              |   2 +-
 .../api/db/DbClosedException.java             |   2 +-
 .../briarproject}/api/db/DbException.java     |   2 +-
 .../api/db/LocalAuthorExistsException.java    |   2 +-
 .../briarproject}/api/db/MessageHeader.java   |   8 +-
 .../api/db/NoSuchContactException.java        |   2 +-
 .../api/db/NoSuchLocalAuthorException.java    |   2 +-
 .../api/db/NoSuchMessageException.java        |   2 +-
 .../api/db/NoSuchSubscriptionException.java   |   2 +-
 .../api/db/NoSuchTransportException.java      |   2 +-
 .../api/event/ContactAddedEvent.java          |   4 +-
 .../api/event/ContactRemovedEvent.java        |   4 +-
 .../briarproject}/api/event/Event.java        |   2 +-
 .../api/event/EventListener.java              |   2 +-
 .../api/event/LocalAuthorAddedEvent.java      |   4 +-
 .../api/event/LocalAuthorRemovedEvent.java    |   4 +-
 .../event/LocalSubscriptionsUpdatedEvent.java |   4 +-
 .../event/LocalTransportsUpdatedEvent.java    |   2 +-
 .../api/event/MessageAddedEvent.java          |   6 +-
 .../api/event/MessageExpiredEvent.java        |   2 +-
 .../api/event/MessageRequestedEvent.java      |   4 +-
 .../api/event/MessageToAckEvent.java          |   4 +-
 .../api/event/MessageToRequestEvent.java      |   4 +-
 .../RemoteRetentionTimeUpdatedEvent.java      |   4 +-
 .../RemoteSubscriptionsUpdatedEvent.java      |   4 +-
 .../event/RemoteTransportsUpdatedEvent.java   |   6 +-
 .../api/event/SubscriptionAddedEvent.java     |   4 +-
 .../api/event/SubscriptionRemovedEvent.java   |   4 +-
 .../api/event/TransportAddedEvent.java        |   4 +-
 .../api/event/TransportRemovedEvent.java      |   4 +-
 .../api/invitation/InvitationConstants.java   |   2 +-
 .../api/invitation/InvitationListener.java    |   2 +-
 .../api/invitation/InvitationState.java       |   2 +-
 .../api/invitation/InvitationTask.java        |   2 +-
 .../api/invitation/InvitationTaskFactory.java |   4 +-
 .../api/lifecycle/LifecycleManager.java       |   2 +-
 .../briarproject}/api/lifecycle/Service.java  |   2 +-
 .../api/lifecycle/ShutdownManager.java        |   2 +-
 .../briarproject}/api/messaging/Ack.java      |   2 +-
 .../briarproject}/api/messaging/Group.java    |   2 +-
 .../api/messaging/GroupFactory.java           |   2 +-
 .../briarproject}/api/messaging/GroupId.java  |   4 +-
 .../api/messaging/GroupStatus.java            |   2 +-
 .../briarproject}/api/messaging/Message.java  |   6 +-
 .../api/messaging/MessageFactory.java         |   6 +-
 .../api/messaging/MessageId.java              |   4 +-
 .../api/messaging/MessageVerifier.java        |   2 +-
 .../api/messaging/MessagingConstants.java     |   4 +-
 .../briarproject}/api/messaging/Offer.java    |   2 +-
 .../api/messaging/PacketReader.java           |   2 +-
 .../api/messaging/PacketReaderFactory.java    |   2 +-
 .../api/messaging/PacketWriter.java           |   2 +-
 .../api/messaging/PacketWriterFactory.java    |   2 +-
 .../briarproject}/api/messaging/Request.java  |   2 +-
 .../api/messaging/RetentionAck.java           |   2 +-
 .../api/messaging/RetentionUpdate.java        |   2 +-
 .../api/messaging/SubscriptionAck.java        |   2 +-
 .../api/messaging/SubscriptionUpdate.java     |   2 +-
 .../api/messaging/TransportAck.java           |   4 +-
 .../api/messaging/TransportUpdate.java        |   6 +-
 .../briarproject}/api/messaging/Types.java    |   2 +-
 .../api/messaging/UnverifiedMessage.java      |   6 +-
 .../duplex/DuplexConnectionFactory.java       |  15 +++
 .../simplex/SimplexConnectionFactory.java     |  16 +++
 .../briarproject}/api/plugins/Plugin.java     |   6 +-
 .../api/plugins/PluginCallback.java           |   8 +-
 .../api/plugins/PluginExecutor.java           |   2 +-
 .../api/plugins/PluginManager.java            |   6 +-
 .../api/plugins/duplex/DuplexPlugin.java      |   8 +-
 .../plugins/duplex/DuplexPluginCallback.java  |   6 +-
 .../plugins/duplex/DuplexPluginConfig.java    |   2 +-
 .../plugins/duplex/DuplexPluginFactory.java   |   4 +-
 .../duplex/DuplexTransportConnection.java     |   2 +-
 .../api/plugins/simplex/SimplexPlugin.java    |   6 +-
 .../simplex/SimplexPluginCallback.java        |   6 +-
 .../plugins/simplex/SimplexPluginConfig.java  |   2 +-
 .../plugins/simplex/SimplexPluginFactory.java |   4 +-
 .../simplex/SimplexTransportReader.java       |   2 +-
 .../simplex/SimplexTransportWriter.java       |   2 +-
 .../api/reliability/ReadHandler.java          |   2 +-
 .../api/reliability/ReliabilityExecutor.java  |   2 +-
 .../api/reliability/ReliabilityLayer.java     |   2 +-
 .../reliability/ReliabilityLayerFactory.java  |   2 +-
 .../api/reliability/WriteHandler.java         |   2 +-
 .../briarproject}/api/serial/Consumer.java    |   2 +-
 .../api/serial/CopyingConsumer.java           |   2 +-
 .../api/serial/CountingConsumer.java          |   4 +-
 .../api/serial/DigestingConsumer.java         |   4 +-
 .../briarproject}/api/serial/Reader.java      |   2 +-
 .../api/serial/ReaderFactory.java             |   2 +-
 .../api/serial/SerialComponent.java           |   2 +-
 .../api/serial/SigningConsumer.java           |   4 +-
 .../api/serial/StructReader.java              |   2 +-
 .../briarproject}/api/serial/Writer.java      |   2 +-
 .../api/serial/WriterFactory.java             |   2 +-
 .../briarproject}/api/system/Clock.java       |   2 +-
 .../briarproject}/api/system/FileUtils.java   |   2 +-
 .../briarproject}/api/system/SystemClock.java |   2 +-
 .../briarproject}/api/system/SystemTimer.java |   2 +-
 .../briarproject}/api/system/Timer.java       |   2 +-
 .../api/transport/ConnectionContext.java      |   6 +-
 .../api/transport/ConnectionDispatcher.java   |  12 +-
 .../api/transport/ConnectionListener.java     |   4 +-
 .../api/transport/ConnectionReader.java       |   2 +-
 .../transport/ConnectionReaderFactory.java    |   2 +-
 .../api/transport/ConnectionRecogniser.java   |   8 +-
 .../api/transport/ConnectionRegistry.java     |   6 +-
 .../api/transport/ConnectionWriter.java       |   2 +-
 .../transport/ConnectionWriterFactory.java    |   2 +-
 .../briarproject}/api/transport/Endpoint.java |   6 +-
 .../transport/IncomingConnectionExecutor.java |   2 +-
 .../api/transport/TemporarySecret.java        |   8 +-
 .../api/transport/TransportConstants.java     |   2 +-
 .../briarproject}/api/ui/UiCallback.java      |   2 +-
 .../src/net/sf/briar/system/ClockModule.java  |  16 ---
 .../crypto/AuthenticatedCipherImpl.java       |   6 +-
 .../crypto/CryptoComponentImpl.java           |  34 ++---
 .../briarproject}/crypto/CryptoModule.java    |   8 +-
 .../briarproject}/crypto/DoubleDigest.java    |   4 +-
 .../crypto/EllipticCurveConstants.java        |   2 +-
 .../crypto/PseudoRandomImpl.java              |   8 +-
 .../briarproject}/crypto/Sec1KeyParser.java   |   8 +-
 .../briarproject}/crypto/Sec1PrivateKey.java  |   4 +-
 .../briarproject}/crypto/Sec1PublicKey.java   |   4 +-
 .../briarproject}/crypto/Sec1Utils.java       |   2 +-
 .../briarproject}/crypto/SecretKeyImpl.java   |   6 +-
 .../briarproject}/crypto/SignatureImpl.java   |   8 +-
 .../briarproject}/db/Database.java            |  48 +++----
 .../briarproject}/db/DatabaseCleaner.java     |   4 +-
 .../briarproject}/db/DatabaseCleanerImpl.java |   8 +-
 .../db/DatabaseComponentImpl.java             | 126 +++++++++---------
 .../briarproject}/db/DatabaseConstants.java   |   2 +-
 .../briarproject}/db/DatabaseModule.java      |  18 +--
 .../briarproject}/db/DbStateException.java    |   2 +-
 .../briarproject}/db/ExponentialBackoff.java  |   2 +-
 .../briarproject}/db/H2Database.java          |  12 +-
 .../briarproject}/db/JdbcDatabase.java        |  58 ++++----
 .../invitation/AliceConnector.java            |  48 +++----
 .../invitation/BobConnector.java              |  48 +++----
 .../briarproject}/invitation/Connector.java   |  80 +++++------
 .../invitation/ConnectorGroup.java            |  50 +++----
 .../invitation/InvitationModule.java          |   4 +-
 .../invitation/InvitationTaskFactoryImpl.java |  32 ++---
 .../lifecycle/LifecycleManagerImpl.java       |  10 +-
 .../lifecycle/LifecycleModule.java            |   6 +-
 .../lifecycle/ShutdownManagerImpl.java        |   4 +-
 .../messaging/AuthorFactoryImpl.java          |  20 +--
 .../briarproject}/messaging/AuthorReader.java |  22 +--
 .../messaging/GroupFactoryImpl.java           |  20 +--
 .../briarproject}/messaging/GroupReader.java  |  22 +--
 .../messaging/MessageFactoryImpl.java         |  48 +++----
 .../briarproject}/messaging/MessageImpl.java  |  12 +-
 .../messaging/MessageReader.java              |  34 ++---
 .../messaging/MessageVerifierImpl.java        |  26 ++--
 .../messaging/MessagingModule.java            |  28 ++--
 .../messaging/PacketReaderFactoryImpl.java    |  14 +-
 .../messaging/PacketReaderImpl.java           |  70 +++++-----
 .../messaging/PacketWriterFactoryImpl.java    |  10 +-
 .../messaging/PacketWriterImpl.java           |  56 ++++----
 .../messaging/SubscriptionUpdateReader.java   |  22 +--
 .../messaging/duplex/DuplexConnection.java    |  88 ++++++------
 .../duplex/DuplexConnectionFactoryImpl.java   |  32 ++---
 .../duplex/DuplexMessagingModule.java         |   4 +-
 .../duplex/IncomingDuplexConnection.java      |  24 ++--
 .../duplex/OutgoingDuplexConnection.java      |  24 ++--
 .../simplex/IncomingSimplexConnection.java    |  48 +++----
 .../simplex/OutgoingSimplexConnection.java    |  42 +++---
 .../simplex/SimplexConnectionFactoryImpl.java |  34 ++---
 .../simplex/SimplexMessagingModule.java       |   4 +-
 .../plugins/PluginManagerImpl.java            |  48 +++----
 .../briarproject}/plugins/PluginsModule.java  |   8 +-
 .../briarproject}/plugins/Poller.java         |   4 +-
 .../briarproject}/plugins/PollerImpl.java     |  12 +-
 .../plugins/file/FilePlugin.java              |  16 +--
 .../plugins/file/FileTransportReader.java     |   4 +-
 .../plugins/file/FileTransportWriter.java     |   4 +-
 .../plugins/tcp/LanTcpPlugin.java             |  20 +--
 .../plugins/tcp/LanTcpPluginFactory.java      |  14 +-
 .../plugins/tcp/MappingResult.java            |   2 +-
 .../briarproject}/plugins/tcp/PortMapper.java |   2 +-
 .../plugins/tcp/PortMapperImpl.java           |   4 +-
 .../briarproject}/plugins/tcp/TcpPlugin.java  |  14 +-
 .../plugins/tcp/TcpTransportConnection.java   |   6 +-
 .../plugins/tcp/WanTcpPlugin.java             |  14 +-
 .../plugins/tcp/WanTcpPluginFactory.java      |  12 +-
 .../briarproject}/reliability/Ack.java        |   4 +-
 .../briarproject}/reliability/Crc32.java      |   2 +-
 .../briarproject}/reliability/Data.java       |   2 +-
 .../briarproject}/reliability/Frame.java      |   4 +-
 .../briarproject}/reliability/Receiver.java   |   6 +-
 .../reliability/ReceiverInputStream.java      |   2 +-
 .../ReliabilityLayerFactoryImpl.java          |  14 +-
 .../reliability/ReliabilityLayerImpl.java     |   8 +-
 .../reliability/ReliabilityModule.java        |   8 +-
 .../briarproject}/reliability/Sender.java     |   6 +-
 .../reliability/SenderOutputStream.java       |   2 +-
 .../reliability/SlipDecoder.java              |   4 +-
 .../reliability/SlipEncoder.java              |   4 +-
 .../serial/ReaderFactoryImpl.java             |   6 +-
 .../briarproject}/serial/ReaderImpl.java      |   8 +-
 .../serial/SerialComponentImpl.java           |   6 +-
 .../briarproject}/serial/SerialModule.java    |   8 +-
 .../briarproject}/serial/Tag.java             |   2 +-
 .../serial/WriterFactoryImpl.java             |   6 +-
 .../briarproject}/serial/WriterImpl.java      |   8 +-
 .../org/briarproject/system/SystemModule.java |  16 +++
 .../transport/ConnectionDispatcherImpl.java   |  28 ++--
 .../ConnectionReaderFactoryImpl.java          |  12 +-
 .../transport/ConnectionReaderImpl.java       |   8 +-
 .../transport/ConnectionRecogniserImpl.java   |  18 +--
 .../transport/ConnectionRegistryImpl.java     |  10 +-
 .../transport/ConnectionWindow.java           |   6 +-
 .../ConnectionWriterFactoryImpl.java          |  14 +-
 .../transport/ConnectionWriterImpl.java       |   8 +-
 .../briarproject}/transport/FrameEncoder.java |  16 +--
 .../briarproject}/transport/FrameReader.java  |   2 +-
 .../briarproject}/transport/FrameWriter.java  |   2 +-
 .../transport/IncomingEncryptionLayer.java    |  16 +--
 .../transport/KeyManagerImpl.java             |  40 +++---
 .../transport/OutgoingEncryptionLayer.java    |  16 +--
 .../TransportConnectionRecogniser.java        |  22 +--
 .../transport/TransportModule.java            |  18 +--
 .../briarproject}/util/ByteUtils.java         |   2 +-
 .../briarproject}/util/LatchedReference.java  |   2 +-
 .../briarproject}/util/OsUtils.java           |   2 +-
 .../briarproject}/util/StringUtils.java       |   2 +-
 .../briarproject}/util/ZipUtils.java          |   2 +-
 .../lifecycle/DesktopLifecycleModule.java     |   8 +-
 .../lifecycle/WindowsShutdownManagerImpl.java |   4 +-
 .../plugins/DesktopPluginsModule.java         |  30 ++---
 .../plugins/bluetooth/BluetoothPlugin.java    |  24 ++--
 .../bluetooth/BluetoothPluginFactory.java     |  14 +-
 .../BluetoothTransportConnection.java         |   6 +-
 .../plugins/bluetooth/InvitationListener.java |   2 +-
 .../file/LinuxRemovableDriveFinder.java       |   2 +-
 .../file/LinuxRemovableDriveMonitor.java      |   2 +-
 .../plugins/file/MacRemovableDriveFinder.java |   2 +-
 .../file/MacRemovableDriveMonitor.java        |   2 +-
 .../file/PollingRemovableDriveMonitor.java    |   2 +-
 .../plugins/file/RemovableDriveFinder.java    |   2 +-
 .../plugins/file/RemovableDriveMonitor.java   |   2 +-
 .../plugins/file/RemovableDrivePlugin.java    |  12 +-
 .../file/RemovableDrivePluginFactory.java     |  16 +--
 .../file/UnixRemovableDriveFinder.java        |   2 +-
 .../file/UnixRemovableDriveMonitor.java       |   2 +-
 .../file/WindowsRemovableDriveFinder.java     |   2 +-
 .../plugins/modem/CountryCodes.java           |   2 +-
 .../briarproject}/plugins/modem/Modem.java    |   2 +-
 .../plugins/modem/ModemFactory.java           |   2 +-
 .../plugins/modem/ModemFactoryImpl.java       |   8 +-
 .../plugins/modem/ModemImpl.java              |  10 +-
 .../plugins/modem/ModemPlugin.java            |  18 +--
 .../plugins/modem/ModemPluginFactory.java     |  14 +-
 .../plugins/modem/SerialPort.java             |   2 +-
 .../plugins/modem/SerialPortImpl.java         |   2 +-
 .../plugins/modem/SerialPortList.java         |   2 +-
 .../plugins/modem/SerialPortListImpl.java     |   2 +-
 .../briarproject}/system/DesktopOsModule.java |   4 +-
 .../briarproject}/system/FileUtilsImpl.java   |   4 +-
 briar-tests/build.xml                         |  86 ++++++------
 .../briarproject}/BriarTestCase.java          |   2 +-
 .../briarproject}/LockFairnessTest.java       |   2 +-
 .../ProtocolIntegrationTest.java              |  82 ++++++------
 .../briarproject}/TestDatabaseConfig.java     |   4 +-
 .../briarproject}/TestDatabaseModule.java     |   6 +-
 .../briarproject}/TestFileUtils.java          |   4 +-
 .../briarproject}/TestLifecycleModule.java    |   8 +-
 .../briarproject}/TestMessage.java            |  10 +-
 .../briarproject}/TestUiModule.java           |   4 +-
 .../briar => org/briarproject}/TestUtils.java |   4 +-
 .../crypto/KeyAgreementTest.java              |   8 +-
 .../crypto/KeyDerivationTest.java             |   8 +-
 .../crypto/KeyEncodingAndParsingTest.java     |  12 +-
 .../crypto/PasswordBasedKdfTest.java          |   6 +-
 .../crypto/SecretKeyImplTest.java             |   6 +-
 .../briarproject}/db/BasicH2Test.java         |   6 +-
 .../db/DatabaseCleanerImplTest.java           |  12 +-
 .../db/DatabaseComponentImplTest.java         |  16 +--
 .../db/DatabaseComponentTest.java             |  96 ++++++-------
 .../db/ExponentialBackoffTest.java            |   4 +-
 .../briarproject}/db/H2DatabaseTest.java      |  50 +++----
 .../lifecycle/ShutdownManagerImplTest.java    |   6 +-
 .../WindowsShutdownManagerImplTest.java       |   4 +-
 .../messaging/ConstantsTest.java              |  88 ++++++------
 .../messaging/ConsumersTest.java              |  14 +-
 .../messaging/PacketReaderImplTest.java       |  26 ++--
 .../OutgoingSimplexConnectionTest.java        |  54 ++++----
 .../SimplexMessagingIntegrationTest.java      |  80 +++++------
 .../simplex/TestSimplexTransportReader.java   |   6 +-
 .../simplex/TestSimplexTransportWriter.java   |   6 +-
 .../plugins/DuplexClientTest.java             |  16 +--
 .../plugins/DuplexServerTest.java             |  14 +-
 .../briarproject}/plugins/DuplexTest.java     |  10 +-
 .../plugins/ImmediateExecutor.java            |   2 +-
 .../plugins/PluginManagerImplTest.java        |  30 ++---
 .../bluetooth/BluetoothClientTest.java        |  12 +-
 .../bluetooth/BluetoothServerTest.java        |  10 +-
 .../plugins/bluetooth/BluetoothTest.java      |   2 +-
 .../file/LinuxRemovableDriveFinderTest.java   |   4 +-
 .../file/MacRemovableDriveFinderTest.java     |   4 +-
 .../PollingRemovableDriveMonitorTest.java     |   6 +-
 .../file/RemovableDrivePluginTest.java        |  24 ++--
 .../file/UnixRemovableDriveMonitorTest.java   |  10 +-
 .../plugins/modem/CountryCodesTest.java       |   4 +-
 .../plugins/modem/ModemPluginTest.java        |  12 +-
 .../plugins/tcp/LanTcpClientTest.java         |  14 +-
 .../plugins/tcp/LanTcpPluginTest.java         |  20 +--
 .../plugins/tcp/LanTcpServerTest.java         |  12 +-
 .../briarproject}/serial/ReaderImplTest.java  |   8 +-
 .../briarproject}/serial/WriterImplTest.java  |   6 +-
 .../transport/ConnectionReaderImplTest.java   |   8 +-
 .../transport/ConnectionRegistryImplTest.java |  12 +-
 .../transport/ConnectionWindowTest.java       |   8 +-
 .../transport/ConnectionWriterImplTest.java   |   8 +-
 .../IncomingEncryptionLayerTest.java          |  24 ++--
 .../transport/KeyManagerImplTest.java         |  30 ++---
 .../transport/KeyRotationIntegrationTest.java |  36 ++---
 .../OutgoingEncryptionLayerTest.java          |  24 ++--
 .../TransportConnectionRecogniserTest.java    |  24 ++--
 .../transport/TransportIntegrationTest.java   |  32 ++---
 .../briarproject}/util/ByteUtilsTest.java     |   4 +-
 .../briarproject}/util/StringUtilsTest.java   |   4 +-
 .../briarproject}/util/ZipUtilsTest.java      |   8 +-
 427 files changed, 2510 insertions(+), 2510 deletions(-)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/AndroidExecutorImpl.java (95%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/AndroidFileUtils.java (85%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/AndroidModule.java (78%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/AscendingHeaderComparator.java (84%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/BriarService.java (94%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/HomeScreenActivity.java (91%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/ReferenceManagerImpl.java (94%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/SetupActivity.java (91%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/SplashScreenActivity.java (88%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ContactItem.java (75%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ContactItemComparator.java (92%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ContactListActivity.java (85%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ContactListAdapter.java (93%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ContactListItem.java (88%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ConversationActivity.java (76%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ConversationAdapter.java (88%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ConversationItem.java (85%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ConversationItemComparator.java (91%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/ReadPrivateMessageActivity.java (82%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/SelectContactsDialog.java (92%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/contact/WritePrivateMessageActivity.java (84%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/ConfigureGroupActivity.java (87%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/CreateGroupActivity.java (91%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/GroupActivity.java (76%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/GroupAdapter.java (88%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/GroupItem.java (69%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/GroupItemComparator.java (80%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/GroupListActivity.java (87%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/GroupListAdapter.java (93%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/GroupListItem.java (88%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/ManageGroupsActivity.java (77%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/ManageGroupsAdapter.java (93%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/ManageGroupsItem.java (73%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/NoContactsDialog.java (93%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/ReadGroupPostActivity.java (84%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/groups/WriteGroupPostActivity.java (84%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/identity/CreateIdentityActivity.java (88%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/identity/LocalAuthorItem.java (81%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/identity/LocalAuthorItemComparator.java (74%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/identity/LocalAuthorSpinnerAdapter.java (91%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/AddContactActivity.java (88%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/AddContactView.java (82%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/BluetoothStatusView.java (94%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/CodeEntryListener.java (60%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/CodeEntryView.java (95%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/CodesDoNotMatchView.java (90%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/ConfirmationCodeView.java (95%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/ConnectedView.java (94%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/ConnectionFailedView.java (94%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/ConnectionView.java (96%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/ContactDetailsView.java (96%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/InvitationCodeView.java (93%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/NetworkSetupView.java (86%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/WaitForContactView.java (96%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/invitation/WifiStatusView.java (95%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/util/CommonLayoutParams.java (95%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/util/HorizontalBorder.java (89%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/util/HorizontalSpace.java (89%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/android/util/ListLoadingProgressBar.java (71%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/plugins/droidtooth/DroidtoothPlugin.java (96%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/plugins/droidtooth/DroidtoothPluginFactory.java (74%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/plugins/droidtooth/DroidtoothTransportConnection.java (84%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/plugins/droidtooth/InsecureBluetooth.java (99%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/plugins/tcp/DroidLanTcpPlugin.java (79%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/plugins/tcp/DroidLanTcpPluginFactory.java (71%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/plugins/tor/TorPlugin.java (97%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/plugins/tor/TorPluginFactory.java (77%)
 rename briar-android/src/{net/sf/briar => org/briarproject}/plugins/tor/TorTransportConnection.java (84%)
 delete mode 100644 briar-api/src/net/sf/briar/api/messaging/duplex/DuplexConnectionFactory.java
 delete mode 100644 briar-api/src/net/sf/briar/api/messaging/simplex/SimplexConnectionFactory.java
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/Author.java (96%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/AuthorConstants.java (96%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/AuthorFactory.java (85%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/AuthorId.java (92%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/Bytes.java (95%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/Contact.java (95%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/ContactId.java (93%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/FormatException.java (88%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/LocalAuthor.java (93%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/TransportConfig.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/TransportId.java (92%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/TransportProperties.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/TransportPropertyConstants.java (89%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/UniqueId.java (95%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/android/AndroidExecutor.java (92%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/android/DatabaseUiExecutor.java (93%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/android/ReferenceManager.java (95%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/AuthenticatedCipher.java (95%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/CryptoComponent.java (98%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/CryptoExecutor.java (93%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/KeyManager.java (64%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/KeyPair.java (91%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/KeyParser.java (86%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/MessageDigest.java (95%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/PrivateKey.java (82%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/PseudoRandom.java (71%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/PublicKey.java (82%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/SecretKey.java (93%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/crypto/Signature.java (95%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/ContactExistsException.java (89%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/DatabaseComponent.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/DatabaseConfig.java (86%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/DatabaseExecutor.java (94%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/DbClosedException.java (86%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/DbException.java (85%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/LocalAuthorExistsException.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/MessageHeader.java (89%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/NoSuchContactException.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/NoSuchLocalAuthorException.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/NoSuchMessageException.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/NoSuchSubscriptionException.java (91%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/db/NoSuchTransportException.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/ContactAddedEvent.java (79%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/ContactRemovedEvent.java (79%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/Event.java (67%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/EventListener.java (78%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/LocalAuthorAddedEvent.java (80%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/LocalAuthorRemovedEvent.java (80%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/LocalSubscriptionsUpdatedEvent.java (86%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/LocalTransportsUpdatedEvent.java (80%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/MessageAddedEvent.java (83%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/MessageExpiredEvent.java (84%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/MessageRequestedEvent.java (80%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/MessageToAckEvent.java (82%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/MessageToRequestEvent.java (82%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/RemoteRetentionTimeUpdatedEvent.java (82%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/RemoteSubscriptionsUpdatedEvent.java (81%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/RemoteTransportsUpdatedEvent.java (81%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/SubscriptionAddedEvent.java (77%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/SubscriptionRemovedEvent.java (77%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/TransportAddedEvent.java (85%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/event/TransportRemovedEvent.java (80%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/invitation/InvitationConstants.java (87%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/invitation/InvitationListener.java (97%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/invitation/InvitationState.java (97%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/invitation/InvitationTask.java (94%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/invitation/InvitationTaskFactory.java (77%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/lifecycle/LifecycleManager.java (96%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/lifecycle/Service.java (84%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/lifecycle/ShutdownManager.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/Ack.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/Group.java (94%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/GroupFactory.java (85%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/GroupId.java (81%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/GroupStatus.java (91%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/Message.java (84%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/MessageFactory.java (79%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/MessageId.java (82%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/MessageVerifier.java (85%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/MessagingConstants.java (92%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/Offer.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/PacketReader.java (96%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/PacketReaderFactory.java (75%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/PacketWriter.java (95%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/PacketWriterFactory.java (77%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/Request.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/RetentionAck.java (88%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/RetentionUpdate.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/SubscriptionAck.java (88%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/SubscriptionUpdate.java (93%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/TransportAck.java (85%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/TransportUpdate.java (84%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/Types.java (89%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/messaging/UnverifiedMessage.java (93%)
 create mode 100644 briar-api/src/org/briarproject/api/messaging/duplex/DuplexConnectionFactory.java
 create mode 100644 briar-api/src/org/briarproject/api/messaging/simplex/SimplexConnectionFactory.java
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/Plugin.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/PluginCallback.java (89%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/PluginExecutor.java (93%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/PluginManager.java (71%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/duplex/DuplexPlugin.java (80%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/duplex/DuplexPluginCallback.java (68%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/duplex/DuplexPluginConfig.java (72%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/duplex/DuplexPluginFactory.java (59%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/duplex/DuplexTransportConnection.java (96%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/simplex/SimplexPlugin.java (82%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/simplex/SimplexPluginCallback.java (66%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/simplex/SimplexPluginConfig.java (72%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/simplex/SimplexPluginFactory.java (59%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/simplex/SimplexTransportReader.java (94%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/plugins/simplex/SimplexTransportWriter.java (95%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/reliability/ReadHandler.java (72%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/reliability/ReliabilityExecutor.java (92%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/reliability/ReliabilityLayer.java (96%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/reliability/ReliabilityLayerFactory.java (81%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/reliability/WriteHandler.java (72%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/Consumer.java (81%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/CopyingConsumer.java (92%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/CountingConsumer.java (88%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/DigestingConsumer.java (82%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/Reader.java (98%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/ReaderFactory.java (73%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/SerialComponent.java (86%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/SigningConsumer.java (81%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/StructReader.java (75%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/Writer.java (96%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/serial/WriterFactory.java (74%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/system/Clock.java (89%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/system/FileUtils.java (77%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/system/SystemClock.java (87%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/system/SystemTimer.java (94%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/system/Timer.java (94%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/ConnectionContext.java (86%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/ConnectionDispatcher.java (52%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/ConnectionListener.java (81%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/ConnectionReader.java (86%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/ConnectionReaderFactory.java (92%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/ConnectionRecogniser.java (78%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/ConnectionRegistry.java (79%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/ConnectionWriter.java (90%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/ConnectionWriterFactory.java (92%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/Endpoint.java (83%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/IncomingConnectionExecutor.java (93%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/TemporarySecret.java (89%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/transport/TransportConstants.java (96%)
 rename briar-api/src/{net/sf/briar => org/briarproject}/api/ui/UiCallback.java (95%)
 delete mode 100644 briar-core/src/net/sf/briar/system/ClockModule.java
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/AuthenticatedCipherImpl.java (93%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/CryptoComponentImpl.java (95%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/CryptoModule.java (88%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/DoubleDigest.java (94%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/EllipticCurveConstants.java (98%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/PseudoRandomImpl.java (84%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/Sec1KeyParser.java (95%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/Sec1PrivateKey.java (87%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/Sec1PublicKey.java (92%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/Sec1Utils.java (91%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/SecretKeyImpl.java (80%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/crypto/SignatureImpl.java (90%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/Database.java (95%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/DatabaseCleaner.java (92%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/DatabaseCleanerImpl.java (88%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/DatabaseComponentImpl.java (93%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/DatabaseConstants.java (98%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/DatabaseModule.java (81%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/DbStateException.java (87%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/ExponentialBackoff.java (97%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/H2Database.java (92%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/db/JdbcDatabase.java (98%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/invitation/AliceConnector.java (83%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/invitation/BobConnector.java (83%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/invitation/Connector.java (83%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/invitation/ConnectorGroup.java (86%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/invitation/InvitationModule.java (72%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/invitation/InvitationTaskFactoryImpl.java (69%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/lifecycle/LifecycleManagerImpl.java (93%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/lifecycle/LifecycleModule.java (69%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/lifecycle/ShutdownManagerImpl.java (89%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/AuthorFactoryImpl.java (73%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/AuthorReader.java (57%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/GroupFactoryImpl.java (68%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/GroupReader.java (56%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/MessageFactoryImpl.java (73%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/MessageImpl.java (83%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/MessageReader.java (69%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/MessageVerifierImpl.java (69%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/MessagingModule.java (63%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/PacketReaderFactoryImpl.java (68%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/PacketReaderImpl.java (77%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/PacketWriterFactoryImpl.java (67%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/PacketWriterImpl.java (71%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/SubscriptionUpdateReader.java (65%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/duplex/DuplexConnection.java (91%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/duplex/DuplexConnectionFactoryImpl.java (77%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/duplex/DuplexMessagingModule.java (70%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/duplex/IncomingDuplexConnection.java (66%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/duplex/OutgoingDuplexConnection.java (66%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/simplex/IncomingSimplexConnection.java (84%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/simplex/OutgoingSimplexConnection.java (84%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/simplex/SimplexConnectionFactoryImpl.java (73%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/messaging/simplex/SimplexMessagingModule.java (70%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/PluginManagerImpl.java (88%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/PluginsModule.java (88%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/Poller.java (73%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/PollerImpl.java (91%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/file/FilePlugin.java (86%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/file/FileTransportReader.java (89%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/file/FileTransportWriter.java (91%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/tcp/LanTcpPlugin.java (95%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/tcp/LanTcpPluginFactory.java (67%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/tcp/MappingResult.java (94%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/tcp/PortMapper.java (60%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/tcp/PortMapperImpl.java (96%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/tcp/TcpPlugin.java (93%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/tcp/TcpTransportConnection.java (84%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/tcp/WanTcpPlugin.java (91%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/plugins/tcp/WanTcpPluginFactory.java (72%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/Ack.java (84%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/Crc32.java (93%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/Data.java (94%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/Frame.java (92%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/Receiver.java (96%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/ReceiverInputStream.java (97%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/ReliabilityLayerFactoryImpl.java (57%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/ReliabilityLayerImpl.java (94%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/ReliabilityModule.java (85%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/Sender.java (97%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/SenderOutputStream.java (98%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/SlipDecoder.java (94%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/reliability/SlipEncoder.java (90%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/serial/ReaderFactoryImpl.java (56%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/serial/ReaderImpl.java (98%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/serial/SerialComponentImpl.java (85%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/serial/SerialModule.java (66%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/serial/Tag.java (92%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/serial/WriterFactoryImpl.java (56%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/serial/WriterImpl.java (96%)
 create mode 100644 briar-core/src/org/briarproject/system/SystemModule.java
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/ConnectionDispatcherImpl.java (83%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/ConnectionReaderFactoryImpl.java (80%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/ConnectionReaderImpl.java (81%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/ConnectionRecogniserImpl.java (79%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/ConnectionRegistryImpl.java (93%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/ConnectionWindow.java (93%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/ConnectionWriterFactoryImpl.java (81%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/ConnectionWriterImpl.java (88%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/FrameEncoder.java (75%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/FrameReader.java (87%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/FrameWriter.java (90%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/IncomingEncryptionLayer.java (82%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/KeyManagerImpl.java (93%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/OutgoingEncryptionLayer.java (89%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/TransportConnectionRecogniser.java (91%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/transport/TransportModule.java (78%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/util/ByteUtils.java (98%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/util/LatchedReference.java (95%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/util/OsUtils.java (96%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/util/StringUtils.java (98%)
 rename briar-core/src/{net/sf/briar => org/briarproject}/util/ZipUtils.java (98%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/lifecycle/DesktopLifecycleModule.java (72%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/lifecycle/WindowsShutdownManagerImpl.java (98%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/DesktopPluginsModule.java (63%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/bluetooth/BluetoothPlugin.java (94%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/bluetooth/BluetoothPluginFactory.java (71%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/bluetooth/BluetoothTransportConnection.java (85%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/bluetooth/InvitationListener.java (98%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/LinuxRemovableDriveFinder.java (93%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/LinuxRemovableDriveMonitor.java (81%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/MacRemovableDriveFinder.java (93%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/MacRemovableDriveMonitor.java (80%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/PollingRemovableDriveMonitor.java (97%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/RemovableDriveFinder.java (81%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/RemovableDriveMonitor.java (87%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/RemovableDrivePlugin.java (92%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/RemovableDrivePluginFactory.java (78%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/UnixRemovableDriveFinder.java (96%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/UnixRemovableDriveMonitor.java (97%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/file/WindowsRemovableDriveFinder.java (95%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/CountryCodes.java (99%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/Modem.java (96%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/ModemFactory.java (69%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/ModemFactoryImpl.java (75%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/ModemImpl.java (97%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/ModemPlugin.java (91%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/ModemPluginFactory.java (72%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/SerialPort.java (92%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/SerialPortImpl.java (97%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/SerialPortList.java (58%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/plugins/modem/SerialPortListImpl.java (77%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/system/DesktopOsModule.java (71%)
 rename briar-desktop/src/{net/sf/briar => org/briarproject}/system/FileUtilsImpl.java (69%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/BriarTestCase.java (94%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/LockFairnessTest.java (99%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/ProtocolIntegrationTest.java (75%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/TestDatabaseConfig.java (89%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/TestDatabaseModule.java (82%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/TestFileUtils.java (72%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/TestLifecycleModule.java (81%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/TestMessage.java (90%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/TestUiModule.java (85%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/TestUtils.java (97%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/crypto/KeyAgreementTest.java (78%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/crypto/KeyDerivationTest.java (91%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/crypto/KeyEncodingAndParsingTest.java (95%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/crypto/PasswordBasedKdfTest.java (93%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/crypto/SecretKeyImplTest.java (82%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/db/BasicH2Test.java (98%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/db/DatabaseCleanerImplTest.java (87%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/db/DatabaseComponentImplTest.java (84%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/db/DatabaseComponentTest.java (95%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/db/ExponentialBackoffTest.java (97%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/db/H2DatabaseTest.java (97%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/lifecycle/ShutdownManagerImplTest.java (85%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/lifecycle/WindowsShutdownManagerImplTest.java (86%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/messaging/ConstantsTest.java (74%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/messaging/ConsumersTest.java (88%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/messaging/PacketReaderImplTest.java (90%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/messaging/simplex/OutgoingSimplexConnectionTest.java (82%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/messaging/simplex/SimplexMessagingIntegrationTest.java (78%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/messaging/simplex/TestSimplexTransportReader.java (78%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/messaging/simplex/TestSimplexTransportWriter.java (84%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/DuplexClientTest.java (85%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/DuplexServerTest.java (87%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/DuplexTest.java (89%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/ImmediateExecutor.java (81%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/PluginManagerImplTest.java (84%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/bluetooth/BluetoothClientTest.java (82%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/bluetooth/BluetoothServerTest.java (81%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/bluetooth/BluetoothTest.java (75%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/file/LinuxRemovableDriveFinderTest.java (91%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/file/MacRemovableDriveFinderTest.java (90%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/file/PollingRemovableDriveMonitorTest.java (95%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/file/RemovableDrivePluginTest.java (94%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/file/UnixRemovableDriveMonitorTest.java (88%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/modem/CountryCodesTest.java (96%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/modem/ModemPluginTest.java (97%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/tcp/LanTcpClientTest.java (80%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/tcp/LanTcpPluginTest.java (89%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/plugins/tcp/LanTcpServerTest.java (75%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/serial/ReaderImplTest.java (98%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/serial/WriterImplTest.java (98%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/ConnectionReaderImplTest.java (94%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/ConnectionRegistryImplTest.java (91%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/ConnectionWindowTest.java (94%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/ConnectionWriterImplTest.java (94%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/IncomingEncryptionLayerTest.java (90%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/KeyManagerImplTest.java (96%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/KeyRotationIntegrationTest.java (97%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/OutgoingEncryptionLayerTest.java (89%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/TransportConnectionRecogniserTest.java (87%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/transport/TransportIntegrationTest.java (86%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/util/ByteUtilsTest.java (96%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/util/StringUtilsTest.java (93%)
 rename briar-tests/src/{net/sf/briar => org/briarproject}/util/ZipUtilsTest.java (97%)

diff --git a/briar-android/AndroidManifest.xml b/briar-android/AndroidManifest.xml
index 02a4e1d7f6..e28fc17329 100644
--- a/briar-android/AndroidManifest.xml
+++ b/briar-android/AndroidManifest.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-	package="net.sf.briar"
+	package="org.briarproject"
 	android:versionCode="1"
 	android:versionName="1.0" >
 
@@ -22,7 +22,7 @@
 			android:name=".android.BriarService"
 			android:exported="false" >
 			<intent-filter>
-				<action android:name="net.sf.briar.android.BriarService" />
+				<action android:name="org.briarproject.android.BriarService" />
 			</intent-filter>
 		</service>
 		<activity
@@ -46,31 +46,43 @@
 		    android:label="@string/contact_list_title" >
 		</activity>
 		<activity
-			android:name="net.sf.briar.android.groups.ConfigureGroupActivity"
+			android:name=".android.contact.ConversationActivity"
 			android:label="@string/app_name" >
 		</activity>
 		<activity
-			android:name="net.sf.briar.android.groups.CreateGroupActivity"
+			android:name=".android.contact.ReadPrivateMessageActivity"
+			android:label="@string/app_name" >
+		</activity>
+		<activity
+			android:name=".android.contact.WritePrivateMessageActivity"
+			android:label="@string/new_message_title" >
+		</activity>
+		<activity
+			android:name=".android.groups.ConfigureGroupActivity"
+			android:label="@string/app_name" >
+		</activity>
+		<activity
+			android:name=".android.groups.CreateGroupActivity"
 			android:label="@string/create_forum_title" >
 		</activity>
 		<activity
-			android:name="net.sf.briar.android.groups.GroupActivity"
+			android:name=".android.groups.GroupActivity"
 			android:label="@string/app_name" >
 		</activity>
 		<activity
-			android:name="net.sf.briar.android.groups.GroupListActivity"
+			android:name=".android.groups.GroupListActivity"
 			android:label="@string/forums_title" >
 		</activity>
 		<activity
-		    android:name="net.sf.briar.android.groups.ManageGroupsActivity"
+		    android:name=".android.groups.ManageGroupsActivity"
 		    android:label="@string/manage_subscriptions_title" >
 		</activity>
-				<activity
-			android:name="net.sf.briar.android.groups.ReadGroupPostActivity"
+		<activity
+			android:name=".android.groups.ReadGroupPostActivity"
 			android:label="@string/app_name" >
 		</activity>
 		<activity
-			android:name="net.sf.briar.android.groups.WriteGroupPostActivity"
+			android:name=".android.groups.WriteGroupPostActivity"
 			android:label="@string/new_post_title" >
 		</activity>
 		<activity
@@ -81,17 +93,5 @@
 			android:name=".android.invitation.AddContactActivity"
 			android:label="@string/add_contact_title" >
 		</activity>
-		<activity
-			android:name="net.sf.briar.android.contact.ConversationActivity"
-			android:label="@string/app_name" >
-		</activity>
-		<activity
-			android:name="net.sf.briar.android.contact.ReadPrivateMessageActivity"
-			android:label="@string/app_name" >
-		</activity>
-		<activity
-			android:name="net.sf.briar.android.contact.WritePrivateMessageActivity"
-			android:label="@string/new_message_title" >
-		</activity>
 	</application>
 </manifest>
diff --git a/briar-android/res/values/roboguice.xml b/briar-android/res/values/roboguice.xml
index 5d317aeb97..e1ccbebbe9 100644
--- a/briar-android/res/values/roboguice.xml
+++ b/briar-android/res/values/roboguice.xml
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 	<string-array name="roboguice_modules">
-		<item>net.sf.briar.android.AndroidModule</item>
-		<item>net.sf.briar.clock.ClockModule</item>
-		<item>net.sf.briar.crypto.CryptoModule</item>
-		<item>net.sf.briar.db.DatabaseModule</item>
-		<item>net.sf.briar.invitation.InvitationModule</item>
-		<item>net.sf.briar.lifecycle.LifecycleModule</item>
-		<item>net.sf.briar.messaging.MessagingModule</item>
-		<item>net.sf.briar.messaging.duplex.DuplexMessagingModule</item>
-		<item>net.sf.briar.messaging.simplex.SimplexMessagingModule</item>
-		<item>net.sf.briar.plugins.PluginsModule</item>
-		<item>net.sf.briar.serial.SerialModule</item>
-		<item>net.sf.briar.transport.TransportModule</item>
+		<item>org.briarproject.android.AndroidModule</item>
+		<item>org.briarproject.crypto.CryptoModule</item>
+		<item>org.briarproject.db.DatabaseModule</item>
+		<item>org.briarproject.invitation.InvitationModule</item>
+		<item>org.briarproject.lifecycle.LifecycleModule</item>
+		<item>org.briarproject.messaging.MessagingModule</item>
+		<item>org.briarproject.messaging.duplex.DuplexMessagingModule</item>
+		<item>org.briarproject.messaging.simplex.SimplexMessagingModule</item>
+		<item>org.briarproject.plugins.PluginsModule</item>
+		<item>org.briarproject.serial.SerialModule</item>
+		<item>org.briarproject.system.SystemModule</item>
+		<item>org.briarproject.transport.TransportModule</item>
 	</string-array>
 </resources>
\ No newline at end of file
diff --git a/briar-android/src/net/sf/briar/android/AndroidExecutorImpl.java b/briar-android/src/org/briarproject/android/AndroidExecutorImpl.java
similarity index 95%
rename from briar-android/src/net/sf/briar/android/AndroidExecutorImpl.java
rename to briar-android/src/org/briarproject/android/AndroidExecutorImpl.java
index a1030b3e2f..6fcb2a9a83 100644
--- a/briar-android/src/net/sf/briar/android/AndroidExecutorImpl.java
+++ b/briar-android/src/org/briarproject/android/AndroidExecutorImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android;
+package org.briarproject.android;
 
 import java.util.concurrent.Callable;
 import java.util.concurrent.CountDownLatch;
@@ -9,7 +9,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.android.AndroidExecutor;
+import org.briarproject.api.android.AndroidExecutor;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
diff --git a/briar-android/src/net/sf/briar/android/AndroidFileUtils.java b/briar-android/src/org/briarproject/android/AndroidFileUtils.java
similarity index 85%
rename from briar-android/src/net/sf/briar/android/AndroidFileUtils.java
rename to briar-android/src/org/briarproject/android/AndroidFileUtils.java
index a7c286e04c..6c1f98a8a1 100644
--- a/briar-android/src/net/sf/briar/android/AndroidFileUtils.java
+++ b/briar-android/src/org/briarproject/android/AndroidFileUtils.java
@@ -1,9 +1,9 @@
-package net.sf.briar.android;
+package org.briarproject.android;
 
 import java.io.File;
 import java.io.IOException;
 
-import net.sf.briar.api.system.FileUtils;
+import org.briarproject.api.system.FileUtils;
 import android.os.Build;
 import android.os.StatFs;
 
diff --git a/briar-android/src/net/sf/briar/android/AndroidModule.java b/briar-android/src/org/briarproject/android/AndroidModule.java
similarity index 78%
rename from briar-android/src/net/sf/briar/android/AndroidModule.java
rename to briar-android/src/org/briarproject/android/AndroidModule.java
index a25cf96dc2..df6bfb316c 100644
--- a/briar-android/src/net/sf/briar/android/AndroidModule.java
+++ b/briar-android/src/org/briarproject/android/AndroidModule.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android;
+package org.briarproject.android;
 
 import static android.content.Context.MODE_PRIVATE;
 import static java.util.concurrent.TimeUnit.SECONDS;
@@ -16,24 +16,24 @@ import java.util.concurrent.ThreadPoolExecutor;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.android.AndroidExecutor;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.android.ReferenceManager;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.db.DatabaseConfig;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.plugins.PluginExecutor;
-import net.sf.briar.api.plugins.duplex.DuplexPluginConfig;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
-import net.sf.briar.api.plugins.simplex.SimplexPluginConfig;
-import net.sf.briar.api.plugins.simplex.SimplexPluginFactory;
-import net.sf.briar.api.system.FileUtils;
-import net.sf.briar.api.ui.UiCallback;
-import net.sf.briar.plugins.droidtooth.DroidtoothPluginFactory;
-import net.sf.briar.plugins.tcp.DroidLanTcpPluginFactory;
-import net.sf.briar.plugins.tcp.WanTcpPluginFactory;
-import net.sf.briar.plugins.tor.TorPluginFactory;
+import org.briarproject.api.android.AndroidExecutor;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.android.ReferenceManager;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.db.DatabaseConfig;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.api.plugins.PluginExecutor;
+import org.briarproject.api.plugins.duplex.DuplexPluginConfig;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
+import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
+import org.briarproject.api.system.FileUtils;
+import org.briarproject.api.ui.UiCallback;
+import org.briarproject.plugins.droidtooth.DroidtoothPluginFactory;
+import org.briarproject.plugins.tcp.DroidLanTcpPluginFactory;
+import org.briarproject.plugins.tcp.WanTcpPluginFactory;
+import org.briarproject.plugins.tor.TorPluginFactory;
 import android.app.Application;
 import android.content.Context;
 
diff --git a/briar-android/src/net/sf/briar/android/AscendingHeaderComparator.java b/briar-android/src/org/briarproject/android/AscendingHeaderComparator.java
similarity index 84%
rename from briar-android/src/net/sf/briar/android/AscendingHeaderComparator.java
rename to briar-android/src/org/briarproject/android/AscendingHeaderComparator.java
index 26ac273e33..11490c4ca8 100644
--- a/briar-android/src/net/sf/briar/android/AscendingHeaderComparator.java
+++ b/briar-android/src/org/briarproject/android/AscendingHeaderComparator.java
@@ -1,8 +1,8 @@
-package net.sf.briar.android;
+package org.briarproject.android;
 
 import java.util.Comparator;
 
-import net.sf.briar.api.db.MessageHeader;
+import org.briarproject.api.db.MessageHeader;
 
 public class AscendingHeaderComparator implements Comparator<MessageHeader> {
 
diff --git a/briar-android/src/net/sf/briar/android/BriarService.java b/briar-android/src/org/briarproject/android/BriarService.java
similarity index 94%
rename from briar-android/src/net/sf/briar/android/BriarService.java
rename to briar-android/src/org/briarproject/android/BriarService.java
index 13d54fbc2e..2fc9b01724 100644
--- a/briar-android/src/net/sf/briar/android/BriarService.java
+++ b/briar-android/src/org/briarproject/android/BriarService.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android;
+package org.briarproject.android;
 
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
 import static android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP;
@@ -9,10 +9,10 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.api.android.AndroidExecutor;
-import net.sf.briar.api.db.DatabaseConfig;
-import net.sf.briar.api.lifecycle.LifecycleManager;
+import org.briarproject.R;
+import org.briarproject.api.android.AndroidExecutor;
+import org.briarproject.api.db.DatabaseConfig;
+import org.briarproject.api.lifecycle.LifecycleManager;
 import roboguice.service.RoboService;
 import android.app.PendingIntent;
 import android.content.ComponentName;
diff --git a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java b/briar-android/src/org/briarproject/android/HomeScreenActivity.java
similarity index 91%
rename from briar-android/src/net/sf/briar/android/HomeScreenActivity.java
rename to briar-android/src/org/briarproject/android/HomeScreenActivity.java
index b71bea0296..d7779071ab 100644
--- a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
+++ b/briar-android/src/org/briarproject/android/HomeScreenActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android;
+package org.briarproject.android;
 
 import static android.text.InputType.TYPE_CLASS_TEXT;
 import static android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD;
@@ -11,8 +11,8 @@ import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -21,21 +21,21 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.BriarService.BriarBinder;
-import net.sf.briar.android.BriarService.BriarServiceConnection;
-import net.sf.briar.android.contact.ContactListActivity;
-import net.sf.briar.android.groups.GroupListActivity;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.android.ReferenceManager;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.CryptoExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseConfig;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.R;
+import org.briarproject.android.BriarService.BriarBinder;
+import org.briarproject.android.BriarService.BriarServiceConnection;
+import org.briarproject.android.contact.ContactListActivity;
+import org.briarproject.android.groups.GroupListActivity;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.android.ReferenceManager;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.CryptoExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DatabaseConfig;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.util.StringUtils;
 import roboguice.activity.RoboActivity;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -86,7 +86,7 @@ public class HomeScreenActivity extends RoboActivity {
 	public void onCreate(Bundle state) {
 		super.onCreate(state);
 		Intent i = getIntent();
-		long handle = i.getLongExtra("net.sf.briar.LOCAL_AUTHOR_HANDLE", -1);
+		long handle = i.getLongExtra("org.briarproject.LOCAL_AUTHOR_HANDLE", -1);
 		if(handle != -1) {
 			// The activity was launched from the setup wizard
 			if(System.currentTimeMillis() < EXPIRY_DATE) {
diff --git a/briar-android/src/net/sf/briar/android/ReferenceManagerImpl.java b/briar-android/src/org/briarproject/android/ReferenceManagerImpl.java
similarity index 94%
rename from briar-android/src/net/sf/briar/android/ReferenceManagerImpl.java
rename to briar-android/src/org/briarproject/android/ReferenceManagerImpl.java
index 48788b7819..e7be8f1674 100644
--- a/briar-android/src/net/sf/briar/android/ReferenceManagerImpl.java
+++ b/briar-android/src/org/briarproject/android/ReferenceManagerImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android;
+package org.briarproject.android;
 
 import static java.util.logging.Level.INFO;
 
@@ -6,7 +6,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.android.ReferenceManager;
+import org.briarproject.api.android.ReferenceManager;
 
 class ReferenceManagerImpl implements ReferenceManager {
 
diff --git a/briar-android/src/net/sf/briar/android/SetupActivity.java b/briar-android/src/org/briarproject/android/SetupActivity.java
similarity index 91%
rename from briar-android/src/net/sf/briar/android/SetupActivity.java
rename to briar-android/src/org/briarproject/android/SetupActivity.java
index c0d30894f2..ef488ff66e 100644
--- a/briar-android/src/net/sf/briar/android/SetupActivity.java
+++ b/briar-android/src/org/briarproject/android/SetupActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android;
+package org.briarproject.android;
 
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.text.InputType.TYPE_CLASS_TEXT;
@@ -9,23 +9,23 @@ import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.util.Arrays;
 import java.util.concurrent.Executor;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.android.ReferenceManager;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.CryptoExecutor;
-import net.sf.briar.api.crypto.KeyPair;
-import net.sf.briar.api.db.DatabaseConfig;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.R;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.android.ReferenceManager;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.CryptoExecutor;
+import org.briarproject.api.crypto.KeyPair;
+import org.briarproject.api.db.DatabaseConfig;
+import org.briarproject.util.StringUtils;
 import roboguice.activity.RoboActivity;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -215,7 +215,7 @@ public class SetupActivity extends RoboActivity implements OnClickListener {
 			public void run() {
 				Intent i = new Intent(SetupActivity.this,
 						HomeScreenActivity.class);
-				i.putExtra("net.sf.briar.LOCAL_AUTHOR_HANDLE", handle);
+				i.putExtra("org.briarproject.LOCAL_AUTHOR_HANDLE", handle);
 				i.setFlags(FLAG_ACTIVITY_NEW_TASK);
 				startActivity(i);
 				finish();
diff --git a/briar-android/src/net/sf/briar/android/SplashScreenActivity.java b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
similarity index 88%
rename from briar-android/src/net/sf/briar/android/SplashScreenActivity.java
rename to briar-android/src/org/briarproject/android/SplashScreenActivity.java
index 1d905f1cb5..05ae1adb00 100644
--- a/briar-android/src/net/sf/briar/android/SplashScreenActivity.java
+++ b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
@@ -1,9 +1,9 @@
-package net.sf.briar.android;
+package org.briarproject.android;
 
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import net.sf.briar.api.db.DatabaseConfig;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import org.briarproject.api.db.DatabaseConfig;
 import roboguice.RoboGuice;
 import roboguice.activity.RoboSplashActivity;
 import android.content.Intent;
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactItem.java b/briar-android/src/org/briarproject/android/contact/ContactItem.java
similarity index 75%
rename from briar-android/src/net/sf/briar/android/contact/ContactItem.java
rename to briar-android/src/org/briarproject/android/contact/ContactItem.java
index 7d6f0dc020..665a1c8acb 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactItem.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactItem.java
@@ -1,6 +1,6 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
-import net.sf.briar.api.Contact;
+import org.briarproject.api.Contact;
 
 public class ContactItem {
 
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactItemComparator.java b/briar-android/src/org/briarproject/android/contact/ContactItemComparator.java
similarity index 92%
rename from briar-android/src/net/sf/briar/android/contact/ContactItemComparator.java
rename to briar-android/src/org/briarproject/android/contact/ContactItemComparator.java
index b4617d1084..73538cc085 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactItemComparator.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactItemComparator.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import java.util.Comparator;
 
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java b/briar-android/src/org/briarproject/android/contact/ContactListActivity.java
similarity index 85%
rename from briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
rename to briar-android/src/org/briarproject/android/contact/ContactListActivity.java
index 2fb503234b..b6852526fd 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.View.GONE;
@@ -6,8 +6,8 @@ import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.Comparator;
@@ -17,28 +17,28 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.invitation.AddContactActivity;
-import net.sf.briar.android.util.HorizontalBorder;
-import net.sf.briar.android.util.ListLoadingProgressBar;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.db.NoSuchContactException;
-import net.sf.briar.api.event.ContactAddedEvent;
-import net.sf.briar.api.event.ContactRemovedEvent;
-import net.sf.briar.api.event.Event;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.MessageAddedEvent;
-import net.sf.briar.api.event.MessageExpiredEvent;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.transport.ConnectionListener;
-import net.sf.briar.api.transport.ConnectionRegistry;
+import org.briarproject.R;
+import org.briarproject.android.invitation.AddContactActivity;
+import org.briarproject.android.util.HorizontalBorder;
+import org.briarproject.android.util.ListLoadingProgressBar;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.Contact;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.db.NoSuchContactException;
+import org.briarproject.api.event.ContactAddedEvent;
+import org.briarproject.api.event.ContactRemovedEvent;
+import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.MessageAddedEvent;
+import org.briarproject.api.event.MessageExpiredEvent;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.transport.ConnectionListener;
+import org.briarproject.api.transport.ConnectionRegistry;
 import roboguice.activity.RoboActivity;
 import android.content.Intent;
 import android.os.Bundle;
@@ -212,10 +212,10 @@ ConnectionListener {
 		GroupId inbox = item.getInboxGroupId();
 		AuthorId localAuthorId = item.getContact().getLocalAuthorId();
 		Intent i = new Intent(this, ConversationActivity.class);
-		i.putExtra("net.sf.briar.CONTACT_ID", contactId.getInt());
-		i.putExtra("net.sf.briar.CONTACT_NAME", contactName);
-		i.putExtra("net.sf.briar.GROUP_ID", inbox.getBytes());
-		i.putExtra("net.sf.briar.LOCAL_AUTHOR_ID", localAuthorId.getBytes());
+		i.putExtra("org.briarproject.CONTACT_ID", contactId.getInt());
+		i.putExtra("org.briarproject.CONTACT_NAME", contactName);
+		i.putExtra("org.briarproject.GROUP_ID", inbox.getBytes());
+		i.putExtra("org.briarproject.LOCAL_AUTHOR_ID", localAuthorId.getBytes());
 		startActivity(i);
 	}
 
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java
similarity index 93%
rename from briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java
rename to briar-android/src/org/briarproject/android/contact/ContactListAdapter.java
index 8f4dbe2dfe..83f1ae127c 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java
@@ -1,12 +1,12 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import static android.view.Gravity.CENTER_VERTICAL;
 import static android.widget.LinearLayout.HORIZONTAL;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.util.ArrayList;
 
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.content.res.Resources;
 import android.text.Html;
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListItem.java b/briar-android/src/org/briarproject/android/contact/ContactListItem.java
similarity index 88%
rename from briar-android/src/net/sf/briar/android/contact/ContactListItem.java
rename to briar-android/src/org/briarproject/android/contact/ContactListItem.java
index ca137ba0f7..f9f6e9f740 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactListItem.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListItem.java
@@ -1,10 +1,10 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import java.util.Collection;
 
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.messaging.GroupId;
+import org.briarproject.api.Contact;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.messaging.GroupId;
 
 // This class is not thread-safe
 class ContactListItem {
diff --git a/briar-android/src/net/sf/briar/android/contact/ConversationActivity.java b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
similarity index 76%
rename from briar-android/src/net/sf/briar/android/contact/ConversationActivity.java
rename to briar-android/src/org/briarproject/android/contact/ConversationActivity.java
index d4ae17170c..08bf828b1a 100644
--- a/briar-android/src/net/sf/briar/android/contact/ConversationActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.View.GONE;
@@ -6,8 +6,8 @@ import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
@@ -15,23 +15,23 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.util.HorizontalBorder;
-import net.sf.briar.android.util.ListLoadingProgressBar;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.db.NoSuchContactException;
-import net.sf.briar.api.event.ContactRemovedEvent;
-import net.sf.briar.api.event.Event;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.MessageAddedEvent;
-import net.sf.briar.api.event.MessageExpiredEvent;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.GroupId;
+import org.briarproject.R;
+import org.briarproject.android.util.HorizontalBorder;
+import org.briarproject.android.util.ListLoadingProgressBar;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.db.NoSuchContactException;
+import org.briarproject.api.event.ContactRemovedEvent;
+import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.MessageAddedEvent;
+import org.briarproject.api.event.MessageExpiredEvent;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.GroupId;
 import roboguice.activity.RoboActivity;
 import android.content.Intent;
 import android.os.Bundle;
@@ -68,16 +68,16 @@ implements EventListener, OnClickListener, OnItemClickListener {
 		super.onCreate(state);
 
 		Intent i = getIntent();
-		int id = i.getIntExtra("net.sf.briar.CONTACT_ID", -1);
+		int id = i.getIntExtra("org.briarproject.CONTACT_ID", -1);
 		if(id == -1) throw new IllegalStateException();
 		contactId = new ContactId(id);
-		contactName = i.getStringExtra("net.sf.briar.CONTACT_NAME");
+		contactName = i.getStringExtra("org.briarproject.CONTACT_NAME");
 		if(contactName == null) throw new IllegalStateException();
 		setTitle(contactName);
-		byte[] b = i.getByteArrayExtra("net.sf.briar.GROUP_ID");
+		byte[] b = i.getByteArrayExtra("org.briarproject.GROUP_ID");
 		if(b == null) throw new IllegalStateException();
 		groupId = new GroupId(b);
-		b = i.getByteArrayExtra("net.sf.briar.LOCAL_AUTHOR_ID");
+		b = i.getByteArrayExtra("org.briarproject.LOCAL_AUTHOR_ID");
 		if(b == null) throw new IllegalStateException();
 		localAuthorId = new AuthorId(b);
 
@@ -221,9 +221,9 @@ implements EventListener, OnClickListener, OnItemClickListener {
 
 	public void onClick(View view) {
 		Intent i = new Intent(this, WritePrivateMessageActivity.class);
-		i.putExtra("net.sf.briar.CONTACT_NAME", contactName);
-		i.putExtra("net.sf.briar.GROUP_ID", groupId.getBytes());
-		i.putExtra("net.sf.briar.LOCAL_AUTHOR_ID", localAuthorId.getBytes());
+		i.putExtra("org.briarproject.CONTACT_NAME", contactName);
+		i.putExtra("org.briarproject.GROUP_ID", groupId.getBytes());
+		i.putExtra("org.briarproject.LOCAL_AUTHOR_ID", localAuthorId.getBytes());
 		startActivity(i);
 	}
 
@@ -235,14 +235,14 @@ implements EventListener, OnClickListener, OnItemClickListener {
 	private void displayMessage(int position) {
 		MessageHeader header = adapter.getItem(position).getHeader();
 		Intent i = new Intent(this, ReadPrivateMessageActivity.class);
-		i.putExtra("net.sf.briar.CONTACT_ID", contactId.getInt());
-		i.putExtra("net.sf.briar.CONTACT_NAME", contactName);
-		i.putExtra("net.sf.briar.GROUP_ID", groupId.getBytes());
-		i.putExtra("net.sf.briar.LOCAL_AUTHOR_ID", localAuthorId.getBytes());
-		i.putExtra("net.sf.briar.AUTHOR_NAME", header.getAuthor().getName());
-		i.putExtra("net.sf.briar.MESSAGE_ID", header.getId().getBytes());
-		i.putExtra("net.sf.briar.CONTENT_TYPE", header.getContentType());
-		i.putExtra("net.sf.briar.TIMESTAMP", header.getTimestamp());
+		i.putExtra("org.briarproject.CONTACT_ID", contactId.getInt());
+		i.putExtra("org.briarproject.CONTACT_NAME", contactName);
+		i.putExtra("org.briarproject.GROUP_ID", groupId.getBytes());
+		i.putExtra("org.briarproject.LOCAL_AUTHOR_ID", localAuthorId.getBytes());
+		i.putExtra("org.briarproject.AUTHOR_NAME", header.getAuthor().getName());
+		i.putExtra("org.briarproject.MESSAGE_ID", header.getId().getBytes());
+		i.putExtra("org.briarproject.CONTENT_TYPE", header.getContentType());
+		i.putExtra("org.briarproject.TIMESTAMP", header.getTimestamp());
 		startActivityForResult(i, position);
 	}
 }
diff --git a/briar-android/src/net/sf/briar/android/contact/ConversationAdapter.java b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java
similarity index 88%
rename from briar-android/src/net/sf/briar/android/contact/ConversationAdapter.java
rename to briar-android/src/org/briarproject/android/contact/ConversationAdapter.java
index d1a4d7d209..4d08434ce4 100644
--- a/briar-android/src/net/sf/briar/android/contact/ConversationAdapter.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java
@@ -1,13 +1,13 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import static android.widget.LinearLayout.HORIZONTAL;
 import static java.text.DateFormat.SHORT;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.util.ArrayList;
 
-import net.sf.briar.R;
-import net.sf.briar.api.db.MessageHeader;
+import org.briarproject.R;
+import org.briarproject.api.db.MessageHeader;
 import android.content.Context;
 import android.content.res.Resources;
 import android.text.format.DateUtils;
diff --git a/briar-android/src/net/sf/briar/android/contact/ConversationItem.java b/briar-android/src/org/briarproject/android/contact/ConversationItem.java
similarity index 85%
rename from briar-android/src/net/sf/briar/android/contact/ConversationItem.java
rename to briar-android/src/org/briarproject/android/contact/ConversationItem.java
index a8e777eba1..4050e01a8d 100644
--- a/briar-android/src/net/sf/briar/android/contact/ConversationItem.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationItem.java
@@ -1,6 +1,6 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
-import net.sf.briar.api.db.MessageHeader;
+import org.briarproject.api.db.MessageHeader;
 
 // This class is not thread-safe
 class ConversationItem {
diff --git a/briar-android/src/net/sf/briar/android/contact/ConversationItemComparator.java b/briar-android/src/org/briarproject/android/contact/ConversationItemComparator.java
similarity index 91%
rename from briar-android/src/net/sf/briar/android/contact/ConversationItemComparator.java
rename to briar-android/src/org/briarproject/android/contact/ConversationItemComparator.java
index bdeca9fb55..1bf7a39055 100644
--- a/briar-android/src/net/sf/briar/android/contact/ConversationItemComparator.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationItemComparator.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import java.util.Comparator;
 
diff --git a/briar-android/src/net/sf/briar/android/contact/ReadPrivateMessageActivity.java b/briar-android/src/org/briarproject/android/contact/ReadPrivateMessageActivity.java
similarity index 82%
rename from briar-android/src/net/sf/briar/android/contact/ReadPrivateMessageActivity.java
rename to briar-android/src/org/briarproject/android/contact/ReadPrivateMessageActivity.java
index 92c8f01da3..5745d4a9b8 100644
--- a/briar-android/src/net/sf/briar/android/contact/ReadPrivateMessageActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ReadPrivateMessageActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_VERTICAL;
@@ -7,9 +7,9 @@ import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.io.UnsupportedEncodingException;
 import java.util.concurrent.Executor;
@@ -17,17 +17,17 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.util.HorizontalBorder;
-import net.sf.briar.android.util.HorizontalSpace;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.NoSuchMessageException;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.MessageId;
+import org.briarproject.R;
+import org.briarproject.android.util.HorizontalBorder;
+import org.briarproject.android.util.HorizontalSpace;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.NoSuchMessageException;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.MessageId;
 import roboguice.activity.RoboActivity;
 import android.content.Intent;
 import android.content.res.Resources;
@@ -70,30 +70,30 @@ implements OnClickListener {
 		super.onCreate(state);
 
 		Intent i = getIntent();
-		contactName = i.getStringExtra("net.sf.briar.CONTACT_NAME");
+		contactName = i.getStringExtra("org.briarproject.CONTACT_NAME");
 		if(contactName == null) throw new IllegalStateException();
 		setTitle(contactName);
-		byte[] b = i.getByteArrayExtra("net.sf.briar.LOCAL_AUTHOR_ID");
+		byte[] b = i.getByteArrayExtra("org.briarproject.LOCAL_AUTHOR_ID");
 		if(b == null) throw new IllegalStateException();
 		localAuthorId = new AuthorId(b);
-		String authorName = i.getStringExtra("net.sf.briar.AUTHOR_NAME");
+		String authorName = i.getStringExtra("org.briarproject.AUTHOR_NAME");
 		if(authorName == null) throw new IllegalStateException();
-		b = i.getByteArrayExtra("net.sf.briar.MESSAGE_ID");
+		b = i.getByteArrayExtra("org.briarproject.MESSAGE_ID");
 		if(b == null) throw new IllegalStateException();
 		messageId = new MessageId(b);
-		b = i.getByteArrayExtra("net.sf.briar.GROUP_ID");
+		b = i.getByteArrayExtra("org.briarproject.GROUP_ID");
 		if(b == null) throw new IllegalStateException();
 		groupId = new GroupId(b);
-		String contentType = i.getStringExtra("net.sf.briar.CONTENT_TYPE");
+		String contentType = i.getStringExtra("org.briarproject.CONTENT_TYPE");
 		if(contentType == null) throw new IllegalStateException();
-		timestamp = i.getLongExtra("net.sf.briar.TIMESTAMP", -1);
+		timestamp = i.getLongExtra("org.briarproject.TIMESTAMP", -1);
 		if(timestamp == -1) throw new IllegalStateException();
 
 		if(state == null) {
 			read = false;
 			setReadInDatabase(true);
 		} else {
-			read = state.getBoolean("net.sf.briar.READ");
+			read = state.getBoolean("org.briarproject.READ");
 		}
 
 		LinearLayout layout = new LinearLayout(this);
@@ -253,7 +253,7 @@ implements OnClickListener {
 	@Override
 	public void onSaveInstanceState(Bundle state) {
 		super.onSaveInstanceState(state);
-		state.putBoolean("net.sf.briar.READ", read);
+		state.putBoolean("org.briarproject.READ", read);
 	}
 
 	public void onClick(View view) {
@@ -267,12 +267,12 @@ implements OnClickListener {
 			finish();
 		} else if(view == replyButton) {
 			Intent i = new Intent(this, WritePrivateMessageActivity.class);
-			i.putExtra("net.sf.briar.CONTACT_NAME", contactName);
-			i.putExtra("net.sf.briar.GROUP_ID", groupId.getBytes());
-			i.putExtra("net.sf.briar.LOCAL_AUTHOR_ID",
+			i.putExtra("org.briarproject.CONTACT_NAME", contactName);
+			i.putExtra("org.briarproject.GROUP_ID", groupId.getBytes());
+			i.putExtra("org.briarproject.LOCAL_AUTHOR_ID",
 					localAuthorId.getBytes());
-			i.putExtra("net.sf.briar.PARENT_ID", messageId.getBytes());
-			i.putExtra("net.sf.briar.TIMESTAMP", timestamp);
+			i.putExtra("org.briarproject.PARENT_ID", messageId.getBytes());
+			i.putExtra("org.briarproject.TIMESTAMP", timestamp);
 			startActivity(i);
 			setResult(RESULT_REPLY);
 			finish();
diff --git a/briar-android/src/net/sf/briar/android/contact/SelectContactsDialog.java b/briar-android/src/org/briarproject/android/contact/SelectContactsDialog.java
similarity index 92%
rename from briar-android/src/net/sf/briar/android/contact/SelectContactsDialog.java
rename to briar-android/src/org/briarproject/android/contact/SelectContactsDialog.java
index ffbd584b60..0fb4b92922 100644
--- a/briar-android/src/net/sf/briar/android/contact/SelectContactsDialog.java
+++ b/briar-android/src/org/briarproject/android/contact/SelectContactsDialog.java
@@ -1,12 +1,12 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 
-import net.sf.briar.R;
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.ContactId;
+import org.briarproject.R;
+import org.briarproject.api.Contact;
+import org.briarproject.api.ContactId;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
diff --git a/briar-android/src/net/sf/briar/android/contact/WritePrivateMessageActivity.java b/briar-android/src/org/briarproject/android/contact/WritePrivateMessageActivity.java
similarity index 84%
rename from briar-android/src/net/sf/briar/android/contact/WritePrivateMessageActivity.java
rename to briar-android/src/org/briarproject/android/contact/WritePrivateMessageActivity.java
index b8df2aad6d..bf671b63ed 100644
--- a/briar-android/src/net/sf/briar/android/contact/WritePrivateMessageActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/WritePrivateMessageActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.contact;
+package org.briarproject.android.contact;
 
 import static android.text.InputType.TYPE_CLASS_TEXT;
 import static android.text.InputType.TYPE_TEXT_FLAG_CAP_SENTENCES;
@@ -8,7 +8,7 @@ import static android.widget.LinearLayout.VERTICAL;
 import static android.widget.Toast.LENGTH_LONG;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -18,22 +18,22 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.util.HorizontalSpace;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.crypto.CryptoExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.NoSuchContactException;
-import net.sf.briar.api.db.NoSuchSubscriptionException;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageFactory;
-import net.sf.briar.api.messaging.MessageId;
+import org.briarproject.R;
+import org.briarproject.android.util.HorizontalSpace;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.crypto.CryptoExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.NoSuchContactException;
+import org.briarproject.api.db.NoSuchSubscriptionException;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageFactory;
+import org.briarproject.api.messaging.MessageId;
 import roboguice.activity.RoboActivity;
 import android.content.Intent;
 import android.content.res.Resources;
@@ -76,17 +76,17 @@ implements OnClickListener {
 		super.onCreate(state);
 
 		Intent i = getIntent();
-		contactName = i.getStringExtra("net.sf.briar.CONTACT_NAME");
+		contactName = i.getStringExtra("org.briarproject.CONTACT_NAME");
 		if(contactName == null) throw new IllegalStateException();
-		byte[] b = i.getByteArrayExtra("net.sf.briar.GROUP_ID");
+		byte[] b = i.getByteArrayExtra("org.briarproject.GROUP_ID");
 		if(b == null) throw new IllegalStateException();
 		groupId = new GroupId(b);
-		b = i.getByteArrayExtra("net.sf.briar.LOCAL_AUTHOR_ID");
+		b = i.getByteArrayExtra("org.briarproject.LOCAL_AUTHOR_ID");
 		if(b == null) throw new IllegalStateException();
 		localAuthorId = new AuthorId(b);
-		b = i.getByteArrayExtra("net.sf.briar.PARENT_ID");
+		b = i.getByteArrayExtra("org.briarproject.PARENT_ID");
 		if(b != null) parentId = new MessageId(b);
-		timestamp = i.getLongExtra("net.sf.briar.TIMESTAMP", -1);
+		timestamp = i.getLongExtra("org.briarproject.TIMESTAMP", -1);
 
 		LinearLayout layout = new LinearLayout(this);
 		layout.setLayoutParams(MATCH_WRAP);
diff --git a/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java b/briar-android/src/org/briarproject/android/groups/ConfigureGroupActivity.java
similarity index 87%
rename from briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
rename to briar-android/src/org/briarproject/android/groups/ConfigureGroupActivity.java
index 59a34d373e..56b9cffc06 100644
--- a/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
+++ b/briar-android/src/org/briarproject/android/groups/ConfigureGroupActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.View.GONE;
@@ -6,8 +6,8 @@ import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -16,17 +16,17 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.contact.SelectContactsDialog;
-import net.sf.briar.android.invitation.AddContactActivity;
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
+import org.briarproject.R;
+import org.briarproject.android.contact.SelectContactsDialog;
+import org.briarproject.android.invitation.AddContactActivity;
+import org.briarproject.api.Contact;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
 import roboguice.activity.RoboFragmentActivity;
 import android.content.Intent;
 import android.os.Bundle;
@@ -69,17 +69,17 @@ SelectContactsDialog.Listener {
 		super.onCreate(state);
 
 		Intent i = getIntent();
-		byte[] b = i.getByteArrayExtra("net.sf.briar.GROUP_ID");
+		byte[] b = i.getByteArrayExtra("org.briarproject.GROUP_ID");
 		if(b == null) throw new IllegalStateException();
 		GroupId id = new GroupId(b);
-		String name = i.getStringExtra("net.sf.briar.GROUP_NAME");
+		String name = i.getStringExtra("org.briarproject.GROUP_NAME");
 		if(name == null) throw new IllegalStateException();
 		setTitle(name);
-		b = i.getByteArrayExtra("net.sf.briar.GROUP_SALT");
+		b = i.getByteArrayExtra("org.briarproject.GROUP_SALT");
 		if(b == null) throw new IllegalStateException();
 		group = new Group(id, name, b);
-		subscribed = i.getBooleanExtra("net.sf.briar.SUBSCRIBED", false);
-		boolean all = i.getBooleanExtra("net.sf.briar.VISIBLE_TO_ALL", false);
+		subscribed = i.getBooleanExtra("org.briarproject.SUBSCRIBED", false);
+		boolean all = i.getBooleanExtra("org.briarproject.VISIBLE_TO_ALL", false);
 
 		LinearLayout layout = new LinearLayout(this);
 		layout.setLayoutParams(MATCH_MATCH);
diff --git a/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java b/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java
similarity index 91%
rename from briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
rename to briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java
index 5ea8409f61..d227059f07 100644
--- a/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
+++ b/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static android.text.InputType.TYPE_CLASS_TEXT;
 import static android.text.InputType.TYPE_TEXT_FLAG_CAP_SENTENCES;
@@ -10,8 +10,8 @@ import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -20,17 +20,17 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.contact.SelectContactsDialog;
-import net.sf.briar.android.invitation.AddContactActivity;
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupFactory;
+import org.briarproject.R;
+import org.briarproject.android.contact.SelectContactsDialog;
+import org.briarproject.android.invitation.AddContactActivity;
+import org.briarproject.api.Contact;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupFactory;
 import roboguice.activity.RoboFragmentActivity;
 import android.content.Intent;
 import android.os.Bundle;
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupActivity.java b/briar-android/src/org/briarproject/android/groups/GroupActivity.java
similarity index 76%
rename from briar-android/src/net/sf/briar/android/groups/GroupActivity.java
rename to briar-android/src/org/briarproject/android/groups/GroupActivity.java
index d42d33e254..d37867ba26 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupActivity.java
+++ b/briar-android/src/org/briarproject/android/groups/GroupActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.View.GONE;
@@ -6,10 +6,10 @@ import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.groups.ReadGroupPostActivity.RESULT_NEXT;
-import static net.sf.briar.android.groups.ReadGroupPostActivity.RESULT_PREV;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static org.briarproject.android.groups.ReadGroupPostActivity.RESULT_NEXT;
+import static org.briarproject.android.groups.ReadGroupPostActivity.RESULT_PREV;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
@@ -17,23 +17,23 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.AscendingHeaderComparator;
-import net.sf.briar.android.util.HorizontalBorder;
-import net.sf.briar.android.util.ListLoadingProgressBar;
-import net.sf.briar.api.Author;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.db.NoSuchSubscriptionException;
-import net.sf.briar.api.event.Event;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.MessageAddedEvent;
-import net.sf.briar.api.event.MessageExpiredEvent;
-import net.sf.briar.api.event.SubscriptionRemovedEvent;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.GroupId;
+import org.briarproject.R;
+import org.briarproject.android.AscendingHeaderComparator;
+import org.briarproject.android.util.HorizontalBorder;
+import org.briarproject.android.util.ListLoadingProgressBar;
+import org.briarproject.api.Author;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.db.NoSuchSubscriptionException;
+import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.MessageAddedEvent;
+import org.briarproject.api.event.MessageExpiredEvent;
+import org.briarproject.api.event.SubscriptionRemovedEvent;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.GroupId;
 import roboguice.activity.RoboActivity;
 import android.content.Intent;
 import android.os.Bundle;
@@ -67,10 +67,10 @@ OnClickListener, OnItemClickListener {
 		super.onCreate(state);
 
 		Intent i = getIntent();
-		byte[] b = i.getByteArrayExtra("net.sf.briar.GROUP_ID");
+		byte[] b = i.getByteArrayExtra("org.briarproject.GROUP_ID");
 		if(b == null) throw new IllegalStateException();
 		groupId = new GroupId(b);
-		groupName = i.getStringExtra("net.sf.briar.GROUP_NAME");
+		groupName = i.getStringExtra("org.briarproject.GROUP_NAME");
 		if(groupName == null) throw new IllegalStateException();
 		setTitle(groupName);
 
@@ -210,7 +210,7 @@ OnClickListener, OnItemClickListener {
 
 	public void onClick(View view) {
 		Intent i = new Intent(this, WriteGroupPostActivity.class);
-		i.putExtra("net.sf.briar.GROUP_ID", groupId.getBytes());
+		i.putExtra("org.briarproject.GROUP_ID", groupId.getBytes());
 		startActivity(i);
 	}
 
@@ -222,16 +222,16 @@ OnClickListener, OnItemClickListener {
 	private void displayMessage(int position) {
 		MessageHeader item = adapter.getItem(position);
 		Intent i = new Intent(this, ReadGroupPostActivity.class);
-		i.putExtra("net.sf.briar.GROUP_ID", groupId.getBytes());
-		i.putExtra("net.sf.briar.GROUP_NAME", groupName);
-		i.putExtra("net.sf.briar.MESSAGE_ID", item.getId().getBytes());
+		i.putExtra("org.briarproject.GROUP_ID", groupId.getBytes());
+		i.putExtra("org.briarproject.GROUP_NAME", groupName);
+		i.putExtra("org.briarproject.MESSAGE_ID", item.getId().getBytes());
 		Author author = item.getAuthor();
 		if(author != null) {
-			i.putExtra("net.sf.briar.AUTHOR_ID", author.getId().getBytes());
-			i.putExtra("net.sf.briar.AUTHOR_NAME", author.getName());
+			i.putExtra("org.briarproject.AUTHOR_ID", author.getId().getBytes());
+			i.putExtra("org.briarproject.AUTHOR_NAME", author.getName());
 		}
-		i.putExtra("net.sf.briar.CONTENT_TYPE", item.getContentType());
-		i.putExtra("net.sf.briar.TIMESTAMP", item.getTimestamp());
+		i.putExtra("org.briarproject.CONTENT_TYPE", item.getContentType());
+		i.putExtra("org.briarproject.TIMESTAMP", item.getTimestamp());
 		startActivityForResult(i, position);
 	}
 }
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java b/briar-android/src/org/briarproject/android/groups/GroupAdapter.java
similarity index 88%
rename from briar-android/src/net/sf/briar/android/groups/GroupAdapter.java
rename to briar-android/src/org/briarproject/android/groups/GroupAdapter.java
index ac4241e9c6..1b9b446ef6 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java
+++ b/briar-android/src/org/briarproject/android/groups/GroupAdapter.java
@@ -1,14 +1,14 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static android.widget.LinearLayout.HORIZONTAL;
 import static java.text.DateFormat.SHORT;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.util.ArrayList;
 
-import net.sf.briar.R;
-import net.sf.briar.api.Author;
-import net.sf.briar.api.db.MessageHeader;
+import org.briarproject.R;
+import org.briarproject.api.Author;
+import org.briarproject.api.db.MessageHeader;
 import android.content.Context;
 import android.content.res.Resources;
 import android.text.format.DateUtils;
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupItem.java b/briar-android/src/org/briarproject/android/groups/GroupItem.java
similarity index 69%
rename from briar-android/src/net/sf/briar/android/groups/GroupItem.java
rename to briar-android/src/org/briarproject/android/groups/GroupItem.java
index ff45e226bd..8dce2375b4 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupItem.java
+++ b/briar-android/src/org/briarproject/android/groups/GroupItem.java
@@ -1,6 +1,6 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
-import net.sf.briar.api.messaging.Group;
+import org.briarproject.api.messaging.Group;
 
 class GroupItem {
 
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupItemComparator.java b/briar-android/src/org/briarproject/android/groups/GroupItemComparator.java
similarity index 80%
rename from briar-android/src/net/sf/briar/android/groups/GroupItemComparator.java
rename to briar-android/src/org/briarproject/android/groups/GroupItemComparator.java
index f9f377ebd2..b9595a5a29 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupItemComparator.java
+++ b/briar-android/src/org/briarproject/android/groups/GroupItemComparator.java
@@ -1,6 +1,6 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
-import static net.sf.briar.android.groups.GroupItem.NEW;
+import static org.briarproject.android.groups.GroupItem.NEW;
 
 import java.util.Comparator;
 
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java b/briar-android/src/org/briarproject/android/groups/GroupListActivity.java
similarity index 87%
rename from briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
rename to briar-android/src/org/briarproject/android/groups/GroupListActivity.java
index 8ff3f80e93..6dbd585f67 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
+++ b/briar-android/src/org/briarproject/android/groups/GroupListActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_HORIZONTAL;
@@ -8,10 +8,10 @@ import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.groups.GroupListItem.MANAGE;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static org.briarproject.android.groups.GroupListItem.MANAGE;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.Comparator;
@@ -22,26 +22,26 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.util.HorizontalBorder;
-import net.sf.briar.android.util.HorizontalSpace;
-import net.sf.briar.android.util.ListLoadingProgressBar;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.db.NoSuchSubscriptionException;
-import net.sf.briar.api.event.Event;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.MessageAddedEvent;
-import net.sf.briar.api.event.MessageExpiredEvent;
-import net.sf.briar.api.event.RemoteSubscriptionsUpdatedEvent;
-import net.sf.briar.api.event.SubscriptionAddedEvent;
-import net.sf.briar.api.event.SubscriptionRemovedEvent;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.GroupStatus;
+import org.briarproject.R;
+import org.briarproject.android.util.HorizontalBorder;
+import org.briarproject.android.util.HorizontalSpace;
+import org.briarproject.android.util.ListLoadingProgressBar;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.db.NoSuchSubscriptionException;
+import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.MessageAddedEvent;
+import org.briarproject.api.event.MessageExpiredEvent;
+import org.briarproject.api.event.RemoteSubscriptionsUpdatedEvent;
+import org.briarproject.api.event.SubscriptionAddedEvent;
+import org.briarproject.api.event.SubscriptionRemovedEvent;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.GroupStatus;
 import roboguice.activity.RoboFragmentActivity;
 import android.content.Intent;
 import android.os.Bundle;
@@ -347,8 +347,8 @@ implements EventListener, OnClickListener, OnItemClickListener {
 		} else {
 			Intent i = new Intent(this, GroupActivity.class);
 			Group g = item.getGroup();
-			i.putExtra("net.sf.briar.GROUP_ID", g.getId().getBytes());
-			i.putExtra("net.sf.briar.GROUP_NAME", g.getName());
+			i.putExtra("org.briarproject.GROUP_ID", g.getId().getBytes());
+			i.putExtra("org.briarproject.GROUP_NAME", g.getName());
 			startActivity(i);
 		}
 	}
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java b/briar-android/src/org/briarproject/android/groups/GroupListAdapter.java
similarity index 93%
rename from briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java
rename to briar-android/src/org/briarproject/android/groups/GroupListAdapter.java
index aca8f2cd87..7bcb6ad56d 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java
+++ b/briar-android/src/org/briarproject/android/groups/GroupListAdapter.java
@@ -1,17 +1,17 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static android.view.Gravity.CENTER;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static java.text.DateFormat.SHORT;
-import static net.sf.briar.android.groups.GroupListItem.MANAGE;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import static org.briarproject.android.groups.GroupListItem.MANAGE;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.content.res.Resources;
 import android.text.format.DateUtils;
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupListItem.java b/briar-android/src/org/briarproject/android/groups/GroupListItem.java
similarity index 88%
rename from briar-android/src/net/sf/briar/android/groups/GroupListItem.java
rename to briar-android/src/org/briarproject/android/groups/GroupListItem.java
index d82bb2feec..f7b525eb06 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupListItem.java
+++ b/briar-android/src/org/briarproject/android/groups/GroupListItem.java
@@ -1,11 +1,11 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import java.util.Collection;
 import java.util.Collections;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.messaging.Group;
+import org.briarproject.api.Author;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.messaging.Group;
 
 class GroupListItem {
 
diff --git a/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java b/briar-android/src/org/briarproject/android/groups/ManageGroupsActivity.java
similarity index 77%
rename from briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java
rename to briar-android/src/org/briarproject/android/groups/ManageGroupsActivity.java
index 9c265d573d..dc27eec0da 100644
--- a/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java
+++ b/briar-android/src/org/briarproject/android/groups/ManageGroupsActivity.java
@@ -1,9 +1,9 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.groups.ManageGroupsItem.NONE;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.groups.ManageGroupsItem.NONE;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
 
 import java.util.Collection;
 import java.util.Comparator;
@@ -12,18 +12,18 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.android.util.ListLoadingProgressBar;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.event.Event;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.RemoteSubscriptionsUpdatedEvent;
-import net.sf.briar.api.event.SubscriptionAddedEvent;
-import net.sf.briar.api.event.SubscriptionRemovedEvent;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupStatus;
+import org.briarproject.android.util.ListLoadingProgressBar;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.RemoteSubscriptionsUpdatedEvent;
+import org.briarproject.api.event.SubscriptionAddedEvent;
+import org.briarproject.api.event.SubscriptionRemovedEvent;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupStatus;
 import roboguice.activity.RoboFragmentActivity;
 import android.content.Intent;
 import android.os.Bundle;
@@ -132,11 +132,11 @@ implements EventListener, OnItemClickListener {
 		GroupStatus s = item.getGroupStatus();
 		Group g = s.getGroup();
 		Intent i = new Intent(this, ConfigureGroupActivity.class);
-		i.putExtra("net.sf.briar.GROUP_ID", g.getId().getBytes());
-		i.putExtra("net.sf.briar.GROUP_NAME", g.getName());
-		i.putExtra("net.sf.briar.GROUP_SALT", g.getSalt());
-		i.putExtra("net.sf.briar.SUBSCRIBED", s.isSubscribed());
-		i.putExtra("net.sf.briar.VISIBLE_TO_ALL", s.isVisibleToAll());
+		i.putExtra("org.briarproject.GROUP_ID", g.getId().getBytes());
+		i.putExtra("org.briarproject.GROUP_NAME", g.getName());
+		i.putExtra("org.briarproject.GROUP_SALT", g.getSalt());
+		i.putExtra("org.briarproject.SUBSCRIBED", s.isSubscribed());
+		i.putExtra("org.briarproject.VISIBLE_TO_ALL", s.isVisibleToAll());
 		startActivity(i);
 	}
 
diff --git a/briar-android/src/net/sf/briar/android/groups/ManageGroupsAdapter.java b/briar-android/src/org/briarproject/android/groups/ManageGroupsAdapter.java
similarity index 93%
rename from briar-android/src/net/sf/briar/android/groups/ManageGroupsAdapter.java
rename to briar-android/src/org/briarproject/android/groups/ManageGroupsAdapter.java
index 91c73bbbee..a3c115e385 100644
--- a/briar-android/src/net/sf/briar/android/groups/ManageGroupsAdapter.java
+++ b/briar-android/src/org/briarproject/android/groups/ManageGroupsAdapter.java
@@ -1,18 +1,18 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static android.view.Gravity.CENTER;
 import static android.view.View.INVISIBLE;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
-import static net.sf.briar.android.groups.ManageGroupsItem.NONE;
+import static org.briarproject.android.groups.ManageGroupsItem.NONE;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import net.sf.briar.R;
-import net.sf.briar.api.messaging.GroupStatus;
+import org.briarproject.R;
+import org.briarproject.api.messaging.GroupStatus;
 import android.content.Context;
 import android.view.View;
 import android.view.ViewGroup;
diff --git a/briar-android/src/net/sf/briar/android/groups/ManageGroupsItem.java b/briar-android/src/org/briarproject/android/groups/ManageGroupsItem.java
similarity index 73%
rename from briar-android/src/net/sf/briar/android/groups/ManageGroupsItem.java
rename to briar-android/src/org/briarproject/android/groups/ManageGroupsItem.java
index 29b19baa05..157153ecb5 100644
--- a/briar-android/src/net/sf/briar/android/groups/ManageGroupsItem.java
+++ b/briar-android/src/org/briarproject/android/groups/ManageGroupsItem.java
@@ -1,6 +1,6 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
-import net.sf.briar.api.messaging.GroupStatus;
+import org.briarproject.api.messaging.GroupStatus;
 
 class ManageGroupsItem {
 
diff --git a/briar-android/src/net/sf/briar/android/groups/NoContactsDialog.java b/briar-android/src/org/briarproject/android/groups/NoContactsDialog.java
similarity index 93%
rename from briar-android/src/net/sf/briar/android/groups/NoContactsDialog.java
rename to briar-android/src/org/briarproject/android/groups/NoContactsDialog.java
index dcd39facb8..0468a7812b 100644
--- a/briar-android/src/net/sf/briar/android/groups/NoContactsDialog.java
+++ b/briar-android/src/org/briarproject/android/groups/NoContactsDialog.java
@@ -1,6 +1,6 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
diff --git a/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java b/briar-android/src/org/briarproject/android/groups/ReadGroupPostActivity.java
similarity index 84%
rename from briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
rename to briar-android/src/org/briarproject/android/groups/ReadGroupPostActivity.java
index ed44aa9835..00910319f1 100644
--- a/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
+++ b/briar-android/src/org/briarproject/android/groups/ReadGroupPostActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_VERTICAL;
@@ -7,9 +7,9 @@ import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.io.UnsupportedEncodingException;
 import java.util.concurrent.Executor;
@@ -17,16 +17,16 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.util.HorizontalBorder;
-import net.sf.briar.android.util.HorizontalSpace;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.NoSuchMessageException;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.MessageId;
+import org.briarproject.R;
+import org.briarproject.android.util.HorizontalBorder;
+import org.briarproject.android.util.HorizontalSpace;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.NoSuchMessageException;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.MessageId;
 import roboguice.activity.RoboActivity;
 import android.content.Intent;
 import android.content.res.Resources;
@@ -67,26 +67,26 @@ implements OnClickListener {
 		super.onCreate(state);
 
 		Intent i = getIntent();
-		byte[] b = i.getByteArrayExtra("net.sf.briar.GROUP_ID");
+		byte[] b = i.getByteArrayExtra("org.briarproject.GROUP_ID");
 		if(b == null) throw new IllegalStateException();
 		groupId = new GroupId(b);
-		String groupName = i.getStringExtra("net.sf.briar.GROUP_NAME");
+		String groupName = i.getStringExtra("org.briarproject.GROUP_NAME");
 		if(groupName == null) throw new IllegalStateException();
 		setTitle(groupName);
-		b = i.getByteArrayExtra("net.sf.briar.MESSAGE_ID");
+		b = i.getByteArrayExtra("org.briarproject.MESSAGE_ID");
 		if(b == null) throw new IllegalStateException();
 		messageId = new MessageId(b);
-		String contentType = i.getStringExtra("net.sf.briar.CONTENT_TYPE");
+		String contentType = i.getStringExtra("org.briarproject.CONTENT_TYPE");
 		if(contentType == null) throw new IllegalStateException();
-		timestamp = i.getLongExtra("net.sf.briar.TIMESTAMP", -1);
+		timestamp = i.getLongExtra("org.briarproject.TIMESTAMP", -1);
 		if(timestamp == -1) throw new IllegalStateException();
-		String authorName = i.getStringExtra("net.sf.briar.AUTHOR_NAME");
+		String authorName = i.getStringExtra("org.briarproject.AUTHOR_NAME");
 
 		if(state == null) {
 			read = false;
 			setReadInDatabase(true);
 		} else {
-			read = state.getBoolean("net.sf.briar.READ");
+			read = state.getBoolean("org.briarproject.READ");
 		}
 
 		LinearLayout layout = new LinearLayout(this);
@@ -251,7 +251,7 @@ implements OnClickListener {
 	@Override
 	public void onSaveInstanceState(Bundle state) {
 		super.onSaveInstanceState(state);
-		state.putBoolean("net.sf.briar.READ", read);
+		state.putBoolean("org.briarproject.READ", read);
 	}
 
 	public void onClick(View view) {
@@ -265,9 +265,9 @@ implements OnClickListener {
 			finish();
 		} else if(view == replyButton) {
 			Intent i = new Intent(this, WriteGroupPostActivity.class);
-			i.putExtra("net.sf.briar.GROUP_ID", groupId.getBytes());
-			i.putExtra("net.sf.briar.PARENT_ID", messageId.getBytes());
-			i.putExtra("net.sf.briar.TIMESTAMP", timestamp);
+			i.putExtra("org.briarproject.GROUP_ID", groupId.getBytes());
+			i.putExtra("org.briarproject.PARENT_ID", messageId.getBytes());
+			i.putExtra("org.briarproject.TIMESTAMP", timestamp);
 			startActivity(i);
 			setResult(RESULT_REPLY);
 			finish();
diff --git a/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java b/briar-android/src/org/briarproject/android/groups/WriteGroupPostActivity.java
similarity index 84%
rename from briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
rename to briar-android/src/org/briarproject/android/groups/WriteGroupPostActivity.java
index 190c0f80ae..47d6a701aa 100644
--- a/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
+++ b/briar-android/src/org/briarproject/android/groups/WriteGroupPostActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.groups;
+package org.briarproject.android.groups;
 
 import static android.text.InputType.TYPE_CLASS_TEXT;
 import static android.text.InputType.TYPE_TEXT_FLAG_CAP_SENTENCES;
@@ -8,7 +8,7 @@ import static android.widget.LinearLayout.VERTICAL;
 import static android.widget.Toast.LENGTH_LONG;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -19,27 +19,27 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.identity.CreateIdentityActivity;
-import net.sf.briar.android.identity.LocalAuthorItem;
-import net.sf.briar.android.identity.LocalAuthorItemComparator;
-import net.sf.briar.android.identity.LocalAuthorSpinnerAdapter;
-import net.sf.briar.android.util.HorizontalSpace;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.CryptoExecutor;
-import net.sf.briar.api.crypto.KeyParser;
-import net.sf.briar.api.crypto.PrivateKey;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageFactory;
-import net.sf.briar.api.messaging.MessageId;
+import org.briarproject.R;
+import org.briarproject.android.identity.CreateIdentityActivity;
+import org.briarproject.android.identity.LocalAuthorItem;
+import org.briarproject.android.identity.LocalAuthorItemComparator;
+import org.briarproject.android.identity.LocalAuthorSpinnerAdapter;
+import org.briarproject.android.util.HorizontalSpace;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.CryptoExecutor;
+import org.briarproject.api.crypto.KeyParser;
+import org.briarproject.api.crypto.PrivateKey;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageFactory;
+import org.briarproject.api.messaging.MessageId;
 import roboguice.activity.RoboActivity;
 import android.content.Intent;
 import android.content.res.Resources;
@@ -87,16 +87,16 @@ implements OnItemSelectedListener, OnClickListener {
 		super.onCreate(state);
 
 		Intent i = getIntent();
-		byte[] b = i.getByteArrayExtra("net.sf.briar.GROUP_ID");
+		byte[] b = i.getByteArrayExtra("org.briarproject.GROUP_ID");
 		if(b == null) throw new IllegalStateException();
 		groupId = new GroupId(b);
 
-		b = i.getByteArrayExtra("net.sf.briar.PARENT_ID");
+		b = i.getByteArrayExtra("org.briarproject.PARENT_ID");
 		if(b != null) parentId = new MessageId(b);
-		timestamp = i.getLongExtra("net.sf.briar.TIMESTAMP", -1);
+		timestamp = i.getLongExtra("org.briarproject.TIMESTAMP", -1);
 
 		if(state != null) {
-			b = state.getByteArray("net.sf.briar.LOCAL_AUTHOR_ID");
+			b = state.getByteArray("org.briarproject.LOCAL_AUTHOR_ID");
 			if(b != null) localAuthorId = new AuthorId(b);
 		}
 
@@ -210,7 +210,7 @@ implements OnItemSelectedListener, OnClickListener {
 		super.onSaveInstanceState(state);
 		if(localAuthorId != null) {
 			byte[] b =  localAuthorId.getBytes();
-			state.putByteArray("net.sf.briar.LOCAL_AUTHOR_ID", b);
+			state.putByteArray("org.briarproject.LOCAL_AUTHOR_ID", b);
 		}
 	}
 
diff --git a/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java b/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java
similarity index 88%
rename from briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
rename to briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java
index 2010c551ef..d2f48d9fbc 100644
--- a/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
+++ b/briar-android/src/org/briarproject/android/identity/CreateIdentityActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.identity;
+package org.briarproject.android.identity;
 
 import static android.text.InputType.TYPE_CLASS_TEXT;
 import static android.text.InputType.TYPE_TEXT_FLAG_CAP_WORDS;
@@ -10,24 +10,24 @@ import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.CryptoExecutor;
-import net.sf.briar.api.crypto.KeyPair;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.lifecycle.LifecycleManager;
+import org.briarproject.R;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.CryptoExecutor;
+import org.briarproject.api.crypto.KeyPair;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.lifecycle.LifecycleManager;
 import roboguice.activity.RoboActivity;
 import android.os.Bundle;
 import android.view.KeyEvent;
diff --git a/briar-android/src/net/sf/briar/android/identity/LocalAuthorItem.java b/briar-android/src/org/briarproject/android/identity/LocalAuthorItem.java
similarity index 81%
rename from briar-android/src/net/sf/briar/android/identity/LocalAuthorItem.java
rename to briar-android/src/org/briarproject/android/identity/LocalAuthorItem.java
index f867d246cd..abb44221b0 100644
--- a/briar-android/src/net/sf/briar/android/identity/LocalAuthorItem.java
+++ b/briar-android/src/org/briarproject/android/identity/LocalAuthorItem.java
@@ -1,6 +1,6 @@
-package net.sf.briar.android.identity;
+package org.briarproject.android.identity;
 
-import net.sf.briar.api.LocalAuthor;
+import org.briarproject.api.LocalAuthor;
 
 public class LocalAuthorItem {
 
diff --git a/briar-android/src/net/sf/briar/android/identity/LocalAuthorItemComparator.java b/briar-android/src/org/briarproject/android/identity/LocalAuthorItemComparator.java
similarity index 74%
rename from briar-android/src/net/sf/briar/android/identity/LocalAuthorItemComparator.java
rename to briar-android/src/org/briarproject/android/identity/LocalAuthorItemComparator.java
index 9d75dc118b..349e539897 100644
--- a/briar-android/src/net/sf/briar/android/identity/LocalAuthorItemComparator.java
+++ b/briar-android/src/org/briarproject/android/identity/LocalAuthorItemComparator.java
@@ -1,7 +1,7 @@
-package net.sf.briar.android.identity;
+package org.briarproject.android.identity;
 
-import static net.sf.briar.android.identity.LocalAuthorItem.ANONYMOUS;
-import static net.sf.briar.android.identity.LocalAuthorItem.NEW;
+import static org.briarproject.android.identity.LocalAuthorItem.ANONYMOUS;
+import static org.briarproject.android.identity.LocalAuthorItem.NEW;
 
 import java.util.Comparator;
 
diff --git a/briar-android/src/net/sf/briar/android/identity/LocalAuthorSpinnerAdapter.java b/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java
similarity index 91%
rename from briar-android/src/net/sf/briar/android/identity/LocalAuthorSpinnerAdapter.java
rename to briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java
index 0f000a224b..186999fc0c 100644
--- a/briar-android/src/net/sf/briar/android/identity/LocalAuthorSpinnerAdapter.java
+++ b/briar-android/src/org/briarproject/android/identity/LocalAuthorSpinnerAdapter.java
@@ -1,14 +1,14 @@
-package net.sf.briar.android.identity;
+package org.briarproject.android.identity;
 
-import static net.sf.briar.android.identity.LocalAuthorItem.ANONYMOUS;
-import static net.sf.briar.android.identity.LocalAuthorItem.NEW;
+import static org.briarproject.android.identity.LocalAuthorItem.ANONYMOUS;
+import static org.briarproject.android.identity.LocalAuthorItem.NEW;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.content.res.Resources;
 import android.view.View;
diff --git a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java b/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java
similarity index 88%
rename from briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
rename to briar-android/src/org/briarproject/android/invitation/AddContactActivity.java
index 64ebbcad80..6b3036d0d7 100644
--- a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
+++ b/briar-android/src/org/briarproject/android/invitation/AddContactActivity.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.bluetooth.BluetoothAdapter.ACTION_SCAN_MODE_CHANGED;
 import static android.bluetooth.BluetoothAdapter.ACTION_STATE_CHANGED;
@@ -15,22 +15,22 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.R;
-import net.sf.briar.android.identity.LocalAuthorItem;
-import net.sf.briar.android.identity.LocalAuthorItemComparator;
-import net.sf.briar.android.identity.LocalAuthorSpinnerAdapter;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.android.DatabaseUiExecutor;
-import net.sf.briar.api.android.ReferenceManager;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.invitation.InvitationListener;
-import net.sf.briar.api.invitation.InvitationState;
-import net.sf.briar.api.invitation.InvitationTask;
-import net.sf.briar.api.invitation.InvitationTaskFactory;
-import net.sf.briar.api.lifecycle.LifecycleManager;
+import org.briarproject.R;
+import org.briarproject.android.identity.LocalAuthorItem;
+import org.briarproject.android.identity.LocalAuthorItemComparator;
+import org.briarproject.android.identity.LocalAuthorSpinnerAdapter;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.android.DatabaseUiExecutor;
+import org.briarproject.api.android.ReferenceManager;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.invitation.InvitationListener;
+import org.briarproject.api.invitation.InvitationState;
+import org.briarproject.api.invitation.InvitationTask;
+import org.briarproject.api.invitation.InvitationTaskFactory;
+import org.briarproject.api.lifecycle.LifecycleManager;
 import roboguice.activity.RoboActivity;
 import android.bluetooth.BluetoothAdapter;
 import android.content.BroadcastReceiver;
@@ -78,17 +78,17 @@ implements InvitationListener {
 			setView(new NetworkSetupView(this));
 		} else {
 			// Restore the activity's state
-			byte[] b = state.getByteArray("net.sf.briar.LOCAL_AUTHOR_ID");
+			byte[] b = state.getByteArray("org.briarproject.LOCAL_AUTHOR_ID");
 			if(b != null) localAuthorId = new AuthorId(b);
-			taskHandle = state.getLong("net.sf.briar.TASK_HANDLE", -1);
+			taskHandle = state.getLong("org.briarproject.TASK_HANDLE", -1);
 			task = referenceManager.getReference(taskHandle,
 					InvitationTask.class);
 			if(task == null) {
 				// No background task - we must be in an initial or final state
-				localInvitationCode = state.getInt("net.sf.briar.LOCAL_CODE");
-				remoteInvitationCode = state.getInt("net.sf.briar.REMOTE_CODE");
-				connectionFailed = state.getBoolean("net.sf.briar.FAILED");
-				contactName = state.getString("net.sf.briar.CONTACT_NAME");
+				localInvitationCode = state.getInt("org.briarproject.LOCAL_CODE");
+				remoteInvitationCode = state.getInt("org.briarproject.REMOTE_CODE");
+				connectionFailed = state.getBoolean("org.briarproject.FAILED");
+				contactName = state.getString("org.briarproject.CONTACT_NAME");
 				if(contactName != null) {
 					localCompared = remoteCompared = true;
 					localMatched = remoteMatched = true;
@@ -184,13 +184,13 @@ implements InvitationListener {
 		super.onSaveInstanceState(state);
 		if(localAuthorId != null) {
 			byte[] b = localAuthorId.getBytes();
-			state.putByteArray("net.sf.briar.LOCAL_AUTHOR_ID", b);
+			state.putByteArray("org.briarproject.LOCAL_AUTHOR_ID", b);
 		}
-		state.putInt("net.sf.briar.LOCAL_CODE", localInvitationCode);
-		state.putInt("net.sf.briar.REMOTE_CODE", remoteInvitationCode);
-		state.putBoolean("net.sf.briar.FAILED", connectionFailed);
-		state.putString("net.sf.briar.CONTACT_NAME", contactName);
-		if(task != null) state.putLong("net.sf.briar.TASK_HANDLE", taskHandle);
+		state.putInt("org.briarproject.LOCAL_CODE", localInvitationCode);
+		state.putInt("org.briarproject.REMOTE_CODE", remoteInvitationCode);
+		state.putBoolean("org.briarproject.FAILED", connectionFailed);
+		state.putString("org.briarproject.CONTACT_NAME", contactName);
+		if(task != null) state.putLong("org.briarproject.TASK_HANDLE", taskHandle);
 	}
 
 	@Override
diff --git a/briar-android/src/net/sf/briar/android/invitation/AddContactView.java b/briar-android/src/org/briarproject/android/invitation/AddContactView.java
similarity index 82%
rename from briar-android/src/net/sf/briar/android/invitation/AddContactView.java
rename to briar-android/src/org/briarproject/android/invitation/AddContactView.java
index a6ee0afc56..5fdcb3059c 100644
--- a/briar-android/src/net/sf/briar/android/invitation/AddContactView.java
+++ b/briar-android/src/org/briarproject/android/invitation/AddContactView.java
@@ -1,7 +1,7 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER_HORIZONTAL;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
 import android.content.Context;
 import android.widget.LinearLayout;
 
diff --git a/briar-android/src/net/sf/briar/android/invitation/BluetoothStatusView.java b/briar-android/src/org/briarproject/android/invitation/BluetoothStatusView.java
similarity index 94%
rename from briar-android/src/net/sf/briar/android/invitation/BluetoothStatusView.java
rename to briar-android/src/org/briarproject/android/invitation/BluetoothStatusView.java
index d07d63d181..28ecd6e1da 100644
--- a/briar-android/src/net/sf/briar/android/invitation/BluetoothStatusView.java
+++ b/briar-android/src/org/briarproject/android/invitation/BluetoothStatusView.java
@@ -1,10 +1,10 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE;
 import static android.provider.Settings.ACTION_BLUETOOTH_SETTINGS;
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
-import net.sf.briar.R;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import org.briarproject.R;
 import android.bluetooth.BluetoothAdapter;
 import android.content.Context;
 import android.content.Intent;
diff --git a/briar-android/src/net/sf/briar/android/invitation/CodeEntryListener.java b/briar-android/src/org/briarproject/android/invitation/CodeEntryListener.java
similarity index 60%
rename from briar-android/src/net/sf/briar/android/invitation/CodeEntryListener.java
rename to briar-android/src/org/briarproject/android/invitation/CodeEntryListener.java
index 43c3245644..e63c8b1777 100644
--- a/briar-android/src/net/sf/briar/android/invitation/CodeEntryListener.java
+++ b/briar-android/src/org/briarproject/android/invitation/CodeEntryListener.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 interface CodeEntryListener {
 
diff --git a/briar-android/src/net/sf/briar/android/invitation/CodeEntryView.java b/briar-android/src/org/briarproject/android/invitation/CodeEntryView.java
similarity index 95%
rename from briar-android/src/net/sf/briar/android/invitation/CodeEntryView.java
rename to briar-android/src/org/briarproject/android/invitation/CodeEntryView.java
index fd287dfa1b..26f28c6101 100644
--- a/briar-android/src/net/sf/briar/android/invitation/CodeEntryView.java
+++ b/briar-android/src/org/briarproject/android/invitation/CodeEntryView.java
@@ -1,12 +1,12 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.content.Context.INPUT_METHOD_SERVICE;
 import static android.text.InputType.TYPE_CLASS_NUMBER;
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
-import net.sf.briar.R;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
+import org.briarproject.R;
 import android.content.Context;
 import android.view.KeyEvent;
 import android.view.View;
diff --git a/briar-android/src/net/sf/briar/android/invitation/CodesDoNotMatchView.java b/briar-android/src/org/briarproject/android/invitation/CodesDoNotMatchView.java
similarity index 90%
rename from briar-android/src/net/sf/briar/android/invitation/CodesDoNotMatchView.java
rename to briar-android/src/org/briarproject/android/invitation/CodesDoNotMatchView.java
index 6691e97d77..c6399dd916 100644
--- a/briar-android/src/net/sf/briar/android/invitation/CodesDoNotMatchView.java
+++ b/briar-android/src/org/briarproject/android/invitation/CodesDoNotMatchView.java
@@ -1,8 +1,8 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
-import net.sf.briar.R;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
+import org.briarproject.R;
 import android.content.Context;
 import android.view.View;
 import android.view.View.OnClickListener;
diff --git a/briar-android/src/net/sf/briar/android/invitation/ConfirmationCodeView.java b/briar-android/src/org/briarproject/android/invitation/ConfirmationCodeView.java
similarity index 95%
rename from briar-android/src/net/sf/briar/android/invitation/ConfirmationCodeView.java
rename to briar-android/src/org/briarproject/android/invitation/ConfirmationCodeView.java
index 664ab8c336..78b886cfc0 100644
--- a/briar-android/src/net/sf/briar/android/invitation/ConfirmationCodeView.java
+++ b/briar-android/src/org/briarproject/android/invitation/ConfirmationCodeView.java
@@ -1,8 +1,8 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_HORIZONTAL;
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.content.res.Resources;
 import android.widget.ImageView;
diff --git a/briar-android/src/net/sf/briar/android/invitation/ConnectedView.java b/briar-android/src/org/briarproject/android/invitation/ConnectedView.java
similarity index 94%
rename from briar-android/src/net/sf/briar/android/invitation/ConnectedView.java
rename to briar-android/src/org/briarproject/android/invitation/ConnectedView.java
index 2eead7a0c9..c31452002b 100644
--- a/briar-android/src/net/sf/briar/android/invitation/ConnectedView.java
+++ b/briar-android/src/org/briarproject/android/invitation/ConnectedView.java
@@ -1,7 +1,7 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER;
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
diff --git a/briar-android/src/net/sf/briar/android/invitation/ConnectionFailedView.java b/briar-android/src/org/briarproject/android/invitation/ConnectionFailedView.java
similarity index 94%
rename from briar-android/src/net/sf/briar/android/invitation/ConnectionFailedView.java
rename to briar-android/src/org/briarproject/android/invitation/ConnectionFailedView.java
index 81e0f03d3a..dc3efb8e2f 100644
--- a/briar-android/src/net/sf/briar/android/invitation/ConnectionFailedView.java
+++ b/briar-android/src/org/briarproject/android/invitation/ConnectionFailedView.java
@@ -1,8 +1,8 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
-import net.sf.briar.R;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
+import org.briarproject.R;
 import android.content.Context;
 import android.view.View;
 import android.view.View.OnClickListener;
diff --git a/briar-android/src/net/sf/briar/android/invitation/ConnectionView.java b/briar-android/src/org/briarproject/android/invitation/ConnectionView.java
similarity index 96%
rename from briar-android/src/net/sf/briar/android/invitation/ConnectionView.java
rename to briar-android/src/org/briarproject/android/invitation/ConnectionView.java
index 05f557a704..7dae72eef4 100644
--- a/briar-android/src/net/sf/briar/android/invitation/ConnectionView.java
+++ b/briar-android/src/org/briarproject/android/invitation/ConnectionView.java
@@ -1,8 +1,8 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_HORIZONTAL;
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.widget.LinearLayout;
 import android.widget.ProgressBar;
diff --git a/briar-android/src/net/sf/briar/android/invitation/ContactDetailsView.java b/briar-android/src/org/briarproject/android/invitation/ContactDetailsView.java
similarity index 96%
rename from briar-android/src/net/sf/briar/android/invitation/ContactDetailsView.java
rename to briar-android/src/org/briarproject/android/invitation/ContactDetailsView.java
index b3743ba44b..f961669760 100644
--- a/briar-android/src/net/sf/briar/android/invitation/ContactDetailsView.java
+++ b/briar-android/src/org/briarproject/android/invitation/ContactDetailsView.java
@@ -1,8 +1,8 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_HORIZONTAL;
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
diff --git a/briar-android/src/net/sf/briar/android/invitation/InvitationCodeView.java b/briar-android/src/org/briarproject/android/invitation/InvitationCodeView.java
similarity index 93%
rename from briar-android/src/net/sf/briar/android/invitation/InvitationCodeView.java
rename to briar-android/src/org/briarproject/android/invitation/InvitationCodeView.java
index c109fb1051..fba3a0c8c0 100644
--- a/briar-android/src/net/sf/briar/android/invitation/InvitationCodeView.java
+++ b/briar-android/src/org/briarproject/android/invitation/InvitationCodeView.java
@@ -1,7 +1,7 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER_HORIZONTAL;
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.content.res.Resources;
 import android.widget.TextView;
diff --git a/briar-android/src/net/sf/briar/android/invitation/NetworkSetupView.java b/briar-android/src/org/briarproject/android/invitation/NetworkSetupView.java
similarity index 86%
rename from briar-android/src/net/sf/briar/android/invitation/NetworkSetupView.java
rename to briar-android/src/org/briarproject/android/invitation/NetworkSetupView.java
index 57c4d04680..0e4ecde983 100644
--- a/briar-android/src/net/sf/briar/android/invitation/NetworkSetupView.java
+++ b/briar-android/src/org/briarproject/android/invitation/NetworkSetupView.java
@@ -1,14 +1,14 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.identity.LocalAuthorItem.NEW;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
-import net.sf.briar.R;
-import net.sf.briar.android.identity.CreateIdentityActivity;
-import net.sf.briar.android.identity.LocalAuthorItem;
-import net.sf.briar.android.identity.LocalAuthorSpinnerAdapter;
-import net.sf.briar.api.AuthorId;
+import static org.briarproject.android.identity.LocalAuthorItem.NEW;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
+import org.briarproject.R;
+import org.briarproject.android.identity.CreateIdentityActivity;
+import org.briarproject.android.identity.LocalAuthorItem;
+import org.briarproject.android.identity.LocalAuthorSpinnerAdapter;
+import org.briarproject.api.AuthorId;
 import android.content.Context;
 import android.content.Intent;
 import android.view.View;
diff --git a/briar-android/src/net/sf/briar/android/invitation/WaitForContactView.java b/briar-android/src/org/briarproject/android/invitation/WaitForContactView.java
similarity index 96%
rename from briar-android/src/net/sf/briar/android/invitation/WaitForContactView.java
rename to briar-android/src/org/briarproject/android/invitation/WaitForContactView.java
index 22e2e04c97..bcf5cc2334 100644
--- a/briar-android/src/net/sf/briar/android/invitation/WaitForContactView.java
+++ b/briar-android/src/org/briarproject/android/invitation/WaitForContactView.java
@@ -1,8 +1,8 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_HORIZONTAL;
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
diff --git a/briar-android/src/net/sf/briar/android/invitation/WifiStatusView.java b/briar-android/src/org/briarproject/android/invitation/WifiStatusView.java
similarity index 95%
rename from briar-android/src/net/sf/briar/android/invitation/WifiStatusView.java
rename to briar-android/src/org/briarproject/android/invitation/WifiStatusView.java
index c46d281d50..3d5b286afd 100644
--- a/briar-android/src/net/sf/briar/android/invitation/WifiStatusView.java
+++ b/briar-android/src/org/briarproject/android/invitation/WifiStatusView.java
@@ -1,10 +1,10 @@
-package net.sf.briar.android.invitation;
+package org.briarproject.android.invitation;
 
 import static android.content.Context.WIFI_SERVICE;
 import static android.provider.Settings.ACTION_WIFI_SETTINGS;
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
-import net.sf.briar.R;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import org.briarproject.R;
 import android.content.Context;
 import android.content.Intent;
 import android.net.wifi.WifiInfo;
diff --git a/briar-android/src/net/sf/briar/android/util/CommonLayoutParams.java b/briar-android/src/org/briarproject/android/util/CommonLayoutParams.java
similarity index 95%
rename from briar-android/src/net/sf/briar/android/util/CommonLayoutParams.java
rename to briar-android/src/org/briarproject/android/util/CommonLayoutParams.java
index 4026390835..9d9f58e22a 100644
--- a/briar-android/src/net/sf/briar/android/util/CommonLayoutParams.java
+++ b/briar-android/src/org/briarproject/android/util/CommonLayoutParams.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.util;
+package org.briarproject.android.util;
 
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
diff --git a/briar-android/src/net/sf/briar/android/util/HorizontalBorder.java b/briar-android/src/org/briarproject/android/util/HorizontalBorder.java
similarity index 89%
rename from briar-android/src/net/sf/briar/android/util/HorizontalBorder.java
rename to briar-android/src/org/briarproject/android/util/HorizontalBorder.java
index b75f474154..2ed3fddf10 100644
--- a/briar-android/src/net/sf/briar/android/util/HorizontalBorder.java
+++ b/briar-android/src/org/briarproject/android/util/HorizontalBorder.java
@@ -1,7 +1,7 @@
-package net.sf.briar.android.util;
+package org.briarproject.android.util;
 
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
-import net.sf.briar.R;
+import org.briarproject.R;
 import android.content.Context;
 import android.content.res.Resources;
 import android.view.View;
diff --git a/briar-android/src/net/sf/briar/android/util/HorizontalSpace.java b/briar-android/src/org/briarproject/android/util/HorizontalSpace.java
similarity index 89%
rename from briar-android/src/net/sf/briar/android/util/HorizontalSpace.java
rename to briar-android/src/org/briarproject/android/util/HorizontalSpace.java
index f173caf03b..b04db1898f 100644
--- a/briar-android/src/net/sf/briar/android/util/HorizontalSpace.java
+++ b/briar-android/src/org/briarproject/android/util/HorizontalSpace.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.util;
+package org.briarproject.android.util;
 
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 import android.content.Context;
diff --git a/briar-android/src/net/sf/briar/android/util/ListLoadingProgressBar.java b/briar-android/src/org/briarproject/android/util/ListLoadingProgressBar.java
similarity index 71%
rename from briar-android/src/net/sf/briar/android/util/ListLoadingProgressBar.java
rename to briar-android/src/org/briarproject/android/util/ListLoadingProgressBar.java
index fbc0bf2873..edc9d99558 100644
--- a/briar-android/src/net/sf/briar/android/util/ListLoadingProgressBar.java
+++ b/briar-android/src/org/briarproject/android/util/ListLoadingProgressBar.java
@@ -1,8 +1,8 @@
-package net.sf.briar.android.util;
+package org.briarproject.android.util;
 
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
-import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
+import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP;
 import android.content.Context;
 import android.widget.LinearLayout;
 import android.widget.ProgressBar;
diff --git a/briar-android/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
similarity index 96%
rename from briar-android/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java
rename to briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
index 417f7c931e..b245d4a06e 100644
--- a/briar-android/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPlugin.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.droidtooth;
+package org.briarproject.plugins.droidtooth;
 
 import static android.bluetooth.BluetoothAdapter.ACTION_STATE_CHANGED;
 import static android.bluetooth.BluetoothAdapter.EXTRA_STATE;
@@ -24,17 +24,17 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.android.AndroidExecutor;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.util.LatchedReference;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.android.AndroidExecutor;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.system.Clock;
+import org.briarproject.util.LatchedReference;
+import org.briarproject.util.StringUtils;
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
 import android.bluetooth.BluetoothServerSocket;
diff --git a/briar-android/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPluginFactory.java
similarity index 74%
rename from briar-android/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java
rename to briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPluginFactory.java
index 384f129b62..08a44b8207 100644
--- a/briar-android/src/net/sf/briar/plugins/droidtooth/DroidtoothPluginFactory.java
+++ b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothPluginFactory.java
@@ -1,15 +1,15 @@
-package net.sf.briar.plugins.droidtooth;
+package org.briarproject.plugins.droidtooth;
 
 import java.security.SecureRandom;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.android.AndroidExecutor;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.android.AndroidExecutor;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
 import android.content.Context;
 
 public class DroidtoothPluginFactory implements DuplexPluginFactory {
diff --git a/briar-android/src/net/sf/briar/plugins/droidtooth/DroidtoothTransportConnection.java b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothTransportConnection.java
similarity index 84%
rename from briar-android/src/net/sf/briar/plugins/droidtooth/DroidtoothTransportConnection.java
rename to briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothTransportConnection.java
index f1cce80c18..1fa460cf61 100644
--- a/briar-android/src/net/sf/briar/plugins/droidtooth/DroidtoothTransportConnection.java
+++ b/briar-android/src/org/briarproject/plugins/droidtooth/DroidtoothTransportConnection.java
@@ -1,11 +1,11 @@
-package net.sf.briar.plugins.droidtooth;
+package org.briarproject.plugins.droidtooth;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 
-import net.sf.briar.api.plugins.Plugin;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.plugins.Plugin;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
 import android.bluetooth.BluetoothSocket;
 
 class DroidtoothTransportConnection implements DuplexTransportConnection {
diff --git a/briar-android/src/net/sf/briar/plugins/droidtooth/InsecureBluetooth.java b/briar-android/src/org/briarproject/plugins/droidtooth/InsecureBluetooth.java
similarity index 99%
rename from briar-android/src/net/sf/briar/plugins/droidtooth/InsecureBluetooth.java
rename to briar-android/src/org/briarproject/plugins/droidtooth/InsecureBluetooth.java
index 467ef5f778..ce07581b6c 100644
--- a/briar-android/src/net/sf/briar/plugins/droidtooth/InsecureBluetooth.java
+++ b/briar-android/src/org/briarproject/plugins/droidtooth/InsecureBluetooth.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.droidtooth;
+package org.briarproject.plugins.droidtooth;
 
 import static java.util.logging.Level.INFO;
 
diff --git a/briar-android/src/net/sf/briar/plugins/tcp/DroidLanTcpPlugin.java b/briar-android/src/org/briarproject/plugins/tcp/DroidLanTcpPlugin.java
similarity index 79%
rename from briar-android/src/net/sf/briar/plugins/tcp/DroidLanTcpPlugin.java
rename to briar-android/src/org/briarproject/plugins/tcp/DroidLanTcpPlugin.java
index 20bcd3867d..2c4f27a5e7 100644
--- a/briar-android/src/net/sf/briar/plugins/tcp/DroidLanTcpPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/tcp/DroidLanTcpPlugin.java
@@ -1,13 +1,13 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import static android.content.Context.WIFI_SERVICE;
 
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.system.Clock;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.system.Clock;
 import android.content.Context;
 import android.net.wifi.WifiManager;
 import android.net.wifi.WifiManager.MulticastLock;
diff --git a/briar-android/src/net/sf/briar/plugins/tcp/DroidLanTcpPluginFactory.java b/briar-android/src/org/briarproject/plugins/tcp/DroidLanTcpPluginFactory.java
similarity index 71%
rename from briar-android/src/net/sf/briar/plugins/tcp/DroidLanTcpPluginFactory.java
rename to briar-android/src/org/briarproject/plugins/tcp/DroidLanTcpPluginFactory.java
index ad7b298687..b9d870fc4a 100644
--- a/briar-android/src/net/sf/briar/plugins/tcp/DroidLanTcpPluginFactory.java
+++ b/briar-android/src/org/briarproject/plugins/tcp/DroidLanTcpPluginFactory.java
@@ -1,13 +1,13 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
 import android.content.Context;
 
 public class DroidLanTcpPluginFactory implements DuplexPluginFactory {
diff --git a/briar-android/src/net/sf/briar/plugins/tor/TorPlugin.java b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
similarity index 97%
rename from briar-android/src/net/sf/briar/plugins/tor/TorPlugin.java
rename to briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
index d301a70c3d..2ed52a9433 100644
--- a/briar-android/src/net/sf/briar/plugins/tor/TorPlugin.java
+++ b/briar-android/src/org/briarproject/plugins/tor/TorPlugin.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.tor;
+package org.briarproject.plugins.tor;
 
 import static android.content.Context.MODE_PRIVATE;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
@@ -28,16 +28,16 @@ import java.util.zip.ZipInputStream;
 
 import net.freehaven.tor.control.EventHandler;
 import net.freehaven.tor.control.TorControlConnection;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.util.StringUtils;
 import socks.Socks5Proxy;
 import socks.SocksSocket;
 import android.content.Context;
diff --git a/briar-android/src/net/sf/briar/plugins/tor/TorPluginFactory.java b/briar-android/src/org/briarproject/plugins/tor/TorPluginFactory.java
similarity index 77%
rename from briar-android/src/net/sf/briar/plugins/tor/TorPluginFactory.java
rename to briar-android/src/org/briarproject/plugins/tor/TorPluginFactory.java
index f77bbfc4ac..5500fe146b 100644
--- a/briar-android/src/net/sf/briar/plugins/tor/TorPluginFactory.java
+++ b/briar-android/src/org/briarproject/plugins/tor/TorPluginFactory.java
@@ -1,12 +1,12 @@
-package net.sf.briar.plugins.tor;
+package org.briarproject.plugins.tor;
 
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
 import android.content.Context;
 import android.os.Build;
 
diff --git a/briar-android/src/net/sf/briar/plugins/tor/TorTransportConnection.java b/briar-android/src/org/briarproject/plugins/tor/TorTransportConnection.java
similarity index 84%
rename from briar-android/src/net/sf/briar/plugins/tor/TorTransportConnection.java
rename to briar-android/src/org/briarproject/plugins/tor/TorTransportConnection.java
index 2965b36afb..b211316a99 100644
--- a/briar-android/src/net/sf/briar/plugins/tor/TorTransportConnection.java
+++ b/briar-android/src/org/briarproject/plugins/tor/TorTransportConnection.java
@@ -1,12 +1,12 @@
-package net.sf.briar.plugins.tor;
+package org.briarproject.plugins.tor;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.Socket;
 
-import net.sf.briar.api.plugins.Plugin;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.plugins.Plugin;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
 
 class TorTransportConnection implements DuplexTransportConnection {
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/duplex/DuplexConnectionFactory.java b/briar-api/src/net/sf/briar/api/messaging/duplex/DuplexConnectionFactory.java
deleted file mode 100644
index 3c8451b3f8..0000000000
--- a/briar-api/src/net/sf/briar/api/messaging/duplex/DuplexConnectionFactory.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package net.sf.briar.api.messaging.duplex;
-
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.transport.ConnectionContext;
-
-public interface DuplexConnectionFactory {
-
-	void createIncomingConnection(ConnectionContext ctx,
-			DuplexTransportConnection d);
-
-	void createOutgoingConnection(ContactId c, TransportId t,
-			DuplexTransportConnection d);
-}
diff --git a/briar-api/src/net/sf/briar/api/messaging/simplex/SimplexConnectionFactory.java b/briar-api/src/net/sf/briar/api/messaging/simplex/SimplexConnectionFactory.java
deleted file mode 100644
index 2eac7b0e26..0000000000
--- a/briar-api/src/net/sf/briar/api/messaging/simplex/SimplexConnectionFactory.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package net.sf.briar.api.messaging.simplex;
-
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
-import net.sf.briar.api.transport.ConnectionContext;
-
-public interface SimplexConnectionFactory {
-
-	void createIncomingConnection(ConnectionContext ctx,
-			SimplexTransportReader r);
-
-	void createOutgoingConnection(ContactId c, TransportId t,
-			SimplexTransportWriter w);
-}
diff --git a/briar-api/src/net/sf/briar/api/Author.java b/briar-api/src/org/briarproject/api/Author.java
similarity index 96%
rename from briar-api/src/net/sf/briar/api/Author.java
rename to briar-api/src/org/briarproject/api/Author.java
index 3866460242..7c313a8b4e 100644
--- a/briar-api/src/net/sf/briar/api/Author.java
+++ b/briar-api/src/org/briarproject/api/Author.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 /** A pseudonym for a user. */
 public class Author {
diff --git a/briar-api/src/net/sf/briar/api/AuthorConstants.java b/briar-api/src/org/briarproject/api/AuthorConstants.java
similarity index 96%
rename from briar-api/src/net/sf/briar/api/AuthorConstants.java
rename to briar-api/src/org/briarproject/api/AuthorConstants.java
index 507b63e615..57ad598a75 100644
--- a/briar-api/src/net/sf/briar/api/AuthorConstants.java
+++ b/briar-api/src/org/briarproject/api/AuthorConstants.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 public interface AuthorConstants {
 
diff --git a/briar-api/src/net/sf/briar/api/AuthorFactory.java b/briar-api/src/org/briarproject/api/AuthorFactory.java
similarity index 85%
rename from briar-api/src/net/sf/briar/api/AuthorFactory.java
rename to briar-api/src/org/briarproject/api/AuthorFactory.java
index dfb808a15e..f70ef2135e 100644
--- a/briar-api/src/net/sf/briar/api/AuthorFactory.java
+++ b/briar-api/src/org/briarproject/api/AuthorFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 public interface AuthorFactory {
 
diff --git a/briar-api/src/net/sf/briar/api/AuthorId.java b/briar-api/src/org/briarproject/api/AuthorId.java
similarity index 92%
rename from briar-api/src/net/sf/briar/api/AuthorId.java
rename to briar-api/src/org/briarproject/api/AuthorId.java
index 2639629630..fd1102b51b 100644
--- a/briar-api/src/net/sf/briar/api/AuthorId.java
+++ b/briar-api/src/org/briarproject/api/AuthorId.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 import java.util.Arrays;
 
diff --git a/briar-api/src/net/sf/briar/api/Bytes.java b/briar-api/src/org/briarproject/api/Bytes.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/Bytes.java
rename to briar-api/src/org/briarproject/api/Bytes.java
index fe95d75d84..0c92b4104c 100644
--- a/briar-api/src/net/sf/briar/api/Bytes.java
+++ b/briar-api/src/org/briarproject/api/Bytes.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 import java.util.Arrays;
 
diff --git a/briar-api/src/net/sf/briar/api/Contact.java b/briar-api/src/org/briarproject/api/Contact.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/Contact.java
rename to briar-api/src/org/briarproject/api/Contact.java
index 99a3d3edac..8e850e411a 100644
--- a/briar-api/src/net/sf/briar/api/Contact.java
+++ b/briar-api/src/org/briarproject/api/Contact.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 public class Contact {
 
diff --git a/briar-api/src/net/sf/briar/api/ContactId.java b/briar-api/src/org/briarproject/api/ContactId.java
similarity index 93%
rename from briar-api/src/net/sf/briar/api/ContactId.java
rename to briar-api/src/org/briarproject/api/ContactId.java
index 7875f596d4..d5d33e6236 100644
--- a/briar-api/src/net/sf/briar/api/ContactId.java
+++ b/briar-api/src/org/briarproject/api/ContactId.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 /**
  * Type-safe wrapper for an integer that uniquely identifies a contact within
diff --git a/briar-api/src/net/sf/briar/api/FormatException.java b/briar-api/src/org/briarproject/api/FormatException.java
similarity index 88%
rename from briar-api/src/net/sf/briar/api/FormatException.java
rename to briar-api/src/org/briarproject/api/FormatException.java
index 6796df2b7f..0cbbb8535d 100644
--- a/briar-api/src/net/sf/briar/api/FormatException.java
+++ b/briar-api/src/org/briarproject/api/FormatException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 import java.io.IOException;
 
diff --git a/briar-api/src/net/sf/briar/api/LocalAuthor.java b/briar-api/src/org/briarproject/api/LocalAuthor.java
similarity index 93%
rename from briar-api/src/net/sf/briar/api/LocalAuthor.java
rename to briar-api/src/org/briarproject/api/LocalAuthor.java
index 365c92326a..16da123693 100644
--- a/briar-api/src/net/sf/briar/api/LocalAuthor.java
+++ b/briar-api/src/org/briarproject/api/LocalAuthor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 /** A pseudonym for the local user. */
 public class LocalAuthor extends Author {
diff --git a/briar-api/src/net/sf/briar/api/TransportConfig.java b/briar-api/src/org/briarproject/api/TransportConfig.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/TransportConfig.java
rename to briar-api/src/org/briarproject/api/TransportConfig.java
index 45e5ce09c7..f806fca42d 100644
--- a/briar-api/src/net/sf/briar/api/TransportConfig.java
+++ b/briar-api/src/org/briarproject/api/TransportConfig.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 import java.util.Hashtable;
 import java.util.Map;
diff --git a/briar-api/src/net/sf/briar/api/TransportId.java b/briar-api/src/org/briarproject/api/TransportId.java
similarity index 92%
rename from briar-api/src/net/sf/briar/api/TransportId.java
rename to briar-api/src/org/briarproject/api/TransportId.java
index bcc8519508..264419b8d9 100644
--- a/briar-api/src/net/sf/briar/api/TransportId.java
+++ b/briar-api/src/org/briarproject/api/TransportId.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 import java.util.Arrays;
 
diff --git a/briar-api/src/net/sf/briar/api/TransportProperties.java b/briar-api/src/org/briarproject/api/TransportProperties.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/TransportProperties.java
rename to briar-api/src/org/briarproject/api/TransportProperties.java
index cdce2af433..b934c7ed53 100644
--- a/briar-api/src/net/sf/briar/api/TransportProperties.java
+++ b/briar-api/src/org/briarproject/api/TransportProperties.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 import java.util.Hashtable;
 import java.util.Map;
diff --git a/briar-api/src/net/sf/briar/api/TransportPropertyConstants.java b/briar-api/src/org/briarproject/api/TransportPropertyConstants.java
similarity index 89%
rename from briar-api/src/net/sf/briar/api/TransportPropertyConstants.java
rename to briar-api/src/org/briarproject/api/TransportPropertyConstants.java
index 4967fe2107..03ed8be827 100644
--- a/briar-api/src/net/sf/briar/api/TransportPropertyConstants.java
+++ b/briar-api/src/org/briarproject/api/TransportPropertyConstants.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 public interface TransportPropertyConstants {
 
diff --git a/briar-api/src/net/sf/briar/api/UniqueId.java b/briar-api/src/org/briarproject/api/UniqueId.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/UniqueId.java
rename to briar-api/src/org/briarproject/api/UniqueId.java
index f86c873fa1..38d4e9bc48 100644
--- a/briar-api/src/net/sf/briar/api/UniqueId.java
+++ b/briar-api/src/org/briarproject/api/UniqueId.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api;
+package org.briarproject.api;
 
 import java.util.Arrays;
 
diff --git a/briar-api/src/net/sf/briar/api/android/AndroidExecutor.java b/briar-api/src/org/briarproject/api/android/AndroidExecutor.java
similarity index 92%
rename from briar-api/src/net/sf/briar/api/android/AndroidExecutor.java
rename to briar-api/src/org/briarproject/api/android/AndroidExecutor.java
index 808c337853..4f964d6a12 100644
--- a/briar-api/src/net/sf/briar/api/android/AndroidExecutor.java
+++ b/briar-api/src/org/briarproject/api/android/AndroidExecutor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.android;
+package org.briarproject.api.android;
 
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
diff --git a/briar-api/src/net/sf/briar/api/android/DatabaseUiExecutor.java b/briar-api/src/org/briarproject/api/android/DatabaseUiExecutor.java
similarity index 93%
rename from briar-api/src/net/sf/briar/api/android/DatabaseUiExecutor.java
rename to briar-api/src/org/briarproject/api/android/DatabaseUiExecutor.java
index ecbccbc105..4a9ceb4eb2 100644
--- a/briar-api/src/net/sf/briar/api/android/DatabaseUiExecutor.java
+++ b/briar-api/src/org/briarproject/api/android/DatabaseUiExecutor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.android;
+package org.briarproject.api.android;
 
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
diff --git a/briar-api/src/net/sf/briar/api/android/ReferenceManager.java b/briar-api/src/org/briarproject/api/android/ReferenceManager.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/android/ReferenceManager.java
rename to briar-api/src/org/briarproject/api/android/ReferenceManager.java
index 61445e9351..2366d9e1cd 100644
--- a/briar-api/src/net/sf/briar/api/android/ReferenceManager.java
+++ b/briar-api/src/org/briarproject/api/android/ReferenceManager.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.android;
+package org.briarproject.api.android;
 
 /**
  * Manages mappings between object references and serialisable handles. This
diff --git a/briar-api/src/net/sf/briar/api/crypto/AuthenticatedCipher.java b/briar-api/src/org/briarproject/api/crypto/AuthenticatedCipher.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/crypto/AuthenticatedCipher.java
rename to briar-api/src/org/briarproject/api/crypto/AuthenticatedCipher.java
index 6105b70dc6..1b857b64e1 100644
--- a/briar-api/src/net/sf/briar/api/crypto/AuthenticatedCipher.java
+++ b/briar-api/src/org/briarproject/api/crypto/AuthenticatedCipher.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-api/src/net/sf/briar/api/crypto/CryptoComponent.java b/briar-api/src/org/briarproject/api/crypto/CryptoComponent.java
similarity index 98%
rename from briar-api/src/net/sf/briar/api/crypto/CryptoComponent.java
rename to briar-api/src/org/briarproject/api/crypto/CryptoComponent.java
index a3bf48e15c..e40614efc6 100644
--- a/briar-api/src/net/sf/briar/api/crypto/CryptoComponent.java
+++ b/briar-api/src/org/briarproject/api/crypto/CryptoComponent.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 import java.security.GeneralSecurityException;
 import java.security.SecureRandom;
diff --git a/briar-api/src/net/sf/briar/api/crypto/CryptoExecutor.java b/briar-api/src/org/briarproject/api/crypto/CryptoExecutor.java
similarity index 93%
rename from briar-api/src/net/sf/briar/api/crypto/CryptoExecutor.java
rename to briar-api/src/org/briarproject/api/crypto/CryptoExecutor.java
index fa2a8f11d5..c527c5812a 100644
--- a/briar-api/src/net/sf/briar/api/crypto/CryptoExecutor.java
+++ b/briar-api/src/org/briarproject/api/crypto/CryptoExecutor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
diff --git a/briar-api/src/net/sf/briar/api/crypto/KeyManager.java b/briar-api/src/org/briarproject/api/crypto/KeyManager.java
similarity index 64%
rename from briar-api/src/net/sf/briar/api/crypto/KeyManager.java
rename to briar-api/src/org/briarproject/api/crypto/KeyManager.java
index 803b1037cc..94bc503a13 100644
--- a/briar-api/src/net/sf/briar/api/crypto/KeyManager.java
+++ b/briar-api/src/org/briarproject/api/crypto/KeyManager.java
@@ -1,10 +1,10 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.lifecycle.Service;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.Endpoint;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.lifecycle.Service;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.Endpoint;
 
 public interface KeyManager extends Service {
 
diff --git a/briar-api/src/net/sf/briar/api/crypto/KeyPair.java b/briar-api/src/org/briarproject/api/crypto/KeyPair.java
similarity index 91%
rename from briar-api/src/net/sf/briar/api/crypto/KeyPair.java
rename to briar-api/src/org/briarproject/api/crypto/KeyPair.java
index 76be830d71..9af5da4cfd 100644
--- a/briar-api/src/net/sf/briar/api/crypto/KeyPair.java
+++ b/briar-api/src/org/briarproject/api/crypto/KeyPair.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 /** A key pair consisting of a {@link PublicKey} and a {@link PrivateKey). */
 public class KeyPair {
diff --git a/briar-api/src/net/sf/briar/api/crypto/KeyParser.java b/briar-api/src/org/briarproject/api/crypto/KeyParser.java
similarity index 86%
rename from briar-api/src/net/sf/briar/api/crypto/KeyParser.java
rename to briar-api/src/org/briarproject/api/crypto/KeyParser.java
index 835dcb3d73..89258be5e7 100644
--- a/briar-api/src/net/sf/briar/api/crypto/KeyParser.java
+++ b/briar-api/src/org/briarproject/api/crypto/KeyParser.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-api/src/net/sf/briar/api/crypto/MessageDigest.java b/briar-api/src/org/briarproject/api/crypto/MessageDigest.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/crypto/MessageDigest.java
rename to briar-api/src/org/briarproject/api/crypto/MessageDigest.java
index 406bd5dc74..342733c2d8 100644
--- a/briar-api/src/net/sf/briar/api/crypto/MessageDigest.java
+++ b/briar-api/src/org/briarproject/api/crypto/MessageDigest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 public interface MessageDigest {
 
diff --git a/briar-api/src/net/sf/briar/api/crypto/PrivateKey.java b/briar-api/src/org/briarproject/api/crypto/PrivateKey.java
similarity index 82%
rename from briar-api/src/net/sf/briar/api/crypto/PrivateKey.java
rename to briar-api/src/org/briarproject/api/crypto/PrivateKey.java
index 332bf906c8..0fd491e1e6 100644
--- a/briar-api/src/net/sf/briar/api/crypto/PrivateKey.java
+++ b/briar-api/src/org/briarproject/api/crypto/PrivateKey.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 /** The private half of a public/private {@link KeyPair}. */
 public interface PrivateKey {
diff --git a/briar-api/src/net/sf/briar/api/crypto/PseudoRandom.java b/briar-api/src/org/briarproject/api/crypto/PseudoRandom.java
similarity index 71%
rename from briar-api/src/net/sf/briar/api/crypto/PseudoRandom.java
rename to briar-api/src/org/briarproject/api/crypto/PseudoRandom.java
index 0985fec3de..1edaa2b258 100644
--- a/briar-api/src/net/sf/briar/api/crypto/PseudoRandom.java
+++ b/briar-api/src/org/briarproject/api/crypto/PseudoRandom.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 /** A deterministic PRNG. */
 public interface PseudoRandom {
diff --git a/briar-api/src/net/sf/briar/api/crypto/PublicKey.java b/briar-api/src/org/briarproject/api/crypto/PublicKey.java
similarity index 82%
rename from briar-api/src/net/sf/briar/api/crypto/PublicKey.java
rename to briar-api/src/org/briarproject/api/crypto/PublicKey.java
index 27b851cf6b..f192be90f4 100644
--- a/briar-api/src/net/sf/briar/api/crypto/PublicKey.java
+++ b/briar-api/src/org/briarproject/api/crypto/PublicKey.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 /** The public half of a public/private {@link KeyPair}. */
 public interface PublicKey {
diff --git a/briar-api/src/net/sf/briar/api/crypto/SecretKey.java b/briar-api/src/org/briarproject/api/crypto/SecretKey.java
similarity index 93%
rename from briar-api/src/net/sf/briar/api/crypto/SecretKey.java
rename to briar-api/src/org/briarproject/api/crypto/SecretKey.java
index 1149ae7539..63d1f76617 100644
--- a/briar-api/src/net/sf/briar/api/crypto/SecretKey.java
+++ b/briar-api/src/org/briarproject/api/crypto/SecretKey.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 /** A secret key used for encryption and/or authentication. */
 public interface SecretKey {
diff --git a/briar-api/src/net/sf/briar/api/crypto/Signature.java b/briar-api/src/org/briarproject/api/crypto/Signature.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/crypto/Signature.java
rename to briar-api/src/org/briarproject/api/crypto/Signature.java
index f09595608b..85c3c93a15 100644
--- a/briar-api/src/net/sf/briar/api/crypto/Signature.java
+++ b/briar-api/src/org/briarproject/api/crypto/Signature.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.crypto;
+package org.briarproject.api.crypto;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-api/src/net/sf/briar/api/db/ContactExistsException.java b/briar-api/src/org/briarproject/api/db/ContactExistsException.java
similarity index 89%
rename from briar-api/src/net/sf/briar/api/db/ContactExistsException.java
rename to briar-api/src/org/briarproject/api/db/ContactExistsException.java
index 33b11d6d1f..6b4c283f5a 100644
--- a/briar-api/src/net/sf/briar/api/db/ContactExistsException.java
+++ b/briar-api/src/org/briarproject/api/db/ContactExistsException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 /**
  * Thrown when a duplicate contact is added to the database. This exception may
diff --git a/briar-api/src/net/sf/briar/api/db/DatabaseComponent.java b/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/db/DatabaseComponent.java
rename to briar-api/src/org/briarproject/api/db/DatabaseComponent.java
index 43e1d38769..8dc27c9718 100644
--- a/briar-api/src/net/sf/briar/api/db/DatabaseComponent.java
+++ b/briar-api/src/org/briarproject/api/db/DatabaseComponent.java
@@ -1,34 +1,34 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 import java.io.IOException;
 import java.util.Collection;
 import java.util.Map;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.GroupStatus;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.Offer;
-import net.sf.briar.api.messaging.Request;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.api.transport.TemporarySecret;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.Contact;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.GroupStatus;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.Offer;
+import org.briarproject.api.messaging.Request;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.api.transport.TemporarySecret;
 
 /**
  * Encapsulates the database implementation and exposes high-level operations
diff --git a/briar-api/src/net/sf/briar/api/db/DatabaseConfig.java b/briar-api/src/org/briarproject/api/db/DatabaseConfig.java
similarity index 86%
rename from briar-api/src/net/sf/briar/api/db/DatabaseConfig.java
rename to briar-api/src/org/briarproject/api/db/DatabaseConfig.java
index 26f42f99d9..e452fe15c5 100644
--- a/briar-api/src/net/sf/briar/api/db/DatabaseConfig.java
+++ b/briar-api/src/org/briarproject/api/db/DatabaseConfig.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 import java.io.File;
 
diff --git a/briar-api/src/net/sf/briar/api/db/DatabaseExecutor.java b/briar-api/src/org/briarproject/api/db/DatabaseExecutor.java
similarity index 94%
rename from briar-api/src/net/sf/briar/api/db/DatabaseExecutor.java
rename to briar-api/src/org/briarproject/api/db/DatabaseExecutor.java
index cd0f6c909a..3c0e44a73d 100644
--- a/briar-api/src/net/sf/briar/api/db/DatabaseExecutor.java
+++ b/briar-api/src/org/briarproject/api/db/DatabaseExecutor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
diff --git a/briar-api/src/net/sf/briar/api/db/DbClosedException.java b/briar-api/src/org/briarproject/api/db/DbClosedException.java
similarity index 86%
rename from briar-api/src/net/sf/briar/api/db/DbClosedException.java
rename to briar-api/src/org/briarproject/api/db/DbClosedException.java
index 74f992107c..decccf5e7b 100644
--- a/briar-api/src/net/sf/briar/api/db/DbClosedException.java
+++ b/briar-api/src/org/briarproject/api/db/DbClosedException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 /** Thrown when a database operation is attempted and the database is closed. */
 public class DbClosedException extends DbException {
diff --git a/briar-api/src/net/sf/briar/api/db/DbException.java b/briar-api/src/org/briarproject/api/db/DbException.java
similarity index 85%
rename from briar-api/src/net/sf/briar/api/db/DbException.java
rename to briar-api/src/org/briarproject/api/db/DbException.java
index 0a200a6355..d214d45e53 100644
--- a/briar-api/src/net/sf/briar/api/db/DbException.java
+++ b/briar-api/src/org/briarproject/api/db/DbException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 public class DbException extends Exception {
 
diff --git a/briar-api/src/net/sf/briar/api/db/LocalAuthorExistsException.java b/briar-api/src/org/briarproject/api/db/LocalAuthorExistsException.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/db/LocalAuthorExistsException.java
rename to briar-api/src/org/briarproject/api/db/LocalAuthorExistsException.java
index 52425d7e43..549140364a 100644
--- a/briar-api/src/net/sf/briar/api/db/LocalAuthorExistsException.java
+++ b/briar-api/src/org/briarproject/api/db/LocalAuthorExistsException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 /**
  * Thrown when a duplicate pseudonym is added to the database. This exception
diff --git a/briar-api/src/net/sf/briar/api/db/MessageHeader.java b/briar-api/src/org/briarproject/api/db/MessageHeader.java
similarity index 89%
rename from briar-api/src/net/sf/briar/api/db/MessageHeader.java
rename to briar-api/src/org/briarproject/api/db/MessageHeader.java
index 90822f583b..64831d9fe7 100644
--- a/briar-api/src/net/sf/briar/api/db/MessageHeader.java
+++ b/briar-api/src/org/briarproject/api/db/MessageHeader.java
@@ -1,8 +1,8 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.MessageId;
+import org.briarproject.api.Author;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.MessageId;
 
 public class MessageHeader {
 
diff --git a/briar-api/src/net/sf/briar/api/db/NoSuchContactException.java b/briar-api/src/org/briarproject/api/db/NoSuchContactException.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/db/NoSuchContactException.java
rename to briar-api/src/org/briarproject/api/db/NoSuchContactException.java
index ed6033a2d1..6743521b48 100644
--- a/briar-api/src/net/sf/briar/api/db/NoSuchContactException.java
+++ b/briar-api/src/org/briarproject/api/db/NoSuchContactException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 /**
  * Thrown when a database operation is attempted for a contact that is not in
diff --git a/briar-api/src/net/sf/briar/api/db/NoSuchLocalAuthorException.java b/briar-api/src/org/briarproject/api/db/NoSuchLocalAuthorException.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/db/NoSuchLocalAuthorException.java
rename to briar-api/src/org/briarproject/api/db/NoSuchLocalAuthorException.java
index d091fdaeb4..239e03cda6 100644
--- a/briar-api/src/net/sf/briar/api/db/NoSuchLocalAuthorException.java
+++ b/briar-api/src/org/briarproject/api/db/NoSuchLocalAuthorException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 /**
  * Thrown when a database operation is attempted for a pseudonym that is not in
diff --git a/briar-api/src/net/sf/briar/api/db/NoSuchMessageException.java b/briar-api/src/org/briarproject/api/db/NoSuchMessageException.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/db/NoSuchMessageException.java
rename to briar-api/src/org/briarproject/api/db/NoSuchMessageException.java
index ef24e15a7d..a28dbe02b2 100644
--- a/briar-api/src/net/sf/briar/api/db/NoSuchMessageException.java
+++ b/briar-api/src/org/briarproject/api/db/NoSuchMessageException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 /**
  * Thrown when a database operation is attempted for a message that is not in
diff --git a/briar-api/src/net/sf/briar/api/db/NoSuchSubscriptionException.java b/briar-api/src/org/briarproject/api/db/NoSuchSubscriptionException.java
similarity index 91%
rename from briar-api/src/net/sf/briar/api/db/NoSuchSubscriptionException.java
rename to briar-api/src/org/briarproject/api/db/NoSuchSubscriptionException.java
index 5905a970c5..fc19dc1e50 100644
--- a/briar-api/src/net/sf/briar/api/db/NoSuchSubscriptionException.java
+++ b/briar-api/src/org/briarproject/api/db/NoSuchSubscriptionException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 /**
  * Thrown when a database operation is attempted for a group to which the user
diff --git a/briar-api/src/net/sf/briar/api/db/NoSuchTransportException.java b/briar-api/src/org/briarproject/api/db/NoSuchTransportException.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/db/NoSuchTransportException.java
rename to briar-api/src/org/briarproject/api/db/NoSuchTransportException.java
index 7db2fd0964..4c9c6ca128 100644
--- a/briar-api/src/net/sf/briar/api/db/NoSuchTransportException.java
+++ b/briar-api/src/org/briarproject/api/db/NoSuchTransportException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.db;
+package org.briarproject.api.db;
 
 /**
  * Thrown when a database operation is attempted for a transport that is not in
diff --git a/briar-api/src/net/sf/briar/api/event/ContactAddedEvent.java b/briar-api/src/org/briarproject/api/event/ContactAddedEvent.java
similarity index 79%
rename from briar-api/src/net/sf/briar/api/event/ContactAddedEvent.java
rename to briar-api/src/org/briarproject/api/event/ContactAddedEvent.java
index 9e1cc4dfc1..6728c79050 100644
--- a/briar-api/src/net/sf/briar/api/event/ContactAddedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/ContactAddedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.ContactId;
+import org.briarproject.api.ContactId;
 
 /** An event that is broadcast when a contact is added. */
 public class ContactAddedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/ContactRemovedEvent.java b/briar-api/src/org/briarproject/api/event/ContactRemovedEvent.java
similarity index 79%
rename from briar-api/src/net/sf/briar/api/event/ContactRemovedEvent.java
rename to briar-api/src/org/briarproject/api/event/ContactRemovedEvent.java
index e4ad51c5a4..6b080340ea 100644
--- a/briar-api/src/net/sf/briar/api/event/ContactRemovedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/ContactRemovedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.ContactId;
+import org.briarproject.api.ContactId;
 
 /** An event that is broadcast when a contact is removed. */
 public class ContactRemovedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/Event.java b/briar-api/src/org/briarproject/api/event/Event.java
similarity index 67%
rename from briar-api/src/net/sf/briar/api/event/Event.java
rename to briar-api/src/org/briarproject/api/event/Event.java
index 6101944524..9a7a8b6484 100644
--- a/briar-api/src/net/sf/briar/api/event/Event.java
+++ b/briar-api/src/org/briarproject/api/event/Event.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
 /** An abstract superclass for events. */
 public abstract class Event {
diff --git a/briar-api/src/net/sf/briar/api/event/EventListener.java b/briar-api/src/org/briarproject/api/event/EventListener.java
similarity index 78%
rename from briar-api/src/net/sf/briar/api/event/EventListener.java
rename to briar-api/src/org/briarproject/api/event/EventListener.java
index 9db96a3d5e..8ab59aa04b 100644
--- a/briar-api/src/net/sf/briar/api/event/EventListener.java
+++ b/briar-api/src/org/briarproject/api/event/EventListener.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
 /** An interface for receiving notifications when events occur. */
 public interface EventListener {
diff --git a/briar-api/src/net/sf/briar/api/event/LocalAuthorAddedEvent.java b/briar-api/src/org/briarproject/api/event/LocalAuthorAddedEvent.java
similarity index 80%
rename from briar-api/src/net/sf/briar/api/event/LocalAuthorAddedEvent.java
rename to briar-api/src/org/briarproject/api/event/LocalAuthorAddedEvent.java
index 2bd6c4fe27..81c4145ebf 100644
--- a/briar-api/src/net/sf/briar/api/event/LocalAuthorAddedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/LocalAuthorAddedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.AuthorId;
+import org.briarproject.api.AuthorId;
 
 /** An event that is broadcast when a local pseudonym is added. */
 public class LocalAuthorAddedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/LocalAuthorRemovedEvent.java b/briar-api/src/org/briarproject/api/event/LocalAuthorRemovedEvent.java
similarity index 80%
rename from briar-api/src/net/sf/briar/api/event/LocalAuthorRemovedEvent.java
rename to briar-api/src/org/briarproject/api/event/LocalAuthorRemovedEvent.java
index 1166697936..9671792474 100644
--- a/briar-api/src/net/sf/briar/api/event/LocalAuthorRemovedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/LocalAuthorRemovedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.AuthorId;
+import org.briarproject.api.AuthorId;
 
 /** An event that is broadcast when a local pseudonym is removed. */
 public class LocalAuthorRemovedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/LocalSubscriptionsUpdatedEvent.java b/briar-api/src/org/briarproject/api/event/LocalSubscriptionsUpdatedEvent.java
similarity index 86%
rename from briar-api/src/net/sf/briar/api/event/LocalSubscriptionsUpdatedEvent.java
rename to briar-api/src/org/briarproject/api/event/LocalSubscriptionsUpdatedEvent.java
index 934eee61e1..2617a06ce5 100644
--- a/briar-api/src/net/sf/briar/api/event/LocalSubscriptionsUpdatedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/LocalSubscriptionsUpdatedEvent.java
@@ -1,8 +1,8 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
 import java.util.Collection;
 
-import net.sf.briar.api.ContactId;
+import org.briarproject.api.ContactId;
 
 /**
  * An event that is broadcast when the set of subscriptions visible to one or
diff --git a/briar-api/src/net/sf/briar/api/event/LocalTransportsUpdatedEvent.java b/briar-api/src/org/briarproject/api/event/LocalTransportsUpdatedEvent.java
similarity index 80%
rename from briar-api/src/net/sf/briar/api/event/LocalTransportsUpdatedEvent.java
rename to briar-api/src/org/briarproject/api/event/LocalTransportsUpdatedEvent.java
index a3be88940f..c8cc743e90 100644
--- a/briar-api/src/net/sf/briar/api/event/LocalTransportsUpdatedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/LocalTransportsUpdatedEvent.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
 /**
  * An event that is broadcast when the local transport properties are
diff --git a/briar-api/src/net/sf/briar/api/event/MessageAddedEvent.java b/briar-api/src/org/briarproject/api/event/MessageAddedEvent.java
similarity index 83%
rename from briar-api/src/net/sf/briar/api/event/MessageAddedEvent.java
rename to briar-api/src/org/briarproject/api/event/MessageAddedEvent.java
index ba7e54c1e0..333293f223 100644
--- a/briar-api/src/net/sf/briar/api/event/MessageAddedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/MessageAddedEvent.java
@@ -1,7 +1,7 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.messaging.Group;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.messaging.Group;
 
 /** An event that is broadcast when a message is added to the database. */
 public class MessageAddedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/MessageExpiredEvent.java b/briar-api/src/org/briarproject/api/event/MessageExpiredEvent.java
similarity index 84%
rename from briar-api/src/net/sf/briar/api/event/MessageExpiredEvent.java
rename to briar-api/src/org/briarproject/api/event/MessageExpiredEvent.java
index e7252d08c5..9b708a7c44 100644
--- a/briar-api/src/net/sf/briar/api/event/MessageExpiredEvent.java
+++ b/briar-api/src/org/briarproject/api/event/MessageExpiredEvent.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
 /**
  * An event that is broadcast when one or messages expire from the database,
diff --git a/briar-api/src/net/sf/briar/api/event/MessageRequestedEvent.java b/briar-api/src/org/briarproject/api/event/MessageRequestedEvent.java
similarity index 80%
rename from briar-api/src/net/sf/briar/api/event/MessageRequestedEvent.java
rename to briar-api/src/org/briarproject/api/event/MessageRequestedEvent.java
index 3aef09fc42..a3c023f2d5 100644
--- a/briar-api/src/net/sf/briar/api/event/MessageRequestedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/MessageRequestedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.ContactId;
+import org.briarproject.api.ContactId;
 
 /** An event that is broadcast when a message is requested by a contact. */
 public class MessageRequestedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/MessageToAckEvent.java b/briar-api/src/org/briarproject/api/event/MessageToAckEvent.java
similarity index 82%
rename from briar-api/src/net/sf/briar/api/event/MessageToAckEvent.java
rename to briar-api/src/org/briarproject/api/event/MessageToAckEvent.java
index b0edcb03e4..f59eabab8c 100644
--- a/briar-api/src/net/sf/briar/api/event/MessageToAckEvent.java
+++ b/briar-api/src/org/briarproject/api/event/MessageToAckEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.ContactId;
+import org.briarproject.api.ContactId;
 
 /**
  * An event that is broadcast when a message is received from or offered by a
diff --git a/briar-api/src/net/sf/briar/api/event/MessageToRequestEvent.java b/briar-api/src/org/briarproject/api/event/MessageToRequestEvent.java
similarity index 82%
rename from briar-api/src/net/sf/briar/api/event/MessageToRequestEvent.java
rename to briar-api/src/org/briarproject/api/event/MessageToRequestEvent.java
index da4cf6e5d1..11a6b69953 100644
--- a/briar-api/src/net/sf/briar/api/event/MessageToRequestEvent.java
+++ b/briar-api/src/org/briarproject/api/event/MessageToRequestEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.ContactId;
+import org.briarproject.api.ContactId;
 
 /**
  * An event that is broadcast when a message is offered by a contact and needs
diff --git a/briar-api/src/net/sf/briar/api/event/RemoteRetentionTimeUpdatedEvent.java b/briar-api/src/org/briarproject/api/event/RemoteRetentionTimeUpdatedEvent.java
similarity index 82%
rename from briar-api/src/net/sf/briar/api/event/RemoteRetentionTimeUpdatedEvent.java
rename to briar-api/src/org/briarproject/api/event/RemoteRetentionTimeUpdatedEvent.java
index 3fd53d51ea..2da4f893ce 100644
--- a/briar-api/src/net/sf/briar/api/event/RemoteRetentionTimeUpdatedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/RemoteRetentionTimeUpdatedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.ContactId;
+import org.briarproject.api.ContactId;
 
 /**
  * An event that is broadcast when the retention time of a contact's database
diff --git a/briar-api/src/net/sf/briar/api/event/RemoteSubscriptionsUpdatedEvent.java b/briar-api/src/org/briarproject/api/event/RemoteSubscriptionsUpdatedEvent.java
similarity index 81%
rename from briar-api/src/net/sf/briar/api/event/RemoteSubscriptionsUpdatedEvent.java
rename to briar-api/src/org/briarproject/api/event/RemoteSubscriptionsUpdatedEvent.java
index 945fd2829d..a56c8cb9ab 100644
--- a/briar-api/src/net/sf/briar/api/event/RemoteSubscriptionsUpdatedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/RemoteSubscriptionsUpdatedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.ContactId;
+import org.briarproject.api.ContactId;
 
 /**  An event that is broadcast when a contact's subscriptions are updated. */
 public class RemoteSubscriptionsUpdatedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/RemoteTransportsUpdatedEvent.java b/briar-api/src/org/briarproject/api/event/RemoteTransportsUpdatedEvent.java
similarity index 81%
rename from briar-api/src/net/sf/briar/api/event/RemoteTransportsUpdatedEvent.java
rename to briar-api/src/org/briarproject/api/event/RemoteTransportsUpdatedEvent.java
index 843686e1f3..7e0d834ed2 100644
--- a/briar-api/src/net/sf/briar/api/event/RemoteTransportsUpdatedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/RemoteTransportsUpdatedEvent.java
@@ -1,7 +1,7 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
 
 /**
  * An event that is broadcast when a contact's remote transport properties
diff --git a/briar-api/src/net/sf/briar/api/event/SubscriptionAddedEvent.java b/briar-api/src/org/briarproject/api/event/SubscriptionAddedEvent.java
similarity index 77%
rename from briar-api/src/net/sf/briar/api/event/SubscriptionAddedEvent.java
rename to briar-api/src/org/briarproject/api/event/SubscriptionAddedEvent.java
index 0ca97fdf71..c59e9cd3d6 100644
--- a/briar-api/src/net/sf/briar/api/event/SubscriptionAddedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/SubscriptionAddedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.messaging.Group;
+import org.briarproject.api.messaging.Group;
 
 /** An event that is broadcast when the user subscribes to a group. */
 public class SubscriptionAddedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/SubscriptionRemovedEvent.java b/briar-api/src/org/briarproject/api/event/SubscriptionRemovedEvent.java
similarity index 77%
rename from briar-api/src/net/sf/briar/api/event/SubscriptionRemovedEvent.java
rename to briar-api/src/org/briarproject/api/event/SubscriptionRemovedEvent.java
index a1afb7b3d7..8a3d0dabdf 100644
--- a/briar-api/src/net/sf/briar/api/event/SubscriptionRemovedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/SubscriptionRemovedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.messaging.Group;
+import org.briarproject.api.messaging.Group;
 
 /** An event that is broadcast when the user unsubscribes from a group. */
 public class SubscriptionRemovedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/TransportAddedEvent.java b/briar-api/src/org/briarproject/api/event/TransportAddedEvent.java
similarity index 85%
rename from briar-api/src/net/sf/briar/api/event/TransportAddedEvent.java
rename to briar-api/src/org/briarproject/api/event/TransportAddedEvent.java
index bd4d18d41f..7a1f599a6e 100644
--- a/briar-api/src/net/sf/briar/api/event/TransportAddedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/TransportAddedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.TransportId;
 
 /** An event that is broadcast when a transport is added. */
 public class TransportAddedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/event/TransportRemovedEvent.java b/briar-api/src/org/briarproject/api/event/TransportRemovedEvent.java
similarity index 80%
rename from briar-api/src/net/sf/briar/api/event/TransportRemovedEvent.java
rename to briar-api/src/org/briarproject/api/event/TransportRemovedEvent.java
index 4b16b8ccfa..a0162d595e 100644
--- a/briar-api/src/net/sf/briar/api/event/TransportRemovedEvent.java
+++ b/briar-api/src/org/briarproject/api/event/TransportRemovedEvent.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.event;
+package org.briarproject.api.event;
 
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.TransportId;
 
 /** An event that is broadcast when a transport is removed. */
 public class TransportRemovedEvent extends Event {
diff --git a/briar-api/src/net/sf/briar/api/invitation/InvitationConstants.java b/briar-api/src/org/briarproject/api/invitation/InvitationConstants.java
similarity index 87%
rename from briar-api/src/net/sf/briar/api/invitation/InvitationConstants.java
rename to briar-api/src/org/briarproject/api/invitation/InvitationConstants.java
index e5ecebf134..e858fe9c0b 100644
--- a/briar-api/src/net/sf/briar/api/invitation/InvitationConstants.java
+++ b/briar-api/src/org/briarproject/api/invitation/InvitationConstants.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.invitation;
+package org.briarproject.api.invitation;
 
 public interface InvitationConstants {
 
diff --git a/briar-api/src/net/sf/briar/api/invitation/InvitationListener.java b/briar-api/src/org/briarproject/api/invitation/InvitationListener.java
similarity index 97%
rename from briar-api/src/net/sf/briar/api/invitation/InvitationListener.java
rename to briar-api/src/org/briarproject/api/invitation/InvitationListener.java
index 29726eacfd..67af91ae43 100644
--- a/briar-api/src/net/sf/briar/api/invitation/InvitationListener.java
+++ b/briar-api/src/org/briarproject/api/invitation/InvitationListener.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.invitation;
+package org.briarproject.api.invitation;
 
 /**
  * An interface for receiving updates about the state of an
diff --git a/briar-api/src/net/sf/briar/api/invitation/InvitationState.java b/briar-api/src/org/briarproject/api/invitation/InvitationState.java
similarity index 97%
rename from briar-api/src/net/sf/briar/api/invitation/InvitationState.java
rename to briar-api/src/org/briarproject/api/invitation/InvitationState.java
index 0e03efe802..e99ac16d06 100644
--- a/briar-api/src/net/sf/briar/api/invitation/InvitationState.java
+++ b/briar-api/src/org/briarproject/api/invitation/InvitationState.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.invitation;
+package org.briarproject.api.invitation;
 
 public class InvitationState {
 
diff --git a/briar-api/src/net/sf/briar/api/invitation/InvitationTask.java b/briar-api/src/org/briarproject/api/invitation/InvitationTask.java
similarity index 94%
rename from briar-api/src/net/sf/briar/api/invitation/InvitationTask.java
rename to briar-api/src/org/briarproject/api/invitation/InvitationTask.java
index 534582d33f..d188de5a59 100644
--- a/briar-api/src/net/sf/briar/api/invitation/InvitationTask.java
+++ b/briar-api/src/org/briarproject/api/invitation/InvitationTask.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.invitation;
+package org.briarproject.api.invitation;
 
 /** A task for exchanging invitations with a remote peer. */
 public interface InvitationTask {
diff --git a/briar-api/src/net/sf/briar/api/invitation/InvitationTaskFactory.java b/briar-api/src/org/briarproject/api/invitation/InvitationTaskFactory.java
similarity index 77%
rename from briar-api/src/net/sf/briar/api/invitation/InvitationTaskFactory.java
rename to briar-api/src/org/briarproject/api/invitation/InvitationTaskFactory.java
index 7d6ccca93b..33fd35b647 100644
--- a/briar-api/src/net/sf/briar/api/invitation/InvitationTaskFactory.java
+++ b/briar-api/src/org/briarproject/api/invitation/InvitationTaskFactory.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.invitation;
+package org.briarproject.api.invitation;
 
-import net.sf.briar.api.AuthorId;
+import org.briarproject.api.AuthorId;
 
 /** Creates tasks for exchanging invitations with remote peers. */
 public interface InvitationTaskFactory {
diff --git a/briar-api/src/net/sf/briar/api/lifecycle/LifecycleManager.java b/briar-api/src/org/briarproject/api/lifecycle/LifecycleManager.java
similarity index 96%
rename from briar-api/src/net/sf/briar/api/lifecycle/LifecycleManager.java
rename to briar-api/src/org/briarproject/api/lifecycle/LifecycleManager.java
index 9d312c789c..f12e0f9627 100644
--- a/briar-api/src/net/sf/briar/api/lifecycle/LifecycleManager.java
+++ b/briar-api/src/org/briarproject/api/lifecycle/LifecycleManager.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.lifecycle;
+package org.briarproject.api.lifecycle;
 
 import java.util.concurrent.ExecutorService;
 
diff --git a/briar-api/src/net/sf/briar/api/lifecycle/Service.java b/briar-api/src/org/briarproject/api/lifecycle/Service.java
similarity index 84%
rename from briar-api/src/net/sf/briar/api/lifecycle/Service.java
rename to briar-api/src/org/briarproject/api/lifecycle/Service.java
index 8662207a9b..88bbb6b4e2 100644
--- a/briar-api/src/net/sf/briar/api/lifecycle/Service.java
+++ b/briar-api/src/org/briarproject/api/lifecycle/Service.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.lifecycle;
+package org.briarproject.api.lifecycle;
 
 public interface Service {
 
diff --git a/briar-api/src/net/sf/briar/api/lifecycle/ShutdownManager.java b/briar-api/src/org/briarproject/api/lifecycle/ShutdownManager.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/lifecycle/ShutdownManager.java
rename to briar-api/src/org/briarproject/api/lifecycle/ShutdownManager.java
index 8d8b0af405..27550c7e8a 100644
--- a/briar-api/src/net/sf/briar/api/lifecycle/ShutdownManager.java
+++ b/briar-api/src/org/briarproject/api/lifecycle/ShutdownManager.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.lifecycle;
+package org.briarproject.api.lifecycle;
 
 public interface ShutdownManager {
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/Ack.java b/briar-api/src/org/briarproject/api/messaging/Ack.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/messaging/Ack.java
rename to briar-api/src/org/briarproject/api/messaging/Ack.java
index 562ccb5fe9..485c17b816 100644
--- a/briar-api/src/net/sf/briar/api/messaging/Ack.java
+++ b/briar-api/src/org/briarproject/api/messaging/Ack.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/Group.java b/briar-api/src/org/briarproject/api/messaging/Group.java
similarity index 94%
rename from briar-api/src/net/sf/briar/api/messaging/Group.java
rename to briar-api/src/org/briarproject/api/messaging/Group.java
index a778b24dff..e4efec0c1c 100644
--- a/briar-api/src/net/sf/briar/api/messaging/Group.java
+++ b/briar-api/src/org/briarproject/api/messaging/Group.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 /** A group to which users may subscribe. */
 public class Group {
diff --git a/briar-api/src/net/sf/briar/api/messaging/GroupFactory.java b/briar-api/src/org/briarproject/api/messaging/GroupFactory.java
similarity index 85%
rename from briar-api/src/net/sf/briar/api/messaging/GroupFactory.java
rename to briar-api/src/org/briarproject/api/messaging/GroupFactory.java
index a7aea03576..f1ec1183a9 100644
--- a/briar-api/src/net/sf/briar/api/messaging/GroupFactory.java
+++ b/briar-api/src/org/briarproject/api/messaging/GroupFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 public interface GroupFactory {
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/GroupId.java b/briar-api/src/org/briarproject/api/messaging/GroupId.java
similarity index 81%
rename from briar-api/src/net/sf/briar/api/messaging/GroupId.java
rename to briar-api/src/org/briarproject/api/messaging/GroupId.java
index 428726d7e0..d34ccebcbd 100644
--- a/briar-api/src/net/sf/briar/api/messaging/GroupId.java
+++ b/briar-api/src/org/briarproject/api/messaging/GroupId.java
@@ -1,8 +1,8 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.util.Arrays;
 
-import net.sf.briar.api.UniqueId;
+import org.briarproject.api.UniqueId;
 
 /**
  * Type-safe wrapper for a byte array that uniquely identifies a {@link Group}.
diff --git a/briar-api/src/net/sf/briar/api/messaging/GroupStatus.java b/briar-api/src/org/briarproject/api/messaging/GroupStatus.java
similarity index 91%
rename from briar-api/src/net/sf/briar/api/messaging/GroupStatus.java
rename to briar-api/src/org/briarproject/api/messaging/GroupStatus.java
index 35074ed36f..796dcdddca 100644
--- a/briar-api/src/net/sf/briar/api/messaging/GroupStatus.java
+++ b/briar-api/src/org/briarproject/api/messaging/GroupStatus.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 public class GroupStatus {
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/Message.java b/briar-api/src/org/briarproject/api/messaging/Message.java
similarity index 84%
rename from briar-api/src/net/sf/briar/api/messaging/Message.java
rename to briar-api/src/org/briarproject/api/messaging/Message.java
index b589ce2784..608be41239 100644
--- a/briar-api/src/net/sf/briar/api/messaging/Message.java
+++ b/briar-api/src/org/briarproject/api/messaging/Message.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
-import net.sf.briar.api.Author;
+import org.briarproject.api.Author;
 
 public interface Message {
 
@@ -20,7 +20,7 @@ public interface Message {
 	Group getGroup();
 
 	/**
-	 * Returns the message's {@link net.sf.briar.api.Author Author}, or null
+	 * Returns the message's {@link org.briarproject.api.Author Author}, or null
 	 * if this is an anonymous message.
 	 */
 	Author getAuthor();
diff --git a/briar-api/src/net/sf/briar/api/messaging/MessageFactory.java b/briar-api/src/org/briarproject/api/messaging/MessageFactory.java
similarity index 79%
rename from briar-api/src/net/sf/briar/api/messaging/MessageFactory.java
rename to briar-api/src/org/briarproject/api/messaging/MessageFactory.java
index 0c798ebb71..7e06f0d0b7 100644
--- a/briar-api/src/net/sf/briar/api/messaging/MessageFactory.java
+++ b/briar-api/src/org/briarproject/api/messaging/MessageFactory.java
@@ -1,10 +1,10 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.crypto.PrivateKey;
+import org.briarproject.api.Author;
+import org.briarproject.api.crypto.PrivateKey;
 
 public interface MessageFactory {
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/MessageId.java b/briar-api/src/org/briarproject/api/messaging/MessageId.java
similarity index 82%
rename from briar-api/src/net/sf/briar/api/messaging/MessageId.java
rename to briar-api/src/org/briarproject/api/messaging/MessageId.java
index 35ae7e8f21..1ba329aa2b 100644
--- a/briar-api/src/net/sf/briar/api/messaging/MessageId.java
+++ b/briar-api/src/org/briarproject/api/messaging/MessageId.java
@@ -1,8 +1,8 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.util.Arrays;
 
-import net.sf.briar.api.UniqueId;
+import org.briarproject.api.UniqueId;
 
 /**
  * Type-safe wrapper for a byte array that uniquely identifies a
diff --git a/briar-api/src/net/sf/briar/api/messaging/MessageVerifier.java b/briar-api/src/org/briarproject/api/messaging/MessageVerifier.java
similarity index 85%
rename from briar-api/src/net/sf/briar/api/messaging/MessageVerifier.java
rename to briar-api/src/org/briarproject/api/messaging/MessageVerifier.java
index 3f666631a1..6ac3d277bd 100644
--- a/briar-api/src/net/sf/briar/api/messaging/MessageVerifier.java
+++ b/briar-api/src/org/briarproject/api/messaging/MessageVerifier.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.security.GeneralSecurityException;
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java b/briar-api/src/org/briarproject/api/messaging/MessagingConstants.java
similarity index 92%
rename from briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java
rename to briar-api/src/org/briarproject/api/messaging/MessagingConstants.java
index 011ef86edd..a30881eca6 100644
--- a/briar-api/src/net/sf/briar/api/messaging/MessagingConstants.java
+++ b/briar-api/src/org/briarproject/api/messaging/MessagingConstants.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
-import static net.sf.briar.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
 
 public interface MessagingConstants {
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/Offer.java b/briar-api/src/org/briarproject/api/messaging/Offer.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/messaging/Offer.java
rename to briar-api/src/org/briarproject/api/messaging/Offer.java
index 9f107c73e4..8ab4a0dc17 100644
--- a/briar-api/src/net/sf/briar/api/messaging/Offer.java
+++ b/briar-api/src/org/briarproject/api/messaging/Offer.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/PacketReader.java b/briar-api/src/org/briarproject/api/messaging/PacketReader.java
similarity index 96%
rename from briar-api/src/net/sf/briar/api/messaging/PacketReader.java
rename to briar-api/src/org/briarproject/api/messaging/PacketReader.java
index 1f13497c98..d390bf2498 100644
--- a/briar-api/src/net/sf/briar/api/messaging/PacketReader.java
+++ b/briar-api/src/org/briarproject/api/messaging/PacketReader.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.io.IOException;
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/PacketReaderFactory.java b/briar-api/src/org/briarproject/api/messaging/PacketReaderFactory.java
similarity index 75%
rename from briar-api/src/net/sf/briar/api/messaging/PacketReaderFactory.java
rename to briar-api/src/org/briarproject/api/messaging/PacketReaderFactory.java
index 40aa880fa3..3bede6db2a 100644
--- a/briar-api/src/net/sf/briar/api/messaging/PacketReaderFactory.java
+++ b/briar-api/src/org/briarproject/api/messaging/PacketReaderFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.io.InputStream;
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/PacketWriter.java b/briar-api/src/org/briarproject/api/messaging/PacketWriter.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/messaging/PacketWriter.java
rename to briar-api/src/org/briarproject/api/messaging/PacketWriter.java
index f6a77762c0..d5d787a195 100644
--- a/briar-api/src/net/sf/briar/api/messaging/PacketWriter.java
+++ b/briar-api/src/org/briarproject/api/messaging/PacketWriter.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.io.IOException;
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/PacketWriterFactory.java b/briar-api/src/org/briarproject/api/messaging/PacketWriterFactory.java
similarity index 77%
rename from briar-api/src/net/sf/briar/api/messaging/PacketWriterFactory.java
rename to briar-api/src/org/briarproject/api/messaging/PacketWriterFactory.java
index 371fe7cb07..8d75afcb79 100644
--- a/briar-api/src/net/sf/briar/api/messaging/PacketWriterFactory.java
+++ b/briar-api/src/org/briarproject/api/messaging/PacketWriterFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.io.OutputStream;
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/Request.java b/briar-api/src/org/briarproject/api/messaging/Request.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/messaging/Request.java
rename to briar-api/src/org/briarproject/api/messaging/Request.java
index ec22cb8e5f..eae1e39283 100644
--- a/briar-api/src/net/sf/briar/api/messaging/Request.java
+++ b/briar-api/src/org/briarproject/api/messaging/Request.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/RetentionAck.java b/briar-api/src/org/briarproject/api/messaging/RetentionAck.java
similarity index 88%
rename from briar-api/src/net/sf/briar/api/messaging/RetentionAck.java
rename to briar-api/src/org/briarproject/api/messaging/RetentionAck.java
index faae81bf6d..9a538e65a7 100644
--- a/briar-api/src/net/sf/briar/api/messaging/RetentionAck.java
+++ b/briar-api/src/org/briarproject/api/messaging/RetentionAck.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 /** A packet acknowledging a (@link RetentionUpdate} */
 public class RetentionAck {
diff --git a/briar-api/src/net/sf/briar/api/messaging/RetentionUpdate.java b/briar-api/src/org/briarproject/api/messaging/RetentionUpdate.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/messaging/RetentionUpdate.java
rename to briar-api/src/org/briarproject/api/messaging/RetentionUpdate.java
index 5815b0650c..4e8a594980 100644
--- a/briar-api/src/net/sf/briar/api/messaging/RetentionUpdate.java
+++ b/briar-api/src/org/briarproject/api/messaging/RetentionUpdate.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 /**
  * A packet updating the recipient's view of the retention time of the sender's
diff --git a/briar-api/src/net/sf/briar/api/messaging/SubscriptionAck.java b/briar-api/src/org/briarproject/api/messaging/SubscriptionAck.java
similarity index 88%
rename from briar-api/src/net/sf/briar/api/messaging/SubscriptionAck.java
rename to briar-api/src/org/briarproject/api/messaging/SubscriptionAck.java
index 3a9e79f2c4..c304853858 100644
--- a/briar-api/src/net/sf/briar/api/messaging/SubscriptionAck.java
+++ b/briar-api/src/org/briarproject/api/messaging/SubscriptionAck.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 /** A packet acknowledging a {@link SubscriptionUpdate}. */
 public class SubscriptionAck {
diff --git a/briar-api/src/net/sf/briar/api/messaging/SubscriptionUpdate.java b/briar-api/src/org/briarproject/api/messaging/SubscriptionUpdate.java
similarity index 93%
rename from briar-api/src/net/sf/briar/api/messaging/SubscriptionUpdate.java
rename to briar-api/src/org/briarproject/api/messaging/SubscriptionUpdate.java
index 48c3cda3c9..76f95ce097 100644
--- a/briar-api/src/net/sf/briar/api/messaging/SubscriptionUpdate.java
+++ b/briar-api/src/org/briarproject/api/messaging/SubscriptionUpdate.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/net/sf/briar/api/messaging/TransportAck.java b/briar-api/src/org/briarproject/api/messaging/TransportAck.java
similarity index 85%
rename from briar-api/src/net/sf/briar/api/messaging/TransportAck.java
rename to briar-api/src/org/briarproject/api/messaging/TransportAck.java
index e9b0e19a42..ce6ccd4fb0 100644
--- a/briar-api/src/net/sf/briar/api/messaging/TransportAck.java
+++ b/briar-api/src/org/briarproject/api/messaging/TransportAck.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.TransportId;
 
 /** A packet acknowledging a {@link TransportUpdate}. */
 public class TransportAck {
diff --git a/briar-api/src/net/sf/briar/api/messaging/TransportUpdate.java b/briar-api/src/org/briarproject/api/messaging/TransportUpdate.java
similarity index 84%
rename from briar-api/src/net/sf/briar/api/messaging/TransportUpdate.java
rename to briar-api/src/org/briarproject/api/messaging/TransportUpdate.java
index d192b200ab..78f2b5b1b7 100644
--- a/briar-api/src/net/sf/briar/api/messaging/TransportUpdate.java
+++ b/briar-api/src/org/briarproject/api/messaging/TransportUpdate.java
@@ -1,7 +1,7 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
 
 /**
  * A packet updating the recipient's view of the sender's transport properties.
diff --git a/briar-api/src/net/sf/briar/api/messaging/Types.java b/briar-api/src/org/briarproject/api/messaging/Types.java
similarity index 89%
rename from briar-api/src/net/sf/briar/api/messaging/Types.java
rename to briar-api/src/org/briarproject/api/messaging/Types.java
index a141c071c9..83db6e6c9b 100644
--- a/briar-api/src/net/sf/briar/api/messaging/Types.java
+++ b/briar-api/src/org/briarproject/api/messaging/Types.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
 /** Struct identifiers for encoding and decoding protocol objects. */
 public interface Types {
diff --git a/briar-api/src/net/sf/briar/api/messaging/UnverifiedMessage.java b/briar-api/src/org/briarproject/api/messaging/UnverifiedMessage.java
similarity index 93%
rename from briar-api/src/net/sf/briar/api/messaging/UnverifiedMessage.java
rename to briar-api/src/org/briarproject/api/messaging/UnverifiedMessage.java
index 880d3b3d1a..1438e288c6 100644
--- a/briar-api/src/net/sf/briar/api/messaging/UnverifiedMessage.java
+++ b/briar-api/src/org/briarproject/api/messaging/UnverifiedMessage.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.messaging;
+package org.briarproject.api.messaging;
 
-import net.sf.briar.api.Author;
+import org.briarproject.api.Author;
 
 /** A {@link Message} that has not yet had its signatures (if any) verified. */
 public class UnverifiedMessage {
@@ -45,7 +45,7 @@ public class UnverifiedMessage {
 	}
 
 	/**
-	 * Returns the message's {@link net.sf.briar.api.Author Author}, or null
+	 * Returns the message's {@link org.briarproject.api.Author Author}, or null
 	 * if this is an anonymous message.
 	 */
 	public Author getAuthor() {
diff --git a/briar-api/src/org/briarproject/api/messaging/duplex/DuplexConnectionFactory.java b/briar-api/src/org/briarproject/api/messaging/duplex/DuplexConnectionFactory.java
new file mode 100644
index 0000000000..b0c8e313ea
--- /dev/null
+++ b/briar-api/src/org/briarproject/api/messaging/duplex/DuplexConnectionFactory.java
@@ -0,0 +1,15 @@
+package org.briarproject.api.messaging.duplex;
+
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.transport.ConnectionContext;
+
+public interface DuplexConnectionFactory {
+
+	void createIncomingConnection(ConnectionContext ctx,
+			DuplexTransportConnection d);
+
+	void createOutgoingConnection(ContactId c, TransportId t,
+			DuplexTransportConnection d);
+}
diff --git a/briar-api/src/org/briarproject/api/messaging/simplex/SimplexConnectionFactory.java b/briar-api/src/org/briarproject/api/messaging/simplex/SimplexConnectionFactory.java
new file mode 100644
index 0000000000..8ecd4978bd
--- /dev/null
+++ b/briar-api/src/org/briarproject/api/messaging/simplex/SimplexConnectionFactory.java
@@ -0,0 +1,16 @@
+package org.briarproject.api.messaging.simplex;
+
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.simplex.SimplexTransportReader;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.transport.ConnectionContext;
+
+public interface SimplexConnectionFactory {
+
+	void createIncomingConnection(ConnectionContext ctx,
+			SimplexTransportReader r);
+
+	void createOutgoingConnection(ContactId c, TransportId t,
+			SimplexTransportWriter w);
+}
diff --git a/briar-api/src/net/sf/briar/api/plugins/Plugin.java b/briar-api/src/org/briarproject/api/plugins/Plugin.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/plugins/Plugin.java
rename to briar-api/src/org/briarproject/api/plugins/Plugin.java
index 123dfd0ad1..4901a754f5 100644
--- a/briar-api/src/net/sf/briar/api/plugins/Plugin.java
+++ b/briar-api/src/org/briarproject/api/plugins/Plugin.java
@@ -1,10 +1,10 @@
-package net.sf.briar.api.plugins;
+package org.briarproject.api.plugins;
 
 import java.io.IOException;
 import java.util.Collection;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
 
 public interface Plugin {
 
diff --git a/briar-api/src/net/sf/briar/api/plugins/PluginCallback.java b/briar-api/src/org/briarproject/api/plugins/PluginCallback.java
similarity index 89%
rename from briar-api/src/net/sf/briar/api/plugins/PluginCallback.java
rename to briar-api/src/org/briarproject/api/plugins/PluginCallback.java
index 895d4a8b25..e65408c172 100644
--- a/briar-api/src/net/sf/briar/api/plugins/PluginCallback.java
+++ b/briar-api/src/org/briarproject/api/plugins/PluginCallback.java
@@ -1,10 +1,10 @@
-package net.sf.briar.api.plugins;
+package org.briarproject.api.plugins;
 
 import java.util.Map;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportProperties;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportProperties;
 
 /**
  * An interface through which a transport plugin interacts with the rest of
diff --git a/briar-api/src/net/sf/briar/api/plugins/PluginExecutor.java b/briar-api/src/org/briarproject/api/plugins/PluginExecutor.java
similarity index 93%
rename from briar-api/src/net/sf/briar/api/plugins/PluginExecutor.java
rename to briar-api/src/org/briarproject/api/plugins/PluginExecutor.java
index f6ba7edb4f..fb0892ebf3 100644
--- a/briar-api/src/net/sf/briar/api/plugins/PluginExecutor.java
+++ b/briar-api/src/org/briarproject/api/plugins/PluginExecutor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.plugins;
+package org.briarproject.api.plugins;
 
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
diff --git a/briar-api/src/net/sf/briar/api/plugins/PluginManager.java b/briar-api/src/org/briarproject/api/plugins/PluginManager.java
similarity index 71%
rename from briar-api/src/net/sf/briar/api/plugins/PluginManager.java
rename to briar-api/src/org/briarproject/api/plugins/PluginManager.java
index 871867318a..330de8669b 100644
--- a/briar-api/src/net/sf/briar/api/plugins/PluginManager.java
+++ b/briar-api/src/org/briarproject/api/plugins/PluginManager.java
@@ -1,9 +1,9 @@
-package net.sf.briar.api.plugins;
+package org.briarproject.api.plugins;
 
 import java.util.Collection;
 
-import net.sf.briar.api.lifecycle.Service;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.lifecycle.Service;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
 
 /**
  * Responsible for starting transport plugins at startup, stopping them at
diff --git a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPlugin.java b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPlugin.java
similarity index 80%
rename from briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPlugin.java
rename to briar-api/src/org/briarproject/api/plugins/duplex/DuplexPlugin.java
index 4120e25c41..8712d7b792 100644
--- a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPlugin.java
+++ b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPlugin.java
@@ -1,8 +1,8 @@
-package net.sf.briar.api.plugins.duplex;
+package org.briarproject.api.plugins.duplex;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.Plugin;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.plugins.Plugin;
 
 /** An interface for transport plugins that support duplex communication. */
 public interface DuplexPlugin extends Plugin {
diff --git a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPluginCallback.java b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginCallback.java
similarity index 68%
rename from briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPluginCallback.java
rename to briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginCallback.java
index 190f67170f..494f746a17 100644
--- a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPluginCallback.java
+++ b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginCallback.java
@@ -1,7 +1,7 @@
-package net.sf.briar.api.plugins.duplex;
+package org.briarproject.api.plugins.duplex;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.plugins.PluginCallback;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.plugins.PluginCallback;
 
 /**
  * An interface for handling connections created by a duplex transport plugin.
diff --git a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPluginConfig.java b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginConfig.java
similarity index 72%
rename from briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPluginConfig.java
rename to briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginConfig.java
index ac064815b9..fc17637196 100644
--- a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPluginConfig.java
+++ b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginConfig.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.plugins.duplex;
+package org.briarproject.api.plugins.duplex;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPluginFactory.java b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginFactory.java
similarity index 59%
rename from briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPluginFactory.java
rename to briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginFactory.java
index 2fb2accf0e..7e42b5b462 100644
--- a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexPluginFactory.java
+++ b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexPluginFactory.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.plugins.duplex;
+package org.briarproject.api.plugins.duplex;
 
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.TransportId;
 
 public interface DuplexPluginFactory {
 
diff --git a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexTransportConnection.java b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexTransportConnection.java
similarity index 96%
rename from briar-api/src/net/sf/briar/api/plugins/duplex/DuplexTransportConnection.java
rename to briar-api/src/org/briarproject/api/plugins/duplex/DuplexTransportConnection.java
index 5d11579538..2acab4cf1a 100644
--- a/briar-api/src/net/sf/briar/api/plugins/duplex/DuplexTransportConnection.java
+++ b/briar-api/src/org/briarproject/api/plugins/duplex/DuplexTransportConnection.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.plugins.duplex;
+package org.briarproject.api.plugins.duplex;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPlugin.java b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPlugin.java
similarity index 82%
rename from briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPlugin.java
rename to briar-api/src/org/briarproject/api/plugins/simplex/SimplexPlugin.java
index 5e1fe8b0ff..c6334becc9 100644
--- a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPlugin.java
+++ b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPlugin.java
@@ -1,7 +1,7 @@
-package net.sf.briar.api.plugins.simplex;
+package org.briarproject.api.plugins.simplex;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.plugins.Plugin;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.plugins.Plugin;
 
 /** An interface for transport plugins that support simplex communication. */
 public interface SimplexPlugin extends Plugin {
diff --git a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPluginCallback.java b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginCallback.java
similarity index 66%
rename from briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPluginCallback.java
rename to briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginCallback.java
index 2e808f7eae..d4cf816118 100644
--- a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPluginCallback.java
+++ b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginCallback.java
@@ -1,7 +1,7 @@
-package net.sf.briar.api.plugins.simplex;
+package org.briarproject.api.plugins.simplex;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.plugins.PluginCallback;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.plugins.PluginCallback;
 
 /**
  * An interface for handling readers and writers created by a simplex transport
diff --git a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPluginConfig.java b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginConfig.java
similarity index 72%
rename from briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPluginConfig.java
rename to briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginConfig.java
index 231d39bc3d..59f4f6a079 100644
--- a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPluginConfig.java
+++ b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginConfig.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.plugins.simplex;
+package org.briarproject.api.plugins.simplex;
 
 import java.util.Collection;
 
diff --git a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPluginFactory.java b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginFactory.java
similarity index 59%
rename from briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPluginFactory.java
rename to briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginFactory.java
index 59f6061182..b0c09575a6 100644
--- a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexPluginFactory.java
+++ b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexPluginFactory.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.plugins.simplex;
+package org.briarproject.api.plugins.simplex;
 
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.TransportId;
 
 public interface SimplexPluginFactory {
 
diff --git a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexTransportReader.java b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexTransportReader.java
similarity index 94%
rename from briar-api/src/net/sf/briar/api/plugins/simplex/SimplexTransportReader.java
rename to briar-api/src/org/briarproject/api/plugins/simplex/SimplexTransportReader.java
index 00850b12e5..387a7a03bf 100644
--- a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexTransportReader.java
+++ b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexTransportReader.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.plugins.simplex;
+package org.briarproject.api.plugins.simplex;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexTransportWriter.java b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexTransportWriter.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/plugins/simplex/SimplexTransportWriter.java
rename to briar-api/src/org/briarproject/api/plugins/simplex/SimplexTransportWriter.java
index f21aaf032b..76fb20d3f2 100644
--- a/briar-api/src/net/sf/briar/api/plugins/simplex/SimplexTransportWriter.java
+++ b/briar-api/src/org/briarproject/api/plugins/simplex/SimplexTransportWriter.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.plugins.simplex;
+package org.briarproject.api.plugins.simplex;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/briar-api/src/net/sf/briar/api/reliability/ReadHandler.java b/briar-api/src/org/briarproject/api/reliability/ReadHandler.java
similarity index 72%
rename from briar-api/src/net/sf/briar/api/reliability/ReadHandler.java
rename to briar-api/src/org/briarproject/api/reliability/ReadHandler.java
index 4d91e5877c..44b7b3344c 100644
--- a/briar-api/src/net/sf/briar/api/reliability/ReadHandler.java
+++ b/briar-api/src/org/briarproject/api/reliability/ReadHandler.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.reliability;
+package org.briarproject.api.reliability;
 
 import java.io.IOException;
 
diff --git a/briar-api/src/net/sf/briar/api/reliability/ReliabilityExecutor.java b/briar-api/src/org/briarproject/api/reliability/ReliabilityExecutor.java
similarity index 92%
rename from briar-api/src/net/sf/briar/api/reliability/ReliabilityExecutor.java
rename to briar-api/src/org/briarproject/api/reliability/ReliabilityExecutor.java
index ad24a5e1be..dbb2ddcd56 100644
--- a/briar-api/src/net/sf/briar/api/reliability/ReliabilityExecutor.java
+++ b/briar-api/src/org/briarproject/api/reliability/ReliabilityExecutor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.reliability;
+package org.briarproject.api.reliability;
 
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
diff --git a/briar-api/src/net/sf/briar/api/reliability/ReliabilityLayer.java b/briar-api/src/org/briarproject/api/reliability/ReliabilityLayer.java
similarity index 96%
rename from briar-api/src/net/sf/briar/api/reliability/ReliabilityLayer.java
rename to briar-api/src/org/briarproject/api/reliability/ReliabilityLayer.java
index 31a24ddcde..13d41f646d 100644
--- a/briar-api/src/net/sf/briar/api/reliability/ReliabilityLayer.java
+++ b/briar-api/src/org/briarproject/api/reliability/ReliabilityLayer.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.reliability;
+package org.briarproject.api.reliability;
 
 import java.io.InputStream;
 import java.io.OutputStream;
diff --git a/briar-api/src/net/sf/briar/api/reliability/ReliabilityLayerFactory.java b/briar-api/src/org/briarproject/api/reliability/ReliabilityLayerFactory.java
similarity index 81%
rename from briar-api/src/net/sf/briar/api/reliability/ReliabilityLayerFactory.java
rename to briar-api/src/org/briarproject/api/reliability/ReliabilityLayerFactory.java
index 848e3e6b08..f98e87f13a 100644
--- a/briar-api/src/net/sf/briar/api/reliability/ReliabilityLayerFactory.java
+++ b/briar-api/src/org/briarproject/api/reliability/ReliabilityLayerFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.reliability;
+package org.briarproject.api.reliability;
 
 public interface ReliabilityLayerFactory {
 
diff --git a/briar-api/src/net/sf/briar/api/reliability/WriteHandler.java b/briar-api/src/org/briarproject/api/reliability/WriteHandler.java
similarity index 72%
rename from briar-api/src/net/sf/briar/api/reliability/WriteHandler.java
rename to briar-api/src/org/briarproject/api/reliability/WriteHandler.java
index ef36266ea9..22bdbe0d99 100644
--- a/briar-api/src/net/sf/briar/api/reliability/WriteHandler.java
+++ b/briar-api/src/org/briarproject/api/reliability/WriteHandler.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.reliability;
+package org.briarproject.api.reliability;
 
 import java.io.IOException;
 
diff --git a/briar-api/src/net/sf/briar/api/serial/Consumer.java b/briar-api/src/org/briarproject/api/serial/Consumer.java
similarity index 81%
rename from briar-api/src/net/sf/briar/api/serial/Consumer.java
rename to briar-api/src/org/briarproject/api/serial/Consumer.java
index 4d08ceb382..5f555a5c23 100644
--- a/briar-api/src/net/sf/briar/api/serial/Consumer.java
+++ b/briar-api/src/org/briarproject/api/serial/Consumer.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
 import java.io.IOException;
 
diff --git a/briar-api/src/net/sf/briar/api/serial/CopyingConsumer.java b/briar-api/src/org/briarproject/api/serial/CopyingConsumer.java
similarity index 92%
rename from briar-api/src/net/sf/briar/api/serial/CopyingConsumer.java
rename to briar-api/src/org/briarproject/api/serial/CopyingConsumer.java
index 3274c6a994..b06e0a8437 100644
--- a/briar-api/src/net/sf/briar/api/serial/CopyingConsumer.java
+++ b/briar-api/src/org/briarproject/api/serial/CopyingConsumer.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/briar-api/src/net/sf/briar/api/serial/CountingConsumer.java b/briar-api/src/org/briarproject/api/serial/CountingConsumer.java
similarity index 88%
rename from briar-api/src/net/sf/briar/api/serial/CountingConsumer.java
rename to briar-api/src/org/briarproject/api/serial/CountingConsumer.java
index 14509e0946..8c41899c61 100644
--- a/briar-api/src/net/sf/briar/api/serial/CountingConsumer.java
+++ b/briar-api/src/org/briarproject/api/serial/CountingConsumer.java
@@ -1,8 +1,8 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
 import java.io.IOException;
 
-import net.sf.briar.api.FormatException;
+import org.briarproject.api.FormatException;
 
 /**
  * A consumer that counts the number of bytes consumed and throws a
diff --git a/briar-api/src/net/sf/briar/api/serial/DigestingConsumer.java b/briar-api/src/org/briarproject/api/serial/DigestingConsumer.java
similarity index 82%
rename from briar-api/src/net/sf/briar/api/serial/DigestingConsumer.java
rename to briar-api/src/org/briarproject/api/serial/DigestingConsumer.java
index 843cf7185e..1d9420b54e 100644
--- a/briar-api/src/net/sf/briar/api/serial/DigestingConsumer.java
+++ b/briar-api/src/org/briarproject/api/serial/DigestingConsumer.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
-import net.sf.briar.api.crypto.MessageDigest;
+import org.briarproject.api.crypto.MessageDigest;
 
 /** A consumer that passes its input through a message digest. */
 public class DigestingConsumer implements Consumer {
diff --git a/briar-api/src/net/sf/briar/api/serial/Reader.java b/briar-api/src/org/briarproject/api/serial/Reader.java
similarity index 98%
rename from briar-api/src/net/sf/briar/api/serial/Reader.java
rename to briar-api/src/org/briarproject/api/serial/Reader.java
index fa55469fb1..f1591f3548 100644
--- a/briar-api/src/net/sf/briar/api/serial/Reader.java
+++ b/briar-api/src/org/briarproject/api/serial/Reader.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
 import java.io.IOException;
 
diff --git a/briar-api/src/net/sf/briar/api/serial/ReaderFactory.java b/briar-api/src/org/briarproject/api/serial/ReaderFactory.java
similarity index 73%
rename from briar-api/src/net/sf/briar/api/serial/ReaderFactory.java
rename to briar-api/src/org/briarproject/api/serial/ReaderFactory.java
index 6457630897..5b48bd43fc 100644
--- a/briar-api/src/net/sf/briar/api/serial/ReaderFactory.java
+++ b/briar-api/src/org/briarproject/api/serial/ReaderFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
 import java.io.InputStream;
 
diff --git a/briar-api/src/net/sf/briar/api/serial/SerialComponent.java b/briar-api/src/org/briarproject/api/serial/SerialComponent.java
similarity index 86%
rename from briar-api/src/net/sf/briar/api/serial/SerialComponent.java
rename to briar-api/src/org/briarproject/api/serial/SerialComponent.java
index 0666a88db6..be3d619684 100644
--- a/briar-api/src/net/sf/briar/api/serial/SerialComponent.java
+++ b/briar-api/src/org/briarproject/api/serial/SerialComponent.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
 public interface SerialComponent {
 
diff --git a/briar-api/src/net/sf/briar/api/serial/SigningConsumer.java b/briar-api/src/org/briarproject/api/serial/SigningConsumer.java
similarity index 81%
rename from briar-api/src/net/sf/briar/api/serial/SigningConsumer.java
rename to briar-api/src/org/briarproject/api/serial/SigningConsumer.java
index 871d009263..ac6a286208 100644
--- a/briar-api/src/net/sf/briar/api/serial/SigningConsumer.java
+++ b/briar-api/src/org/briarproject/api/serial/SigningConsumer.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
-import net.sf.briar.api.crypto.Signature;
+import org.briarproject.api.crypto.Signature;
 
 /** A consumer that passes its input through a signature. */
 public class SigningConsumer implements Consumer {
diff --git a/briar-api/src/net/sf/briar/api/serial/StructReader.java b/briar-api/src/org/briarproject/api/serial/StructReader.java
similarity index 75%
rename from briar-api/src/net/sf/briar/api/serial/StructReader.java
rename to briar-api/src/org/briarproject/api/serial/StructReader.java
index bf512caacf..14e1474664 100644
--- a/briar-api/src/net/sf/briar/api/serial/StructReader.java
+++ b/briar-api/src/org/briarproject/api/serial/StructReader.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
 import java.io.IOException;
 
diff --git a/briar-api/src/net/sf/briar/api/serial/Writer.java b/briar-api/src/org/briarproject/api/serial/Writer.java
similarity index 96%
rename from briar-api/src/net/sf/briar/api/serial/Writer.java
rename to briar-api/src/org/briarproject/api/serial/Writer.java
index ad2d338a43..ea972e1405 100644
--- a/briar-api/src/net/sf/briar/api/serial/Writer.java
+++ b/briar-api/src/org/briarproject/api/serial/Writer.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
 import java.io.IOException;
 import java.util.Collection;
diff --git a/briar-api/src/net/sf/briar/api/serial/WriterFactory.java b/briar-api/src/org/briarproject/api/serial/WriterFactory.java
similarity index 74%
rename from briar-api/src/net/sf/briar/api/serial/WriterFactory.java
rename to briar-api/src/org/briarproject/api/serial/WriterFactory.java
index 39fd31fe09..121de0eb0e 100644
--- a/briar-api/src/net/sf/briar/api/serial/WriterFactory.java
+++ b/briar-api/src/org/briarproject/api/serial/WriterFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.serial;
+package org.briarproject.api.serial;
 
 import java.io.OutputStream;
 
diff --git a/briar-api/src/net/sf/briar/api/system/Clock.java b/briar-api/src/org/briarproject/api/system/Clock.java
similarity index 89%
rename from briar-api/src/net/sf/briar/api/system/Clock.java
rename to briar-api/src/org/briarproject/api/system/Clock.java
index 805d017c66..1fcb250d6b 100644
--- a/briar-api/src/net/sf/briar/api/system/Clock.java
+++ b/briar-api/src/org/briarproject/api/system/Clock.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.system;
+package org.briarproject.api.system;
 
 /**
  * An interface for time-related system functions that allows them to be
diff --git a/briar-api/src/net/sf/briar/api/system/FileUtils.java b/briar-api/src/org/briarproject/api/system/FileUtils.java
similarity index 77%
rename from briar-api/src/net/sf/briar/api/system/FileUtils.java
rename to briar-api/src/org/briarproject/api/system/FileUtils.java
index 63bd408eeb..306a7f80ac 100644
--- a/briar-api/src/net/sf/briar/api/system/FileUtils.java
+++ b/briar-api/src/org/briarproject/api/system/FileUtils.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.system;
+package org.briarproject.api.system;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/briar-api/src/net/sf/briar/api/system/SystemClock.java b/briar-api/src/org/briarproject/api/system/SystemClock.java
similarity index 87%
rename from briar-api/src/net/sf/briar/api/system/SystemClock.java
rename to briar-api/src/org/briarproject/api/system/SystemClock.java
index 94100b342a..bf8c148724 100644
--- a/briar-api/src/net/sf/briar/api/system/SystemClock.java
+++ b/briar-api/src/org/briarproject/api/system/SystemClock.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.system;
+package org.briarproject.api.system;
 
 /** Default clock implementation. */
 public class SystemClock implements Clock {
diff --git a/briar-api/src/net/sf/briar/api/system/SystemTimer.java b/briar-api/src/org/briarproject/api/system/SystemTimer.java
similarity index 94%
rename from briar-api/src/net/sf/briar/api/system/SystemTimer.java
rename to briar-api/src/org/briarproject/api/system/SystemTimer.java
index 6a068698d0..bbdf596741 100644
--- a/briar-api/src/net/sf/briar/api/system/SystemTimer.java
+++ b/briar-api/src/org/briarproject/api/system/SystemTimer.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.system;
+package org.briarproject.api.system;
 
 import java.util.TimerTask;
 
diff --git a/briar-api/src/net/sf/briar/api/system/Timer.java b/briar-api/src/org/briarproject/api/system/Timer.java
similarity index 94%
rename from briar-api/src/net/sf/briar/api/system/Timer.java
rename to briar-api/src/org/briarproject/api/system/Timer.java
index d5ad5620b7..9eb08e88b1 100644
--- a/briar-api/src/net/sf/briar/api/system/Timer.java
+++ b/briar-api/src/org/briarproject/api/system/Timer.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.system;
+package org.briarproject.api.system;
 
 import java.util.TimerTask;
 
diff --git a/briar-api/src/net/sf/briar/api/transport/ConnectionContext.java b/briar-api/src/org/briarproject/api/transport/ConnectionContext.java
similarity index 86%
rename from briar-api/src/net/sf/briar/api/transport/ConnectionContext.java
rename to briar-api/src/org/briarproject/api/transport/ConnectionContext.java
index 9c62ab1abe..16434bdc53 100644
--- a/briar-api/src/net/sf/briar/api/transport/ConnectionContext.java
+++ b/briar-api/src/org/briarproject/api/transport/ConnectionContext.java
@@ -1,7 +1,7 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
 
 public class ConnectionContext {
 
diff --git a/briar-api/src/net/sf/briar/api/transport/ConnectionDispatcher.java b/briar-api/src/org/briarproject/api/transport/ConnectionDispatcher.java
similarity index 52%
rename from briar-api/src/net/sf/briar/api/transport/ConnectionDispatcher.java
rename to briar-api/src/org/briarproject/api/transport/ConnectionDispatcher.java
index 6301eaece5..eb81685ec7 100644
--- a/briar-api/src/net/sf/briar/api/transport/ConnectionDispatcher.java
+++ b/briar-api/src/org/briarproject/api/transport/ConnectionDispatcher.java
@@ -1,10 +1,10 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.plugins.simplex.SimplexTransportReader;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
 
 public interface ConnectionDispatcher {
 
diff --git a/briar-api/src/net/sf/briar/api/transport/ConnectionListener.java b/briar-api/src/org/briarproject/api/transport/ConnectionListener.java
similarity index 81%
rename from briar-api/src/net/sf/briar/api/transport/ConnectionListener.java
rename to briar-api/src/org/briarproject/api/transport/ConnectionListener.java
index 0d9a027c8b..33052565bc 100644
--- a/briar-api/src/net/sf/briar/api/transport/ConnectionListener.java
+++ b/briar-api/src/org/briarproject/api/transport/ConnectionListener.java
@@ -1,6 +1,6 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
-import net.sf.briar.api.ContactId;
+import org.briarproject.api.ContactId;
 
 /** An interface for listening for connection and disconnection events. */
 public interface ConnectionListener {
diff --git a/briar-api/src/net/sf/briar/api/transport/ConnectionReader.java b/briar-api/src/org/briarproject/api/transport/ConnectionReader.java
similarity index 86%
rename from briar-api/src/net/sf/briar/api/transport/ConnectionReader.java
rename to briar-api/src/org/briarproject/api/transport/ConnectionReader.java
index cac3fbe40c..a4dc40b152 100644
--- a/briar-api/src/net/sf/briar/api/transport/ConnectionReader.java
+++ b/briar-api/src/org/briarproject/api/transport/ConnectionReader.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
 import java.io.InputStream;
 
diff --git a/briar-api/src/net/sf/briar/api/transport/ConnectionReaderFactory.java b/briar-api/src/org/briarproject/api/transport/ConnectionReaderFactory.java
similarity index 92%
rename from briar-api/src/net/sf/briar/api/transport/ConnectionReaderFactory.java
rename to briar-api/src/org/briarproject/api/transport/ConnectionReaderFactory.java
index b070b3c63c..2757e43180 100644
--- a/briar-api/src/net/sf/briar/api/transport/ConnectionReaderFactory.java
+++ b/briar-api/src/org/briarproject/api/transport/ConnectionReaderFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
 import java.io.InputStream;
 
diff --git a/briar-api/src/net/sf/briar/api/transport/ConnectionRecogniser.java b/briar-api/src/org/briarproject/api/transport/ConnectionRecogniser.java
similarity index 78%
rename from briar-api/src/net/sf/briar/api/transport/ConnectionRecogniser.java
rename to briar-api/src/org/briarproject/api/transport/ConnectionRecogniser.java
index 12903ac219..39ec863005 100644
--- a/briar-api/src/net/sf/briar/api/transport/ConnectionRecogniser.java
+++ b/briar-api/src/org/briarproject/api/transport/ConnectionRecogniser.java
@@ -1,8 +1,8 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.db.DbException;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.db.DbException;
 
 /**
  * Maintains the connection reordering windows and decides whether incoming
diff --git a/briar-api/src/net/sf/briar/api/transport/ConnectionRegistry.java b/briar-api/src/org/briarproject/api/transport/ConnectionRegistry.java
similarity index 79%
rename from briar-api/src/net/sf/briar/api/transport/ConnectionRegistry.java
rename to briar-api/src/org/briarproject/api/transport/ConnectionRegistry.java
index fa211f559f..270ea4b640 100644
--- a/briar-api/src/net/sf/briar/api/transport/ConnectionRegistry.java
+++ b/briar-api/src/org/briarproject/api/transport/ConnectionRegistry.java
@@ -1,9 +1,9 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
 import java.util.Collection;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
 
 /**
  * Keeps track of which contacts are currently connected by which transports.
diff --git a/briar-api/src/net/sf/briar/api/transport/ConnectionWriter.java b/briar-api/src/org/briarproject/api/transport/ConnectionWriter.java
similarity index 90%
rename from briar-api/src/net/sf/briar/api/transport/ConnectionWriter.java
rename to briar-api/src/org/briarproject/api/transport/ConnectionWriter.java
index bfe4721998..b195785991 100644
--- a/briar-api/src/net/sf/briar/api/transport/ConnectionWriter.java
+++ b/briar-api/src/org/briarproject/api/transport/ConnectionWriter.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
 import java.io.OutputStream;
 
diff --git a/briar-api/src/net/sf/briar/api/transport/ConnectionWriterFactory.java b/briar-api/src/org/briarproject/api/transport/ConnectionWriterFactory.java
similarity index 92%
rename from briar-api/src/net/sf/briar/api/transport/ConnectionWriterFactory.java
rename to briar-api/src/org/briarproject/api/transport/ConnectionWriterFactory.java
index 00d4126030..017ca9fdae 100644
--- a/briar-api/src/net/sf/briar/api/transport/ConnectionWriterFactory.java
+++ b/briar-api/src/org/briarproject/api/transport/ConnectionWriterFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
 import java.io.OutputStream;
 
diff --git a/briar-api/src/net/sf/briar/api/transport/Endpoint.java b/briar-api/src/org/briarproject/api/transport/Endpoint.java
similarity index 83%
rename from briar-api/src/net/sf/briar/api/transport/Endpoint.java
rename to briar-api/src/org/briarproject/api/transport/Endpoint.java
index bf3dd788a9..6ec3d2d6d2 100644
--- a/briar-api/src/net/sf/briar/api/transport/Endpoint.java
+++ b/briar-api/src/org/briarproject/api/transport/Endpoint.java
@@ -1,7 +1,7 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
 
 public class Endpoint {
 
diff --git a/briar-api/src/net/sf/briar/api/transport/IncomingConnectionExecutor.java b/briar-api/src/org/briarproject/api/transport/IncomingConnectionExecutor.java
similarity index 93%
rename from briar-api/src/net/sf/briar/api/transport/IncomingConnectionExecutor.java
rename to briar-api/src/org/briarproject/api/transport/IncomingConnectionExecutor.java
index b42f71061c..d70554de64 100644
--- a/briar-api/src/net/sf/briar/api/transport/IncomingConnectionExecutor.java
+++ b/briar-api/src/org/briarproject/api/transport/IncomingConnectionExecutor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
diff --git a/briar-api/src/net/sf/briar/api/transport/TemporarySecret.java b/briar-api/src/org/briarproject/api/transport/TemporarySecret.java
similarity index 89%
rename from briar-api/src/net/sf/briar/api/transport/TemporarySecret.java
rename to briar-api/src/org/briarproject/api/transport/TemporarySecret.java
index 035ecdfae0..f3a858425e 100644
--- a/briar-api/src/net/sf/briar/api/transport/TemporarySecret.java
+++ b/briar-api/src/org/briarproject/api/transport/TemporarySecret.java
@@ -1,8 +1,8 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.CONNECTION_WINDOW_SIZE;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
+import static org.briarproject.api.transport.TransportConstants.CONNECTION_WINDOW_SIZE;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
 
 public class TemporarySecret extends Endpoint {
 
diff --git a/briar-api/src/net/sf/briar/api/transport/TransportConstants.java b/briar-api/src/org/briarproject/api/transport/TransportConstants.java
similarity index 96%
rename from briar-api/src/net/sf/briar/api/transport/TransportConstants.java
rename to briar-api/src/org/briarproject/api/transport/TransportConstants.java
index fe5df78fd9..da5eff390f 100644
--- a/briar-api/src/net/sf/briar/api/transport/TransportConstants.java
+++ b/briar-api/src/org/briarproject/api/transport/TransportConstants.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.transport;
+package org.briarproject.api.transport;
 
 public interface TransportConstants {
 
diff --git a/briar-api/src/net/sf/briar/api/ui/UiCallback.java b/briar-api/src/org/briarproject/api/ui/UiCallback.java
similarity index 95%
rename from briar-api/src/net/sf/briar/api/ui/UiCallback.java
rename to briar-api/src/org/briarproject/api/ui/UiCallback.java
index 4903ef89e5..e3608950fc 100644
--- a/briar-api/src/net/sf/briar/api/ui/UiCallback.java
+++ b/briar-api/src/org/briarproject/api/ui/UiCallback.java
@@ -1,4 +1,4 @@
-package net.sf.briar.api.ui;
+package org.briarproject.api.ui;
 
 public interface UiCallback {
 
diff --git a/briar-core/src/net/sf/briar/system/ClockModule.java b/briar-core/src/net/sf/briar/system/ClockModule.java
deleted file mode 100644
index 663bfe815f..0000000000
--- a/briar-core/src/net/sf/briar/system/ClockModule.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package net.sf.briar.system;
-
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
-import net.sf.briar.api.system.SystemTimer;
-import net.sf.briar.api.system.Timer;
-
-import com.google.inject.AbstractModule;
-
-public class ClockModule extends AbstractModule {
-
-	protected void configure() {
-		bind(Clock.class).to(SystemClock.class);
-		bind(Timer.class).to(SystemTimer.class);
-	}
-}
diff --git a/briar-core/src/net/sf/briar/crypto/AuthenticatedCipherImpl.java b/briar-core/src/org/briarproject/crypto/AuthenticatedCipherImpl.java
similarity index 93%
rename from briar-core/src/net/sf/briar/crypto/AuthenticatedCipherImpl.java
rename to briar-core/src/org/briarproject/crypto/AuthenticatedCipherImpl.java
index 4597ebd34a..34c1379bbe 100644
--- a/briar-core/src/net/sf/briar/crypto/AuthenticatedCipherImpl.java
+++ b/briar-core/src/org/briarproject/crypto/AuthenticatedCipherImpl.java
@@ -1,11 +1,11 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import java.security.GeneralSecurityException;
 
 import javax.crypto.Cipher;
 
-import net.sf.briar.api.crypto.AuthenticatedCipher;
-import net.sf.briar.api.crypto.SecretKey;
+import org.briarproject.api.crypto.AuthenticatedCipher;
+import org.briarproject.api.crypto.SecretKey;
 
 import org.spongycastle.crypto.DataLengthException;
 import org.spongycastle.crypto.InvalidCipherTextException;
diff --git a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java b/briar-core/src/org/briarproject/crypto/CryptoComponentImpl.java
similarity index 95%
rename from briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
rename to briar-core/src/org/briarproject/crypto/CryptoComponentImpl.java
index 9b449b7a5e..4f689f4635 100644
--- a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
+++ b/briar-core/src/org/briarproject/crypto/CryptoComponentImpl.java
@@ -1,13 +1,13 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import static java.util.logging.Level.INFO;
 import static javax.crypto.Cipher.DECRYPT_MODE;
 import static javax.crypto.Cipher.ENCRYPT_MODE;
-import static net.sf.briar.api.invitation.InvitationConstants.CODE_BITS;
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
-import static net.sf.briar.crypto.EllipticCurveConstants.P;
-import static net.sf.briar.crypto.EllipticCurveConstants.PARAMETERS;
-import static net.sf.briar.util.ByteUtils.MAX_32_BIT_UNSIGNED;
+import static org.briarproject.api.invitation.InvitationConstants.CODE_BITS;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.crypto.EllipticCurveConstants.P;
+import static org.briarproject.crypto.EllipticCurveConstants.PARAMETERS;
+import static org.briarproject.util.ByteUtils.MAX_32_BIT_UNSIGNED;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -19,17 +19,17 @@ import java.util.Collections;
 import java.util.List;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.crypto.AuthenticatedCipher;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyPair;
-import net.sf.briar.api.crypto.KeyParser;
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.crypto.PrivateKey;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.crypto.PublicKey;
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.api.crypto.Signature;
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.api.crypto.AuthenticatedCipher;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyPair;
+import org.briarproject.api.crypto.KeyParser;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.crypto.PrivateKey;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.crypto.PublicKey;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.api.crypto.Signature;
+import org.briarproject.util.ByteUtils;
 
 import org.spongycastle.crypto.AsymmetricCipherKeyPair;
 import org.spongycastle.crypto.BlockCipher;
diff --git a/briar-core/src/net/sf/briar/crypto/CryptoModule.java b/briar-core/src/org/briarproject/crypto/CryptoModule.java
similarity index 88%
rename from briar-core/src/net/sf/briar/crypto/CryptoModule.java
rename to briar-core/src/org/briarproject/crypto/CryptoModule.java
index bda3ed9b00..39a18c6ac0 100644
--- a/briar-core/src/net/sf/briar/crypto/CryptoModule.java
+++ b/briar-core/src/org/briarproject/crypto/CryptoModule.java
@@ -1,4 +1,4 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -11,9 +11,9 @@ import java.util.concurrent.ThreadPoolExecutor;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.CryptoExecutor;
-import net.sf.briar.api.lifecycle.LifecycleManager;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.CryptoExecutor;
+import org.briarproject.api.lifecycle.LifecycleManager;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
diff --git a/briar-core/src/net/sf/briar/crypto/DoubleDigest.java b/briar-core/src/org/briarproject/crypto/DoubleDigest.java
similarity index 94%
rename from briar-core/src/net/sf/briar/crypto/DoubleDigest.java
rename to briar-core/src/org/briarproject/crypto/DoubleDigest.java
index 20b42865fc..c6186596f1 100644
--- a/briar-core/src/net/sf/briar/crypto/DoubleDigest.java
+++ b/briar-core/src/org/briarproject/crypto/DoubleDigest.java
@@ -1,6 +1,6 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
-import net.sf.briar.api.crypto.MessageDigest;
+import org.briarproject.api.crypto.MessageDigest;
 
 import org.spongycastle.crypto.Digest;
 
diff --git a/briar-core/src/net/sf/briar/crypto/EllipticCurveConstants.java b/briar-core/src/org/briarproject/crypto/EllipticCurveConstants.java
similarity index 98%
rename from briar-core/src/net/sf/briar/crypto/EllipticCurveConstants.java
rename to briar-core/src/org/briarproject/crypto/EllipticCurveConstants.java
index 0c98783d9e..79d24b904f 100644
--- a/briar-core/src/net/sf/briar/crypto/EllipticCurveConstants.java
+++ b/briar-core/src/org/briarproject/crypto/EllipticCurveConstants.java
@@ -1,4 +1,4 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import java.math.BigInteger;
 
diff --git a/briar-core/src/net/sf/briar/crypto/PseudoRandomImpl.java b/briar-core/src/org/briarproject/crypto/PseudoRandomImpl.java
similarity index 84%
rename from briar-core/src/net/sf/briar/crypto/PseudoRandomImpl.java
rename to briar-core/src/org/briarproject/crypto/PseudoRandomImpl.java
index c2751cf25d..de83754f96 100644
--- a/briar-core/src/net/sf/briar/crypto/PseudoRandomImpl.java
+++ b/briar-core/src/org/briarproject/crypto/PseudoRandomImpl.java
@@ -1,8 +1,8 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.util.ByteUtils;
 
 class PseudoRandomImpl implements PseudoRandom {
 
diff --git a/briar-core/src/net/sf/briar/crypto/Sec1KeyParser.java b/briar-core/src/org/briarproject/crypto/Sec1KeyParser.java
similarity index 95%
rename from briar-core/src/net/sf/briar/crypto/Sec1KeyParser.java
rename to briar-core/src/org/briarproject/crypto/Sec1KeyParser.java
index 5aa7faff06..b9077ffb5d 100644
--- a/briar-core/src/net/sf/briar/crypto/Sec1KeyParser.java
+++ b/briar-core/src/org/briarproject/crypto/Sec1KeyParser.java
@@ -1,11 +1,11 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import java.math.BigInteger;
 import java.security.GeneralSecurityException;
 
-import net.sf.briar.api.crypto.KeyParser;
-import net.sf.briar.api.crypto.PrivateKey;
-import net.sf.briar.api.crypto.PublicKey;
+import org.briarproject.api.crypto.KeyParser;
+import org.briarproject.api.crypto.PrivateKey;
+import org.briarproject.api.crypto.PublicKey;
 
 import org.spongycastle.crypto.params.ECDomainParameters;
 import org.spongycastle.crypto.params.ECPrivateKeyParameters;
diff --git a/briar-core/src/net/sf/briar/crypto/Sec1PrivateKey.java b/briar-core/src/org/briarproject/crypto/Sec1PrivateKey.java
similarity index 87%
rename from briar-core/src/net/sf/briar/crypto/Sec1PrivateKey.java
rename to briar-core/src/org/briarproject/crypto/Sec1PrivateKey.java
index 4779140637..2cf5ab782e 100644
--- a/briar-core/src/net/sf/briar/crypto/Sec1PrivateKey.java
+++ b/briar-core/src/org/briarproject/crypto/Sec1PrivateKey.java
@@ -1,6 +1,6 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
-import net.sf.briar.api.crypto.PrivateKey;
+import org.briarproject.api.crypto.PrivateKey;
 
 import org.spongycastle.crypto.params.ECPrivateKeyParameters;
 
diff --git a/briar-core/src/net/sf/briar/crypto/Sec1PublicKey.java b/briar-core/src/org/briarproject/crypto/Sec1PublicKey.java
similarity index 92%
rename from briar-core/src/net/sf/briar/crypto/Sec1PublicKey.java
rename to briar-core/src/org/briarproject/crypto/Sec1PublicKey.java
index 3c6eae0598..0b749384af 100644
--- a/briar-core/src/net/sf/briar/crypto/Sec1PublicKey.java
+++ b/briar-core/src/org/briarproject/crypto/Sec1PublicKey.java
@@ -1,6 +1,6 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
-import net.sf.briar.api.crypto.PublicKey;
+import org.briarproject.api.crypto.PublicKey;
 
 import org.spongycastle.crypto.params.ECPublicKeyParameters;
 
diff --git a/briar-core/src/net/sf/briar/crypto/Sec1Utils.java b/briar-core/src/org/briarproject/crypto/Sec1Utils.java
similarity index 91%
rename from briar-core/src/net/sf/briar/crypto/Sec1Utils.java
rename to briar-core/src/org/briarproject/crypto/Sec1Utils.java
index debb6cb865..b0f14ca1ba 100644
--- a/briar-core/src/net/sf/briar/crypto/Sec1Utils.java
+++ b/briar-core/src/org/briarproject/crypto/Sec1Utils.java
@@ -1,4 +1,4 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 class Sec1Utils {
 
diff --git a/briar-core/src/net/sf/briar/crypto/SecretKeyImpl.java b/briar-core/src/org/briarproject/crypto/SecretKeyImpl.java
similarity index 80%
rename from briar-core/src/net/sf/briar/crypto/SecretKeyImpl.java
rename to briar-core/src/org/briarproject/crypto/SecretKeyImpl.java
index 64bbad0634..d7cdbdf05d 100644
--- a/briar-core/src/net/sf/briar/crypto/SecretKeyImpl.java
+++ b/briar-core/src/org/briarproject/crypto/SecretKeyImpl.java
@@ -1,7 +1,7 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.util.ByteUtils;
 
 class SecretKeyImpl implements SecretKey {
 
diff --git a/briar-core/src/net/sf/briar/crypto/SignatureImpl.java b/briar-core/src/org/briarproject/crypto/SignatureImpl.java
similarity index 90%
rename from briar-core/src/net/sf/briar/crypto/SignatureImpl.java
rename to briar-core/src/org/briarproject/crypto/SignatureImpl.java
index c9f39d42b8..f8c4f79542 100644
--- a/briar-core/src/net/sf/briar/crypto/SignatureImpl.java
+++ b/briar-core/src/org/briarproject/crypto/SignatureImpl.java
@@ -1,11 +1,11 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import java.security.GeneralSecurityException;
 import java.security.SecureRandom;
 
-import net.sf.briar.api.crypto.PrivateKey;
-import net.sf.briar.api.crypto.PublicKey;
-import net.sf.briar.api.crypto.Signature;
+import org.briarproject.api.crypto.PrivateKey;
+import org.briarproject.api.crypto.PublicKey;
+import org.briarproject.api.crypto.Signature;
 
 import org.spongycastle.crypto.digests.SHA384Digest;
 import org.spongycastle.crypto.params.ECPrivateKeyParameters;
diff --git a/briar-core/src/net/sf/briar/db/Database.java b/briar-core/src/org/briarproject/db/Database.java
similarity index 95%
rename from briar-core/src/net/sf/briar/db/Database.java
rename to briar-core/src/org/briarproject/db/Database.java
index 6e5a890629..79ff4473b5 100644
--- a/briar-core/src/net/sf/briar/db/Database.java
+++ b/briar-core/src/org/briarproject/db/Database.java
@@ -1,32 +1,32 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import java.io.IOException;
 import java.util.Collection;
 import java.util.Map;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.GroupStatus;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.api.transport.TemporarySecret;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.Contact;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.GroupStatus;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.api.transport.TemporarySecret;
 
 // FIXME: Document the preconditions for calling each method
 
diff --git a/briar-core/src/net/sf/briar/db/DatabaseCleaner.java b/briar-core/src/org/briarproject/db/DatabaseCleaner.java
similarity index 92%
rename from briar-core/src/net/sf/briar/db/DatabaseCleaner.java
rename to briar-core/src/org/briarproject/db/DatabaseCleaner.java
index 639c92d4e3..fc2e1024b7 100644
--- a/briar-core/src/net/sf/briar/db/DatabaseCleaner.java
+++ b/briar-core/src/org/briarproject/db/DatabaseCleaner.java
@@ -1,6 +1,6 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
-import net.sf.briar.api.db.DbException;
+import org.briarproject.api.db.DbException;
 
 interface DatabaseCleaner {
 
diff --git a/briar-core/src/net/sf/briar/db/DatabaseCleanerImpl.java b/briar-core/src/org/briarproject/db/DatabaseCleanerImpl.java
similarity index 88%
rename from briar-core/src/net/sf/briar/db/DatabaseCleanerImpl.java
rename to briar-core/src/org/briarproject/db/DatabaseCleanerImpl.java
index 573adc6144..7c0993c677 100644
--- a/briar-core/src/net/sf/briar/db/DatabaseCleanerImpl.java
+++ b/briar-core/src/org/briarproject/db/DatabaseCleanerImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -8,9 +8,9 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.db.DbClosedException;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.system.Timer;
+import org.briarproject.api.db.DbClosedException;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.system.Timer;
 
 class DatabaseCleanerImpl extends TimerTask implements DatabaseCleaner {
 
diff --git a/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
similarity index 93%
rename from briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java
rename to briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
index b5c5c623b1..15b1a772e7 100644
--- a/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java
+++ b/briar-core/src/org/briarproject/db/DatabaseComponentImpl.java
@@ -1,13 +1,13 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.db.DatabaseConstants.BYTES_PER_SWEEP;
-import static net.sf.briar.db.DatabaseConstants.CRITICAL_FREE_SPACE;
-import static net.sf.briar.db.DatabaseConstants.MAX_BYTES_BETWEEN_SPACE_CHECKS;
-import static net.sf.briar.db.DatabaseConstants.MAX_MS_BETWEEN_SPACE_CHECKS;
-import static net.sf.briar.db.DatabaseConstants.MAX_OFFERED_MESSAGES;
-import static net.sf.briar.db.DatabaseConstants.MIN_FREE_SPACE;
+import static org.briarproject.db.DatabaseConstants.BYTES_PER_SWEEP;
+import static org.briarproject.db.DatabaseConstants.CRITICAL_FREE_SPACE;
+import static org.briarproject.db.DatabaseConstants.MAX_BYTES_BETWEEN_SPACE_CHECKS;
+import static org.briarproject.db.DatabaseConstants.MAX_MS_BETWEEN_SPACE_CHECKS;
+import static org.briarproject.db.DatabaseConstants.MAX_OFFERED_MESSAGES;
+import static org.briarproject.db.DatabaseConstants.MIN_FREE_SPACE;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -22,62 +22,62 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.db.ContactExistsException;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.LocalAuthorExistsException;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.db.NoSuchContactException;
-import net.sf.briar.api.db.NoSuchLocalAuthorException;
-import net.sf.briar.api.db.NoSuchMessageException;
-import net.sf.briar.api.db.NoSuchSubscriptionException;
-import net.sf.briar.api.db.NoSuchTransportException;
-import net.sf.briar.api.event.ContactAddedEvent;
-import net.sf.briar.api.event.ContactRemovedEvent;
-import net.sf.briar.api.event.Event;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.LocalAuthorAddedEvent;
-import net.sf.briar.api.event.LocalAuthorRemovedEvent;
-import net.sf.briar.api.event.LocalSubscriptionsUpdatedEvent;
-import net.sf.briar.api.event.LocalTransportsUpdatedEvent;
-import net.sf.briar.api.event.MessageAddedEvent;
-import net.sf.briar.api.event.MessageExpiredEvent;
-import net.sf.briar.api.event.MessageRequestedEvent;
-import net.sf.briar.api.event.MessageToAckEvent;
-import net.sf.briar.api.event.MessageToRequestEvent;
-import net.sf.briar.api.event.RemoteRetentionTimeUpdatedEvent;
-import net.sf.briar.api.event.RemoteSubscriptionsUpdatedEvent;
-import net.sf.briar.api.event.RemoteTransportsUpdatedEvent;
-import net.sf.briar.api.event.SubscriptionAddedEvent;
-import net.sf.briar.api.event.SubscriptionRemovedEvent;
-import net.sf.briar.api.event.TransportAddedEvent;
-import net.sf.briar.api.event.TransportRemovedEvent;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.GroupStatus;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.Offer;
-import net.sf.briar.api.messaging.Request;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.api.transport.TemporarySecret;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.Contact;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.db.ContactExistsException;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.LocalAuthorExistsException;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.db.NoSuchContactException;
+import org.briarproject.api.db.NoSuchLocalAuthorException;
+import org.briarproject.api.db.NoSuchMessageException;
+import org.briarproject.api.db.NoSuchSubscriptionException;
+import org.briarproject.api.db.NoSuchTransportException;
+import org.briarproject.api.event.ContactAddedEvent;
+import org.briarproject.api.event.ContactRemovedEvent;
+import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.LocalAuthorAddedEvent;
+import org.briarproject.api.event.LocalAuthorRemovedEvent;
+import org.briarproject.api.event.LocalSubscriptionsUpdatedEvent;
+import org.briarproject.api.event.LocalTransportsUpdatedEvent;
+import org.briarproject.api.event.MessageAddedEvent;
+import org.briarproject.api.event.MessageExpiredEvent;
+import org.briarproject.api.event.MessageRequestedEvent;
+import org.briarproject.api.event.MessageToAckEvent;
+import org.briarproject.api.event.MessageToRequestEvent;
+import org.briarproject.api.event.RemoteRetentionTimeUpdatedEvent;
+import org.briarproject.api.event.RemoteSubscriptionsUpdatedEvent;
+import org.briarproject.api.event.RemoteTransportsUpdatedEvent;
+import org.briarproject.api.event.SubscriptionAddedEvent;
+import org.briarproject.api.event.SubscriptionRemovedEvent;
+import org.briarproject.api.event.TransportAddedEvent;
+import org.briarproject.api.event.TransportRemovedEvent;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.GroupStatus;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.Offer;
+import org.briarproject.api.messaging.Request;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.api.transport.TemporarySecret;
 
 /**
  * An implementation of DatabaseComponent using reentrant read-write locks.
diff --git a/briar-core/src/net/sf/briar/db/DatabaseConstants.java b/briar-core/src/org/briarproject/db/DatabaseConstants.java
similarity index 98%
rename from briar-core/src/net/sf/briar/db/DatabaseConstants.java
rename to briar-core/src/org/briarproject/db/DatabaseConstants.java
index 53a5511109..f1c3f3f747 100644
--- a/briar-core/src/net/sf/briar/db/DatabaseConstants.java
+++ b/briar-core/src/org/briarproject/db/DatabaseConstants.java
@@ -1,4 +1,4 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 interface DatabaseConstants {
 
diff --git a/briar-core/src/net/sf/briar/db/DatabaseModule.java b/briar-core/src/org/briarproject/db/DatabaseModule.java
similarity index 81%
rename from briar-core/src/net/sf/briar/db/DatabaseModule.java
rename to briar-core/src/org/briarproject/db/DatabaseModule.java
index 921845cf54..3457fc6962 100644
--- a/briar-core/src/net/sf/briar/db/DatabaseModule.java
+++ b/briar-core/src/org/briarproject/db/DatabaseModule.java
@@ -1,4 +1,4 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -12,14 +12,14 @@ import java.util.concurrent.ThreadPoolExecutor;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseConfig;
-import net.sf.briar.api.db.DatabaseExecutor;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.FileUtils;
-import net.sf.briar.api.system.SystemClock;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DatabaseConfig;
+import org.briarproject.api.db.DatabaseExecutor;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.FileUtils;
+import org.briarproject.api.system.SystemClock;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
diff --git a/briar-core/src/net/sf/briar/db/DbStateException.java b/briar-core/src/org/briarproject/db/DbStateException.java
similarity index 87%
rename from briar-core/src/net/sf/briar/db/DbStateException.java
rename to briar-core/src/org/briarproject/db/DbStateException.java
index c628cf7173..f324faf258 100644
--- a/briar-core/src/net/sf/briar/db/DbStateException.java
+++ b/briar-core/src/org/briarproject/db/DbStateException.java
@@ -1,4 +1,4 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import java.sql.SQLException;
 
diff --git a/briar-core/src/net/sf/briar/db/ExponentialBackoff.java b/briar-core/src/org/briarproject/db/ExponentialBackoff.java
similarity index 97%
rename from briar-core/src/net/sf/briar/db/ExponentialBackoff.java
rename to briar-core/src/org/briarproject/db/ExponentialBackoff.java
index 4fd5e1045d..15444d11c1 100644
--- a/briar-core/src/net/sf/briar/db/ExponentialBackoff.java
+++ b/briar-core/src/org/briarproject/db/ExponentialBackoff.java
@@ -1,4 +1,4 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 class ExponentialBackoff {
 
diff --git a/briar-core/src/net/sf/briar/db/H2Database.java b/briar-core/src/org/briarproject/db/H2Database.java
similarity index 92%
rename from briar-core/src/net/sf/briar/db/H2Database.java
rename to briar-core/src/org/briarproject/db/H2Database.java
index 0f6b67f973..664a2f68d4 100644
--- a/briar-core/src/net/sf/briar/db/H2Database.java
+++ b/briar-core/src/org/briarproject/db/H2Database.java
@@ -1,4 +1,4 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import java.io.File;
 import java.io.IOException;
@@ -10,11 +10,11 @@ import java.util.Properties;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.db.DatabaseConfig;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.FileUtils;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.db.DatabaseConfig;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.FileUtils;
+import org.briarproject.util.StringUtils;
 
 /** Contains all the H2-specific code for the database. */
 class H2Database extends JdbcDatabase {
diff --git a/briar-core/src/net/sf/briar/db/JdbcDatabase.java b/briar-core/src/org/briarproject/db/JdbcDatabase.java
similarity index 98%
rename from briar-core/src/net/sf/briar/db/JdbcDatabase.java
rename to briar-core/src/org/briarproject/db/JdbcDatabase.java
index 5e7e008eec..3f63d08c1f 100644
--- a/briar-core/src/net/sf/briar/db/JdbcDatabase.java
+++ b/briar-core/src/org/briarproject/db/JdbcDatabase.java
@@ -1,12 +1,12 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import static java.sql.Types.BINARY;
 import static java.sql.Types.VARCHAR;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SUBSCRIPTIONS;
-import static net.sf.briar.api.messaging.MessagingConstants.RETENTION_GRANULARITY;
-import static net.sf.briar.db.ExponentialBackoff.calculateExpiry;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_SUBSCRIPTIONS;
+import static org.briarproject.api.messaging.MessagingConstants.RETENTION_GRANULARITY;
+import static org.briarproject.db.ExponentialBackoff.calculateExpiry;
 
 import java.io.IOException;
 import java.sql.Connection;
@@ -24,31 +24,31 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.db.DbClosedException;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.GroupStatus;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.api.transport.TemporarySecret;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.Contact;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.db.DbClosedException;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.GroupStatus;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.api.transport.TemporarySecret;
 
 /**
  * A generic database implementation that can be used with any JDBC-compatible
diff --git a/briar-core/src/net/sf/briar/invitation/AliceConnector.java b/briar-core/src/org/briarproject/invitation/AliceConnector.java
similarity index 83%
rename from briar-core/src/net/sf/briar/invitation/AliceConnector.java
rename to briar-core/src/org/briarproject/invitation/AliceConnector.java
index d33787b88b..b28c957f37 100644
--- a/briar-core/src/net/sf/briar/invitation/AliceConnector.java
+++ b/briar-core/src/org/briarproject/invitation/AliceConnector.java
@@ -1,4 +1,4 @@
-package net.sf.briar.invitation;
+package org.briarproject.invitation;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -10,29 +10,29 @@ import java.security.GeneralSecurityException;
 import java.util.Map;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.messaging.GroupFactory;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.serial.Reader;
-import net.sf.briar.api.serial.ReaderFactory;
-import net.sf.briar.api.serial.Writer;
-import net.sf.briar.api.serial.WriterFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.transport.ConnectionDispatcher;
-import net.sf.briar.api.transport.ConnectionReader;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionWriter;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.messaging.GroupFactory;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.serial.Reader;
+import org.briarproject.api.serial.ReaderFactory;
+import org.briarproject.api.serial.Writer;
+import org.briarproject.api.serial.WriterFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.transport.ConnectionDispatcher;
+import org.briarproject.api.transport.ConnectionReader;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriterFactory;
 
 /** A connection thread for the peer being Alice in the invitation protocol. */
 class AliceConnector extends Connector {
diff --git a/briar-core/src/net/sf/briar/invitation/BobConnector.java b/briar-core/src/org/briarproject/invitation/BobConnector.java
similarity index 83%
rename from briar-core/src/net/sf/briar/invitation/BobConnector.java
rename to briar-core/src/org/briarproject/invitation/BobConnector.java
index ebd8fbfddd..44372d5894 100644
--- a/briar-core/src/net/sf/briar/invitation/BobConnector.java
+++ b/briar-core/src/org/briarproject/invitation/BobConnector.java
@@ -1,4 +1,4 @@
-package net.sf.briar.invitation;
+package org.briarproject.invitation;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -10,29 +10,29 @@ import java.security.GeneralSecurityException;
 import java.util.Map;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.messaging.GroupFactory;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.serial.Reader;
-import net.sf.briar.api.serial.ReaderFactory;
-import net.sf.briar.api.serial.Writer;
-import net.sf.briar.api.serial.WriterFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.transport.ConnectionDispatcher;
-import net.sf.briar.api.transport.ConnectionReader;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionWriter;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.messaging.GroupFactory;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.serial.Reader;
+import org.briarproject.api.serial.ReaderFactory;
+import org.briarproject.api.serial.Writer;
+import org.briarproject.api.serial.WriterFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.transport.ConnectionDispatcher;
+import org.briarproject.api.transport.ConnectionReader;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriterFactory;
 
 /** A connection thread for the peer being Bob in the invitation protocol. */
 class BobConnector extends Connector {
diff --git a/briar-core/src/net/sf/briar/invitation/Connector.java b/briar-core/src/org/briarproject/invitation/Connector.java
similarity index 83%
rename from briar-core/src/net/sf/briar/invitation/Connector.java
rename to briar-core/src/org/briarproject/invitation/Connector.java
index a2486ba146..b19edf2c7d 100644
--- a/briar-core/src/net/sf/briar/invitation/Connector.java
+++ b/briar-core/src/org/briarproject/invitation/Connector.java
@@ -1,13 +1,13 @@
-package net.sf.briar.invitation;
+package org.briarproject.invitation;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
-import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
-import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
-import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
-import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
-import static net.sf.briar.api.invitation.InvitationConstants.HASH_LENGTH;
+import static org.briarproject.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static org.briarproject.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static org.briarproject.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
+import static org.briarproject.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
+import static org.briarproject.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
+import static org.briarproject.api.invitation.InvitationConstants.HASH_LENGTH;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
@@ -21,39 +21,39 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorConstants;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.UniqueId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.crypto.KeyPair;
-import net.sf.briar.api.crypto.KeyParser;
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.crypto.Signature;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.NoSuchTransportException;
-import net.sf.briar.api.invitation.InvitationConstants;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupFactory;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.serial.Reader;
-import net.sf.briar.api.serial.ReaderFactory;
-import net.sf.briar.api.serial.Writer;
-import net.sf.briar.api.serial.WriterFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.transport.ConnectionDispatcher;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
-import net.sf.briar.api.transport.Endpoint;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorConstants;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.UniqueId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.crypto.KeyPair;
+import org.briarproject.api.crypto.KeyParser;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.crypto.Signature;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.NoSuchTransportException;
+import org.briarproject.api.invitation.InvitationConstants;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupFactory;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.serial.Reader;
+import org.briarproject.api.serial.ReaderFactory;
+import org.briarproject.api.serial.Writer;
+import org.briarproject.api.serial.WriterFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.transport.ConnectionDispatcher;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.transport.Endpoint;
 
 abstract class Connector extends Thread {
 
diff --git a/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java b/briar-core/src/org/briarproject/invitation/ConnectorGroup.java
similarity index 86%
rename from briar-core/src/net/sf/briar/invitation/ConnectorGroup.java
rename to briar-core/src/org/briarproject/invitation/ConnectorGroup.java
index 0dc6a39bc4..c049830bee 100644
--- a/briar-core/src/net/sf/briar/invitation/ConnectorGroup.java
+++ b/briar-core/src/org/briarproject/invitation/ConnectorGroup.java
@@ -1,8 +1,8 @@
-package net.sf.briar.invitation;
+package org.briarproject.invitation;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.invitation.InvitationConstants.CONFIRMATION_TIMEOUT;
+import static org.briarproject.api.invitation.InvitationConstants.CONFIRMATION_TIMEOUT;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -12,29 +12,29 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.invitation.InvitationListener;
-import net.sf.briar.api.invitation.InvitationState;
-import net.sf.briar.api.invitation.InvitationTask;
-import net.sf.briar.api.messaging.GroupFactory;
-import net.sf.briar.api.plugins.PluginManager;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.serial.ReaderFactory;
-import net.sf.briar.api.serial.WriterFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.transport.ConnectionDispatcher;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.invitation.InvitationListener;
+import org.briarproject.api.invitation.InvitationState;
+import org.briarproject.api.invitation.InvitationTask;
+import org.briarproject.api.messaging.GroupFactory;
+import org.briarproject.api.plugins.PluginManager;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.serial.ReaderFactory;
+import org.briarproject.api.serial.WriterFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.transport.ConnectionDispatcher;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionWriterFactory;
 
 /** A task consisting of one or more parallel connection attempts. */
 class ConnectorGroup extends Thread implements InvitationTask {
diff --git a/briar-core/src/net/sf/briar/invitation/InvitationModule.java b/briar-core/src/org/briarproject/invitation/InvitationModule.java
similarity index 72%
rename from briar-core/src/net/sf/briar/invitation/InvitationModule.java
rename to briar-core/src/org/briarproject/invitation/InvitationModule.java
index 0039480e4b..057ec97320 100644
--- a/briar-core/src/net/sf/briar/invitation/InvitationModule.java
+++ b/briar-core/src/org/briarproject/invitation/InvitationModule.java
@@ -1,8 +1,8 @@
-package net.sf.briar.invitation;
+package org.briarproject.invitation;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.invitation.InvitationTaskFactory;
+import org.briarproject.api.invitation.InvitationTaskFactory;
 
 import com.google.inject.AbstractModule;
 
diff --git a/briar-core/src/net/sf/briar/invitation/InvitationTaskFactoryImpl.java b/briar-core/src/org/briarproject/invitation/InvitationTaskFactoryImpl.java
similarity index 69%
rename from briar-core/src/net/sf/briar/invitation/InvitationTaskFactoryImpl.java
rename to briar-core/src/org/briarproject/invitation/InvitationTaskFactoryImpl.java
index 8adad86d8d..a9bf4c8949 100644
--- a/briar-core/src/net/sf/briar/invitation/InvitationTaskFactoryImpl.java
+++ b/briar-core/src/org/briarproject/invitation/InvitationTaskFactoryImpl.java
@@ -1,22 +1,22 @@
-package net.sf.briar.invitation;
+package org.briarproject.invitation;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.invitation.InvitationTask;
-import net.sf.briar.api.invitation.InvitationTaskFactory;
-import net.sf.briar.api.messaging.GroupFactory;
-import net.sf.briar.api.plugins.PluginManager;
-import net.sf.briar.api.serial.ReaderFactory;
-import net.sf.briar.api.serial.WriterFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.transport.ConnectionDispatcher;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.invitation.InvitationTask;
+import org.briarproject.api.invitation.InvitationTaskFactory;
+import org.briarproject.api.messaging.GroupFactory;
+import org.briarproject.api.plugins.PluginManager;
+import org.briarproject.api.serial.ReaderFactory;
+import org.briarproject.api.serial.WriterFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.transport.ConnectionDispatcher;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionWriterFactory;
 
 class InvitationTaskFactoryImpl implements InvitationTaskFactory {
 
diff --git a/briar-core/src/net/sf/briar/lifecycle/LifecycleManagerImpl.java b/briar-core/src/org/briarproject/lifecycle/LifecycleManagerImpl.java
similarity index 93%
rename from briar-core/src/net/sf/briar/lifecycle/LifecycleManagerImpl.java
rename to briar-core/src/org/briarproject/lifecycle/LifecycleManagerImpl.java
index 06e007762b..1281917762 100644
--- a/briar-core/src/net/sf/briar/lifecycle/LifecycleManagerImpl.java
+++ b/briar-core/src/org/briarproject/lifecycle/LifecycleManagerImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.lifecycle;
+package org.briarproject.lifecycle;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -12,10 +12,10 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.lifecycle.Service;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.lifecycle.Service;
 
 class LifecycleManagerImpl implements LifecycleManager {
 
diff --git a/briar-core/src/net/sf/briar/lifecycle/LifecycleModule.java b/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java
similarity index 69%
rename from briar-core/src/net/sf/briar/lifecycle/LifecycleModule.java
rename to briar-core/src/org/briarproject/lifecycle/LifecycleModule.java
index bab67b5780..8c6c7360f2 100644
--- a/briar-core/src/net/sf/briar/lifecycle/LifecycleModule.java
+++ b/briar-core/src/org/briarproject/lifecycle/LifecycleModule.java
@@ -1,9 +1,9 @@
-package net.sf.briar.lifecycle;
+package org.briarproject.lifecycle;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.lifecycle.ShutdownManager;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.lifecycle.ShutdownManager;
 
 import com.google.inject.AbstractModule;
 
diff --git a/briar-core/src/net/sf/briar/lifecycle/ShutdownManagerImpl.java b/briar-core/src/org/briarproject/lifecycle/ShutdownManagerImpl.java
similarity index 89%
rename from briar-core/src/net/sf/briar/lifecycle/ShutdownManagerImpl.java
rename to briar-core/src/org/briarproject/lifecycle/ShutdownManagerImpl.java
index bc8bd05285..1531156215 100644
--- a/briar-core/src/net/sf/briar/lifecycle/ShutdownManagerImpl.java
+++ b/briar-core/src/org/briarproject/lifecycle/ShutdownManagerImpl.java
@@ -1,9 +1,9 @@
-package net.sf.briar.lifecycle;
+package org.briarproject.lifecycle;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import net.sf.briar.api.lifecycle.ShutdownManager;
+import org.briarproject.api.lifecycle.ShutdownManager;
 
 class ShutdownManagerImpl implements ShutdownManager {
 
diff --git a/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java b/briar-core/src/org/briarproject/messaging/AuthorFactoryImpl.java
similarity index 73%
rename from briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java
rename to briar-core/src/org/briarproject/messaging/AuthorFactoryImpl.java
index 348672611b..b40dc04ed3 100644
--- a/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java
+++ b/briar-core/src/org/briarproject/messaging/AuthorFactoryImpl.java
@@ -1,20 +1,20 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.messaging.Types.AUTHOR;
+import static org.briarproject.api.messaging.Types.AUTHOR;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.serial.Writer;
-import net.sf.briar.api.serial.WriterFactory;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.serial.Writer;
+import org.briarproject.api.serial.WriterFactory;
 
 class AuthorFactoryImpl implements AuthorFactory {
 
diff --git a/briar-core/src/net/sf/briar/messaging/AuthorReader.java b/briar-core/src/org/briarproject/messaging/AuthorReader.java
similarity index 57%
rename from briar-core/src/net/sf/briar/messaging/AuthorReader.java
rename to briar-core/src/org/briarproject/messaging/AuthorReader.java
index 3414b8aea6..7244fdf25d 100644
--- a/briar-core/src/net/sf/briar/messaging/AuthorReader.java
+++ b/briar-core/src/org/briarproject/messaging/AuthorReader.java
@@ -1,18 +1,18 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
-import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.messaging.Types.AUTHOR;
+import static org.briarproject.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static org.briarproject.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static org.briarproject.api.messaging.Types.AUTHOR;
 
 import java.io.IOException;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.serial.DigestingConsumer;
-import net.sf.briar.api.serial.Reader;
-import net.sf.briar.api.serial.StructReader;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.serial.DigestingConsumer;
+import org.briarproject.api.serial.Reader;
+import org.briarproject.api.serial.StructReader;
 
 class AuthorReader implements StructReader<Author> {
 
diff --git a/briar-core/src/net/sf/briar/messaging/GroupFactoryImpl.java b/briar-core/src/org/briarproject/messaging/GroupFactoryImpl.java
similarity index 68%
rename from briar-core/src/net/sf/briar/messaging/GroupFactoryImpl.java
rename to briar-core/src/org/briarproject/messaging/GroupFactoryImpl.java
index 3a360d1384..ec88fca9c0 100644
--- a/briar-core/src/net/sf/briar/messaging/GroupFactoryImpl.java
+++ b/briar-core/src/org/briarproject/messaging/GroupFactoryImpl.java
@@ -1,20 +1,20 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.messaging.MessagingConstants.GROUP_SALT_LENGTH;
-import static net.sf.briar.api.messaging.Types.GROUP;
+import static org.briarproject.api.messaging.MessagingConstants.GROUP_SALT_LENGTH;
+import static org.briarproject.api.messaging.Types.GROUP;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupFactory;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.serial.Writer;
-import net.sf.briar.api.serial.WriterFactory;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupFactory;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.serial.Writer;
+import org.briarproject.api.serial.WriterFactory;
 
 class GroupFactoryImpl implements GroupFactory {
 
diff --git a/briar-core/src/net/sf/briar/messaging/GroupReader.java b/briar-core/src/org/briarproject/messaging/GroupReader.java
similarity index 56%
rename from briar-core/src/net/sf/briar/messaging/GroupReader.java
rename to briar-core/src/org/briarproject/messaging/GroupReader.java
index 20402c5ae2..66ff9e44ed 100644
--- a/briar-core/src/net/sf/briar/messaging/GroupReader.java
+++ b/briar-core/src/org/briarproject/messaging/GroupReader.java
@@ -1,18 +1,18 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH;
-import static net.sf.briar.api.messaging.Types.GROUP;
+import static org.briarproject.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH;
+import static org.briarproject.api.messaging.Types.GROUP;
 
 import java.io.IOException;
 
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.serial.DigestingConsumer;
-import net.sf.briar.api.serial.Reader;
-import net.sf.briar.api.serial.StructReader;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.serial.DigestingConsumer;
+import org.briarproject.api.serial.Reader;
+import org.briarproject.api.serial.StructReader;
 
 class GroupReader implements StructReader<Group> {
 
diff --git a/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java b/briar-core/src/org/briarproject/messaging/MessageFactoryImpl.java
similarity index 73%
rename from briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
rename to briar-core/src/org/briarproject/messaging/MessageFactoryImpl.java
index bd9901459e..9a05e6c277 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
+++ b/briar-core/src/org/briarproject/messaging/MessageFactoryImpl.java
@@ -1,13 +1,13 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MESSAGE_SALT_LENGTH;
-import static net.sf.briar.api.messaging.Types.AUTHOR;
-import static net.sf.briar.api.messaging.Types.GROUP;
-import static net.sf.briar.api.messaging.Types.MESSAGE;
+import static org.briarproject.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MESSAGE_SALT_LENGTH;
+import static org.briarproject.api.messaging.Types.AUTHOR;
+import static org.briarproject.api.messaging.Types.GROUP;
+import static org.briarproject.api.messaging.Types.MESSAGE;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -16,21 +16,21 @@ import java.security.SecureRandom;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.crypto.PrivateKey;
-import net.sf.briar.api.crypto.Signature;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageFactory;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.serial.Consumer;
-import net.sf.briar.api.serial.CountingConsumer;
-import net.sf.briar.api.serial.DigestingConsumer;
-import net.sf.briar.api.serial.SigningConsumer;
-import net.sf.briar.api.serial.Writer;
-import net.sf.briar.api.serial.WriterFactory;
+import org.briarproject.api.Author;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.crypto.PrivateKey;
+import org.briarproject.api.crypto.Signature;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageFactory;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.serial.Consumer;
+import org.briarproject.api.serial.CountingConsumer;
+import org.briarproject.api.serial.DigestingConsumer;
+import org.briarproject.api.serial.SigningConsumer;
+import org.briarproject.api.serial.Writer;
+import org.briarproject.api.serial.WriterFactory;
 
 class MessageFactoryImpl implements MessageFactory {
 
diff --git a/briar-core/src/net/sf/briar/messaging/MessageImpl.java b/briar-core/src/org/briarproject/messaging/MessageImpl.java
similarity index 83%
rename from briar-core/src/net/sf/briar/messaging/MessageImpl.java
rename to briar-core/src/org/briarproject/messaging/MessageImpl.java
index fe586b97d8..e967a97077 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageImpl.java
+++ b/briar-core/src/org/briarproject/messaging/MessageImpl.java
@@ -1,10 +1,10 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
-import net.sf.briar.api.Author;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageId;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
+import org.briarproject.api.Author;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageId;
 
 /** A simple in-memory implementation of a message. */
 class MessageImpl implements Message {
diff --git a/briar-core/src/net/sf/briar/messaging/MessageReader.java b/briar-core/src/org/briarproject/messaging/MessageReader.java
similarity index 69%
rename from briar-core/src/net/sf/briar/messaging/MessageReader.java
rename to briar-core/src/org/briarproject/messaging/MessageReader.java
index 365b8c4e1f..f089e4b87c 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageReader.java
+++ b/briar-core/src/org/briarproject/messaging/MessageReader.java
@@ -1,24 +1,24 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MESSAGE_SALT_LENGTH;
-import static net.sf.briar.api.messaging.Types.MESSAGE;
+import static org.briarproject.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MESSAGE_SALT_LENGTH;
+import static org.briarproject.api.messaging.Types.MESSAGE;
 
 import java.io.IOException;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.UniqueId;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.serial.CopyingConsumer;
-import net.sf.briar.api.serial.CountingConsumer;
-import net.sf.briar.api.serial.Reader;
-import net.sf.briar.api.serial.StructReader;
+import org.briarproject.api.Author;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.UniqueId;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.UnverifiedMessage;
+import org.briarproject.api.serial.CopyingConsumer;
+import org.briarproject.api.serial.CountingConsumer;
+import org.briarproject.api.serial.Reader;
+import org.briarproject.api.serial.StructReader;
 
 class MessageReader implements StructReader<UnverifiedMessage> {
 
diff --git a/briar-core/src/net/sf/briar/messaging/MessageVerifierImpl.java b/briar-core/src/org/briarproject/messaging/MessageVerifierImpl.java
similarity index 69%
rename from briar-core/src/net/sf/briar/messaging/MessageVerifierImpl.java
rename to briar-core/src/org/briarproject/messaging/MessageVerifierImpl.java
index e68995aa7e..ecc16ac196 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageVerifierImpl.java
+++ b/briar-core/src/org/briarproject/messaging/MessageVerifierImpl.java
@@ -1,22 +1,22 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
+import static org.briarproject.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
 
 import java.security.GeneralSecurityException;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyParser;
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.crypto.PublicKey;
-import net.sf.briar.api.crypto.Signature;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.system.Clock;
+import org.briarproject.api.Author;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyParser;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.crypto.PublicKey;
+import org.briarproject.api.crypto.Signature;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.UnverifiedMessage;
+import org.briarproject.api.system.Clock;
 
 class MessageVerifierImpl implements MessageVerifier {
 
diff --git a/briar-core/src/net/sf/briar/messaging/MessagingModule.java b/briar-core/src/org/briarproject/messaging/MessagingModule.java
similarity index 63%
rename from briar-core/src/net/sf/briar/messaging/MessagingModule.java
rename to briar-core/src/org/briarproject/messaging/MessagingModule.java
index 44b157455f..c2dde22025 100644
--- a/briar-core/src/net/sf/briar/messaging/MessagingModule.java
+++ b/briar-core/src/org/briarproject/messaging/MessagingModule.java
@@ -1,17 +1,17 @@
-package net.sf.briar.messaging;
-
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupFactory;
-import net.sf.briar.api.messaging.MessageFactory;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.serial.StructReader;
+package org.briarproject.messaging;
+
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupFactory;
+import org.briarproject.api.messaging.MessageFactory;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.UnverifiedMessage;
+import org.briarproject.api.serial.StructReader;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
diff --git a/briar-core/src/net/sf/briar/messaging/PacketReaderFactoryImpl.java b/briar-core/src/org/briarproject/messaging/PacketReaderFactoryImpl.java
similarity index 68%
rename from briar-core/src/net/sf/briar/messaging/PacketReaderFactoryImpl.java
rename to briar-core/src/org/briarproject/messaging/PacketReaderFactoryImpl.java
index f094ecfbe5..ec9a59dd2a 100644
--- a/briar-core/src/net/sf/briar/messaging/PacketReaderFactoryImpl.java
+++ b/briar-core/src/org/briarproject/messaging/PacketReaderFactoryImpl.java
@@ -1,15 +1,15 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
 import java.io.InputStream;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.messaging.PacketReader;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.serial.ReaderFactory;
-import net.sf.briar.api.serial.StructReader;
+import org.briarproject.api.messaging.PacketReader;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.UnverifiedMessage;
+import org.briarproject.api.serial.ReaderFactory;
+import org.briarproject.api.serial.StructReader;
 
 class PacketReaderFactoryImpl implements PacketReaderFactory {
 
diff --git a/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java b/briar-core/src/org/briarproject/messaging/PacketReaderImpl.java
similarity index 77%
rename from briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java
rename to briar-core/src/org/briarproject/messaging/PacketReaderImpl.java
index bb57923713..6e65ee61f9 100644
--- a/briar-core/src/net/sf/briar/messaging/PacketReaderImpl.java
+++ b/briar-core/src/org/briarproject/messaging/PacketReaderImpl.java
@@ -1,18 +1,18 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
-import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.Types.ACK;
-import static net.sf.briar.api.messaging.Types.MESSAGE;
-import static net.sf.briar.api.messaging.Types.OFFER;
-import static net.sf.briar.api.messaging.Types.REQUEST;
-import static net.sf.briar.api.messaging.Types.RETENTION_ACK;
-import static net.sf.briar.api.messaging.Types.RETENTION_UPDATE;
-import static net.sf.briar.api.messaging.Types.SUBSCRIPTION_ACK;
-import static net.sf.briar.api.messaging.Types.SUBSCRIPTION_UPDATE;
-import static net.sf.briar.api.messaging.Types.TRANSPORT_ACK;
-import static net.sf.briar.api.messaging.Types.TRANSPORT_UPDATE;
+import static org.briarproject.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
+import static org.briarproject.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.messaging.Types.ACK;
+import static org.briarproject.api.messaging.Types.MESSAGE;
+import static org.briarproject.api.messaging.Types.OFFER;
+import static org.briarproject.api.messaging.Types.REQUEST;
+import static org.briarproject.api.messaging.Types.RETENTION_ACK;
+import static org.briarproject.api.messaging.Types.RETENTION_UPDATE;
+import static org.briarproject.api.messaging.Types.SUBSCRIPTION_ACK;
+import static org.briarproject.api.messaging.Types.SUBSCRIPTION_UPDATE;
+import static org.briarproject.api.messaging.Types.TRANSPORT_ACK;
+import static org.briarproject.api.messaging.Types.TRANSPORT_UPDATE;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -22,27 +22,27 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.UniqueId;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.Offer;
-import net.sf.briar.api.messaging.PacketReader;
-import net.sf.briar.api.messaging.Request;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.serial.Consumer;
-import net.sf.briar.api.serial.CountingConsumer;
-import net.sf.briar.api.serial.Reader;
-import net.sf.briar.api.serial.ReaderFactory;
-import net.sf.briar.api.serial.StructReader;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.UniqueId;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.Offer;
+import org.briarproject.api.messaging.PacketReader;
+import org.briarproject.api.messaging.Request;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.messaging.UnverifiedMessage;
+import org.briarproject.api.serial.Consumer;
+import org.briarproject.api.serial.CountingConsumer;
+import org.briarproject.api.serial.Reader;
+import org.briarproject.api.serial.ReaderFactory;
+import org.briarproject.api.serial.StructReader;
 
 // This class is not thread-safe
 class PacketReaderImpl implements PacketReader {
diff --git a/briar-core/src/net/sf/briar/messaging/PacketWriterFactoryImpl.java b/briar-core/src/org/briarproject/messaging/PacketWriterFactoryImpl.java
similarity index 67%
rename from briar-core/src/net/sf/briar/messaging/PacketWriterFactoryImpl.java
rename to briar-core/src/org/briarproject/messaging/PacketWriterFactoryImpl.java
index 8f1e5b4e56..dbe4f4613c 100644
--- a/briar-core/src/net/sf/briar/messaging/PacketWriterFactoryImpl.java
+++ b/briar-core/src/org/briarproject/messaging/PacketWriterFactoryImpl.java
@@ -1,13 +1,13 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
 import java.io.OutputStream;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.messaging.PacketWriter;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.serial.SerialComponent;
-import net.sf.briar.api.serial.WriterFactory;
+import org.briarproject.api.messaging.PacketWriter;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.serial.SerialComponent;
+import org.briarproject.api.serial.WriterFactory;
 
 class PacketWriterFactoryImpl implements PacketWriterFactory {
 
diff --git a/briar-core/src/net/sf/briar/messaging/PacketWriterImpl.java b/briar-core/src/org/briarproject/messaging/PacketWriterImpl.java
similarity index 71%
rename from briar-core/src/net/sf/briar/messaging/PacketWriterImpl.java
rename to briar-core/src/org/briarproject/messaging/PacketWriterImpl.java
index ebf93ea365..fafbdb01e8 100644
--- a/briar-core/src/net/sf/briar/messaging/PacketWriterImpl.java
+++ b/briar-core/src/org/briarproject/messaging/PacketWriterImpl.java
@@ -1,35 +1,35 @@
-package net.sf.briar.messaging;
-
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.Types.ACK;
-import static net.sf.briar.api.messaging.Types.GROUP;
-import static net.sf.briar.api.messaging.Types.OFFER;
-import static net.sf.briar.api.messaging.Types.REQUEST;
-import static net.sf.briar.api.messaging.Types.RETENTION_ACK;
-import static net.sf.briar.api.messaging.Types.RETENTION_UPDATE;
-import static net.sf.briar.api.messaging.Types.SUBSCRIPTION_ACK;
-import static net.sf.briar.api.messaging.Types.SUBSCRIPTION_UPDATE;
-import static net.sf.briar.api.messaging.Types.TRANSPORT_ACK;
-import static net.sf.briar.api.messaging.Types.TRANSPORT_UPDATE;
+package org.briarproject.messaging;
+
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.messaging.Types.ACK;
+import static org.briarproject.api.messaging.Types.GROUP;
+import static org.briarproject.api.messaging.Types.OFFER;
+import static org.briarproject.api.messaging.Types.REQUEST;
+import static org.briarproject.api.messaging.Types.RETENTION_ACK;
+import static org.briarproject.api.messaging.Types.RETENTION_UPDATE;
+import static org.briarproject.api.messaging.Types.SUBSCRIPTION_ACK;
+import static org.briarproject.api.messaging.Types.SUBSCRIPTION_UPDATE;
+import static org.briarproject.api.messaging.Types.TRANSPORT_ACK;
+import static org.briarproject.api.messaging.Types.TRANSPORT_UPDATE;
 
 import java.io.IOException;
 import java.io.OutputStream;
 
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.Offer;
-import net.sf.briar.api.messaging.PacketWriter;
-import net.sf.briar.api.messaging.Request;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.serial.SerialComponent;
-import net.sf.briar.api.serial.Writer;
-import net.sf.briar.api.serial.WriterFactory;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.Offer;
+import org.briarproject.api.messaging.PacketWriter;
+import org.briarproject.api.messaging.Request;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.serial.SerialComponent;
+import org.briarproject.api.serial.Writer;
+import org.briarproject.api.serial.WriterFactory;
 
 // This class is not thread-safe
 class PacketWriterImpl implements PacketWriter {
diff --git a/briar-core/src/net/sf/briar/messaging/SubscriptionUpdateReader.java b/briar-core/src/org/briarproject/messaging/SubscriptionUpdateReader.java
similarity index 65%
rename from briar-core/src/net/sf/briar/messaging/SubscriptionUpdateReader.java
rename to briar-core/src/org/briarproject/messaging/SubscriptionUpdateReader.java
index 70f628392e..f255b90eee 100644
--- a/briar-core/src/net/sf/briar/messaging/SubscriptionUpdateReader.java
+++ b/briar-core/src/org/briarproject/messaging/SubscriptionUpdateReader.java
@@ -1,21 +1,21 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SUBSCRIPTIONS;
-import static net.sf.briar.api.messaging.Types.SUBSCRIPTION_UPDATE;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_SUBSCRIPTIONS;
+import static org.briarproject.api.messaging.Types.SUBSCRIPTION_UPDATE;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.serial.Consumer;
-import net.sf.briar.api.serial.CountingConsumer;
-import net.sf.briar.api.serial.Reader;
-import net.sf.briar.api.serial.StructReader;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.serial.Consumer;
+import org.briarproject.api.serial.CountingConsumer;
+import org.briarproject.api.serial.Reader;
+import org.briarproject.api.serial.StructReader;
 
 class SubscriptionUpdateReader implements StructReader<SubscriptionUpdate> {
 
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java b/briar-core/src/org/briarproject/messaging/duplex/DuplexConnection.java
similarity index 91%
rename from briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
rename to briar-core/src/org/briarproject/messaging/duplex/DuplexConnection.java
index 2b20048fca..acb076e73a 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java
+++ b/briar-core/src/org/briarproject/messaging/duplex/DuplexConnection.java
@@ -1,8 +1,8 @@
-package net.sf.briar.messaging.duplex;
+package org.briarproject.messaging.duplex;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -15,48 +15,48 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.event.ContactRemovedEvent;
-import net.sf.briar.api.event.Event;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.LocalSubscriptionsUpdatedEvent;
-import net.sf.briar.api.event.LocalTransportsUpdatedEvent;
-import net.sf.briar.api.event.MessageAddedEvent;
-import net.sf.briar.api.event.MessageExpiredEvent;
-import net.sf.briar.api.event.MessageRequestedEvent;
-import net.sf.briar.api.event.MessageToAckEvent;
-import net.sf.briar.api.event.MessageToRequestEvent;
-import net.sf.briar.api.event.RemoteRetentionTimeUpdatedEvent;
-import net.sf.briar.api.event.RemoteSubscriptionsUpdatedEvent;
-import net.sf.briar.api.event.RemoteTransportsUpdatedEvent;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.Offer;
-import net.sf.briar.api.messaging.PacketReader;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.PacketWriter;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.messaging.Request;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionReader;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.api.transport.ConnectionWriter;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.event.ContactRemovedEvent;
+import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.LocalSubscriptionsUpdatedEvent;
+import org.briarproject.api.event.LocalTransportsUpdatedEvent;
+import org.briarproject.api.event.MessageAddedEvent;
+import org.briarproject.api.event.MessageExpiredEvent;
+import org.briarproject.api.event.MessageRequestedEvent;
+import org.briarproject.api.event.MessageToAckEvent;
+import org.briarproject.api.event.MessageToRequestEvent;
+import org.briarproject.api.event.RemoteRetentionTimeUpdatedEvent;
+import org.briarproject.api.event.RemoteSubscriptionsUpdatedEvent;
+import org.briarproject.api.event.RemoteTransportsUpdatedEvent;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.Offer;
+import org.briarproject.api.messaging.PacketReader;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.PacketWriter;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.messaging.Request;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.messaging.UnverifiedMessage;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionReader;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriterFactory;
+import org.briarproject.util.ByteUtils;
 
 abstract class DuplexConnection implements EventListener {
 
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java b/briar-core/src/org/briarproject/messaging/duplex/DuplexConnectionFactoryImpl.java
similarity index 77%
rename from briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java
rename to briar-core/src/org/briarproject/messaging/duplex/DuplexConnectionFactoryImpl.java
index 22d2153cf2..cc512516d7 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java
+++ b/briar-core/src/org/briarproject/messaging/duplex/DuplexConnectionFactoryImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.messaging.duplex;
+package org.briarproject.messaging.duplex;
 
 import static java.util.logging.Level.WARNING;
 
@@ -7,21 +7,21 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoExecutor;
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.messaging.duplex.DuplexConnectionFactory;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.CryptoExecutor;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DatabaseExecutor;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.messaging.duplex.DuplexConnectionFactory;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.api.transport.ConnectionWriterFactory;
 
 class DuplexConnectionFactoryImpl implements DuplexConnectionFactory {
 
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexMessagingModule.java b/briar-core/src/org/briarproject/messaging/duplex/DuplexMessagingModule.java
similarity index 70%
rename from briar-core/src/net/sf/briar/messaging/duplex/DuplexMessagingModule.java
rename to briar-core/src/org/briarproject/messaging/duplex/DuplexMessagingModule.java
index 17f4a5b1a2..7f3996f346 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexMessagingModule.java
+++ b/briar-core/src/org/briarproject/messaging/duplex/DuplexMessagingModule.java
@@ -1,8 +1,8 @@
-package net.sf.briar.messaging.duplex;
+package org.briarproject.messaging.duplex;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.messaging.duplex.DuplexConnectionFactory;
+import org.briarproject.api.messaging.duplex.DuplexConnectionFactory;
 
 import com.google.inject.AbstractModule;
 
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java b/briar-core/src/org/briarproject/messaging/duplex/IncomingDuplexConnection.java
similarity index 66%
rename from briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
rename to briar-core/src/org/briarproject/messaging/duplex/IncomingDuplexConnection.java
index 03619f6bf7..513c1821d2 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/IncomingDuplexConnection.java
+++ b/briar-core/src/org/briarproject/messaging/duplex/IncomingDuplexConnection.java
@@ -1,21 +1,21 @@
-package net.sf.briar.messaging.duplex;
+package org.briarproject.messaging.duplex;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionReader;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.api.transport.ConnectionWriter;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionReader;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriterFactory;
 
 class IncomingDuplexConnection extends DuplexConnection {
 
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java b/briar-core/src/org/briarproject/messaging/duplex/OutgoingDuplexConnection.java
similarity index 66%
rename from briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
rename to briar-core/src/org/briarproject/messaging/duplex/OutgoingDuplexConnection.java
index 9a3a86cfd9..8a3fadb0e8 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/OutgoingDuplexConnection.java
+++ b/briar-core/src/org/briarproject/messaging/duplex/OutgoingDuplexConnection.java
@@ -1,21 +1,21 @@
-package net.sf.briar.messaging.duplex;
+package org.briarproject.messaging.duplex;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionReader;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.api.transport.ConnectionWriter;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionReader;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriterFactory;
 
 class OutgoingDuplexConnection extends DuplexConnection {
 
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java b/briar-core/src/org/briarproject/messaging/simplex/IncomingSimplexConnection.java
similarity index 84%
rename from briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
rename to briar-core/src/org/briarproject/messaging/simplex/IncomingSimplexConnection.java
index 64b52dd54c..ac997916f8 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/IncomingSimplexConnection.java
+++ b/briar-core/src/org/briarproject/messaging/simplex/IncomingSimplexConnection.java
@@ -1,4 +1,4 @@
-package net.sf.briar.messaging.simplex;
+package org.briarproject.messaging.simplex;
 
 import static java.util.logging.Level.WARNING;
 
@@ -8,29 +8,29 @@ import java.security.GeneralSecurityException;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.PacketReader;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionReader;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.PacketReader;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.messaging.UnverifiedMessage;
+import org.briarproject.api.plugins.simplex.SimplexTransportReader;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionReader;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.util.ByteUtils;
 
 class IncomingSimplexConnection {
 
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/OutgoingSimplexConnection.java b/briar-core/src/org/briarproject/messaging/simplex/OutgoingSimplexConnection.java
similarity index 84%
rename from briar-core/src/net/sf/briar/messaging/simplex/OutgoingSimplexConnection.java
rename to briar-core/src/org/briarproject/messaging/simplex/OutgoingSimplexConnection.java
index 8fc9c2cedd..a2c2e14e9b 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/OutgoingSimplexConnection.java
+++ b/briar-core/src/org/briarproject/messaging/simplex/OutgoingSimplexConnection.java
@@ -1,7 +1,7 @@
-package net.sf.briar.messaging.simplex;
+package org.briarproject.messaging.simplex;
 
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
 
 import java.io.EOFException;
 import java.io.IOException;
@@ -9,25 +9,25 @@ import java.io.OutputStream;
 import java.util.Collection;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.PacketWriter;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.api.transport.ConnectionWriter;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.PacketWriter;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriterFactory;
+import org.briarproject.util.ByteUtils;
 
 class OutgoingSimplexConnection {
 
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java b/briar-core/src/org/briarproject/messaging/simplex/SimplexConnectionFactoryImpl.java
similarity index 73%
rename from briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java
rename to briar-core/src/org/briarproject/messaging/simplex/SimplexConnectionFactoryImpl.java
index 441a0a46e8..30645297f4 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java
+++ b/briar-core/src/org/briarproject/messaging/simplex/SimplexConnectionFactoryImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.messaging.simplex;
+package org.briarproject.messaging.simplex;
 
 import static java.util.logging.Level.WARNING;
 
@@ -7,22 +7,22 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoExecutor;
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.messaging.simplex.SimplexConnectionFactory;
-import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.CryptoExecutor;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DatabaseExecutor;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.messaging.simplex.SimplexConnectionFactory;
+import org.briarproject.api.plugins.simplex.SimplexTransportReader;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.api.transport.ConnectionWriterFactory;
 
 class SimplexConnectionFactoryImpl implements SimplexConnectionFactory {
 
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/SimplexMessagingModule.java b/briar-core/src/org/briarproject/messaging/simplex/SimplexMessagingModule.java
similarity index 70%
rename from briar-core/src/net/sf/briar/messaging/simplex/SimplexMessagingModule.java
rename to briar-core/src/org/briarproject/messaging/simplex/SimplexMessagingModule.java
index eec9b495d8..3bf9ffe85e 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/SimplexMessagingModule.java
+++ b/briar-core/src/org/briarproject/messaging/simplex/SimplexMessagingModule.java
@@ -1,8 +1,8 @@
-package net.sf.briar.messaging.simplex;
+package org.briarproject.messaging.simplex;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.messaging.simplex.SimplexConnectionFactory;
+import org.briarproject.api.messaging.simplex.SimplexConnectionFactory;
 
 import com.google.inject.AbstractModule;
 
diff --git a/briar-core/src/net/sf/briar/plugins/PluginManagerImpl.java b/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java
similarity index 88%
rename from briar-core/src/net/sf/briar/plugins/PluginManagerImpl.java
rename to briar-core/src/org/briarproject/plugins/PluginManagerImpl.java
index c4d11978f7..b0375dad7e 100644
--- a/briar-core/src/net/sf/briar/plugins/PluginManagerImpl.java
+++ b/briar-core/src/org/briarproject/plugins/PluginManagerImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -16,29 +16,29 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.plugins.Plugin;
-import net.sf.briar.api.plugins.PluginCallback;
-import net.sf.briar.api.plugins.PluginExecutor;
-import net.sf.briar.api.plugins.PluginManager;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexPluginConfig;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.plugins.simplex.SimplexPlugin;
-import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
-import net.sf.briar.api.plugins.simplex.SimplexPluginConfig;
-import net.sf.briar.api.plugins.simplex.SimplexPluginFactory;
-import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
-import net.sf.briar.api.transport.ConnectionDispatcher;
-import net.sf.briar.api.ui.UiCallback;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.plugins.Plugin;
+import org.briarproject.api.plugins.PluginCallback;
+import org.briarproject.api.plugins.PluginExecutor;
+import org.briarproject.api.plugins.PluginManager;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexPluginConfig;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.plugins.simplex.SimplexPlugin;
+import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
+import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
+import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
+import org.briarproject.api.plugins.simplex.SimplexTransportReader;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.transport.ConnectionDispatcher;
+import org.briarproject.api.ui.UiCallback;
 
 // FIXME: Don't make alien calls with a lock held (that includes waiting on a
 // latch that depends on an alien call)
diff --git a/briar-core/src/net/sf/briar/plugins/PluginsModule.java b/briar-core/src/org/briarproject/plugins/PluginsModule.java
similarity index 88%
rename from briar-core/src/net/sf/briar/plugins/PluginsModule.java
rename to briar-core/src/org/briarproject/plugins/PluginsModule.java
index defa2ac78d..f905d2c324 100644
--- a/briar-core/src/net/sf/briar/plugins/PluginsModule.java
+++ b/briar-core/src/org/briarproject/plugins/PluginsModule.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -11,9 +11,9 @@ import java.util.concurrent.ThreadPoolExecutor;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.plugins.PluginExecutor;
-import net.sf.briar.api.plugins.PluginManager;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.plugins.PluginExecutor;
+import org.briarproject.api.plugins.PluginManager;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
diff --git a/briar-core/src/net/sf/briar/plugins/Poller.java b/briar-core/src/org/briarproject/plugins/Poller.java
similarity index 73%
rename from briar-core/src/net/sf/briar/plugins/Poller.java
rename to briar-core/src/org/briarproject/plugins/Poller.java
index d5eb381ba6..6a0d1bb3b6 100644
--- a/briar-core/src/net/sf/briar/plugins/Poller.java
+++ b/briar-core/src/org/briarproject/plugins/Poller.java
@@ -1,8 +1,8 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
 import java.util.Collection;
 
-import net.sf.briar.api.plugins.Plugin;
+import org.briarproject.api.plugins.Plugin;
 
 interface Poller {
 
diff --git a/briar-core/src/net/sf/briar/plugins/PollerImpl.java b/briar-core/src/org/briarproject/plugins/PollerImpl.java
similarity index 91%
rename from briar-core/src/net/sf/briar/plugins/PollerImpl.java
rename to briar-core/src/org/briarproject/plugins/PollerImpl.java
index 1a9bc63338..2f7ac98e27 100644
--- a/briar-core/src/net/sf/briar/plugins/PollerImpl.java
+++ b/briar-core/src/org/briarproject/plugins/PollerImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
 import static java.util.logging.Level.INFO;
 
@@ -10,11 +10,11 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.plugins.Plugin;
-import net.sf.briar.api.plugins.PluginExecutor;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.transport.ConnectionRegistry;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.plugins.Plugin;
+import org.briarproject.api.plugins.PluginExecutor;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.transport.ConnectionRegistry;
 
 class PollerImpl implements Poller, Runnable {
 
diff --git a/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java b/briar-core/src/org/briarproject/plugins/file/FilePlugin.java
similarity index 86%
rename from briar-core/src/net/sf/briar/plugins/file/FilePlugin.java
rename to briar-core/src/org/briarproject/plugins/file/FilePlugin.java
index f770b78a14..6b286559aa 100644
--- a/briar-core/src/net/sf/briar/plugins/file/FilePlugin.java
+++ b/briar-core/src/org/briarproject/plugins/file/FilePlugin.java
@@ -1,7 +1,7 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -12,12 +12,12 @@ import java.util.Collection;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.plugins.simplex.SimplexPlugin;
-import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
-import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
-import net.sf.briar.api.system.FileUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.plugins.simplex.SimplexPlugin;
+import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
+import org.briarproject.api.plugins.simplex.SimplexTransportReader;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.system.FileUtils;
 
 public abstract class FilePlugin implements SimplexPlugin {
 
diff --git a/briar-core/src/net/sf/briar/plugins/file/FileTransportReader.java b/briar-core/src/org/briarproject/plugins/file/FileTransportReader.java
similarity index 89%
rename from briar-core/src/net/sf/briar/plugins/file/FileTransportReader.java
rename to briar-core/src/org/briarproject/plugins/file/FileTransportReader.java
index 77d48699f5..0a97e56732 100644
--- a/briar-core/src/net/sf/briar/plugins/file/FileTransportReader.java
+++ b/briar-core/src/org/briarproject/plugins/file/FileTransportReader.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import static java.util.logging.Level.WARNING;
 
@@ -7,7 +7,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
+import org.briarproject.api.plugins.simplex.SimplexTransportReader;
 
 class FileTransportReader implements SimplexTransportReader {
 
diff --git a/briar-core/src/net/sf/briar/plugins/file/FileTransportWriter.java b/briar-core/src/org/briarproject/plugins/file/FileTransportWriter.java
similarity index 91%
rename from briar-core/src/net/sf/briar/plugins/file/FileTransportWriter.java
rename to briar-core/src/org/briarproject/plugins/file/FileTransportWriter.java
index 921d748ad4..ca6771e20e 100644
--- a/briar-core/src/net/sf/briar/plugins/file/FileTransportWriter.java
+++ b/briar-core/src/org/briarproject/plugins/file/FileTransportWriter.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import static java.util.logging.Level.WARNING;
 
@@ -7,7 +7,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
 
 class FileTransportWriter implements SimplexTransportWriter {
 
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
similarity index 95%
rename from briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
rename to briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
index 90f91a122e..a8f3006b9c 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPlugin.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -21,15 +21,15 @@ import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.util.ByteUtils;
-import net.sf.briar.util.LatchedReference;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.system.Clock;
+import org.briarproject.util.ByteUtils;
+import org.briarproject.util.LatchedReference;
+import org.briarproject.util.StringUtils;
 
 /** A socket plugin that supports exchanging invitations over a LAN. */
 class LanTcpPlugin extends TcpPlugin {
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java
similarity index 67%
rename from briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java
rename to briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java
index 475e4fbf83..502418457e 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPluginFactory.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/LanTcpPluginFactory.java
@@ -1,13 +1,13 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
 
 public class LanTcpPluginFactory implements DuplexPluginFactory {
 
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/MappingResult.java b/briar-core/src/org/briarproject/plugins/tcp/MappingResult.java
similarity index 94%
rename from briar-core/src/net/sf/briar/plugins/tcp/MappingResult.java
rename to briar-core/src/org/briarproject/plugins/tcp/MappingResult.java
index e598d0c2a7..3e86a9668a 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/MappingResult.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/MappingResult.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/PortMapper.java b/briar-core/src/org/briarproject/plugins/tcp/PortMapper.java
similarity index 60%
rename from briar-core/src/net/sf/briar/plugins/tcp/PortMapper.java
rename to briar-core/src/org/briarproject/plugins/tcp/PortMapper.java
index d7ad7d6fba..292d37a9d8 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/PortMapper.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/PortMapper.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 interface PortMapper {
 
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/PortMapperImpl.java b/briar-core/src/org/briarproject/plugins/tcp/PortMapperImpl.java
similarity index 96%
rename from briar-core/src/net/sf/briar/plugins/tcp/PortMapperImpl.java
rename to briar-core/src/org/briarproject/plugins/tcp/PortMapperImpl.java
index ac001f079d..648fbaa5ee 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/PortMapperImpl.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/PortMapperImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -10,7 +10,7 @@ import java.util.logging.Logger;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import net.sf.briar.api.lifecycle.ShutdownManager;
+import org.briarproject.api.lifecycle.ShutdownManager;
 
 import org.bitlet.weupnp.GatewayDevice;
 import org.bitlet.weupnp.GatewayDiscover;
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java b/briar-core/src/org/briarproject/plugins/tcp/TcpPlugin.java
similarity index 93%
rename from briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
rename to briar-core/src/org/briarproject/plugins/tcp/TcpPlugin.java
index 49eb023e2f..42c468bc2c 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/TcpPlugin.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -16,12 +16,12 @@ import java.util.Map;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.util.StringUtils;
 
 abstract class TcpPlugin implements DuplexPlugin {
 
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/TcpTransportConnection.java b/briar-core/src/org/briarproject/plugins/tcp/TcpTransportConnection.java
similarity index 84%
rename from briar-core/src/net/sf/briar/plugins/tcp/TcpTransportConnection.java
rename to briar-core/src/org/briarproject/plugins/tcp/TcpTransportConnection.java
index 9cc129b503..cb97a55706 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/TcpTransportConnection.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/TcpTransportConnection.java
@@ -1,12 +1,12 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.Socket;
 
-import net.sf.briar.api.plugins.Plugin;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.plugins.Plugin;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
 
 class TcpTransportConnection implements DuplexTransportConnection {
 
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java
similarity index 91%
rename from briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
rename to briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java
index 45e145e5f4..c0bb235486 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPlugin.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import static java.util.logging.Level.WARNING;
 
@@ -15,12 +15,12 @@ import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.util.StringUtils;
 
 class WanTcpPlugin extends TcpPlugin {
 
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java
similarity index 72%
rename from briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java
rename to briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java
index 7540f20971..a6de801731 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPluginFactory.java
+++ b/briar-core/src/org/briarproject/plugins/tcp/WanTcpPluginFactory.java
@@ -1,12 +1,12 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
 
 public class WanTcpPluginFactory implements DuplexPluginFactory {
 
diff --git a/briar-core/src/net/sf/briar/reliability/Ack.java b/briar-core/src/org/briarproject/reliability/Ack.java
similarity index 84%
rename from briar-core/src/net/sf/briar/reliability/Ack.java
rename to briar-core/src/org/briarproject/reliability/Ack.java
index 1d763528f2..adff804c94 100644
--- a/briar-core/src/net/sf/briar/reliability/Ack.java
+++ b/briar-core/src/org/briarproject/reliability/Ack.java
@@ -1,6 +1,6 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.util.ByteUtils;
 
 class Ack extends Frame {
 
diff --git a/briar-core/src/net/sf/briar/reliability/Crc32.java b/briar-core/src/org/briarproject/reliability/Crc32.java
similarity index 93%
rename from briar-core/src/net/sf/briar/reliability/Crc32.java
rename to briar-core/src/org/briarproject/reliability/Crc32.java
index 22e4540728..59db66df73 100644
--- a/briar-core/src/net/sf/briar/reliability/Crc32.java
+++ b/briar-core/src/org/briarproject/reliability/Crc32.java
@@ -1,4 +1,4 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 class Crc32 {
 
diff --git a/briar-core/src/net/sf/briar/reliability/Data.java b/briar-core/src/org/briarproject/reliability/Data.java
similarity index 94%
rename from briar-core/src/net/sf/briar/reliability/Data.java
rename to briar-core/src/org/briarproject/reliability/Data.java
index 63f075dff6..27c8992da0 100644
--- a/briar-core/src/net/sf/briar/reliability/Data.java
+++ b/briar-core/src/org/briarproject/reliability/Data.java
@@ -1,4 +1,4 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 class Data extends Frame {
 
diff --git a/briar-core/src/net/sf/briar/reliability/Frame.java b/briar-core/src/org/briarproject/reliability/Frame.java
similarity index 92%
rename from briar-core/src/net/sf/briar/reliability/Frame.java
rename to briar-core/src/org/briarproject/reliability/Frame.java
index 2cbc117004..fa6256f8de 100644
--- a/briar-core/src/net/sf/briar/reliability/Frame.java
+++ b/briar-core/src/org/briarproject/reliability/Frame.java
@@ -1,6 +1,6 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.util.ByteUtils;
 
 abstract class Frame {
 
diff --git a/briar-core/src/net/sf/briar/reliability/Receiver.java b/briar-core/src/org/briarproject/reliability/Receiver.java
similarity index 96%
rename from briar-core/src/net/sf/briar/reliability/Receiver.java
rename to briar-core/src/org/briarproject/reliability/Receiver.java
index 7874d49208..be52d7f3b3 100644
--- a/briar-core/src/net/sf/briar/reliability/Receiver.java
+++ b/briar-core/src/org/briarproject/reliability/Receiver.java
@@ -1,4 +1,4 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 import java.io.IOException;
 import java.util.Comparator;
@@ -6,8 +6,8 @@ import java.util.Iterator;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
-import net.sf.briar.api.reliability.ReadHandler;
-import net.sf.briar.api.system.Clock;
+import org.briarproject.api.reliability.ReadHandler;
+import org.briarproject.api.system.Clock;
 
 class Receiver implements ReadHandler {
 
diff --git a/briar-core/src/net/sf/briar/reliability/ReceiverInputStream.java b/briar-core/src/org/briarproject/reliability/ReceiverInputStream.java
similarity index 97%
rename from briar-core/src/net/sf/briar/reliability/ReceiverInputStream.java
rename to briar-core/src/org/briarproject/reliability/ReceiverInputStream.java
index 27b26c311c..8e10d73be0 100644
--- a/briar-core/src/net/sf/briar/reliability/ReceiverInputStream.java
+++ b/briar-core/src/org/briarproject/reliability/ReceiverInputStream.java
@@ -1,4 +1,4 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java b/briar-core/src/org/briarproject/reliability/ReliabilityLayerFactoryImpl.java
similarity index 57%
rename from briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java
rename to briar-core/src/org/briarproject/reliability/ReliabilityLayerFactoryImpl.java
index 6554536c51..a71e42672f 100644
--- a/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java
+++ b/briar-core/src/org/briarproject/reliability/ReliabilityLayerFactoryImpl.java
@@ -1,15 +1,15 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 import java.util.concurrent.Executor;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.reliability.ReliabilityExecutor;
-import net.sf.briar.api.reliability.ReliabilityLayer;
-import net.sf.briar.api.reliability.ReliabilityLayerFactory;
-import net.sf.briar.api.reliability.WriteHandler;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
+import org.briarproject.api.reliability.ReliabilityExecutor;
+import org.briarproject.api.reliability.ReliabilityLayer;
+import org.briarproject.api.reliability.ReliabilityLayerFactory;
+import org.briarproject.api.reliability.WriteHandler;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
 
 class ReliabilityLayerFactoryImpl implements ReliabilityLayerFactory {
 
diff --git a/briar-core/src/net/sf/briar/reliability/ReliabilityLayerImpl.java b/briar-core/src/org/briarproject/reliability/ReliabilityLayerImpl.java
similarity index 94%
rename from briar-core/src/net/sf/briar/reliability/ReliabilityLayerImpl.java
rename to briar-core/src/org/briarproject/reliability/ReliabilityLayerImpl.java
index 518a1c8538..4f850e4fa8 100644
--- a/briar-core/src/net/sf/briar/reliability/ReliabilityLayerImpl.java
+++ b/briar-core/src/org/briarproject/reliability/ReliabilityLayerImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.logging.Level.WARNING;
@@ -11,9 +11,9 @@ import java.util.concurrent.Executor;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.reliability.ReliabilityLayer;
-import net.sf.briar.api.reliability.WriteHandler;
-import net.sf.briar.api.system.Clock;
+import org.briarproject.api.reliability.ReliabilityLayer;
+import org.briarproject.api.reliability.WriteHandler;
+import org.briarproject.api.system.Clock;
 
 class ReliabilityLayerImpl implements ReliabilityLayer, WriteHandler {
 
diff --git a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java b/briar-core/src/org/briarproject/reliability/ReliabilityModule.java
similarity index 85%
rename from briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
rename to briar-core/src/org/briarproject/reliability/ReliabilityModule.java
index c80897ba33..691b52cb79 100644
--- a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
+++ b/briar-core/src/org/briarproject/reliability/ReliabilityModule.java
@@ -1,4 +1,4 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -11,9 +11,9 @@ import java.util.concurrent.ThreadPoolExecutor;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.reliability.ReliabilityExecutor;
-import net.sf.briar.api.reliability.ReliabilityLayerFactory;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.reliability.ReliabilityExecutor;
+import org.briarproject.api.reliability.ReliabilityLayerFactory;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
diff --git a/briar-core/src/net/sf/briar/reliability/Sender.java b/briar-core/src/org/briarproject/reliability/Sender.java
similarity index 97%
rename from briar-core/src/net/sf/briar/reliability/Sender.java
rename to briar-core/src/org/briarproject/reliability/Sender.java
index 7d767f7b16..a77ae3d051 100644
--- a/briar-core/src/net/sf/briar/reliability/Sender.java
+++ b/briar-core/src/org/briarproject/reliability/Sender.java
@@ -1,4 +1,4 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -6,8 +6,8 @@ import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 
-import net.sf.briar.api.reliability.WriteHandler;
-import net.sf.briar.api.system.Clock;
+import org.briarproject.api.reliability.WriteHandler;
+import org.briarproject.api.system.Clock;
 
 class Sender {
 
diff --git a/briar-core/src/net/sf/briar/reliability/SenderOutputStream.java b/briar-core/src/org/briarproject/reliability/SenderOutputStream.java
similarity index 98%
rename from briar-core/src/net/sf/briar/reliability/SenderOutputStream.java
rename to briar-core/src/org/briarproject/reliability/SenderOutputStream.java
index 1e1e079904..1cff818821 100644
--- a/briar-core/src/net/sf/briar/reliability/SenderOutputStream.java
+++ b/briar-core/src/org/briarproject/reliability/SenderOutputStream.java
@@ -1,4 +1,4 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 import java.io.IOException;
 import java.io.OutputStream;
diff --git a/briar-core/src/net/sf/briar/reliability/SlipDecoder.java b/briar-core/src/org/briarproject/reliability/SlipDecoder.java
similarity index 94%
rename from briar-core/src/net/sf/briar/reliability/SlipDecoder.java
rename to briar-core/src/org/briarproject/reliability/SlipDecoder.java
index 3d210139b4..bd6f530f02 100644
--- a/briar-core/src/net/sf/briar/reliability/SlipDecoder.java
+++ b/briar-core/src/org/briarproject/reliability/SlipDecoder.java
@@ -1,8 +1,8 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 import java.io.IOException;
 
-import net.sf.briar.api.reliability.ReadHandler;
+import org.briarproject.api.reliability.ReadHandler;
 
 class SlipDecoder implements ReadHandler {
 
diff --git a/briar-core/src/net/sf/briar/reliability/SlipEncoder.java b/briar-core/src/org/briarproject/reliability/SlipEncoder.java
similarity index 90%
rename from briar-core/src/net/sf/briar/reliability/SlipEncoder.java
rename to briar-core/src/org/briarproject/reliability/SlipEncoder.java
index 3cc6d6474c..2cb2959e58 100644
--- a/briar-core/src/net/sf/briar/reliability/SlipEncoder.java
+++ b/briar-core/src/org/briarproject/reliability/SlipEncoder.java
@@ -1,8 +1,8 @@
-package net.sf.briar.reliability;
+package org.briarproject.reliability;
 
 import java.io.IOException;
 
-import net.sf.briar.api.reliability.WriteHandler;
+import org.briarproject.api.reliability.WriteHandler;
 
 class SlipEncoder implements WriteHandler {
 
diff --git a/briar-core/src/net/sf/briar/serial/ReaderFactoryImpl.java b/briar-core/src/org/briarproject/serial/ReaderFactoryImpl.java
similarity index 56%
rename from briar-core/src/net/sf/briar/serial/ReaderFactoryImpl.java
rename to briar-core/src/org/briarproject/serial/ReaderFactoryImpl.java
index dd2a1a4da6..8c74509402 100644
--- a/briar-core/src/net/sf/briar/serial/ReaderFactoryImpl.java
+++ b/briar-core/src/org/briarproject/serial/ReaderFactoryImpl.java
@@ -1,9 +1,9 @@
-package net.sf.briar.serial;
+package org.briarproject.serial;
 
 import java.io.InputStream;
 
-import net.sf.briar.api.serial.Reader;
-import net.sf.briar.api.serial.ReaderFactory;
+import org.briarproject.api.serial.Reader;
+import org.briarproject.api.serial.ReaderFactory;
 
 class ReaderFactoryImpl implements ReaderFactory {
 
diff --git a/briar-core/src/net/sf/briar/serial/ReaderImpl.java b/briar-core/src/org/briarproject/serial/ReaderImpl.java
similarity index 98%
rename from briar-core/src/net/sf/briar/serial/ReaderImpl.java
rename to briar-core/src/org/briarproject/serial/ReaderImpl.java
index 3206bbfc48..344d2380fe 100644
--- a/briar-core/src/net/sf/briar/serial/ReaderImpl.java
+++ b/briar-core/src/org/briarproject/serial/ReaderImpl.java
@@ -1,13 +1,13 @@
-package net.sf.briar.serial;
+package org.briarproject.serial;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.serial.Consumer;
-import net.sf.briar.api.serial.Reader;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.serial.Consumer;
+import org.briarproject.api.serial.Reader;
 
 // This class is not thread-safe
 class ReaderImpl implements Reader {
diff --git a/briar-core/src/net/sf/briar/serial/SerialComponentImpl.java b/briar-core/src/org/briarproject/serial/SerialComponentImpl.java
similarity index 85%
rename from briar-core/src/net/sf/briar/serial/SerialComponentImpl.java
rename to briar-core/src/org/briarproject/serial/SerialComponentImpl.java
index b3c5ba798a..837eb3787e 100644
--- a/briar-core/src/net/sf/briar/serial/SerialComponentImpl.java
+++ b/briar-core/src/org/briarproject/serial/SerialComponentImpl.java
@@ -1,7 +1,7 @@
-package net.sf.briar.serial;
+package org.briarproject.serial;
 
-import net.sf.briar.api.UniqueId;
-import net.sf.briar.api.serial.SerialComponent;
+import org.briarproject.api.UniqueId;
+import org.briarproject.api.serial.SerialComponent;
 
 class SerialComponentImpl implements SerialComponent {
 
diff --git a/briar-core/src/net/sf/briar/serial/SerialModule.java b/briar-core/src/org/briarproject/serial/SerialModule.java
similarity index 66%
rename from briar-core/src/net/sf/briar/serial/SerialModule.java
rename to briar-core/src/org/briarproject/serial/SerialModule.java
index 0c512bd15a..ca4c87480b 100644
--- a/briar-core/src/net/sf/briar/serial/SerialModule.java
+++ b/briar-core/src/org/briarproject/serial/SerialModule.java
@@ -1,10 +1,10 @@
-package net.sf.briar.serial;
+package org.briarproject.serial;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.serial.ReaderFactory;
-import net.sf.briar.api.serial.SerialComponent;
-import net.sf.briar.api.serial.WriterFactory;
+import org.briarproject.api.serial.ReaderFactory;
+import org.briarproject.api.serial.SerialComponent;
+import org.briarproject.api.serial.WriterFactory;
 
 import com.google.inject.AbstractModule;
 
diff --git a/briar-core/src/net/sf/briar/serial/Tag.java b/briar-core/src/org/briarproject/serial/Tag.java
similarity index 92%
rename from briar-core/src/net/sf/briar/serial/Tag.java
rename to briar-core/src/org/briarproject/serial/Tag.java
index 67b6802d3d..81597d6bab 100644
--- a/briar-core/src/net/sf/briar/serial/Tag.java
+++ b/briar-core/src/org/briarproject/serial/Tag.java
@@ -1,4 +1,4 @@
-package net.sf.briar.serial;
+package org.briarproject.serial;
 
 interface Tag {
 
diff --git a/briar-core/src/net/sf/briar/serial/WriterFactoryImpl.java b/briar-core/src/org/briarproject/serial/WriterFactoryImpl.java
similarity index 56%
rename from briar-core/src/net/sf/briar/serial/WriterFactoryImpl.java
rename to briar-core/src/org/briarproject/serial/WriterFactoryImpl.java
index 63563fdf34..f3aaf738d8 100644
--- a/briar-core/src/net/sf/briar/serial/WriterFactoryImpl.java
+++ b/briar-core/src/org/briarproject/serial/WriterFactoryImpl.java
@@ -1,9 +1,9 @@
-package net.sf.briar.serial;
+package org.briarproject.serial;
 
 import java.io.OutputStream;
 
-import net.sf.briar.api.serial.Writer;
-import net.sf.briar.api.serial.WriterFactory;
+import org.briarproject.api.serial.Writer;
+import org.briarproject.api.serial.WriterFactory;
 
 class WriterFactoryImpl implements WriterFactory {
 
diff --git a/briar-core/src/net/sf/briar/serial/WriterImpl.java b/briar-core/src/org/briarproject/serial/WriterImpl.java
similarity index 96%
rename from briar-core/src/net/sf/briar/serial/WriterImpl.java
rename to briar-core/src/org/briarproject/serial/WriterImpl.java
index 97635a5abc..13a0e8ce95 100644
--- a/briar-core/src/net/sf/briar/serial/WriterImpl.java
+++ b/briar-core/src/org/briarproject/serial/WriterImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.serial;
+package org.briarproject.serial;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -8,9 +8,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import net.sf.briar.api.Bytes;
-import net.sf.briar.api.serial.Consumer;
-import net.sf.briar.api.serial.Writer;
+import org.briarproject.api.Bytes;
+import org.briarproject.api.serial.Consumer;
+import org.briarproject.api.serial.Writer;
 
 // This class is not thread-safe
 class WriterImpl implements Writer {
diff --git a/briar-core/src/org/briarproject/system/SystemModule.java b/briar-core/src/org/briarproject/system/SystemModule.java
new file mode 100644
index 0000000000..db0b92cb54
--- /dev/null
+++ b/briar-core/src/org/briarproject/system/SystemModule.java
@@ -0,0 +1,16 @@
+package org.briarproject.system;
+
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
+import org.briarproject.api.system.SystemTimer;
+import org.briarproject.api.system.Timer;
+
+import com.google.inject.AbstractModule;
+
+public class SystemModule extends AbstractModule {
+
+	protected void configure() {
+		bind(Clock.class).to(SystemClock.class);
+		bind(Timer.class).to(SystemTimer.class);
+	}
+}
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionDispatcherImpl.java b/briar-core/src/org/briarproject/transport/ConnectionDispatcherImpl.java
similarity index 83%
rename from briar-core/src/net/sf/briar/transport/ConnectionDispatcherImpl.java
rename to briar-core/src/org/briarproject/transport/ConnectionDispatcherImpl.java
index 45ec4834c8..f37495e9f3 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionDispatcherImpl.java
+++ b/briar-core/src/org/briarproject/transport/ConnectionDispatcherImpl.java
@@ -1,7 +1,7 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 
 import java.io.EOFException;
 import java.io.IOException;
@@ -11,18 +11,18 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.messaging.duplex.DuplexConnectionFactory;
-import net.sf.briar.api.messaging.simplex.SimplexConnectionFactory;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionDispatcher;
-import net.sf.briar.api.transport.ConnectionRecogniser;
-import net.sf.briar.api.transport.IncomingConnectionExecutor;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.messaging.duplex.DuplexConnectionFactory;
+import org.briarproject.api.messaging.simplex.SimplexConnectionFactory;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.plugins.simplex.SimplexTransportReader;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionDispatcher;
+import org.briarproject.api.transport.ConnectionRecogniser;
+import org.briarproject.api.transport.IncomingConnectionExecutor;
 
 class ConnectionDispatcherImpl implements ConnectionDispatcher {
 
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionReaderFactoryImpl.java b/briar-core/src/org/briarproject/transport/ConnectionReaderFactoryImpl.java
similarity index 80%
rename from briar-core/src/net/sf/briar/transport/ConnectionReaderFactoryImpl.java
rename to briar-core/src/org/briarproject/transport/ConnectionReaderFactoryImpl.java
index 30c1824ccd..fca67c69e2 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionReaderFactoryImpl.java
+++ b/briar-core/src/org/briarproject/transport/ConnectionReaderFactoryImpl.java
@@ -1,14 +1,14 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import java.io.InputStream;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionReader;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionReader;
+import org.briarproject.api.transport.ConnectionReaderFactory;
 
 class ConnectionReaderFactoryImpl implements ConnectionReaderFactory {
 
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionReaderImpl.java b/briar-core/src/org/briarproject/transport/ConnectionReaderImpl.java
similarity index 81%
rename from briar-core/src/net/sf/briar/transport/ConnectionReaderImpl.java
rename to briar-core/src/org/briarproject/transport/ConnectionReaderImpl.java
index e26c8a108d..f1a7e43285 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionReaderImpl.java
+++ b/briar-core/src/org/briarproject/transport/ConnectionReaderImpl.java
@@ -1,12 +1,12 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
 
 import java.io.IOException;
 import java.io.InputStream;
 
-import net.sf.briar.api.transport.ConnectionReader;
+import org.briarproject.api.transport.ConnectionReader;
 
 class ConnectionReaderImpl extends InputStream implements ConnectionReader {
 
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionRecogniserImpl.java b/briar-core/src/org/briarproject/transport/ConnectionRecogniserImpl.java
similarity index 79%
rename from briar-core/src/net/sf/briar/transport/ConnectionRecogniserImpl.java
rename to briar-core/src/org/briarproject/transport/ConnectionRecogniserImpl.java
index 1b5377aca2..421791317a 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionRecogniserImpl.java
+++ b/briar-core/src/org/briarproject/transport/ConnectionRecogniserImpl.java
@@ -1,18 +1,18 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionRecogniser;
-import net.sf.briar.api.transport.TemporarySecret;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionRecogniser;
+import org.briarproject.api.transport.TemporarySecret;
 
 class ConnectionRecogniserImpl implements ConnectionRecogniser {
 
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionRegistryImpl.java b/briar-core/src/org/briarproject/transport/ConnectionRegistryImpl.java
similarity index 93%
rename from briar-core/src/net/sf/briar/transport/ConnectionRegistryImpl.java
rename to briar-core/src/org/briarproject/transport/ConnectionRegistryImpl.java
index 276b296bf0..7bd6e65b14 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionRegistryImpl.java
+++ b/briar-core/src/org/briarproject/transport/ConnectionRegistryImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import static java.util.logging.Level.INFO;
 
@@ -11,10 +11,10 @@ import java.util.Map;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.transport.ConnectionListener;
-import net.sf.briar.api.transport.ConnectionRegistry;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.transport.ConnectionListener;
+import org.briarproject.api.transport.ConnectionRegistry;
 
 class ConnectionRegistryImpl implements ConnectionRegistry {
 
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionWindow.java b/briar-core/src/org/briarproject/transport/ConnectionWindow.java
similarity index 93%
rename from briar-core/src/net/sf/briar/transport/ConnectionWindow.java
rename to briar-core/src/org/briarproject/transport/ConnectionWindow.java
index 3f0a686111..13cdcb5e3a 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionWindow.java
+++ b/briar-core/src/org/briarproject/transport/ConnectionWindow.java
@@ -1,7 +1,7 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.CONNECTION_WINDOW_SIZE;
-import static net.sf.briar.util.ByteUtils.MAX_32_BIT_UNSIGNED;
+import static org.briarproject.api.transport.TransportConstants.CONNECTION_WINDOW_SIZE;
+import static org.briarproject.util.ByteUtils.MAX_32_BIT_UNSIGNED;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionWriterFactoryImpl.java b/briar-core/src/org/briarproject/transport/ConnectionWriterFactoryImpl.java
similarity index 81%
rename from briar-core/src/net/sf/briar/transport/ConnectionWriterFactoryImpl.java
rename to briar-core/src/org/briarproject/transport/ConnectionWriterFactoryImpl.java
index 9b8e174afe..7ad0ec06e3 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionWriterFactoryImpl.java
+++ b/briar-core/src/org/briarproject/transport/ConnectionWriterFactoryImpl.java
@@ -1,16 +1,16 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 
 import java.io.OutputStream;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionWriter;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriterFactory;
 
 class ConnectionWriterFactoryImpl implements ConnectionWriterFactory {
 
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionWriterImpl.java b/briar-core/src/org/briarproject/transport/ConnectionWriterImpl.java
similarity index 88%
rename from briar-core/src/net/sf/briar/transport/ConnectionWriterImpl.java
rename to briar-core/src/org/briarproject/transport/ConnectionWriterImpl.java
index 7b75d36d62..0274b7b392 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionWriterImpl.java
+++ b/briar-core/src/org/briarproject/transport/ConnectionWriterImpl.java
@@ -1,12 +1,12 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
 
 import java.io.IOException;
 import java.io.OutputStream;
 
-import net.sf.briar.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriter;
 
 /**
  * A ConnectionWriter that buffers its input and writes a frame whenever there
diff --git a/briar-core/src/net/sf/briar/transport/FrameEncoder.java b/briar-core/src/org/briarproject/transport/FrameEncoder.java
similarity index 75%
rename from briar-core/src/net/sf/briar/transport/FrameEncoder.java
rename to briar-core/src/org/briarproject/transport/FrameEncoder.java
index 20979c5ad8..53f8994124 100644
--- a/briar-core/src/net/sf/briar/transport/FrameEncoder.java
+++ b/briar-core/src/org/briarproject/transport/FrameEncoder.java
@@ -1,12 +1,12 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.AAD_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.IV_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAX_FRAME_LENGTH;
-import static net.sf.briar.util.ByteUtils.MAX_32_BIT_UNSIGNED;
-import net.sf.briar.util.ByteUtils;
+import static org.briarproject.api.transport.TransportConstants.AAD_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.IV_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAX_FRAME_LENGTH;
+import static org.briarproject.util.ByteUtils.MAX_32_BIT_UNSIGNED;
+import org.briarproject.util.ByteUtils;
 
 class FrameEncoder {
 
diff --git a/briar-core/src/net/sf/briar/transport/FrameReader.java b/briar-core/src/org/briarproject/transport/FrameReader.java
similarity index 87%
rename from briar-core/src/net/sf/briar/transport/FrameReader.java
rename to briar-core/src/org/briarproject/transport/FrameReader.java
index 0a1bad3142..8284c47b8d 100644
--- a/briar-core/src/net/sf/briar/transport/FrameReader.java
+++ b/briar-core/src/org/briarproject/transport/FrameReader.java
@@ -1,4 +1,4 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import java.io.IOException;
 
diff --git a/briar-core/src/net/sf/briar/transport/FrameWriter.java b/briar-core/src/org/briarproject/transport/FrameWriter.java
similarity index 90%
rename from briar-core/src/net/sf/briar/transport/FrameWriter.java
rename to briar-core/src/org/briarproject/transport/FrameWriter.java
index 947e8bf1b7..167ab3430b 100644
--- a/briar-core/src/net/sf/briar/transport/FrameWriter.java
+++ b/briar-core/src/org/briarproject/transport/FrameWriter.java
@@ -1,4 +1,4 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import java.io.IOException;
 
diff --git a/briar-core/src/net/sf/briar/transport/IncomingEncryptionLayer.java b/briar-core/src/org/briarproject/transport/IncomingEncryptionLayer.java
similarity index 82%
rename from briar-core/src/net/sf/briar/transport/IncomingEncryptionLayer.java
rename to briar-core/src/org/briarproject/transport/IncomingEncryptionLayer.java
index 34ac59b205..ba8ca63b91 100644
--- a/briar-core/src/net/sf/briar/transport/IncomingEncryptionLayer.java
+++ b/briar-core/src/org/briarproject/transport/IncomingEncryptionLayer.java
@@ -1,19 +1,19 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import static javax.crypto.Cipher.DECRYPT_MODE;
-import static net.sf.briar.api.transport.TransportConstants.AAD_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.IV_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.AAD_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.IV_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
 
 import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.security.GeneralSecurityException;
 
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.crypto.AuthenticatedCipher;
-import net.sf.briar.api.crypto.SecretKey;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.crypto.AuthenticatedCipher;
+import org.briarproject.api.crypto.SecretKey;
 
 class IncomingEncryptionLayer implements FrameReader {
 
diff --git a/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java b/briar-core/src/org/briarproject/transport/KeyManagerImpl.java
similarity index 93%
rename from briar-core/src/net/sf/briar/transport/KeyManagerImpl.java
rename to briar-core/src/org/briarproject/transport/KeyManagerImpl.java
index f14f7ca906..c117e55247 100644
--- a/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java
+++ b/briar-core/src/org/briarproject/transport/KeyManagerImpl.java
@@ -1,8 +1,8 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
+import static org.briarproject.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -16,24 +16,24 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.event.ContactRemovedEvent;
-import net.sf.briar.api.event.Event;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.TransportAddedEvent;
-import net.sf.briar.api.event.TransportRemovedEvent;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.Timer;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionRecogniser;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.api.transport.TemporarySecret;
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.event.ContactRemovedEvent;
+import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.TransportAddedEvent;
+import org.briarproject.api.event.TransportRemovedEvent;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.Timer;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionRecogniser;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.api.transport.TemporarySecret;
+import org.briarproject.util.ByteUtils;
 
 // FIXME: Don't make alien calls with a lock held
 class KeyManagerImpl extends TimerTask implements KeyManager, EventListener {
diff --git a/briar-core/src/net/sf/briar/transport/OutgoingEncryptionLayer.java b/briar-core/src/org/briarproject/transport/OutgoingEncryptionLayer.java
similarity index 89%
rename from briar-core/src/net/sf/briar/transport/OutgoingEncryptionLayer.java
rename to briar-core/src/org/briarproject/transport/OutgoingEncryptionLayer.java
index 40febbb2d0..4a53790151 100644
--- a/briar-core/src/net/sf/briar/transport/OutgoingEncryptionLayer.java
+++ b/briar-core/src/org/briarproject/transport/OutgoingEncryptionLayer.java
@@ -1,18 +1,18 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import static javax.crypto.Cipher.ENCRYPT_MODE;
-import static net.sf.briar.api.transport.TransportConstants.AAD_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.IV_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
-import static net.sf.briar.util.ByteUtils.MAX_32_BIT_UNSIGNED;
+import static org.briarproject.api.transport.TransportConstants.AAD_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.IV_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
+import static org.briarproject.util.ByteUtils.MAX_32_BIT_UNSIGNED;
 
 import java.io.IOException;
 import java.io.OutputStream;
 import java.security.GeneralSecurityException;
 
-import net.sf.briar.api.crypto.AuthenticatedCipher;
-import net.sf.briar.api.crypto.SecretKey;
+import org.briarproject.api.crypto.AuthenticatedCipher;
+import org.briarproject.api.crypto.SecretKey;
 
 class OutgoingEncryptionLayer implements FrameWriter {
 
diff --git a/briar-core/src/net/sf/briar/transport/TransportConnectionRecogniser.java b/briar-core/src/org/briarproject/transport/TransportConnectionRecogniser.java
similarity index 91%
rename from briar-core/src/net/sf/briar/transport/TransportConnectionRecogniser.java
rename to briar-core/src/org/briarproject/transport/TransportConnectionRecogniser.java
index d2eff12fb1..75f1a57a8d 100644
--- a/briar-core/src/net/sf/briar/transport/TransportConnectionRecogniser.java
+++ b/briar-core/src/org/briarproject/transport/TransportConnectionRecogniser.java
@@ -1,21 +1,21 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
-import net.sf.briar.api.Bytes;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.TemporarySecret;
+import org.briarproject.api.Bytes;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.TemporarySecret;
 
 // FIXME: Don't make alien calls with a lock held
 /** A connection recogniser for a specific transport. */
diff --git a/briar-core/src/net/sf/briar/transport/TransportModule.java b/briar-core/src/org/briarproject/transport/TransportModule.java
similarity index 78%
rename from briar-core/src/net/sf/briar/transport/TransportModule.java
rename to briar-core/src/org/briarproject/transport/TransportModule.java
index de5c1c74a3..b53c7f7c13 100644
--- a/briar-core/src/net/sf/briar/transport/TransportModule.java
+++ b/briar-core/src/org/briarproject/transport/TransportModule.java
@@ -1,4 +1,4 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -11,14 +11,14 @@ import java.util.concurrent.ThreadPoolExecutor;
 
 import javax.inject.Singleton;
 
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.transport.ConnectionDispatcher;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionRecogniser;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
-import net.sf.briar.api.transport.IncomingConnectionExecutor;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.transport.ConnectionDispatcher;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionRecogniser;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.transport.IncomingConnectionExecutor;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
diff --git a/briar-core/src/net/sf/briar/util/ByteUtils.java b/briar-core/src/org/briarproject/util/ByteUtils.java
similarity index 98%
rename from briar-core/src/net/sf/briar/util/ByteUtils.java
rename to briar-core/src/org/briarproject/util/ByteUtils.java
index bb9d3bce5a..ed40306e59 100644
--- a/briar-core/src/net/sf/briar/util/ByteUtils.java
+++ b/briar-core/src/org/briarproject/util/ByteUtils.java
@@ -1,4 +1,4 @@
-package net.sf.briar.util;
+package org.briarproject.util;
 
 public class ByteUtils {
 
diff --git a/briar-core/src/net/sf/briar/util/LatchedReference.java b/briar-core/src/org/briarproject/util/LatchedReference.java
similarity index 95%
rename from briar-core/src/net/sf/briar/util/LatchedReference.java
rename to briar-core/src/org/briarproject/util/LatchedReference.java
index 98e7742bef..d43ace1edf 100644
--- a/briar-core/src/net/sf/briar/util/LatchedReference.java
+++ b/briar-core/src/org/briarproject/util/LatchedReference.java
@@ -1,4 +1,4 @@
-package net.sf.briar.util;
+package org.briarproject.util;
 
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
diff --git a/briar-core/src/net/sf/briar/util/OsUtils.java b/briar-core/src/org/briarproject/util/OsUtils.java
similarity index 96%
rename from briar-core/src/net/sf/briar/util/OsUtils.java
rename to briar-core/src/org/briarproject/util/OsUtils.java
index e40d4f504d..a9838a30eb 100644
--- a/briar-core/src/net/sf/briar/util/OsUtils.java
+++ b/briar-core/src/org/briarproject/util/OsUtils.java
@@ -1,4 +1,4 @@
-package net.sf.briar.util;
+package org.briarproject.util;
 
 public class OsUtils {
 
diff --git a/briar-core/src/net/sf/briar/util/StringUtils.java b/briar-core/src/org/briarproject/util/StringUtils.java
similarity index 98%
rename from briar-core/src/net/sf/briar/util/StringUtils.java
rename to briar-core/src/org/briarproject/util/StringUtils.java
index a7d71ea8ac..c47bbe177a 100644
--- a/briar-core/src/net/sf/briar/util/StringUtils.java
+++ b/briar-core/src/org/briarproject/util/StringUtils.java
@@ -1,4 +1,4 @@
-package net.sf.briar.util;
+package org.briarproject.util;
 
 public class StringUtils {
 
diff --git a/briar-core/src/net/sf/briar/util/ZipUtils.java b/briar-core/src/org/briarproject/util/ZipUtils.java
similarity index 98%
rename from briar-core/src/net/sf/briar/util/ZipUtils.java
rename to briar-core/src/org/briarproject/util/ZipUtils.java
index 71777b5f47..f0b52e7550 100644
--- a/briar-core/src/net/sf/briar/util/ZipUtils.java
+++ b/briar-core/src/org/briarproject/util/ZipUtils.java
@@ -1,4 +1,4 @@
-package net.sf.briar.util;
+package org.briarproject.util;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/briar-desktop/src/net/sf/briar/lifecycle/DesktopLifecycleModule.java b/briar-desktop/src/org/briarproject/lifecycle/DesktopLifecycleModule.java
similarity index 72%
rename from briar-desktop/src/net/sf/briar/lifecycle/DesktopLifecycleModule.java
rename to briar-desktop/src/org/briarproject/lifecycle/DesktopLifecycleModule.java
index 8b87a83888..8395bc8cf5 100644
--- a/briar-desktop/src/net/sf/briar/lifecycle/DesktopLifecycleModule.java
+++ b/briar-desktop/src/org/briarproject/lifecycle/DesktopLifecycleModule.java
@@ -1,8 +1,8 @@
-package net.sf.briar.lifecycle;
+package org.briarproject.lifecycle;
 
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.util.OsUtils;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.util.OsUtils;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Singleton;
diff --git a/briar-desktop/src/net/sf/briar/lifecycle/WindowsShutdownManagerImpl.java b/briar-desktop/src/org/briarproject/lifecycle/WindowsShutdownManagerImpl.java
similarity index 98%
rename from briar-desktop/src/net/sf/briar/lifecycle/WindowsShutdownManagerImpl.java
rename to briar-desktop/src/org/briarproject/lifecycle/WindowsShutdownManagerImpl.java
index b731ddc29a..82eac82dc7 100644
--- a/briar-desktop/src/net/sf/briar/lifecycle/WindowsShutdownManagerImpl.java
+++ b/briar-desktop/src/org/briarproject/lifecycle/WindowsShutdownManagerImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.lifecycle;
+package org.briarproject.lifecycle;
 
 import static com.sun.jna.Library.OPTION_FUNCTION_MAPPER;
 import static com.sun.jna.Library.OPTION_TYPE_MAPPER;
@@ -11,7 +11,7 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.logging.Logger;
 
-import net.sf.briar.util.OsUtils;
+import org.briarproject.util.OsUtils;
 
 import com.sun.jna.Native;
 import com.sun.jna.Pointer;
diff --git a/briar-desktop/src/net/sf/briar/plugins/DesktopPluginsModule.java b/briar-desktop/src/org/briarproject/plugins/DesktopPluginsModule.java
similarity index 63%
rename from briar-desktop/src/net/sf/briar/plugins/DesktopPluginsModule.java
rename to briar-desktop/src/org/briarproject/plugins/DesktopPluginsModule.java
index cb733c89ad..021b80301e 100644
--- a/briar-desktop/src/net/sf/briar/plugins/DesktopPluginsModule.java
+++ b/briar-desktop/src/org/briarproject/plugins/DesktopPluginsModule.java
@@ -1,23 +1,23 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.plugins.PluginExecutor;
-import net.sf.briar.api.plugins.duplex.DuplexPluginConfig;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
-import net.sf.briar.api.plugins.simplex.SimplexPluginConfig;
-import net.sf.briar.api.plugins.simplex.SimplexPluginFactory;
-import net.sf.briar.api.reliability.ReliabilityLayerFactory;
-import net.sf.briar.api.system.FileUtils;
-import net.sf.briar.plugins.bluetooth.BluetoothPluginFactory;
-import net.sf.briar.plugins.file.RemovableDrivePluginFactory;
-import net.sf.briar.plugins.modem.ModemPluginFactory;
-import net.sf.briar.plugins.tcp.LanTcpPluginFactory;
-import net.sf.briar.plugins.tcp.WanTcpPluginFactory;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.api.plugins.PluginExecutor;
+import org.briarproject.api.plugins.duplex.DuplexPluginConfig;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
+import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
+import org.briarproject.api.reliability.ReliabilityLayerFactory;
+import org.briarproject.api.system.FileUtils;
+import org.briarproject.plugins.bluetooth.BluetoothPluginFactory;
+import org.briarproject.plugins.file.RemovableDrivePluginFactory;
+import org.briarproject.plugins.modem.ModemPluginFactory;
+import org.briarproject.plugins.tcp.LanTcpPluginFactory;
+import org.briarproject.plugins.tcp.WanTcpPluginFactory;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
diff --git a/briar-desktop/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java
similarity index 94%
rename from briar-desktop/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
rename to briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java
index 1b61f1d5b6..633ec2a0e0 100644
--- a/briar-desktop/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
+++ b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPlugin.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.bluetooth;
+package org.briarproject.plugins.bluetooth;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -21,17 +21,17 @@ import javax.microedition.io.Connector;
 import javax.microedition.io.StreamConnection;
 import javax.microedition.io.StreamConnectionNotifier;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.util.LatchedReference;
-import net.sf.briar.util.OsUtils;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.system.Clock;
+import org.briarproject.util.LatchedReference;
+import org.briarproject.util.OsUtils;
+import org.briarproject.util.StringUtils;
 
 class BluetoothPlugin implements DuplexPlugin {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java
similarity index 71%
rename from briar-desktop/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
rename to briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java
index 75dbcbdc37..ad744d766b 100644
--- a/briar-desktop/src/net/sf/briar/plugins/bluetooth/BluetoothPluginFactory.java
+++ b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothPluginFactory.java
@@ -1,14 +1,14 @@
-package net.sf.briar.plugins.bluetooth;
+package org.briarproject.plugins.bluetooth;
 
 import java.security.SecureRandom;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
 
 public class BluetoothPluginFactory implements DuplexPluginFactory {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/bluetooth/BluetoothTransportConnection.java b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothTransportConnection.java
similarity index 85%
rename from briar-desktop/src/net/sf/briar/plugins/bluetooth/BluetoothTransportConnection.java
rename to briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothTransportConnection.java
index 7d1a17ab33..c936a9e4ed 100644
--- a/briar-desktop/src/net/sf/briar/plugins/bluetooth/BluetoothTransportConnection.java
+++ b/briar-desktop/src/org/briarproject/plugins/bluetooth/BluetoothTransportConnection.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.bluetooth;
+package org.briarproject.plugins.bluetooth;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -6,8 +6,8 @@ import java.io.OutputStream;
 
 import javax.microedition.io.StreamConnection;
 
-import net.sf.briar.api.plugins.Plugin;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.plugins.Plugin;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
 
 class BluetoothTransportConnection implements DuplexTransportConnection {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/bluetooth/InvitationListener.java b/briar-desktop/src/org/briarproject/plugins/bluetooth/InvitationListener.java
similarity index 98%
rename from briar-desktop/src/net/sf/briar/plugins/bluetooth/InvitationListener.java
rename to briar-desktop/src/org/briarproject/plugins/bluetooth/InvitationListener.java
index c903b93eed..a80d2e7698 100644
--- a/briar-desktop/src/net/sf/briar/plugins/bluetooth/InvitationListener.java
+++ b/briar-desktop/src/org/briarproject/plugins/bluetooth/InvitationListener.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.bluetooth;
+package org.briarproject.plugins.bluetooth;
 
 import static java.util.logging.Level.WARNING;
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/LinuxRemovableDriveFinder.java b/briar-desktop/src/org/briarproject/plugins/file/LinuxRemovableDriveFinder.java
similarity index 93%
rename from briar-desktop/src/net/sf/briar/plugins/file/LinuxRemovableDriveFinder.java
rename to briar-desktop/src/org/briarproject/plugins/file/LinuxRemovableDriveFinder.java
index 4973d52243..124e0819fa 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/LinuxRemovableDriveFinder.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/LinuxRemovableDriveFinder.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 class LinuxRemovableDriveFinder extends UnixRemovableDriveFinder {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/LinuxRemovableDriveMonitor.java b/briar-desktop/src/org/briarproject/plugins/file/LinuxRemovableDriveMonitor.java
similarity index 81%
rename from briar-desktop/src/net/sf/briar/plugins/file/LinuxRemovableDriveMonitor.java
rename to briar-desktop/src/org/briarproject/plugins/file/LinuxRemovableDriveMonitor.java
index 71a3e838ae..bc3967416a 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/LinuxRemovableDriveMonitor.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/LinuxRemovableDriveMonitor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 class LinuxRemovableDriveMonitor extends UnixRemovableDriveMonitor {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/MacRemovableDriveFinder.java b/briar-desktop/src/org/briarproject/plugins/file/MacRemovableDriveFinder.java
similarity index 93%
rename from briar-desktop/src/net/sf/briar/plugins/file/MacRemovableDriveFinder.java
rename to briar-desktop/src/org/briarproject/plugins/file/MacRemovableDriveFinder.java
index 453a3d836b..a35c7af9a2 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/MacRemovableDriveFinder.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/MacRemovableDriveFinder.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 class MacRemovableDriveFinder extends UnixRemovableDriveFinder {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/MacRemovableDriveMonitor.java b/briar-desktop/src/org/briarproject/plugins/file/MacRemovableDriveMonitor.java
similarity index 80%
rename from briar-desktop/src/net/sf/briar/plugins/file/MacRemovableDriveMonitor.java
rename to briar-desktop/src/org/briarproject/plugins/file/MacRemovableDriveMonitor.java
index e2886facbc..11ff779133 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/MacRemovableDriveMonitor.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/MacRemovableDriveMonitor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 class MacRemovableDriveMonitor extends UnixRemovableDriveMonitor {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java b/briar-desktop/src/org/briarproject/plugins/file/PollingRemovableDriveMonitor.java
similarity index 97%
rename from briar-desktop/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
rename to briar-desktop/src/org/briarproject/plugins/file/PollingRemovableDriveMonitor.java
index b6d4b0f690..40e9bc9751 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitor.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/PollingRemovableDriveMonitor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import static java.util.logging.Level.INFO;
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/RemovableDriveFinder.java b/briar-desktop/src/org/briarproject/plugins/file/RemovableDriveFinder.java
similarity index 81%
rename from briar-desktop/src/net/sf/briar/plugins/file/RemovableDriveFinder.java
rename to briar-desktop/src/org/briarproject/plugins/file/RemovableDriveFinder.java
index 25bdd5c28e..efac800070 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/RemovableDriveFinder.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/RemovableDriveFinder.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/RemovableDriveMonitor.java b/briar-desktop/src/org/briarproject/plugins/file/RemovableDriveMonitor.java
similarity index 87%
rename from briar-desktop/src/net/sf/briar/plugins/file/RemovableDriveMonitor.java
rename to briar-desktop/src/org/briarproject/plugins/file/RemovableDriveMonitor.java
index 9baa030d34..169dbc1408 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/RemovableDriveMonitor.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/RemovableDriveMonitor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java b/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java
similarity index 92%
rename from briar-desktop/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java
rename to briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java
index cdb8862b15..19b7f1cd5d 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/RemovableDrivePlugin.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePlugin.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import static java.util.logging.Level.WARNING;
 
@@ -11,11 +11,11 @@ import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
-import net.sf.briar.api.system.FileUtils;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
+import org.briarproject.api.system.FileUtils;
+import org.briarproject.util.StringUtils;
 
 class RemovableDrivePlugin extends FilePlugin
 implements RemovableDriveMonitor.Callback {
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java b/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePluginFactory.java
similarity index 78%
rename from briar-desktop/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
rename to briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePluginFactory.java
index fb1ae045ee..5b948cde33 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/RemovableDrivePluginFactory.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/RemovableDrivePluginFactory.java
@@ -1,15 +1,15 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
-import static net.sf.briar.api.transport.TransportConstants.MAX_FRAME_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAX_FRAME_LENGTH;
 
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.simplex.SimplexPlugin;
-import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
-import net.sf.briar.api.plugins.simplex.SimplexPluginFactory;
-import net.sf.briar.api.system.FileUtils;
-import net.sf.briar.util.OsUtils;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.simplex.SimplexPlugin;
+import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
+import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
+import org.briarproject.api.system.FileUtils;
+import org.briarproject.util.OsUtils;
 
 public class RemovableDrivePluginFactory implements SimplexPluginFactory {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/UnixRemovableDriveFinder.java b/briar-desktop/src/org/briarproject/plugins/file/UnixRemovableDriveFinder.java
similarity index 96%
rename from briar-desktop/src/net/sf/briar/plugins/file/UnixRemovableDriveFinder.java
rename to briar-desktop/src/org/briarproject/plugins/file/UnixRemovableDriveFinder.java
index 4c636d0ba9..270a1354f0 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/UnixRemovableDriveFinder.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/UnixRemovableDriveFinder.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/UnixRemovableDriveMonitor.java b/briar-desktop/src/org/briarproject/plugins/file/UnixRemovableDriveMonitor.java
similarity index 97%
rename from briar-desktop/src/net/sf/briar/plugins/file/UnixRemovableDriveMonitor.java
rename to briar-desktop/src/org/briarproject/plugins/file/UnixRemovableDriveMonitor.java
index a70f338e7f..eec65b5eb3 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/UnixRemovableDriveMonitor.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/UnixRemovableDriveMonitor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/briar-desktop/src/net/sf/briar/plugins/file/WindowsRemovableDriveFinder.java b/briar-desktop/src/org/briarproject/plugins/file/WindowsRemovableDriveFinder.java
similarity index 95%
rename from briar-desktop/src/net/sf/briar/plugins/file/WindowsRemovableDriveFinder.java
rename to briar-desktop/src/org/briarproject/plugins/file/WindowsRemovableDriveFinder.java
index 47e425b47c..452d4548b8 100644
--- a/briar-desktop/src/net/sf/briar/plugins/file/WindowsRemovableDriveFinder.java
+++ b/briar-desktop/src/org/briarproject/plugins/file/WindowsRemovableDriveFinder.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/CountryCodes.java b/briar-desktop/src/org/briarproject/plugins/modem/CountryCodes.java
similarity index 99%
rename from briar-desktop/src/net/sf/briar/plugins/modem/CountryCodes.java
rename to briar-desktop/src/org/briarproject/plugins/modem/CountryCodes.java
index e1e66fffc4..b4fb65a00c 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/CountryCodes.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/CountryCodes.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/Modem.java b/briar-desktop/src/org/briarproject/plugins/modem/Modem.java
similarity index 96%
rename from briar-desktop/src/net/sf/briar/plugins/modem/Modem.java
rename to briar-desktop/src/org/briarproject/plugins/modem/Modem.java
index 277749c33b..72c3a85d64 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/Modem.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/Modem.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/ModemFactory.java b/briar-desktop/src/org/briarproject/plugins/modem/ModemFactory.java
similarity index 69%
rename from briar-desktop/src/net/sf/briar/plugins/modem/ModemFactory.java
rename to briar-desktop/src/org/briarproject/plugins/modem/ModemFactory.java
index 36328c49c2..f70c7cdab4 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/ModemFactory.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/ModemFactory.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 interface ModemFactory {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/ModemFactoryImpl.java b/briar-desktop/src/org/briarproject/plugins/modem/ModemFactoryImpl.java
similarity index 75%
rename from briar-desktop/src/net/sf/briar/plugins/modem/ModemFactoryImpl.java
rename to briar-desktop/src/org/briarproject/plugins/modem/ModemFactoryImpl.java
index 858590a337..2dc8375221 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/ModemFactoryImpl.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/ModemFactoryImpl.java
@@ -1,10 +1,10 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.reliability.ReliabilityLayerFactory;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
+import org.briarproject.api.reliability.ReliabilityLayerFactory;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
 
 class ModemFactoryImpl implements ModemFactory {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/ModemImpl.java b/briar-desktop/src/org/briarproject/plugins/modem/ModemImpl.java
similarity index 97%
rename from briar-desktop/src/net/sf/briar/plugins/modem/ModemImpl.java
rename to briar-desktop/src/org/briarproject/plugins/modem/ModemImpl.java
index d7922d1c09..52817c7320 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/ModemImpl.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/ModemImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -14,10 +14,10 @@ import java.util.logging.Logger;
 
 import jssc.SerialPortEvent;
 import jssc.SerialPortEventListener;
-import net.sf.briar.api.reliability.ReliabilityLayer;
-import net.sf.briar.api.reliability.ReliabilityLayerFactory;
-import net.sf.briar.api.reliability.WriteHandler;
-import net.sf.briar.api.system.Clock;
+import org.briarproject.api.reliability.ReliabilityLayer;
+import org.briarproject.api.reliability.ReliabilityLayerFactory;
+import org.briarproject.api.reliability.WriteHandler;
+import org.briarproject.api.system.Clock;
 
 class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/ModemPlugin.java b/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java
similarity index 91%
rename from briar-desktop/src/net/sf/briar/plugins/modem/ModemPlugin.java
rename to briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java
index ff9025f66a..7d812ce4c5 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/ModemPlugin.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/ModemPlugin.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
@@ -16,14 +16,14 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.util.StringUtils;
 
 class ModemPlugin implements DuplexPlugin, Modem.Callback {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/ModemPluginFactory.java b/briar-desktop/src/org/briarproject/plugins/modem/ModemPluginFactory.java
similarity index 72%
rename from briar-desktop/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
rename to briar-desktop/src/org/briarproject/plugins/modem/ModemPluginFactory.java
index f9270db561..b32dcd01ec 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/ModemPluginFactory.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/ModemPluginFactory.java
@@ -1,13 +1,13 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 import java.util.concurrent.Executor;
 
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
-import net.sf.briar.api.reliability.ReliabilityLayerFactory;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.reliability.ReliabilityLayerFactory;
+import org.briarproject.util.StringUtils;
 
 public class ModemPluginFactory implements DuplexPluginFactory {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/SerialPort.java b/briar-desktop/src/org/briarproject/plugins/modem/SerialPort.java
similarity index 92%
rename from briar-desktop/src/net/sf/briar/plugins/modem/SerialPort.java
rename to briar-desktop/src/org/briarproject/plugins/modem/SerialPort.java
index 0d2b5e4aba..6d9f602313 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/SerialPort.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/SerialPort.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 import java.io.IOException;
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/SerialPortImpl.java b/briar-desktop/src/org/briarproject/plugins/modem/SerialPortImpl.java
similarity index 97%
rename from briar-desktop/src/net/sf/briar/plugins/modem/SerialPortImpl.java
rename to briar-desktop/src/org/briarproject/plugins/modem/SerialPortImpl.java
index b800c9c4ac..1514b01f57 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/SerialPortImpl.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/SerialPortImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 import java.io.IOException;
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/SerialPortList.java b/briar-desktop/src/org/briarproject/plugins/modem/SerialPortList.java
similarity index 58%
rename from briar-desktop/src/net/sf/briar/plugins/modem/SerialPortList.java
rename to briar-desktop/src/org/briarproject/plugins/modem/SerialPortList.java
index 55e195c61e..469263085c 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/SerialPortList.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/SerialPortList.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 interface SerialPortList {
 
diff --git a/briar-desktop/src/net/sf/briar/plugins/modem/SerialPortListImpl.java b/briar-desktop/src/org/briarproject/plugins/modem/SerialPortListImpl.java
similarity index 77%
rename from briar-desktop/src/net/sf/briar/plugins/modem/SerialPortListImpl.java
rename to briar-desktop/src/org/briarproject/plugins/modem/SerialPortListImpl.java
index b48caa8259..9d6ad8d782 100644
--- a/briar-desktop/src/net/sf/briar/plugins/modem/SerialPortListImpl.java
+++ b/briar-desktop/src/org/briarproject/plugins/modem/SerialPortListImpl.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 class SerialPortListImpl implements SerialPortList {
 
diff --git a/briar-desktop/src/net/sf/briar/system/DesktopOsModule.java b/briar-desktop/src/org/briarproject/system/DesktopOsModule.java
similarity index 71%
rename from briar-desktop/src/net/sf/briar/system/DesktopOsModule.java
rename to briar-desktop/src/org/briarproject/system/DesktopOsModule.java
index fb1e5cf3a2..7b3c73dc28 100644
--- a/briar-desktop/src/net/sf/briar/system/DesktopOsModule.java
+++ b/briar-desktop/src/org/briarproject/system/DesktopOsModule.java
@@ -1,6 +1,6 @@
-package net.sf.briar.system;
+package org.briarproject.system;
 
-import net.sf.briar.api.system.FileUtils;
+import org.briarproject.api.system.FileUtils;
 
 import com.google.inject.AbstractModule;
 
diff --git a/briar-desktop/src/net/sf/briar/system/FileUtilsImpl.java b/briar-desktop/src/org/briarproject/system/FileUtilsImpl.java
similarity index 69%
rename from briar-desktop/src/net/sf/briar/system/FileUtilsImpl.java
rename to briar-desktop/src/org/briarproject/system/FileUtilsImpl.java
index 0773bdbbf1..b22a6034fe 100644
--- a/briar-desktop/src/net/sf/briar/system/FileUtilsImpl.java
+++ b/briar-desktop/src/org/briarproject/system/FileUtilsImpl.java
@@ -1,9 +1,9 @@
-package net.sf.briar.system;
+package org.briarproject.system;
 
 import java.io.File;
 import java.io.IOException;
 
-import net.sf.briar.api.system.FileUtils;
+import org.briarproject.api.system.FileUtils;
 
 class FileUtilsImpl implements FileUtils {
 
diff --git a/briar-tests/build.xml b/briar-tests/build.xml
index 34344944fa..33043bff61 100644
--- a/briar-tests/build.xml
+++ b/briar-tests/build.xml
@@ -91,48 +91,48 @@
 				<path refid='api-classes'/>
 			</classpath>
 			<jvmarg value='-Djava.library.path=../briar-desktop/libs'/>
-			<test name='net.sf.briar.LockFairnessTest'/>
-			<test name='net.sf.briar.ProtocolIntegrationTest'/>
-			<test name='net.sf.briar.crypto.KeyAgreementTest'/>
-			<test name='net.sf.briar.crypto.KeyDerivationTest'/>
-			<test name='net.sf.briar.crypto.KeyEncodingAndParsingTest'/>
-			<test name="net.sf.briar.crypto.PasswordBasedKdfTest"/>
-			<test name='net.sf.briar.crypto.SecretKeyImplTest'/>
-			<test name='net.sf.briar.db.BasicH2Test'/>
-			<test name='net.sf.briar.db.DatabaseCleanerImplTest'/>
-			<test name='net.sf.briar.db.DatabaseComponentImplTest'/>
-			<test name='net.sf.briar.db.ExponentialBackoffTest'/>
-			<test name='net.sf.briar.lifecycle.ShutdownManagerImplTest'/>
-			<test name='net.sf.briar.lifecycle.WindowsShutdownManagerImplTest'/>
-			<test name='net.sf.briar.messaging.ConstantsTest'/>
-			<test name='net.sf.briar.messaging.ConsumersTest'/>
-			<test name='net.sf.briar.messaging.PacketReaderImplTest'/>
-			<test name='net.sf.briar.messaging.simplex.OutgoingSimplexConnectionTest'/>
-			<test name='net.sf.briar.messaging.simplex.SimplexMessagingIntegrationTest'/>
-			<test name='net.sf.briar.plugins.PluginManagerImplTest'/>
-			<test name='net.sf.briar.plugins.file.LinuxRemovableDriveFinderTest'/>
-			<test name='net.sf.briar.plugins.file.MacRemovableDriveFinderTest'/>
-			<test name='net.sf.briar.plugins.file.PollingRemovableDriveMonitorTest'/>
-			<test name='net.sf.briar.plugins.file.RemovableDrivePluginTest'/>
-			<test name='net.sf.briar.plugins.file.UnixRemovableDriveMonitorTest'/>
-			<test name='net.sf.briar.plugins.modem.CountryCodesTest'/>
-			<test name='net.sf.briar.plugins.modem.ModemPluginTest'/>
-			<test name='net.sf.briar.plugins.tcp.LanTcpPluginTest'/>
-			<test name='net.sf.briar.serial.ReaderImplTest'/>
-			<test name='net.sf.briar.serial.WriterImplTest'/>
-			<test name='net.sf.briar.transport.ConnectionReaderImplTest'/>
-			<test name='net.sf.briar.transport.ConnectionRegistryImplTest'/>
-			<test name='net.sf.briar.transport.ConnectionWindowTest'/>
-			<test name='net.sf.briar.transport.ConnectionWriterImplTest'/>
-			<test name='net.sf.briar.transport.IncomingEncryptionLayerTest'/>
-			<test name='net.sf.briar.transport.KeyManagerImplTest'/>
-			<test name='net.sf.briar.transport.KeyRotationIntegrationTest'/>
-			<test name='net.sf.briar.transport.OutgoingEncryptionLayerTest'/>
-			<test name='net.sf.briar.transport.TransportIntegrationTest'/>
-			<test name='net.sf.briar.transport.TransportConnectionRecogniserTest'/>
-			<test name='net.sf.briar.util.ByteUtilsTest'/>
-			<test name='net.sf.briar.util.StringUtilsTest'/>
-			<test name='net.sf.briar.util.ZipUtilsTest'/>
+			<test name='org.briarproject.LockFairnessTest'/>
+			<test name='org.briarproject.ProtocolIntegrationTest'/>
+			<test name='org.briarproject.crypto.KeyAgreementTest'/>
+			<test name='org.briarproject.crypto.KeyDerivationTest'/>
+			<test name='org.briarproject.crypto.KeyEncodingAndParsingTest'/>
+			<test name="org.briarproject.crypto.PasswordBasedKdfTest"/>
+			<test name='org.briarproject.crypto.SecretKeyImplTest'/>
+			<test name='org.briarproject.db.BasicH2Test'/>
+			<test name='org.briarproject.db.DatabaseCleanerImplTest'/>
+			<test name='org.briarproject.db.DatabaseComponentImplTest'/>
+			<test name='org.briarproject.db.ExponentialBackoffTest'/>
+			<test name='org.briarproject.lifecycle.ShutdownManagerImplTest'/>
+			<test name='org.briarproject.lifecycle.WindowsShutdownManagerImplTest'/>
+			<test name='org.briarproject.messaging.ConstantsTest'/>
+			<test name='org.briarproject.messaging.ConsumersTest'/>
+			<test name='org.briarproject.messaging.PacketReaderImplTest'/>
+			<test name='org.briarproject.messaging.simplex.OutgoingSimplexConnectionTest'/>
+			<test name='org.briarproject.messaging.simplex.SimplexMessagingIntegrationTest'/>
+			<test name='org.briarproject.plugins.PluginManagerImplTest'/>
+			<test name='org.briarproject.plugins.file.LinuxRemovableDriveFinderTest'/>
+			<test name='org.briarproject.plugins.file.MacRemovableDriveFinderTest'/>
+			<test name='org.briarproject.plugins.file.PollingRemovableDriveMonitorTest'/>
+			<test name='org.briarproject.plugins.file.RemovableDrivePluginTest'/>
+			<test name='org.briarproject.plugins.file.UnixRemovableDriveMonitorTest'/>
+			<test name='org.briarproject.plugins.modem.CountryCodesTest'/>
+			<test name='org.briarproject.plugins.modem.ModemPluginTest'/>
+			<test name='org.briarproject.plugins.tcp.LanTcpPluginTest'/>
+			<test name='org.briarproject.serial.ReaderImplTest'/>
+			<test name='org.briarproject.serial.WriterImplTest'/>
+			<test name='org.briarproject.transport.ConnectionReaderImplTest'/>
+			<test name='org.briarproject.transport.ConnectionRegistryImplTest'/>
+			<test name='org.briarproject.transport.ConnectionWindowTest'/>
+			<test name='org.briarproject.transport.ConnectionWriterImplTest'/>
+			<test name='org.briarproject.transport.IncomingEncryptionLayerTest'/>
+			<test name='org.briarproject.transport.KeyManagerImplTest'/>
+			<test name='org.briarproject.transport.KeyRotationIntegrationTest'/>
+			<test name='org.briarproject.transport.OutgoingEncryptionLayerTest'/>
+			<test name='org.briarproject.transport.TransportIntegrationTest'/>
+			<test name='org.briarproject.transport.TransportConnectionRecogniserTest'/>
+			<test name='org.briarproject.util.ByteUtilsTest'/>
+			<test name='org.briarproject.util.StringUtilsTest'/>
+			<test name='org.briarproject.util.ZipUtilsTest'/>
 		</junit>
 	</target>
 	<target name='test-slow' depends='compile'>
@@ -151,7 +151,7 @@
 				<path refid='api-classes'/>
 			</classpath>
 			<jvmarg value='-Djava.library.path=../briar-desktop/libs'/>
-			<test name='net.sf.briar.db.H2DatabaseTest'/>
+			<test name='org.briarproject.db.H2DatabaseTest'/>
 		</junit>
 	</target>
 </project>
diff --git a/briar-tests/src/net/sf/briar/BriarTestCase.java b/briar-tests/src/org/briarproject/BriarTestCase.java
similarity index 94%
rename from briar-tests/src/net/sf/briar/BriarTestCase.java
rename to briar-tests/src/org/briarproject/BriarTestCase.java
index c2635e1172..a26508b8fd 100644
--- a/briar-tests/src/net/sf/briar/BriarTestCase.java
+++ b/briar-tests/src/org/briarproject/BriarTestCase.java
@@ -1,4 +1,4 @@
-package net.sf.briar;
+package org.briarproject;
 
 import java.lang.Thread.UncaughtExceptionHandler;
 
diff --git a/briar-tests/src/net/sf/briar/LockFairnessTest.java b/briar-tests/src/org/briarproject/LockFairnessTest.java
similarity index 99%
rename from briar-tests/src/net/sf/briar/LockFairnessTest.java
rename to briar-tests/src/org/briarproject/LockFairnessTest.java
index 5560855a0d..5446225f29 100644
--- a/briar-tests/src/net/sf/briar/LockFairnessTest.java
+++ b/briar-tests/src/org/briarproject/LockFairnessTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar;
+package org.briarproject;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
diff --git a/briar-tests/src/net/sf/briar/ProtocolIntegrationTest.java b/briar-tests/src/org/briarproject/ProtocolIntegrationTest.java
similarity index 75%
rename from briar-tests/src/net/sf/briar/ProtocolIntegrationTest.java
rename to briar-tests/src/org/briarproject/ProtocolIntegrationTest.java
index d67802a3cc..6676679b5b 100644
--- a/briar-tests/src/net/sf/briar/ProtocolIntegrationTest.java
+++ b/briar-tests/src/org/briarproject/ProtocolIntegrationTest.java
@@ -1,7 +1,7 @@
-package net.sf.briar;
+package org.briarproject;
 
-import static net.sf.briar.api.transport.TransportConstants.MAX_FRAME_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAX_FRAME_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 import static org.junit.Assert.assertArrayEquals;
 
 import java.io.ByteArrayInputStream;
@@ -13,43 +13,43 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Random;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyPair;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupFactory;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageFactory;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.Offer;
-import net.sf.briar.api.messaging.PacketReader;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.PacketWriter;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.messaging.Request;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.messaging.UnverifiedMessage;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionReader;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionWriter;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
-import net.sf.briar.crypto.CryptoModule;
-import net.sf.briar.db.DatabaseModule;
-import net.sf.briar.messaging.MessagingModule;
-import net.sf.briar.messaging.duplex.DuplexMessagingModule;
-import net.sf.briar.messaging.simplex.SimplexMessagingModule;
-import net.sf.briar.reliability.ReliabilityModule;
-import net.sf.briar.serial.SerialModule;
-import net.sf.briar.system.ClockModule;
-import net.sf.briar.transport.TransportModule;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyPair;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupFactory;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageFactory;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.Offer;
+import org.briarproject.api.messaging.PacketReader;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.PacketWriter;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.messaging.Request;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.messaging.UnverifiedMessage;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionReader;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriterFactory;
+import org.briarproject.crypto.CryptoModule;
+import org.briarproject.db.DatabaseModule;
+import org.briarproject.messaging.MessagingModule;
+import org.briarproject.messaging.duplex.DuplexMessagingModule;
+import org.briarproject.messaging.simplex.SimplexMessagingModule;
+import org.briarproject.reliability.ReliabilityModule;
+import org.briarproject.serial.SerialModule;
+import org.briarproject.system.SystemModule;
+import org.briarproject.transport.TransportModule;
 
 import org.junit.Test;
 
@@ -80,7 +80,7 @@ public class ProtocolIntegrationTest extends BriarTestCase {
 	public ProtocolIntegrationTest() throws Exception {
 		Injector i = Guice.createInjector(new TestDatabaseModule(),
 				new TestLifecycleModule(), new TestUiModule(),
-				new ClockModule(), new CryptoModule(), new DatabaseModule(),
+				new SystemModule(), new CryptoModule(), new DatabaseModule(),
 				new MessagingModule(), new DuplexMessagingModule(),
 				new SimplexMessagingModule(), new ReliabilityModule(),
 				new SerialModule(), new TransportModule());
diff --git a/briar-tests/src/net/sf/briar/TestDatabaseConfig.java b/briar-tests/src/org/briarproject/TestDatabaseConfig.java
similarity index 89%
rename from briar-tests/src/net/sf/briar/TestDatabaseConfig.java
rename to briar-tests/src/org/briarproject/TestDatabaseConfig.java
index 1d01590cf4..27eb702845 100644
--- a/briar-tests/src/net/sf/briar/TestDatabaseConfig.java
+++ b/briar-tests/src/org/briarproject/TestDatabaseConfig.java
@@ -1,8 +1,8 @@
-package net.sf.briar;
+package org.briarproject;
 
 import java.io.File;
 
-import net.sf.briar.api.db.DatabaseConfig;
+import org.briarproject.api.db.DatabaseConfig;
 
 public class TestDatabaseConfig implements DatabaseConfig {
 
diff --git a/briar-tests/src/net/sf/briar/TestDatabaseModule.java b/briar-tests/src/org/briarproject/TestDatabaseModule.java
similarity index 82%
rename from briar-tests/src/net/sf/briar/TestDatabaseModule.java
rename to briar-tests/src/org/briarproject/TestDatabaseModule.java
index 26ccfb2dda..8cff99d56f 100644
--- a/briar-tests/src/net/sf/briar/TestDatabaseModule.java
+++ b/briar-tests/src/org/briarproject/TestDatabaseModule.java
@@ -1,9 +1,9 @@
-package net.sf.briar;
+package org.briarproject;
 
 import java.io.File;
 
-import net.sf.briar.api.db.DatabaseConfig;
-import net.sf.briar.api.system.FileUtils;
+import org.briarproject.api.db.DatabaseConfig;
+import org.briarproject.api.system.FileUtils;
 
 import com.google.inject.AbstractModule;
 
diff --git a/briar-tests/src/net/sf/briar/TestFileUtils.java b/briar-tests/src/org/briarproject/TestFileUtils.java
similarity index 72%
rename from briar-tests/src/net/sf/briar/TestFileUtils.java
rename to briar-tests/src/org/briarproject/TestFileUtils.java
index 470bd1c0ec..c5e55ea7ac 100644
--- a/briar-tests/src/net/sf/briar/TestFileUtils.java
+++ b/briar-tests/src/org/briarproject/TestFileUtils.java
@@ -1,9 +1,9 @@
-package net.sf.briar;
+package org.briarproject;
 
 import java.io.File;
 import java.io.IOException;
 
-import net.sf.briar.api.system.FileUtils;
+import org.briarproject.api.system.FileUtils;
 
 public class TestFileUtils implements FileUtils {
 
diff --git a/briar-tests/src/net/sf/briar/TestLifecycleModule.java b/briar-tests/src/org/briarproject/TestLifecycleModule.java
similarity index 81%
rename from briar-tests/src/net/sf/briar/TestLifecycleModule.java
rename to briar-tests/src/org/briarproject/TestLifecycleModule.java
index fc8c0b1132..94a8811c41 100644
--- a/briar-tests/src/net/sf/briar/TestLifecycleModule.java
+++ b/briar-tests/src/org/briarproject/TestLifecycleModule.java
@@ -1,10 +1,10 @@
-package net.sf.briar;
+package org.briarproject;
 
 import java.util.concurrent.ExecutorService;
 
-import net.sf.briar.api.lifecycle.LifecycleManager;
-import net.sf.briar.api.lifecycle.Service;
-import net.sf.briar.api.lifecycle.ShutdownManager;
+import org.briarproject.api.lifecycle.LifecycleManager;
+import org.briarproject.api.lifecycle.Service;
+import org.briarproject.api.lifecycle.ShutdownManager;
 
 import com.google.inject.AbstractModule;
 
diff --git a/briar-tests/src/net/sf/briar/TestMessage.java b/briar-tests/src/org/briarproject/TestMessage.java
similarity index 90%
rename from briar-tests/src/net/sf/briar/TestMessage.java
rename to briar-tests/src/org/briarproject/TestMessage.java
index b390bd7ffe..af9d137b3c 100644
--- a/briar-tests/src/net/sf/briar/TestMessage.java
+++ b/briar-tests/src/org/briarproject/TestMessage.java
@@ -1,12 +1,12 @@
-package net.sf.briar;
+package org.briarproject;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 
-import net.sf.briar.api.Author;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageId;
+import org.briarproject.api.Author;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageId;
 
 public class TestMessage implements Message {
 
diff --git a/briar-tests/src/net/sf/briar/TestUiModule.java b/briar-tests/src/org/briarproject/TestUiModule.java
similarity index 85%
rename from briar-tests/src/net/sf/briar/TestUiModule.java
rename to briar-tests/src/org/briarproject/TestUiModule.java
index 4242b6c2e1..d6c719c1e4 100644
--- a/briar-tests/src/net/sf/briar/TestUiModule.java
+++ b/briar-tests/src/org/briarproject/TestUiModule.java
@@ -1,6 +1,6 @@
-package net.sf.briar;
+package org.briarproject;
 
-import net.sf.briar.api.ui.UiCallback;
+import org.briarproject.api.ui.UiCallback;
 
 import com.google.inject.AbstractModule;
 
diff --git a/briar-tests/src/net/sf/briar/TestUtils.java b/briar-tests/src/org/briarproject/TestUtils.java
similarity index 97%
rename from briar-tests/src/net/sf/briar/TestUtils.java
rename to briar-tests/src/org/briarproject/TestUtils.java
index 358bc0f19e..de09fc35b5 100644
--- a/briar-tests/src/net/sf/briar/TestUtils.java
+++ b/briar-tests/src/org/briarproject/TestUtils.java
@@ -1,4 +1,4 @@
-package net.sf.briar;
+package org.briarproject;
 
 
 import java.io.File;
@@ -10,7 +10,7 @@ import java.util.Random;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import junit.framework.TestCase;
-import net.sf.briar.api.UniqueId;
+import org.briarproject.api.UniqueId;
 
 public class TestUtils {
 
diff --git a/briar-tests/src/net/sf/briar/crypto/KeyAgreementTest.java b/briar-tests/src/org/briarproject/crypto/KeyAgreementTest.java
similarity index 78%
rename from briar-tests/src/net/sf/briar/crypto/KeyAgreementTest.java
rename to briar-tests/src/org/briarproject/crypto/KeyAgreementTest.java
index f51d556c6e..33b7f4a987 100644
--- a/briar-tests/src/net/sf/briar/crypto/KeyAgreementTest.java
+++ b/briar-tests/src/org/briarproject/crypto/KeyAgreementTest.java
@@ -1,9 +1,9 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import static org.junit.Assert.assertArrayEquals;
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyPair;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyPair;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/crypto/KeyDerivationTest.java b/briar-tests/src/org/briarproject/crypto/KeyDerivationTest.java
similarity index 91%
rename from briar-tests/src/net/sf/briar/crypto/KeyDerivationTest.java
rename to briar-tests/src/org/briarproject/crypto/KeyDerivationTest.java
index 44c2ffaa26..00d7bdda80 100644
--- a/briar-tests/src/net/sf/briar/crypto/KeyDerivationTest.java
+++ b/briar-tests/src/org/briarproject/crypto/KeyDerivationTest.java
@@ -1,13 +1,13 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.SecretKey;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.SecretKey;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/crypto/KeyEncodingAndParsingTest.java b/briar-tests/src/org/briarproject/crypto/KeyEncodingAndParsingTest.java
similarity index 95%
rename from briar-tests/src/net/sf/briar/crypto/KeyEncodingAndParsingTest.java
rename to briar-tests/src/org/briarproject/crypto/KeyEncodingAndParsingTest.java
index d71dd3491c..63601b002d 100644
--- a/briar-tests/src/net/sf/briar/crypto/KeyEncodingAndParsingTest.java
+++ b/briar-tests/src/org/briarproject/crypto/KeyEncodingAndParsingTest.java
@@ -1,15 +1,15 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import static org.junit.Assert.assertArrayEquals;
 
 import java.security.GeneralSecurityException;
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.crypto.KeyPair;
-import net.sf.briar.api.crypto.KeyParser;
-import net.sf.briar.api.crypto.PrivateKey;
-import net.sf.briar.api.crypto.PublicKey;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.crypto.KeyPair;
+import org.briarproject.api.crypto.KeyParser;
+import org.briarproject.api.crypto.PrivateKey;
+import org.briarproject.api.crypto.PublicKey;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/crypto/PasswordBasedKdfTest.java b/briar-tests/src/org/briarproject/crypto/PasswordBasedKdfTest.java
similarity index 93%
rename from briar-tests/src/net/sf/briar/crypto/PasswordBasedKdfTest.java
rename to briar-tests/src/org/briarproject/crypto/PasswordBasedKdfTest.java
index 3b4fb6dba2..dda2881003 100644
--- a/briar-tests/src/net/sf/briar/crypto/PasswordBasedKdfTest.java
+++ b/briar-tests/src/org/briarproject/crypto/PasswordBasedKdfTest.java
@@ -1,11 +1,11 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import static org.junit.Assert.assertArrayEquals;
 
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.crypto.CryptoComponent;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.crypto.CryptoComponent;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/crypto/SecretKeyImplTest.java b/briar-tests/src/org/briarproject/crypto/SecretKeyImplTest.java
similarity index 82%
rename from briar-tests/src/net/sf/briar/crypto/SecretKeyImplTest.java
rename to briar-tests/src/org/briarproject/crypto/SecretKeyImplTest.java
index be69414b0b..b56b73900a 100644
--- a/briar-tests/src/net/sf/briar/crypto/SecretKeyImplTest.java
+++ b/briar-tests/src/org/briarproject/crypto/SecretKeyImplTest.java
@@ -1,11 +1,11 @@
-package net.sf.briar.crypto;
+package org.briarproject.crypto;
 
 import static org.junit.Assert.assertArrayEquals;
 
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.crypto.SecretKey;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.crypto.SecretKey;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/db/BasicH2Test.java b/briar-tests/src/org/briarproject/db/BasicH2Test.java
similarity index 98%
rename from briar-tests/src/net/sf/briar/db/BasicH2Test.java
rename to briar-tests/src/org/briarproject/db/BasicH2Test.java
index eaf4696504..fc5b1434c9 100644
--- a/briar-tests/src/net/sf/briar/db/BasicH2Test.java
+++ b/briar-tests/src/org/briarproject/db/BasicH2Test.java
@@ -1,4 +1,4 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import static java.sql.Types.BINARY;
 
@@ -13,8 +13,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestUtils;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestUtils;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/briar-tests/src/net/sf/briar/db/DatabaseCleanerImplTest.java b/briar-tests/src/org/briarproject/db/DatabaseCleanerImplTest.java
similarity index 87%
rename from briar-tests/src/net/sf/briar/db/DatabaseCleanerImplTest.java
rename to briar-tests/src/org/briarproject/db/DatabaseCleanerImplTest.java
index ea1797f464..2442aed79f 100644
--- a/briar-tests/src/net/sf/briar/db/DatabaseCleanerImplTest.java
+++ b/briar-tests/src/org/briarproject/db/DatabaseCleanerImplTest.java
@@ -1,14 +1,14 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
 import java.util.concurrent.CountDownLatch;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.system.SystemTimer;
-import net.sf.briar.api.system.Timer;
-import net.sf.briar.db.DatabaseCleaner.Callback;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.system.SystemTimer;
+import org.briarproject.api.system.Timer;
+import org.briarproject.db.DatabaseCleaner.Callback;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/db/DatabaseComponentImplTest.java b/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java
similarity index 84%
rename from briar-tests/src/net/sf/briar/db/DatabaseComponentImplTest.java
rename to briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java
index b8963654f1..7f68c99e7f 100644
--- a/briar-tests/src/net/sf/briar/db/DatabaseComponentImplTest.java
+++ b/briar-tests/src/org/briarproject/db/DatabaseComponentImplTest.java
@@ -1,15 +1,15 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
-import static net.sf.briar.db.DatabaseConstants.BYTES_PER_SWEEP;
-import static net.sf.briar.db.DatabaseConstants.MIN_FREE_SPACE;
+import static org.briarproject.db.DatabaseConstants.BYTES_PER_SWEEP;
+import static org.briarproject.db.DatabaseConstants.MIN_FREE_SPACE;
 
 import java.util.Collections;
 
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.system.SystemClock;
-import net.sf.briar.db.DatabaseCleaner.Callback;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.api.system.SystemClock;
+import org.briarproject.db.DatabaseCleaner.Callback;
 
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/briar-tests/src/net/sf/briar/db/DatabaseComponentTest.java b/briar-tests/src/org/briarproject/db/DatabaseComponentTest.java
similarity index 95%
rename from briar-tests/src/net/sf/briar/db/DatabaseComponentTest.java
rename to briar-tests/src/org/briarproject/db/DatabaseComponentTest.java
index aaef125ab1..231d7883fd 100644
--- a/briar-tests/src/net/sf/briar/db/DatabaseComponentTest.java
+++ b/briar-tests/src/org/briarproject/db/DatabaseComponentTest.java
@@ -1,57 +1,57 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
-import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.GROUP_SALT_LENGTH;
-import static net.sf.briar.db.DatabaseConstants.MAX_OFFERED_MESSAGES;
+import static org.briarproject.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.GROUP_SALT_LENGTH;
+import static org.briarproject.db.DatabaseConstants.MAX_OFFERED_MESSAGES;
 
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestMessage;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.Contact;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.NoSuchContactException;
-import net.sf.briar.api.db.NoSuchLocalAuthorException;
-import net.sf.briar.api.db.NoSuchSubscriptionException;
-import net.sf.briar.api.db.NoSuchTransportException;
-import net.sf.briar.api.event.ContactAddedEvent;
-import net.sf.briar.api.event.ContactRemovedEvent;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.LocalAuthorAddedEvent;
-import net.sf.briar.api.event.LocalAuthorRemovedEvent;
-import net.sf.briar.api.event.LocalSubscriptionsUpdatedEvent;
-import net.sf.briar.api.event.LocalTransportsUpdatedEvent;
-import net.sf.briar.api.event.MessageAddedEvent;
-import net.sf.briar.api.event.MessageToAckEvent;
-import net.sf.briar.api.event.MessageToRequestEvent;
-import net.sf.briar.api.event.SubscriptionAddedEvent;
-import net.sf.briar.api.event.SubscriptionRemovedEvent;
-import net.sf.briar.api.lifecycle.ShutdownManager;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.Offer;
-import net.sf.briar.api.messaging.Request;
-import net.sf.briar.api.messaging.RetentionAck;
-import net.sf.briar.api.messaging.RetentionUpdate;
-import net.sf.briar.api.messaging.SubscriptionAck;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportAck;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.api.transport.TemporarySecret;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestMessage;
+import org.briarproject.TestUtils;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.Contact;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.NoSuchContactException;
+import org.briarproject.api.db.NoSuchLocalAuthorException;
+import org.briarproject.api.db.NoSuchSubscriptionException;
+import org.briarproject.api.db.NoSuchTransportException;
+import org.briarproject.api.event.ContactAddedEvent;
+import org.briarproject.api.event.ContactRemovedEvent;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.LocalAuthorAddedEvent;
+import org.briarproject.api.event.LocalAuthorRemovedEvent;
+import org.briarproject.api.event.LocalSubscriptionsUpdatedEvent;
+import org.briarproject.api.event.LocalTransportsUpdatedEvent;
+import org.briarproject.api.event.MessageAddedEvent;
+import org.briarproject.api.event.MessageToAckEvent;
+import org.briarproject.api.event.MessageToRequestEvent;
+import org.briarproject.api.event.SubscriptionAddedEvent;
+import org.briarproject.api.event.SubscriptionRemovedEvent;
+import org.briarproject.api.lifecycle.ShutdownManager;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.Offer;
+import org.briarproject.api.messaging.Request;
+import org.briarproject.api.messaging.RetentionAck;
+import org.briarproject.api.messaging.RetentionUpdate;
+import org.briarproject.api.messaging.SubscriptionAck;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportAck;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.api.transport.TemporarySecret;
 
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/briar-tests/src/net/sf/briar/db/ExponentialBackoffTest.java b/briar-tests/src/org/briarproject/db/ExponentialBackoffTest.java
similarity index 97%
rename from briar-tests/src/net/sf/briar/db/ExponentialBackoffTest.java
rename to briar-tests/src/org/briarproject/db/ExponentialBackoffTest.java
index f2067afe73..06ab48e615 100644
--- a/briar-tests/src/net/sf/briar/db/ExponentialBackoffTest.java
+++ b/briar-tests/src/org/briarproject/db/ExponentialBackoffTest.java
@@ -1,6 +1,6 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
-import net.sf.briar.BriarTestCase;
+import org.briarproject.BriarTestCase;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/db/H2DatabaseTest.java b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
similarity index 97%
rename from briar-tests/src/net/sf/briar/db/H2DatabaseTest.java
rename to briar-tests/src/org/briarproject/db/H2DatabaseTest.java
index fd13917957..dc93ac9889 100644
--- a/briar-tests/src/net/sf/briar/db/H2DatabaseTest.java
+++ b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
@@ -1,8 +1,8 @@
-package net.sf.briar.db;
+package org.briarproject.db;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
-import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.GROUP_SALT_LENGTH;
+import static org.briarproject.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.GROUP_SALT_LENGTH;
 import static org.junit.Assert.assertArrayEquals;
 
 import java.io.File;
@@ -19,28 +19,28 @@ import java.util.Random;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestDatabaseConfig;
-import net.sf.briar.TestFileUtils;
-import net.sf.briar.TestMessage;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.db.DbException;
-import net.sf.briar.api.db.MessageHeader;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.GroupStatus;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.system.SystemClock;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.api.transport.TemporarySecret;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestDatabaseConfig;
+import org.briarproject.TestFileUtils;
+import org.briarproject.TestMessage;
+import org.briarproject.TestUtils;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.db.DbException;
+import org.briarproject.api.db.MessageHeader;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.GroupStatus;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.system.SystemClock;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.api.transport.TemporarySecret;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/briar-tests/src/net/sf/briar/lifecycle/ShutdownManagerImplTest.java b/briar-tests/src/org/briarproject/lifecycle/ShutdownManagerImplTest.java
similarity index 85%
rename from briar-tests/src/net/sf/briar/lifecycle/ShutdownManagerImplTest.java
rename to briar-tests/src/org/briarproject/lifecycle/ShutdownManagerImplTest.java
index da38215693..9bc3c222d3 100644
--- a/briar-tests/src/net/sf/briar/lifecycle/ShutdownManagerImplTest.java
+++ b/briar-tests/src/org/briarproject/lifecycle/ShutdownManagerImplTest.java
@@ -1,10 +1,10 @@
-package net.sf.briar.lifecycle;
+package org.briarproject.lifecycle;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.lifecycle.ShutdownManager;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.lifecycle.ShutdownManager;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/lifecycle/WindowsShutdownManagerImplTest.java b/briar-tests/src/org/briarproject/lifecycle/WindowsShutdownManagerImplTest.java
similarity index 86%
rename from briar-tests/src/net/sf/briar/lifecycle/WindowsShutdownManagerImplTest.java
rename to briar-tests/src/org/briarproject/lifecycle/WindowsShutdownManagerImplTest.java
index ce872e97de..ad02647623 100644
--- a/briar-tests/src/net/sf/briar/lifecycle/WindowsShutdownManagerImplTest.java
+++ b/briar-tests/src/org/briarproject/lifecycle/WindowsShutdownManagerImplTest.java
@@ -1,6 +1,6 @@
-package net.sf.briar.lifecycle;
+package org.briarproject.lifecycle;
 
-import net.sf.briar.api.lifecycle.ShutdownManager;
+import org.briarproject.api.lifecycle.ShutdownManager;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java b/briar-tests/src/org/briarproject/messaging/ConstantsTest.java
similarity index 74%
rename from briar-tests/src/net/sf/briar/messaging/ConstantsTest.java
rename to briar-tests/src/org/briarproject/messaging/ConstantsTest.java
index 9834c6f4b7..2f457f690c 100644
--- a/briar-tests/src/net/sf/briar/messaging/ConstantsTest.java
+++ b/briar-tests/src/org/briarproject/messaging/ConstantsTest.java
@@ -1,52 +1,52 @@
-package net.sf.briar.messaging;
-
-import static net.sf.briar.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
-import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
-import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
-import static net.sf.briar.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_SUBSCRIPTIONS;
+package org.briarproject.messaging;
+
+import static org.briarproject.api.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
+import static org.briarproject.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static org.briarproject.api.AuthorConstants.MAX_SIGNATURE_LENGTH;
+import static org.briarproject.api.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
+import static org.briarproject.api.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_BODY_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_GROUP_NAME_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_SUBSCRIPTIONS;
 
 import java.io.ByteArrayOutputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestDatabaseModule;
-import net.sf.briar.TestLifecycleModule;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorFactory;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.UniqueId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.KeyPair;
-import net.sf.briar.api.crypto.PrivateKey;
-import net.sf.briar.api.crypto.Signature;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupFactory;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageFactory;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.Offer;
-import net.sf.briar.api.messaging.PacketWriter;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.messaging.SubscriptionUpdate;
-import net.sf.briar.api.messaging.TransportUpdate;
-import net.sf.briar.crypto.CryptoModule;
-import net.sf.briar.db.DatabaseModule;
-import net.sf.briar.messaging.duplex.DuplexMessagingModule;
-import net.sf.briar.messaging.simplex.SimplexMessagingModule;
-import net.sf.briar.serial.SerialModule;
-import net.sf.briar.system.ClockModule;
-import net.sf.briar.transport.TransportModule;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestDatabaseModule;
+import org.briarproject.TestLifecycleModule;
+import org.briarproject.TestUtils;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorFactory;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.UniqueId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.KeyPair;
+import org.briarproject.api.crypto.PrivateKey;
+import org.briarproject.api.crypto.Signature;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupFactory;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageFactory;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.Offer;
+import org.briarproject.api.messaging.PacketWriter;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.messaging.SubscriptionUpdate;
+import org.briarproject.api.messaging.TransportUpdate;
+import org.briarproject.crypto.CryptoModule;
+import org.briarproject.db.DatabaseModule;
+import org.briarproject.messaging.duplex.DuplexMessagingModule;
+import org.briarproject.messaging.simplex.SimplexMessagingModule;
+import org.briarproject.serial.SerialModule;
+import org.briarproject.system.SystemModule;
+import org.briarproject.transport.TransportModule;
 
 import org.junit.Test;
 
@@ -63,7 +63,7 @@ public class ConstantsTest extends BriarTestCase {
 
 	public ConstantsTest() throws Exception {
 		Injector i = Guice.createInjector(new TestDatabaseModule(),
-				new TestLifecycleModule(), new ClockModule(),
+				new TestLifecycleModule(), new SystemModule(),
 				new CryptoModule(), new DatabaseModule(), new MessagingModule(),
 				new DuplexMessagingModule(), new SimplexMessagingModule(),
 				new SerialModule(), new TransportModule());
diff --git a/briar-tests/src/net/sf/briar/messaging/ConsumersTest.java b/briar-tests/src/org/briarproject/messaging/ConsumersTest.java
similarity index 88%
rename from briar-tests/src/net/sf/briar/messaging/ConsumersTest.java
rename to briar-tests/src/org/briarproject/messaging/ConsumersTest.java
index c5ea141fe7..daf7559ff3 100644
--- a/briar-tests/src/net/sf/briar/messaging/ConsumersTest.java
+++ b/briar-tests/src/org/briarproject/messaging/ConsumersTest.java
@@ -1,16 +1,16 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
 import static org.junit.Assert.assertArrayEquals;
 
 import java.security.GeneralSecurityException;
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.crypto.MessageDigest;
-import net.sf.briar.api.serial.CopyingConsumer;
-import net.sf.briar.api.serial.CountingConsumer;
-import net.sf.briar.api.serial.DigestingConsumer;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.crypto.MessageDigest;
+import org.briarproject.api.serial.CopyingConsumer;
+import org.briarproject.api.serial.CountingConsumer;
+import org.briarproject.api.serial.DigestingConsumer;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/messaging/PacketReaderImplTest.java b/briar-tests/src/org/briarproject/messaging/PacketReaderImplTest.java
similarity index 90%
rename from briar-tests/src/net/sf/briar/messaging/PacketReaderImplTest.java
rename to briar-tests/src/org/briarproject/messaging/PacketReaderImplTest.java
index 982391208e..e3b1af5141 100644
--- a/briar-tests/src/net/sf/briar/messaging/PacketReaderImplTest.java
+++ b/briar-tests/src/org/briarproject/messaging/PacketReaderImplTest.java
@@ -1,21 +1,21 @@
-package net.sf.briar.messaging;
+package org.briarproject.messaging;
 
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.messaging.Types.ACK;
-import static net.sf.briar.api.messaging.Types.OFFER;
-import static net.sf.briar.api.messaging.Types.REQUEST;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.messaging.Types.ACK;
+import static org.briarproject.api.messaging.Types.OFFER;
+import static org.briarproject.api.messaging.Types.REQUEST;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.serial.ReaderFactory;
-import net.sf.briar.api.serial.SerialComponent;
-import net.sf.briar.api.serial.Writer;
-import net.sf.briar.api.serial.WriterFactory;
-import net.sf.briar.serial.SerialModule;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestUtils;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.serial.ReaderFactory;
+import org.briarproject.api.serial.SerialComponent;
+import org.briarproject.api.serial.Writer;
+import org.briarproject.api.serial.WriterFactory;
+import org.briarproject.serial.SerialModule;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/messaging/simplex/OutgoingSimplexConnectionTest.java b/briar-tests/src/org/briarproject/messaging/simplex/OutgoingSimplexConnectionTest.java
similarity index 82%
rename from briar-tests/src/net/sf/briar/messaging/simplex/OutgoingSimplexConnectionTest.java
rename to briar-tests/src/org/briarproject/messaging/simplex/OutgoingSimplexConnectionTest.java
index 3138549bd4..f3b9d6c012 100644
--- a/briar-tests/src/net/sf/briar/messaging/simplex/OutgoingSimplexConnectionTest.java
+++ b/briar-tests/src/org/briarproject/messaging/simplex/OutgoingSimplexConnectionTest.java
@@ -1,10 +1,10 @@
-package net.sf.briar.messaging.simplex;
+package org.briarproject.messaging.simplex;
 
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 
 import java.io.ByteArrayOutputStream;
 import java.util.Arrays;
@@ -12,26 +12,26 @@ import java.util.Random;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestLifecycleModule;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.UniqueId;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.db.DatabaseExecutor;
-import net.sf.briar.api.messaging.Ack;
-import net.sf.briar.api.messaging.MessageId;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
-import net.sf.briar.crypto.CryptoModule;
-import net.sf.briar.messaging.MessagingModule;
-import net.sf.briar.messaging.duplex.DuplexMessagingModule;
-import net.sf.briar.serial.SerialModule;
-import net.sf.briar.system.ClockModule;
-import net.sf.briar.transport.TransportModule;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestLifecycleModule;
+import org.briarproject.TestUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.UniqueId;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.db.DatabaseExecutor;
+import org.briarproject.api.messaging.Ack;
+import org.briarproject.api.messaging.MessageId;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.api.transport.ConnectionWriterFactory;
+import org.briarproject.crypto.CryptoModule;
+import org.briarproject.messaging.MessagingModule;
+import org.briarproject.messaging.duplex.DuplexMessagingModule;
+import org.briarproject.serial.SerialModule;
+import org.briarproject.system.SystemModule;
+import org.briarproject.transport.TransportModule;
 
 import org.jmock.Expectations;
 import org.jmock.Mockery;
@@ -68,7 +68,7 @@ public class OutgoingSimplexConnectionTest extends BriarTestCase {
 			}
 		};
 		Injector i = Guice.createInjector(testModule,
-				new TestLifecycleModule(), new ClockModule(),
+				new TestLifecycleModule(), new SystemModule(),
 				new CryptoModule(), new MessagingModule(),
 				new DuplexMessagingModule(), new SimplexMessagingModule(),
 				new SerialModule(), new TransportModule());
diff --git a/briar-tests/src/net/sf/briar/messaging/simplex/SimplexMessagingIntegrationTest.java b/briar-tests/src/org/briarproject/messaging/simplex/SimplexMessagingIntegrationTest.java
similarity index 78%
rename from briar-tests/src/net/sf/briar/messaging/simplex/SimplexMessagingIntegrationTest.java
rename to briar-tests/src/org/briarproject/messaging/simplex/SimplexMessagingIntegrationTest.java
index 197676df36..1c522d458d 100644
--- a/briar-tests/src/net/sf/briar/messaging/simplex/SimplexMessagingIntegrationTest.java
+++ b/briar-tests/src/org/briarproject/messaging/simplex/SimplexMessagingIntegrationTest.java
@@ -1,49 +1,49 @@
-package net.sf.briar.messaging.simplex;
+package org.briarproject.messaging.simplex;
 
-import static net.sf.briar.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
-import static net.sf.briar.api.messaging.MessagingConstants.GROUP_SALT_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.api.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.GROUP_SALT_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestDatabaseModule;
-import net.sf.briar.TestLifecycleModule;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.Author;
-import net.sf.briar.api.AuthorId;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.LocalAuthor;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.KeyManager;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.event.Event;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.event.MessageAddedEvent;
-import net.sf.briar.api.messaging.Group;
-import net.sf.briar.api.messaging.GroupId;
-import net.sf.briar.api.messaging.Message;
-import net.sf.briar.api.messaging.MessageFactory;
-import net.sf.briar.api.messaging.MessageVerifier;
-import net.sf.briar.api.messaging.PacketReaderFactory;
-import net.sf.briar.api.messaging.PacketWriterFactory;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionReaderFactory;
-import net.sf.briar.api.transport.ConnectionRecogniser;
-import net.sf.briar.api.transport.ConnectionRegistry;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.crypto.CryptoModule;
-import net.sf.briar.db.DatabaseModule;
-import net.sf.briar.messaging.MessagingModule;
-import net.sf.briar.messaging.duplex.DuplexMessagingModule;
-import net.sf.briar.plugins.ImmediateExecutor;
-import net.sf.briar.serial.SerialModule;
-import net.sf.briar.system.ClockModule;
-import net.sf.briar.transport.TransportModule;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestDatabaseModule;
+import org.briarproject.TestLifecycleModule;
+import org.briarproject.TestUtils;
+import org.briarproject.api.Author;
+import org.briarproject.api.AuthorId;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.LocalAuthor;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.KeyManager;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.event.Event;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.event.MessageAddedEvent;
+import org.briarproject.api.messaging.Group;
+import org.briarproject.api.messaging.GroupId;
+import org.briarproject.api.messaging.Message;
+import org.briarproject.api.messaging.MessageFactory;
+import org.briarproject.api.messaging.MessageVerifier;
+import org.briarproject.api.messaging.PacketReaderFactory;
+import org.briarproject.api.messaging.PacketWriterFactory;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionReaderFactory;
+import org.briarproject.api.transport.ConnectionRecogniser;
+import org.briarproject.api.transport.ConnectionRegistry;
+import org.briarproject.api.transport.ConnectionWriterFactory;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.crypto.CryptoModule;
+import org.briarproject.db.DatabaseModule;
+import org.briarproject.messaging.MessagingModule;
+import org.briarproject.messaging.duplex.DuplexMessagingModule;
+import org.briarproject.plugins.ImmediateExecutor;
+import org.briarproject.serial.SerialModule;
+import org.briarproject.system.SystemModule;
+import org.briarproject.transport.TransportModule;
 
 import org.junit.After;
 import org.junit.Before;
@@ -87,7 +87,7 @@ public class SimplexMessagingIntegrationTest extends BriarTestCase {
 
 	private Injector createInjector(File dir) {
 		return Guice.createInjector(new TestDatabaseModule(dir),
-				new TestLifecycleModule(), new ClockModule(),
+				new TestLifecycleModule(), new SystemModule(),
 				new CryptoModule(), new DatabaseModule(), new MessagingModule(),
 				new DuplexMessagingModule(), new SimplexMessagingModule(), 
 				new SerialModule(), new TransportModule());
diff --git a/briar-tests/src/net/sf/briar/messaging/simplex/TestSimplexTransportReader.java b/briar-tests/src/org/briarproject/messaging/simplex/TestSimplexTransportReader.java
similarity index 78%
rename from briar-tests/src/net/sf/briar/messaging/simplex/TestSimplexTransportReader.java
rename to briar-tests/src/org/briarproject/messaging/simplex/TestSimplexTransportReader.java
index b8f075c120..22829b8b85 100644
--- a/briar-tests/src/net/sf/briar/messaging/simplex/TestSimplexTransportReader.java
+++ b/briar-tests/src/org/briarproject/messaging/simplex/TestSimplexTransportReader.java
@@ -1,10 +1,10 @@
-package net.sf.briar.messaging.simplex;
+package org.briarproject.messaging.simplex;
 
-import static net.sf.briar.api.transport.TransportConstants.MAX_FRAME_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAX_FRAME_LENGTH;
 
 import java.io.InputStream;
 
-import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
+import org.briarproject.api.plugins.simplex.SimplexTransportReader;
 
 class TestSimplexTransportReader implements SimplexTransportReader {
 
diff --git a/briar-tests/src/net/sf/briar/messaging/simplex/TestSimplexTransportWriter.java b/briar-tests/src/org/briarproject/messaging/simplex/TestSimplexTransportWriter.java
similarity index 84%
rename from briar-tests/src/net/sf/briar/messaging/simplex/TestSimplexTransportWriter.java
rename to briar-tests/src/org/briarproject/messaging/simplex/TestSimplexTransportWriter.java
index 691a4bd211..5ddf2daeef 100644
--- a/briar-tests/src/net/sf/briar/messaging/simplex/TestSimplexTransportWriter.java
+++ b/briar-tests/src/org/briarproject/messaging/simplex/TestSimplexTransportWriter.java
@@ -1,11 +1,11 @@
-package net.sf.briar.messaging.simplex;
+package org.briarproject.messaging.simplex;
 
-import static net.sf.briar.api.transport.TransportConstants.MAX_FRAME_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAX_FRAME_LENGTH;
 
 import java.io.ByteArrayOutputStream;
 import java.io.OutputStream;
 
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
 
 class TestSimplexTransportWriter implements SimplexTransportWriter {
 
diff --git a/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java b/briar-tests/src/org/briarproject/plugins/DuplexClientTest.java
similarity index 85%
rename from briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java
rename to briar-tests/src/org/briarproject/plugins/DuplexClientTest.java
index 35269a94e0..2b22110bb6 100644
--- a/briar-tests/src/net/sf/briar/plugins/DuplexClientTest.java
+++ b/briar-tests/src/org/briarproject/plugins/DuplexClientTest.java
@@ -1,16 +1,16 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
-import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
+import static org.briarproject.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.io.IOException;
 import java.util.Map;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
 
 public abstract class DuplexClientTest extends DuplexTest {
 
diff --git a/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java b/briar-tests/src/org/briarproject/plugins/DuplexServerTest.java
similarity index 87%
rename from briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java
rename to briar-tests/src/org/briarproject/plugins/DuplexServerTest.java
index 5a3d0b583f..805d3a755d 100644
--- a/briar-tests/src/net/sf/briar/plugins/DuplexServerTest.java
+++ b/briar-tests/src/org/briarproject/plugins/DuplexServerTest.java
@@ -1,16 +1,16 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
-import static net.sf.briar.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
+import static org.briarproject.api.invitation.InvitationConstants.CONNECTION_TIMEOUT;
 
 import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
 
 public abstract class DuplexServerTest extends DuplexTest {
 
diff --git a/briar-tests/src/net/sf/briar/plugins/DuplexTest.java b/briar-tests/src/org/briarproject/plugins/DuplexTest.java
similarity index 89%
rename from briar-tests/src/net/sf/briar/plugins/DuplexTest.java
rename to briar-tests/src/org/briarproject/plugins/DuplexTest.java
index 21b816daed..20de33cbe6 100644
--- a/briar-tests/src/net/sf/briar/plugins/DuplexTest.java
+++ b/briar-tests/src/org/briarproject/plugins/DuplexTest.java
@@ -1,14 +1,14 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
 import java.io.IOException;
 import java.io.PrintStream;
 import java.util.Random;
 import java.util.Scanner;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.crypto.PseudoRandom;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.crypto.PseudoRandom;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
 
 abstract class DuplexTest {
 
diff --git a/briar-tests/src/net/sf/briar/plugins/ImmediateExecutor.java b/briar-tests/src/org/briarproject/plugins/ImmediateExecutor.java
similarity index 81%
rename from briar-tests/src/net/sf/briar/plugins/ImmediateExecutor.java
rename to briar-tests/src/org/briarproject/plugins/ImmediateExecutor.java
index fe21666e06..bac8cf1e5d 100644
--- a/briar-tests/src/net/sf/briar/plugins/ImmediateExecutor.java
+++ b/briar-tests/src/org/briarproject/plugins/ImmediateExecutor.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
 import java.util.concurrent.Executor;
 
diff --git a/briar-tests/src/net/sf/briar/plugins/PluginManagerImplTest.java b/briar-tests/src/org/briarproject/plugins/PluginManagerImplTest.java
similarity index 84%
rename from briar-tests/src/net/sf/briar/plugins/PluginManagerImplTest.java
rename to briar-tests/src/org/briarproject/plugins/PluginManagerImplTest.java
index 3a326c36cc..92a5407ed3 100644
--- a/briar-tests/src/net/sf/briar/plugins/PluginManagerImplTest.java
+++ b/briar-tests/src/org/briarproject/plugins/PluginManagerImplTest.java
@@ -1,23 +1,23 @@
-package net.sf.briar.plugins;
+package org.briarproject.plugins;
 
 import java.util.Arrays;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexPluginConfig;
-import net.sf.briar.api.plugins.duplex.DuplexPluginFactory;
-import net.sf.briar.api.plugins.simplex.SimplexPlugin;
-import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
-import net.sf.briar.api.plugins.simplex.SimplexPluginConfig;
-import net.sf.briar.api.plugins.simplex.SimplexPluginFactory;
-import net.sf.briar.api.transport.ConnectionDispatcher;
-import net.sf.briar.api.ui.UiCallback;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestUtils;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexPluginConfig;
+import org.briarproject.api.plugins.duplex.DuplexPluginFactory;
+import org.briarproject.api.plugins.simplex.SimplexPlugin;
+import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
+import org.briarproject.api.plugins.simplex.SimplexPluginConfig;
+import org.briarproject.api.plugins.simplex.SimplexPluginFactory;
+import org.briarproject.api.transport.ConnectionDispatcher;
+import org.briarproject.api.ui.UiCallback;
 
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/briar-tests/src/net/sf/briar/plugins/bluetooth/BluetoothClientTest.java b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothClientTest.java
similarity index 82%
rename from briar-tests/src/net/sf/briar/plugins/bluetooth/BluetoothClientTest.java
rename to briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothClientTest.java
index a3b8ca6246..28eef667e1 100644
--- a/briar-tests/src/net/sf/briar/plugins/bluetooth/BluetoothClientTest.java
+++ b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothClientTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.bluetooth;
+package org.briarproject.plugins.bluetooth;
 
 import java.security.SecureRandom;
 import java.util.Collections;
@@ -7,11 +7,11 @@ import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.system.SystemClock;
-import net.sf.briar.plugins.DuplexClientTest;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.system.SystemClock;
+import org.briarproject.plugins.DuplexClientTest;
 
 // This is not a JUnit test - it has to be run manually while the server test
 // is running on another machine
diff --git a/briar-tests/src/net/sf/briar/plugins/bluetooth/BluetoothServerTest.java b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothServerTest.java
similarity index 81%
rename from briar-tests/src/net/sf/briar/plugins/bluetooth/BluetoothServerTest.java
rename to briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothServerTest.java
index 456c81b44b..99b77e3f24 100644
--- a/briar-tests/src/net/sf/briar/plugins/bluetooth/BluetoothServerTest.java
+++ b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothServerTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.bluetooth;
+package org.briarproject.plugins.bluetooth;
 
 import java.security.SecureRandom;
 import java.util.Collections;
@@ -6,10 +6,10 @@ import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.system.SystemClock;
-import net.sf.briar.plugins.DuplexServerTest;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.system.SystemClock;
+import org.briarproject.plugins.DuplexServerTest;
 
 // This is not a JUnit test - it has to be run manually while the client test
 // is running on another machine
diff --git a/briar-tests/src/net/sf/briar/plugins/bluetooth/BluetoothTest.java b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothTest.java
similarity index 75%
rename from briar-tests/src/net/sf/briar/plugins/bluetooth/BluetoothTest.java
rename to briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothTest.java
index f987dd39e4..300a5062e0 100644
--- a/briar-tests/src/net/sf/briar/plugins/bluetooth/BluetoothTest.java
+++ b/briar-tests/src/org/briarproject/plugins/bluetooth/BluetoothTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.bluetooth;
+package org.briarproject.plugins.bluetooth;
 
 import java.util.UUID;
 
diff --git a/briar-tests/src/net/sf/briar/plugins/file/LinuxRemovableDriveFinderTest.java b/briar-tests/src/org/briarproject/plugins/file/LinuxRemovableDriveFinderTest.java
similarity index 91%
rename from briar-tests/src/net/sf/briar/plugins/file/LinuxRemovableDriveFinderTest.java
rename to briar-tests/src/org/briarproject/plugins/file/LinuxRemovableDriveFinderTest.java
index 6634adc657..a9c4bc5bb6 100644
--- a/briar-tests/src/net/sf/briar/plugins/file/LinuxRemovableDriveFinderTest.java
+++ b/briar-tests/src/org/briarproject/plugins/file/LinuxRemovableDriveFinderTest.java
@@ -1,6 +1,6 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
-import net.sf.briar.BriarTestCase;
+import org.briarproject.BriarTestCase;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/plugins/file/MacRemovableDriveFinderTest.java b/briar-tests/src/org/briarproject/plugins/file/MacRemovableDriveFinderTest.java
similarity index 90%
rename from briar-tests/src/net/sf/briar/plugins/file/MacRemovableDriveFinderTest.java
rename to briar-tests/src/org/briarproject/plugins/file/MacRemovableDriveFinderTest.java
index 5b0fae4701..87ad6f655c 100644
--- a/briar-tests/src/net/sf/briar/plugins/file/MacRemovableDriveFinderTest.java
+++ b/briar-tests/src/org/briarproject/plugins/file/MacRemovableDriveFinderTest.java
@@ -1,6 +1,6 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
-import net.sf.briar.BriarTestCase;
+import org.briarproject.BriarTestCase;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitorTest.java b/briar-tests/src/org/briarproject/plugins/file/PollingRemovableDriveMonitorTest.java
similarity index 95%
rename from briar-tests/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitorTest.java
rename to briar-tests/src/org/briarproject/plugins/file/PollingRemovableDriveMonitorTest.java
index f4968b8e1c..b34b826137 100644
--- a/briar-tests/src/net/sf/briar/plugins/file/PollingRemovableDriveMonitorTest.java
+++ b/briar-tests/src/org/briarproject/plugins/file/PollingRemovableDriveMonitorTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -13,8 +13,8 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.plugins.file.RemovableDriveMonitor.Callback;
+import org.briarproject.BriarTestCase;
+import org.briarproject.plugins.file.RemovableDriveMonitor.Callback;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/plugins/file/RemovableDrivePluginTest.java b/briar-tests/src/org/briarproject/plugins/file/RemovableDrivePluginTest.java
similarity index 94%
rename from briar-tests/src/net/sf/briar/plugins/file/RemovableDrivePluginTest.java
rename to briar-tests/src/org/briarproject/plugins/file/RemovableDrivePluginTest.java
index fd287dc143..3875c1f702 100644
--- a/briar-tests/src/net/sf/briar/plugins/file/RemovableDrivePluginTest.java
+++ b/briar-tests/src/org/briarproject/plugins/file/RemovableDrivePluginTest.java
@@ -1,7 +1,7 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
-import static net.sf.briar.api.transport.TransportConstants.MAX_FRAME_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAX_FRAME_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -11,15 +11,15 @@ import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Executor;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestFileUtils;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.plugins.simplex.SimplexPluginCallback;
-import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
-import net.sf.briar.api.system.FileUtils;
-import net.sf.briar.plugins.ImmediateExecutor;
-import net.sf.briar.plugins.file.RemovableDriveMonitor.Callback;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestFileUtils;
+import org.briarproject.TestUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.plugins.simplex.SimplexPluginCallback;
+import org.briarproject.api.plugins.simplex.SimplexTransportWriter;
+import org.briarproject.api.system.FileUtils;
+import org.briarproject.plugins.ImmediateExecutor;
+import org.briarproject.plugins.file.RemovableDriveMonitor.Callback;
 
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/briar-tests/src/net/sf/briar/plugins/file/UnixRemovableDriveMonitorTest.java b/briar-tests/src/org/briarproject/plugins/file/UnixRemovableDriveMonitorTest.java
similarity index 88%
rename from briar-tests/src/net/sf/briar/plugins/file/UnixRemovableDriveMonitorTest.java
rename to briar-tests/src/org/briarproject/plugins/file/UnixRemovableDriveMonitorTest.java
index 17bdba120e..8e6488d19a 100644
--- a/briar-tests/src/net/sf/briar/plugins/file/UnixRemovableDriveMonitorTest.java
+++ b/briar-tests/src/org/briarproject/plugins/file/UnixRemovableDriveMonitorTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.file;
+package org.briarproject.plugins.file;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -8,10 +8,10 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestUtils;
-import net.sf.briar.plugins.file.RemovableDriveMonitor.Callback;
-import net.sf.briar.util.OsUtils;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestUtils;
+import org.briarproject.plugins.file.RemovableDriveMonitor.Callback;
+import org.briarproject.util.OsUtils;
 
 import org.junit.After;
 import org.junit.Before;
diff --git a/briar-tests/src/net/sf/briar/plugins/modem/CountryCodesTest.java b/briar-tests/src/org/briarproject/plugins/modem/CountryCodesTest.java
similarity index 96%
rename from briar-tests/src/net/sf/briar/plugins/modem/CountryCodesTest.java
rename to briar-tests/src/org/briarproject/plugins/modem/CountryCodesTest.java
index 366e14253f..da85b94bb4 100644
--- a/briar-tests/src/net/sf/briar/plugins/modem/CountryCodesTest.java
+++ b/briar-tests/src/org/briarproject/plugins/modem/CountryCodesTest.java
@@ -1,6 +1,6 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
-import net.sf.briar.BriarTestCase;
+import org.briarproject.BriarTestCase;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/plugins/modem/ModemPluginTest.java b/briar-tests/src/org/briarproject/plugins/modem/ModemPluginTest.java
similarity index 97%
rename from briar-tests/src/net/sf/briar/plugins/modem/ModemPluginTest.java
rename to briar-tests/src/org/briarproject/plugins/modem/ModemPluginTest.java
index fadaa044a6..40dc56579a 100644
--- a/briar-tests/src/net/sf/briar/plugins/modem/ModemPluginTest.java
+++ b/briar-tests/src/org/briarproject/plugins/modem/ModemPluginTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.modem;
+package org.briarproject.plugins.modem;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -10,11 +10,11 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
 
 import org.hamcrest.Description;
 import org.jmock.Expectations;
diff --git a/briar-tests/src/net/sf/briar/plugins/tcp/LanTcpClientTest.java b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpClientTest.java
similarity index 80%
rename from briar-tests/src/net/sf/briar/plugins/tcp/LanTcpClientTest.java
rename to briar-tests/src/org/briarproject/plugins/tcp/LanTcpClientTest.java
index a74ea9d6d8..1c7c7b83a7 100644
--- a/briar-tests/src/net/sf/briar/plugins/tcp/LanTcpClientTest.java
+++ b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpClientTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import java.util.Collections;
 import java.util.Map;
@@ -6,12 +6,12 @@ import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
-import net.sf.briar.plugins.DuplexClientTest;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
+import org.briarproject.plugins.DuplexClientTest;
 
 // This is not a JUnit test - it has to be run manually while the server test
 // is running on another machine
diff --git a/briar-tests/src/net/sf/briar/plugins/tcp/LanTcpPluginTest.java b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpPluginTest.java
similarity index 89%
rename from briar-tests/src/net/sf/briar/plugins/tcp/LanTcpPluginTest.java
rename to briar-tests/src/org/briarproject/plugins/tcp/LanTcpPluginTest.java
index da8ffbc3d6..38ba8b6a4e 100644
--- a/briar-tests/src/net/sf/briar/plugins/tcp/LanTcpPluginTest.java
+++ b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpPluginTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -13,15 +13,15 @@ import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.plugins.duplex.DuplexPlugin;
-import net.sf.briar.api.plugins.duplex.DuplexPluginCallback;
-import net.sf.briar.api.plugins.duplex.DuplexTransportConnection;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.plugins.duplex.DuplexPlugin;
+import org.briarproject.api.plugins.duplex.DuplexPluginCallback;
+import org.briarproject.api.plugins.duplex.DuplexTransportConnection;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/plugins/tcp/LanTcpServerTest.java b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpServerTest.java
similarity index 75%
rename from briar-tests/src/net/sf/briar/plugins/tcp/LanTcpServerTest.java
rename to briar-tests/src/org/briarproject/plugins/tcp/LanTcpServerTest.java
index 5fb926cf8b..d53f77b488 100644
--- a/briar-tests/src/net/sf/briar/plugins/tcp/LanTcpServerTest.java
+++ b/briar-tests/src/org/briarproject/plugins/tcp/LanTcpServerTest.java
@@ -1,15 +1,15 @@
-package net.sf.briar.plugins.tcp;
+package org.briarproject.plugins.tcp;
 
 import java.util.Collections;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
-import net.sf.briar.api.TransportConfig;
-import net.sf.briar.api.TransportProperties;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.SystemClock;
-import net.sf.briar.plugins.DuplexServerTest;
+import org.briarproject.api.TransportConfig;
+import org.briarproject.api.TransportProperties;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.SystemClock;
+import org.briarproject.plugins.DuplexServerTest;
 
 // This is not a JUnit test - it has to be run manually while the client test
 // is running on another machine
diff --git a/briar-tests/src/net/sf/briar/serial/ReaderImplTest.java b/briar-tests/src/org/briarproject/serial/ReaderImplTest.java
similarity index 98%
rename from briar-tests/src/net/sf/briar/serial/ReaderImplTest.java
rename to briar-tests/src/org/briarproject/serial/ReaderImplTest.java
index d0100ad75f..da3bb7da00 100644
--- a/briar-tests/src/net/sf/briar/serial/ReaderImplTest.java
+++ b/briar-tests/src/org/briarproject/serial/ReaderImplTest.java
@@ -1,12 +1,12 @@
-package net.sf.briar.serial;
+package org.briarproject.serial;
 
 import static org.junit.Assert.assertArrayEquals;
 
 import java.io.ByteArrayInputStream;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.api.FormatException;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.BriarTestCase;
+import org.briarproject.api.FormatException;
+import org.briarproject.util.StringUtils;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/serial/WriterImplTest.java b/briar-tests/src/org/briarproject/serial/WriterImplTest.java
similarity index 98%
rename from briar-tests/src/net/sf/briar/serial/WriterImplTest.java
rename to briar-tests/src/org/briarproject/serial/WriterImplTest.java
index 502c5216a8..4fdcebcf2a 100644
--- a/briar-tests/src/net/sf/briar/serial/WriterImplTest.java
+++ b/briar-tests/src/org/briarproject/serial/WriterImplTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.serial;
+package org.briarproject.serial;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -8,8 +8,8 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.util.StringUtils;
+import org.briarproject.BriarTestCase;
+import org.briarproject.util.StringUtils;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/briar-tests/src/net/sf/briar/transport/ConnectionReaderImplTest.java b/briar-tests/src/org/briarproject/transport/ConnectionReaderImplTest.java
similarity index 94%
rename from briar-tests/src/net/sf/briar/transport/ConnectionReaderImplTest.java
rename to briar-tests/src/org/briarproject/transport/ConnectionReaderImplTest.java
index 0d91a57b22..72650e2e22 100644
--- a/briar-tests/src/net/sf/briar/transport/ConnectionReaderImplTest.java
+++ b/briar-tests/src/org/briarproject/transport/ConnectionReaderImplTest.java
@@ -1,8 +1,8 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
-import net.sf.briar.BriarTestCase;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
+import org.briarproject.BriarTestCase;
 
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/briar-tests/src/net/sf/briar/transport/ConnectionRegistryImplTest.java b/briar-tests/src/org/briarproject/transport/ConnectionRegistryImplTest.java
similarity index 91%
rename from briar-tests/src/net/sf/briar/transport/ConnectionRegistryImplTest.java
rename to briar-tests/src/org/briarproject/transport/ConnectionRegistryImplTest.java
index 1774f88788..8af26909fa 100644
--- a/briar-tests/src/net/sf/briar/transport/ConnectionRegistryImplTest.java
+++ b/briar-tests/src/org/briarproject/transport/ConnectionRegistryImplTest.java
@@ -1,14 +1,14 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.transport.ConnectionRegistry;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.transport.ConnectionRegistry;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/transport/ConnectionWindowTest.java b/briar-tests/src/org/briarproject/transport/ConnectionWindowTest.java
similarity index 94%
rename from briar-tests/src/net/sf/briar/transport/ConnectionWindowTest.java
rename to briar-tests/src/org/briarproject/transport/ConnectionWindowTest.java
index 808f6a8107..2d60c037f7 100644
--- a/briar-tests/src/net/sf/briar/transport/ConnectionWindowTest.java
+++ b/briar-tests/src/org/briarproject/transport/ConnectionWindowTest.java
@@ -1,12 +1,12 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.CONNECTION_WINDOW_SIZE;
-import static net.sf.briar.util.ByteUtils.MAX_32_BIT_UNSIGNED;
+import static org.briarproject.api.transport.TransportConstants.CONNECTION_WINDOW_SIZE;
+import static org.briarproject.util.ByteUtils.MAX_32_BIT_UNSIGNED;
 import static org.junit.Assert.assertArrayEquals;
 
 import java.util.Collection;
 
-import net.sf.briar.BriarTestCase;
+import org.briarproject.BriarTestCase;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/transport/ConnectionWriterImplTest.java b/briar-tests/src/org/briarproject/transport/ConnectionWriterImplTest.java
similarity index 94%
rename from briar-tests/src/net/sf/briar/transport/ConnectionWriterImplTest.java
rename to briar-tests/src/org/briarproject/transport/ConnectionWriterImplTest.java
index c0c7437816..8ac7d795b6 100644
--- a/briar-tests/src/net/sf/briar/transport/ConnectionWriterImplTest.java
+++ b/briar-tests/src/org/briarproject/transport/ConnectionWriterImplTest.java
@@ -1,8 +1,8 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
-import net.sf.briar.BriarTestCase;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
+import org.briarproject.BriarTestCase;
 
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/briar-tests/src/net/sf/briar/transport/IncomingEncryptionLayerTest.java b/briar-tests/src/org/briarproject/transport/IncomingEncryptionLayerTest.java
similarity index 90%
rename from briar-tests/src/net/sf/briar/transport/IncomingEncryptionLayerTest.java
rename to briar-tests/src/org/briarproject/transport/IncomingEncryptionLayerTest.java
index 1b4071dfd1..631c33faca 100644
--- a/briar-tests/src/net/sf/briar/transport/IncomingEncryptionLayerTest.java
+++ b/briar-tests/src/org/briarproject/transport/IncomingEncryptionLayerTest.java
@@ -1,20 +1,20 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import static javax.crypto.Cipher.ENCRYPT_MODE;
-import static net.sf.briar.api.transport.TransportConstants.AAD_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.IV_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.AAD_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.IV_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
 
 import java.io.ByteArrayInputStream;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestLifecycleModule;
-import net.sf.briar.api.FormatException;
-import net.sf.briar.api.crypto.AuthenticatedCipher;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.crypto.CryptoModule;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestLifecycleModule;
+import org.briarproject.api.FormatException;
+import org.briarproject.api.crypto.AuthenticatedCipher;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.crypto.CryptoModule;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/transport/KeyManagerImplTest.java b/briar-tests/src/org/briarproject/transport/KeyManagerImplTest.java
similarity index 96%
rename from briar-tests/src/net/sf/briar/transport/KeyManagerImplTest.java
rename to briar-tests/src/org/briarproject/transport/KeyManagerImplTest.java
index 6337df582c..22f6d88d0c 100644
--- a/briar-tests/src/net/sf/briar/transport/KeyManagerImplTest.java
+++ b/briar-tests/src/org/briarproject/transport/KeyManagerImplTest.java
@@ -1,24 +1,24 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
+import static org.briarproject.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
 import static org.junit.Assert.assertArrayEquals;
 
 import java.util.Arrays;
 import java.util.Collections;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.Timer;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionRecogniser;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.api.transport.TemporarySecret;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.Timer;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionRecogniser;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.api.transport.TemporarySecret;
 
 import org.jmock.Expectations;
 import org.jmock.Mockery;
diff --git a/briar-tests/src/net/sf/briar/transport/KeyRotationIntegrationTest.java b/briar-tests/src/org/briarproject/transport/KeyRotationIntegrationTest.java
similarity index 97%
rename from briar-tests/src/net/sf/briar/transport/KeyRotationIntegrationTest.java
rename to briar-tests/src/org/briarproject/transport/KeyRotationIntegrationTest.java
index ce665878b7..65f9469f69 100644
--- a/briar-tests/src/net/sf/briar/transport/KeyRotationIntegrationTest.java
+++ b/briar-tests/src/org/briarproject/transport/KeyRotationIntegrationTest.java
@@ -1,27 +1,27 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 import static org.junit.Assert.assertArrayEquals;
 
 import java.util.Arrays;
 import java.util.Collections;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.event.EventListener;
-import net.sf.briar.api.system.Clock;
-import net.sf.briar.api.system.Timer;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionRecogniser;
-import net.sf.briar.api.transport.Endpoint;
-import net.sf.briar.api.transport.TemporarySecret;
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.event.EventListener;
+import org.briarproject.api.system.Clock;
+import org.briarproject.api.system.Timer;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionRecogniser;
+import org.briarproject.api.transport.Endpoint;
+import org.briarproject.api.transport.TemporarySecret;
+import org.briarproject.util.ByteUtils;
 
 import org.hamcrest.Description;
 import org.jmock.Expectations;
diff --git a/briar-tests/src/net/sf/briar/transport/OutgoingEncryptionLayerTest.java b/briar-tests/src/org/briarproject/transport/OutgoingEncryptionLayerTest.java
similarity index 89%
rename from briar-tests/src/net/sf/briar/transport/OutgoingEncryptionLayerTest.java
rename to briar-tests/src/org/briarproject/transport/OutgoingEncryptionLayerTest.java
index 683ea2847c..bf9a12c1b3 100644
--- a/briar-tests/src/net/sf/briar/transport/OutgoingEncryptionLayerTest.java
+++ b/briar-tests/src/org/briarproject/transport/OutgoingEncryptionLayerTest.java
@@ -1,20 +1,20 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
 import static javax.crypto.Cipher.ENCRYPT_MODE;
-import static net.sf.briar.api.transport.TransportConstants.AAD_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.HEADER_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.IV_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAC_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.AAD_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.HEADER_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.IV_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAC_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 
 import java.io.ByteArrayOutputStream;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestLifecycleModule;
-import net.sf.briar.api.crypto.AuthenticatedCipher;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.crypto.CryptoModule;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestLifecycleModule;
+import org.briarproject.api.crypto.AuthenticatedCipher;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.crypto.CryptoModule;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/transport/TransportConnectionRecogniserTest.java b/briar-tests/src/org/briarproject/transport/TransportConnectionRecogniserTest.java
similarity index 87%
rename from briar-tests/src/net/sf/briar/transport/TransportConnectionRecogniserTest.java
rename to briar-tests/src/org/briarproject/transport/TransportConnectionRecogniserTest.java
index dd961e9b8e..be6456a29f 100644
--- a/briar-tests/src/net/sf/briar/transport/TransportConnectionRecogniserTest.java
+++ b/briar-tests/src/org/briarproject/transport/TransportConnectionRecogniserTest.java
@@ -1,20 +1,20 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.TAG_LENGTH;
 import static org.junit.Assert.assertArrayEquals;
 
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.api.db.DatabaseComponent;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.TemporarySecret;
-import net.sf.briar.util.ByteUtils;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.api.db.DatabaseComponent;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.TemporarySecret;
+import org.briarproject.util.ByteUtils;
 
 import org.hamcrest.Description;
 import org.jmock.Expectations;
diff --git a/briar-tests/src/net/sf/briar/transport/TransportIntegrationTest.java b/briar-tests/src/org/briarproject/transport/TransportIntegrationTest.java
similarity index 86%
rename from briar-tests/src/net/sf/briar/transport/TransportIntegrationTest.java
rename to briar-tests/src/org/briarproject/transport/TransportIntegrationTest.java
index d28713e4d5..99f4ff4529 100644
--- a/briar-tests/src/net/sf/briar/transport/TransportIntegrationTest.java
+++ b/briar-tests/src/org/briarproject/transport/TransportIntegrationTest.java
@@ -1,8 +1,8 @@
-package net.sf.briar.transport;
+package org.briarproject.transport;
 
-import static net.sf.briar.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MAX_FRAME_LENGTH;
-import static net.sf.briar.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
+import static org.briarproject.api.messaging.MessagingConstants.MAX_PACKET_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MAX_FRAME_LENGTH;
+import static org.briarproject.api.transport.TransportConstants.MIN_CONNECTION_LENGTH;
 import static org.junit.Assert.assertArrayEquals;
 
 import java.io.ByteArrayInputStream;
@@ -11,18 +11,18 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.Random;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestLifecycleModule;
-import net.sf.briar.TestUtils;
-import net.sf.briar.api.ContactId;
-import net.sf.briar.api.TransportId;
-import net.sf.briar.api.crypto.AuthenticatedCipher;
-import net.sf.briar.api.crypto.CryptoComponent;
-import net.sf.briar.api.crypto.SecretKey;
-import net.sf.briar.api.transport.ConnectionContext;
-import net.sf.briar.api.transport.ConnectionWriter;
-import net.sf.briar.api.transport.ConnectionWriterFactory;
-import net.sf.briar.crypto.CryptoModule;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestLifecycleModule;
+import org.briarproject.TestUtils;
+import org.briarproject.api.ContactId;
+import org.briarproject.api.TransportId;
+import org.briarproject.api.crypto.AuthenticatedCipher;
+import org.briarproject.api.crypto.CryptoComponent;
+import org.briarproject.api.crypto.SecretKey;
+import org.briarproject.api.transport.ConnectionContext;
+import org.briarproject.api.transport.ConnectionWriter;
+import org.briarproject.api.transport.ConnectionWriterFactory;
+import org.briarproject.crypto.CryptoModule;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/util/ByteUtilsTest.java b/briar-tests/src/org/briarproject/util/ByteUtilsTest.java
similarity index 96%
rename from briar-tests/src/net/sf/briar/util/ByteUtilsTest.java
rename to briar-tests/src/org/briarproject/util/ByteUtilsTest.java
index 7020e020e8..a188eb77ee 100644
--- a/briar-tests/src/net/sf/briar/util/ByteUtilsTest.java
+++ b/briar-tests/src/org/briarproject/util/ByteUtilsTest.java
@@ -1,6 +1,6 @@
-package net.sf.briar.util;
+package org.briarproject.util;
 
-import net.sf.briar.BriarTestCase;
+import org.briarproject.BriarTestCase;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/util/StringUtilsTest.java b/briar-tests/src/org/briarproject/util/StringUtilsTest.java
similarity index 93%
rename from briar-tests/src/net/sf/briar/util/StringUtilsTest.java
rename to briar-tests/src/org/briarproject/util/StringUtilsTest.java
index d4465e062e..ddcc445daa 100644
--- a/briar-tests/src/net/sf/briar/util/StringUtilsTest.java
+++ b/briar-tests/src/org/briarproject/util/StringUtilsTest.java
@@ -1,7 +1,7 @@
-package net.sf.briar.util;
+package org.briarproject.util;
 
 import static org.junit.Assert.assertArrayEquals;
-import net.sf.briar.BriarTestCase;
+import org.briarproject.BriarTestCase;
 
 import org.junit.Test;
 
diff --git a/briar-tests/src/net/sf/briar/util/ZipUtilsTest.java b/briar-tests/src/org/briarproject/util/ZipUtilsTest.java
similarity index 97%
rename from briar-tests/src/net/sf/briar/util/ZipUtilsTest.java
rename to briar-tests/src/org/briarproject/util/ZipUtilsTest.java
index c08d4a3700..1e1e1d02ac 100644
--- a/briar-tests/src/net/sf/briar/util/ZipUtilsTest.java
+++ b/briar-tests/src/org/briarproject/util/ZipUtilsTest.java
@@ -1,4 +1,4 @@
-package net.sf.briar.util;
+package org.briarproject.util;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -13,9 +13,9 @@ import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 import java.util.zip.ZipOutputStream;
 
-import net.sf.briar.BriarTestCase;
-import net.sf.briar.TestUtils;
-import net.sf.briar.util.ZipUtils.Callback;
+import org.briarproject.BriarTestCase;
+import org.briarproject.TestUtils;
+import org.briarproject.util.ZipUtils.Callback;
 
 import org.jmock.Expectations;
 import org.jmock.Mockery;
-- 
GitLab