diff --git a/briar-android/AndroidManifest.xml b/briar-android/AndroidManifest.xml
index 02a4e1d7f60a429aabcee09d51400f2aa4906d1d..e28fc17329f9d95a95cbb53b5802d63516dab08e 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 5d317aeb97dc68fd2540bc3768bb8d6db65a9b83..e1ccbebbe9f30c075d8438d47989b249cad5873d 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 a1030b3e2fd62e99350e967299c140f2b578e478..6fcb2a9a834e4589681521792e2d2c36e5a9e0fd 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 a7c286e04c9922f878752f62551845550ce2c18b..6c1f98a8a180614bc97ea820807ba92856db3be5 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 a25cf96dc29f9fe9012ad004b9be721ed53aeb22..df6bfb316c5a75d5c612712430f4249f48845852 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 26ac273e33ee80fb377aca5b402ee010452262c5..11490c4ca8db8a2c97e2cb07a257de27f563d744 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 13d54fbc2ea874720fb3d740299dad91c9970754..2fc9b01724fb54774e474770fa9138708080b194 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 b71bea02962efd3ebecaf0155476b4b5fb2e7445..d7779071ab40b250c47523acc3ed138e3217f021 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 48788b781908c906f100c91c732e849ac781cb0e..e7be8f16741a02ca7a4c8eeb02c00288ab220efa 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 c0d30894f2f03f5862ff3520f57f9dfeca11c471..ef488ff66ea3c3b699771ffc446b6dd402752799 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 1d905f1cb552db2e9c129d9a4115ebedbaed4110..05ae1adb009c2789921233fd24dcb7c2cebca234 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 7d6f0dc0201e15369d35c9c6620f5c009a2f4675..665a1c8acb5bfa2788de7c0bd989429c9236c66c 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 b4617d10848e7aec736fce54df08a33db7352bcc..73538cc085c07074dd18db9ddf0dd1392d770d9e 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 2fb503234b9aa4ac26da24dd88f1b3ba087e828e..b6852526fd025025da44a15ea00045f829d265e4 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 8f4dbe2dfe6e980e597b62068399294d185ffd80..83f1ae127ceeb45b70597955ed294e2a13cf8f17 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 ca137ba0f737142f24926469f94957c64a5c77dc..f9f6e9f740272129a2aa67350dea75bb7197609c 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 d4ae17170c33e2d2306cc0fcbcfa81b94aef2fb0..08bf828b1a77375c33e11fb143244c4e633f3cf3 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 d1a4d7d209a577ef5b11be4e7b2898687679d795..4d08434ce4901d2a5d40e5f0d972b134cba7c31f 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 a8e777eba10cc9897ec3ea76d9ca93a3d72c4dbc..4050e01a8df13ce580710132c59c271a83d0ffa9 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 bdeca9fb55ee8648f1554fc9c5ac83644223b42b..1bf7a39055b6a05cb146edb8e093039d2f8956e5 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 92c8f01da337bddea21b9272cfe0843e8efe30c0..5745d4a9b8e60b1a7afc47a1d93e893e986a040f 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 ffbd584b60b644f4188e5290cc8d17da9b874996..0fb4b929225d920cf2b53cbf03d881f72188bc22 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 b8df2aad6d2286106da0876a90223bb5c7245ffe..bf671b63edcea2f079261a93542a5366b876c16c 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 59a34d373ec445d40e501391cb24d13717a2161f..56b9cffc0628543ea60023383571f6ff53433aa9 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 5ea8409f614a6e44a4668f6e598de222e3e6120a..d227059f07e7de766aa2f84d98b92aed54f28591 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 d42d33e254df13455057a5fcd688a4ed230b5944..d37867ba2611d4a99057317d593f3f05a4e5f5ca 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 ac4241e9c61b0ce70c42f37575b311955ae0091f..1b9b446ef6a6603a986d44106201753f6db87a7d 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 ff45e226bdc37106ec1392be0d28b8cbb5e5f8c7..8dce2375b426f59ae8bc7692d432556eec139791 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 f9f377ebd2b56f9fb204db45bc5a95f4d8aead4c..b9595a5a294fea35e6d1c4f82ea4747011b458ae 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 8ff3f80e93235beaab860f02cee97c7ebfbd3e94..6dbd585f67e39e430b2c37d0b743333a0747a7a9 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 aca8f2cd87f32649739f59bc009d46b11ce6eaee..7bcb6ad56d05496bf7cad615fdc7c7d81f929843 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 d82bb2feec9f80a366338b2b9ffa136a8d8dd2b7..f7b525eb06f374fb58cad48374bcfa8b55071931 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 9c265d573d617a4a044d12703371b2cd453ed162..dc27eec0dab011530543699dc5d44eb3668c81eb 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 91c73bbbee00c995c49760ca1048c939cc6a4645..a3c115e385d014d4549e95cfa42a15135b956320 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 29b19baa057eae534a196e648a6a545575caaa85..157153ecb5bda924bc9b456627870a95d8145470 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 dcd39facb81e4f1363b413b3d5da068379f2653d..0468a7812b59e6df5860072b1e5c7a94fd246ec3 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 ed44aa9835a14a8a4429137558e1694fdb4d0f03..00910319f1ccba48ffa025e847d17147f92fa8b7 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 190c0f80ae4b3faf4aef9075e373219f6631b656..47d6a701aae9da99a0e0ba3eeb4b130b96546f69 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 2010c551ef2a33128749c048ee79be0f160fc6ae..d2f48d9fbc25a5ea4d3477382d06e9338242cc50 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 f867d246cd72665347a6c6d73329194f042d0d9e..abb44221b026ee8e97709dcddaf982401ba605d1 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 9d75dc118b2711438d3ec3493754381874cd49ea..349e539897eb81d8c5bc229e2ed630922ecd1fe8 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 0f000a224b6b2c10301bdc0ea868cf41cd23b570..186999fc0c439a6c8fcb607cea4fd121d5999ddc 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 64ebbcad80791981ae6cb472a4bee0155da5bf9d..6b3036d0d7f6c11e770d962ca07e967f8e577416 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 a6ee0afc56669862a15d0ca691b07492680a7df4..5fdcb3059c4e9522f3c5ad6e428b6a821b11eec2 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 d07d63d181e9496931c04be154f1d798f342882d..28ecd6e1da39ce542b1b25a7c2bc6cb13277491e 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 43c324564409764aa75f54dec4ea15a55dcaa022..e63c8b177797eedd09d2e081fb6b7df42519bce9 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 fd287dfa1bb444fb715d36bfbd144fd87d2fdf42..26f28c6101414846829e16056b52d278866e987e 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 6691e97d77e20065cdbdd88625daf3e48a00937b..c6399dd91677fa52bd8a80342b1df83d5e906d82 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 664ab8c336bdba744b82e676fc2f8f0f67305854..78b886cfc0c0c9bba35683013578cdf1a0c9a95f 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 2eead7a0c9738c9ace75b85a18d20d5c3b970ec2..c31452002b62d148c26ea9bf6a0e635c9d85d58c 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 81e0f03d3a106c7b40671722be6c8806dcfe7272..dc3efb8e2f029c8b5900b55d0ff6dca102fa65b5 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 05f557a704b7b22da65ebf6ae3135015b761f28d..7dae72eef45180a1460387caa7016c47d5eb61f9 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 b3743ba44bd49159faddbaa93c5e21d51b2da77e..f9616697609c08833bc77c6c944d841b56a2c249 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 c109fb1051091a70469f2040735c9a4c0285ad91..fba3a0c8c06248139658c50554537b4a097d626a 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 57c4d046809a75ce40b27996980a2591f81fb258..0e4ecde983836590d85936c48a9a83f50a0719f1 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 22e2e04c9704cc97f7490ebd69f59184b61a3813..bcf5cc23340db1f92a289b7cecdad68f5a8c28ed 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 c46d281d50a4d153cd12c81568fbb8fdcabe4004..3d5b286afd623532890c0c64a4e1f7947ac78f71 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 4026390835e361b71ea2940da9d003a68e189cee..9d9f58e22ac957fa777eeb4cf5d8aa7887edd5b0 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 b75f4741548d926c12ecee5c69e353a48f647cee..2ed3fddf103d6175955101ce4061afa40744cd0d 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 f173caf03b8fa77d323f9d419a6e1926ef3f326e..b04db1898f8c3472e455e91a8bc948b612127742 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 fbc0bf287322bab576c4dff6d06865ed21f6017d..edc9d995588d4bd165f5959f8db37c520ec9e351 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 417f7c931e748fe919bd4585f9ec99166e67ce12..b245d4a06eca1edf021f1bc689e0653185455e32 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 384f129b62782584c6c6a4063b97f28c94f8c911..08a44b820709d40df211e0945f0d9f99d13c7322 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 f1cce80c180855fd247679cdc94144a08c905702..1fa460cf61a00354e83d855b5d4d889aba9e0a37 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 467ef5f778c06c7fed173853971b8e84257c5f9f..ce07581b6c7074abbfb588abde722fe054d25b3f 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 20bcd3867d28ed74e0e11f3b87c9232c72265147..2c4f27a5e788a9d0adf121c7909769ff0addfcbb 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 ad7b2986876b8a300ce5c6f953ae5862f1cc3864..b9d870fc4ad588842acfaac311b3af88dc78c8c3 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 d301a70c3d184d205f3e0a9f56c1042c8ec8d338..2ed52a943379ece082dd23147f143bfc2d433c2f 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 f77bbfc4ac4587709c80e7b9c741b0fa20cfad81..5500fe146b996774fc21c5832e45daa0b6b03529 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 2965b36afbe92fcc4989559644145aff9496b661..b211316a993988bf8bc979b54c3931eb870e88ac 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 3c8451b3f822079bacb47b6111acc1f47acd69e8..0000000000000000000000000000000000000000
--- 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 2eac7b0e268620cbb35a7b01e9af1b0778aba82e..0000000000000000000000000000000000000000
--- 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 3866460242341476408f3093efd98aa029b4ddc2..7c313a8b4ebcd726dcff84c41d1482afe8ab3dee 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 507b63e6154f7dc5235a9495824de21ccbf96359..57ad598a75d78566d026b3586dc68e3ab25528cd 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 dfb808a15ef24ba168c4f5c4f5eb419d49b4796c..f70ef2135ec7bba3cda4f8aab621aea7bd2414f4 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 263962963078e241b82062fddde1278d07071d0a..fd1102b51bdb59856ba8fa7b95839ea56f5ee49c 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 fe95d75d847a1911bbfd1f95ab79f071c4d75f48..0c92b4104cd0e69ee55b7290d9522cb87e0baed2 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 99a3d3edacfab7c6b0141c6a13c8c69314eea8f4..8e850e411a3e74cd79c2072f6265607c4d15fa03 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 7875f596d4255dd74f2451ed16b2c365271e70b5..d5d33e6236a3bffb57853afc9d6fe56a63fa377b 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 6796df2b7fe6d86cdef4e69b4f5e771f2e78791b..0cbbb8535de0663468c23b1548615109d869f033 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 365c92326ac748071001e71d288fda7708aa1b2f..16da123693614ca8fcd350d70c85c04ddf4d9d24 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 45e5ce09c743d45789b15ea3216fe4a3a978460b..f806fca42d060f040faf9754868e4818a52ca04c 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 bcc8519508a088b4f4aa0f13b36da60cf5861bee..264419b8d9bdd25554464a34cd47715f8b904eab 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 cdce2af433908468e87b46e00c8815d3e478fc8d..b934c7ed53873bfdc8d722adf60d430481aa7e11 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 4967fe210717e9c3731e1d9103079af467e57630..03ed8be82741c1f6f850a36b4e4fe644b993605e 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 f86c873fa1c6406cbd1c4f8e4082adcc38b84db3..38d4e9bc48ec9475bee806e6f16ea17e6b165c4d 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 808c337853ad8e0d41c71a4fd92da026a1680fd7..4f964d6a12b50176f7b8033526ee201ec9c841e0 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 ecbccbc105e993af01a316933aeed8da781c0f1d..4a9ceb4eb27e69e9d6faf99105f482a25f203796 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 61445e9351a7a7c1f6b4f2a2a6fb54d819c9bc6c..2366d9e1cdafebae0967b3bc7ffedfd8413c76fd 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 6105b70dc6f2fc231e4952dff6f090d7c183a3ac..1b857b64e177eba44cbd4b5fd8087f4de3e8f21d 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 a3bf48e15c4417c92d78efec83e3222b3537945c..e40614efc635836a59f99ba02de030c10227dcdc 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 fa2a8f11d50d08de5126d4b82850150ec1b4886a..c527c5812a238bc57b07d215644aebf7c21d4209 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 803b1037ccab7a622a854976a733cb55c690e72e..94bc503a130e59ceb9e59797ae5f49e7508b0e15 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 76be830d717ef67292c4d5fa40e249b7194b8dd1..9af5da4cfd8fc61237561c03c1a0e2a730e5d185 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 835dcb3d736f01e146e95223a2ff207130422468..89258be5e733c1512db5f05d0577731e787afd12 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 406bd5dc74ee8ce02f02f1f5f7c393b68957c250..342733c2d8e20e2a5939fec22013f03d346d85e6 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 332bf906c867f0cf3d57c9ea27a796ea67fe9e18..0fd491e1e61d8abdaea78c3708f47aa6038678d2 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 0985fec3de661ebc72b1e26e86df372b725d43e6..1edaa2b2587792712b2ea753ba4701f09ec86ff4 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 27b851cf6ba3de8f5ddcee777f11278987c02b98..f192be90f442463b3025ba62fc137a141683ae8d 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 1149ae75399e511abf872078d830bf6384cb211d..63d1f7661705087cc95ed9050072bba010bd0370 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 f09595608b85f5d8b0a7f8a814cbaa380119cd85..85c3c93a156b44de7b351455c82d02034ac71cc5 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 33b11d6d1fea17133e48166b902fcc065794f631..6b4c283f5af49fbc311c818ad63bfbd75853db9a 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 43e1d387694d841750b10ba83390b1f7b39758f6..8dc27c97181a421e597e84ae5c8bfe72b3a05fe7 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 26f42f99d96d2ed8813c58ac94fabf0228fc0162..e452fe15c505ccdc10c0e1659472866ceb287f93 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 cd0f6c909a8cd935fe4235ec7a81c3dbfd015a2a..3c0e44a73d4391a3e25551577e67dbbc0672a312 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 74f992107cfa340a50f8982f6b8e50d92719e197..decccf5e7bc2ba03038475a9a3d147eddc3e9dfe 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 0a200a6355c9cd0e9c851404287fc619ea09a90c..d214d45e53eaad11037f406e9046ccf23dfa63e3 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 52425d7e431c5b6791fb85116005fda57f07e335..549140364a4b2e619096002c76fe240da224a9ee 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 90822f583b0d52896055a78fa9efe4bf8e8fc8af..64831d9fe7359c73d063581ad343bcfa52f6d3f7 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 ed6033a2d1d4f8a205ecb172cd8f7bd1ceb867b7..6743521b48bd0455b438f509774b04160c78e580 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 d091fdaeb4bee0eac95e42684dabdaacad4258ad..239e03cda6b1643fec731eb2917ef81e4c3fc996 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 ef24e15a7d4a68d4bba3a34bad94e48ec2ca0744..a28dbe02b21de44d6509d48e6ba8715c6e884135 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 5905a970c5daa7d1ece6436f3ee669a73561d59a..fc19dc1e50570cc7e757ea24a20d5c905c043c23 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 7db2fd09640522b8b344c442866bb6d7ed551262..4c9c6ca1281192aa156e1540babd44ec44e2eafd 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 9e1cc4dfc1843869643e2073efe273509a4232e7..6728c7905064edf9af7c4b32d6d74e23c99354f1 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 e4ad51c5a4377e5e648d94be69333f5e9f44a3eb..6b080340eae95e5d5f099e0cd686b0e7bb81592d 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 610194452496d784107b6805092f4a95eedae15d..9a7a8b64842e1a0e371750355c3c259e127f6d66 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 9db96a3d5e08532d84a94240ed72d0df503101e4..8ab59aa04ba33559475784b2a96606b2ce2e912f 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 2bd6c4fe273d085b152f01138b0b653a3df63dc2..81c4145ebf93c08ccb17fb6a1e83840c62e52493 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 11666979368e1a778d2fa950c6c93176725671ce..9671792474255355c464f69c68b1266035e5117a 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 934eee61e1c792fb3a013927e11aa056353936f8..2617a06ce55f9792864e62e207c317673ae6f01e 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 a3be88940f79da7bd6c1ed72e5cbfe9ac2788bc0..c8cc743e908292168f8849bb0f961c5571cfd0d4 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 ba7e54c1e0dbe03a0dbedb84ba718a2a8d4d1378..333293f22386deadf30bec45627159f8fd6fd944 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 e7252d08c5a3fbfa3ba9bc2d8842e3a858e7d10b..9b708a7c44149b80373babe3ec410440cdcd4090 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 3aef09fc42d186a74c10135c2be1d8966e9692d6..a3c023f2d52d23f861cfe7c01022003c8179c8e4 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 b0edcb03e40209ca99a45d1752f6cc31dc922b8d..f59eabab8c790bd22a1c87a8caf5c0dbfa347449 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 da4cf6e5d1e62e335a7ecfc27cf4a2ab67281c4f..11a6b699536ebcd81bb7fcf3477cf6a5c4a0d362 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 3fd53d51ea8d7e1bfd6419e7b011e41050ee2a50..2da4f893cedbcd6acfc621116da873b7ae58fe7b 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 945fd2829dee91f51a2ae1351d9ce57c4739ed94..a56c8cb9abb4405bc8510ca1f02e905840dc371f 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 843686e1f3103e007a11dde9768ab44743016eb6..7e0d834ed24fc39d362f2d3f9a05e2a5e74acbd1 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 0ca97fdf7187e1b88cbe0ab955b00f99a3f2ff38..c59e9cd3d6ecdabbb07176a339488669927f3aa0 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 a1afb7b3d78a70334331d6b48eddf2c574414bac..8a3d0dabdfed876dd472aa0264e4333a41d448ab 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 bd4d18d41f0bcba64c343baf34c6dc1ab1462b5e..7a1f599a6e59d452f782d61144678e5454c0a1ab 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 4b16b8ccfa403ab203bfffd718d40ab81285e10d..a0162d595e6a9705a5d8d4c03ee141cad4642284 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 e5ecebf134c06bb30c7e087635a948b4914f1905..e858fe9c0b485c5f673efc7c83b7050d7142642f 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 29726eacfd5737bc758e15f329f4923c53db0420..67af91ae4390343b5812f1814997652080990755 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 0e03efe80235b8215e2dcac8cace743d2b9ae2f0..e99ac16d0601407e6b116a6157e3fa0effd6c45b 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 534582d33fb51f0b6314dcad9ebecb7f0270ce3f..d188de5a5959c7bdeb500012ccd071ae296717b4 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 7d6ccca93b16f8bea54ab7aa978b942b49c48c48..33fd35b6473f22489901aaa750235baaadfba297 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 9d312c789c1e801c4049da06b6b2b56bcf2e2adb..f12e0f9627e4a04c3d3a49a2d4a83ba8829ffa69 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 8662207a9b71723d992a8eccc6b0721cdbe9b7fc..88bbb6b4e28a5496cf8b747c80f6ddd207ed5089 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 8d8b0af405feb380b4947929e882efbda47d9721..27550c7e8a8a9321d23db534312173fc8cc607ec 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 562ccb5fe900c44a7161a23d45e04238ae3c3dce..485c17b8169ca76a267b3aa827771549b62f8f69 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 a778b24dffdf7dec0c0c4b82f6d5dbcd4b316ce1..e4efec0c1cf91b22b76bef5792654474adb63f55 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 a7aea03576fb7cc300e95ba0de13ec9770b56065..f1ec1183a93019fb67ef08588943cfbf096296d5 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 428726d7e01c880c35d3113e992edfe428cf3c81..d34ccebcbdf82c05db13a66ab73ca3286e9d9170 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 35074ed36fd90819f2f25b004ac4ce7d5b0c9298..796dcdddcae8850e13a6791c80ba9b95a2eb5efc 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 b589ce278479e418e53ae8ed10c326d1f8f68b91..608be41239ac492f4b8d2bbacbcfc04621e90389 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 0c798ebb711c09d87892c45e2965055c7d71e703..7e06f0d0b7d38863d26d2bc474e3fb9958ed2217 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 35ae7e8f2184315cd509650aa4df60029ac2e863..1ba329aa2bb83e106afa57dcd6e56dbbb0015bca 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 3f666631a1bfac5dbb60415654f59843bd3982ef..6ac3d277bdc4ec97bf8c8821b634f66977b0a662 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 011ef86eddb7d63423e2dba6f6d06e985a71c4a7..a30881eca663f3c7c6f373f2edb80b1ee834e14d 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 9f107c73e42005f03fd2fd7f19d11341a52ed754..8ab4a0dc175e920bf734f975050f94eb64500f2c 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 1f13497c98f3477dd1e293672714e8757af258d0..d390bf2498b6376caa9c5bbf813232972b9b93d6 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 40aa880fa3b6e406c6712a5a9784f4b24bad0bcc..3bede6db2a0721debe6d81583f8f3d41348c4693 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 f6a77762c0331c78a3ba18858c2b75d7f90b6760..d5d787a19586cb8510a3ecbc47ddbf9a8e7c9453 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 371fe7cb07ab844a41e76ceea7f7f0db25f9debd..8d75afcb7907c923f101539ea9d3df39ec100676 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 ec22cb8e5fa98fbf9797e8d44153534890b3d984..eae1e39283047d2c4bfe30488c924bdfe4546d0d 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 faae81bf6d9c754778fcb8ed01de1050d3a7dc19..9a538e65a74f6a96eed7b6dca8c880d03786ae23 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 5815b0650cc1af4e358a351c733893fe8ffb6923..4e8a59498013146adfcbcc0865e2d4a51f0df5e9 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 3a9e79f2c4099306272d56f23dce1b59c18e457c..c304853858b37b69e623ad70512b4a5eedd407a8 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 48c3cda3c95ded1747b8bdc1d63991ede343eb44..76f95ce097805175ad4df817608b6e0f73dfa2d9 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 e9b0e19a4281e0743b0ab5aad430a1f6bb153eaa..ce6ccd4fb0b55c52394f8daf6bd31fb8ba6dff15 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 d192b200abb12bdc34818e80d9ff7472939a0a44..78f2b5b1b7bf01be572448e6d2a3f130fb46d8bf 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 a141c071c9c7c696802545df831345ffc7c288a6..83db6e6c9bff9690b9152360ff77a6e02a3a1501 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 880d3b3d1a0106e2d8e2c3aac9f13128c0dd5ea0..1438e288c60c582be55dd6379dd49e6b16e513a7 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 0000000000000000000000000000000000000000..b0c8e313ea559720990b1aba01219c20a117c7de
--- /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 0000000000000000000000000000000000000000..8ecd4978bdc2498fe61cdee9165cfe09e75c34d5
--- /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 123dfd0ad16e7524678261db66177c13c7804115..4901a754f5d736adcd9fa1fa332ad275df5b8b94 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 895d4a8b253f78338d922baefb4511b011de2c3f..e65408c172da35e4df757c4b359ca2dc1ee50ab9 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 f6ba7edb4f10b25bcf6f1d1b80923cb4ee548e7c..fb0892ebf39b65ff8bc33de90a45c6047672f3ba 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 871867318acf16e1fb7dbe43c48411a20abe87c2..330de8669bab1285125bd59c169b843ca2c31bd6 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 4120e25c41b7a7954f917ee7d30f510d36e1d115..8712d7b7920ac554ce9dc7c0b812c2092fdcb5fa 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 190f67170f17e3c7ee1a625d32f215274b26f7ee..494f746a17925422a468b520d69e6540e09d46f9 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 ac064815b9682edbdac3cafdf905b73348bd5191..fc17637196d37fbf7e489dfeb8a4f2a3716c65fa 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 2fb2accf0e2b9b6329ea1d47dd91fc71a07804ed..7e42b5b462f602047f5ed11ef5cf96b4b169e721 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 5d115795389c1fe06996224fdc11ef9d4b5bf2fa..2acab4cf1abb18a1644fc4ab3c9276d254bf33c8 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 5e1fe8b0ff26826728d6f844b29fd39afc1e72a0..c6334becc9765c7b11ba0affcf730c659e79a066 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 2e808f7eae53504349bc469dd6a17d9a9dfc8543..d4cf816118e5e038c3dfdb71ddc4b8d4136ee228 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 231d39bc3df0ae2bee8bf379f0564c589e3e7827..59f4f6a079be3605d613dcf81bbcf671d5e75083 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 59f606118250cddac8bec93c021d551948ee15af..b0c09575a6232f7c705c4fe29f84de9b54e3c149 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 00850b12e50421f14adf80e98e446d83d9d9c84b..387a7a03bf69cc48b7109afe9a450881695f01f5 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 f21aaf032b2bbe719714c6ca1bc8ce32f9e89ec1..76fb20d3f248db28523383d428d28970029f0107 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 4d91e5877ccb6826d5ce49cce4c96e300772500f..44b7b3344c2c86b54c595a04afefbc0c899f35b7 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 ad24a5e1bef37d2940e4fccea509c30d64bc73dd..dbb2ddcd56996853c68c1a3d453c4b8324ba38f3 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 31a24ddcde9b8260211c97397aaa284969f6c98f..13d41f646df711f66c8d6a9e7ab1f4ada23ed0b5 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 848e3e6b080a38e0fb914e7b1419e90bdd6cab27..f98e87f13a5483d6859338cc461c0a472249f67d 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 ef36266ea9d8c78dcd2f100f5ae5b6514062b875..22bdbe0d99eeb2612fd34c378fb98c4136d211fb 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 4d08ceb3825d0ed6a34df7e2c9bbf0138c54aaf2..5f555a5c23b98177143f75467977ee8993af1704 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 3274c6a994f6e204bfcc1ea27158248cbeb44cda..b06e0a8437abca9e0ccd0415c363257584732ba6 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 14509e09463cc1749f8347eb9111df3832dc093b..8c41899c61385c8ee11898dddbb17eef62f87a6b 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 843cf7185eeb561710ae09eba003b91942d5fa15..1d9420b54eabdf16eb98d2f12bd65c3665858884 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 fa55469fb12958922670336ce34aaf63f5d939d6..f1591f354883e342c16b6e7b5f56bc46db6da7c5 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 64576308979ac19711e36c5bdc49344ed155ecd0..5b48bd43fcb22fd8c5b4e0851567a49e98d3a818 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 0666a88db6ee146954dd6fbf465c510c1a2e3147..be3d6196849d3cc4702b68cbe57f85b59d639d7d 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 871d009263bb22c814eeec2358bfe061dab8603e..ac6a28620827eabc0ef2e4ec242846d00d329110 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 bf512caacfe99c9016c210bee09549b21301ec92..14e14746645b898a5c10c1b8978b8e3eeafb86db 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 ad2d338a43a6572536de2cbb79ed1f6904f6cdc5..ea972e14059f291739c73aee0d8c81b8c4d0538a 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 39fd31fe09f328ae291c592d318e7bd2a35e426f..121de0eb0e58b0678cd613661f2fbb59b6fe8281 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 805d017c6621ce6df5a90109002dc307963e79af..1fcb250d6bd9f832eb5fd16a1113ccc02b10172f 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 63bd408eeb75827b15b74e60cabc365f3ec23967..306a7f80ace03031a8725f5a75acb7060cabe770 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 94100b342ad83b19b6d7a99a406076f5dd403d3b..bf8c14872435a868f7a71bcdab68b53879e31898 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 6a068698d00b1ab3c98ce510625a46f872e8b26c..bbdf59674116f171b67a108d43b4d2cbb27c2fec 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 d5ad5620b72af61b249b90668b5e9a556d39ed53..9eb08e88b1c237fabbe97516ca30b15ef73e4fca 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 9c62ab1abeb5e60d4b712f1211a06bb737445e0d..16434bdc538fe8f5ca8a1f3865ef72fa8cdfeef3 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 6301eaece5249ce65de682327072e6f358875a7e..eb81685ec7d8284f7247552978b6d9cfb59ea14e 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 0d9a027c8bc6f0a7fc312f89ecc6f2854c1abdf6..33052565bc42631e44562864df904db41fabe5d2 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 cac3fbe40c825bd368c1b2aa1ea7c63fcab029c4..a4dc40b15233467e63153a91e655cf934215c69d 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 b070b3c63c50c96f39488a2490cad91b1370842b..2757e43180209c1c3880a78085ad859d59af7b9b 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 12903ac219c5d0402bdc2cbe3eeffb0e55cfece7..39ec863005eddcfa0a4bdde72a399df90a9262e4 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 fa211f559f2a86e9715685a92c0852b8b8c0640e..270ea4b640d874896cbff7000abb24f48d4e8a6b 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 bfe4721998064b1512522c197c804bddf5b4150a..b195785991c174403a467baa5b0263faa8e6cb48 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 00d4126030d702334a3a5c64df292dbca2a9965a..017ca9fdae5cb8a4add6a049dcaa5da362b1fd0b 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 bf3dd788a93ad6a9d94a278055a9eb8f074285f5..6ec3d2d6d2d7afe169700973d1071d993dfd1964 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 b42f71061ce0714d55c81358b6e67bddc3e76a12..d70554de648e4c276f4464ee9d88da8c8dad2e81 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 035ecdfae072b2424500c6f4c0c1bbf22f0ffe63..f3a858425e37c857df6e076239350c2d0965e584 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 fe5df78fd94c9c9fbb7d01616fb9e7ef0d2d5dc4..da5eff390fda3547c7ad0ace899f83b9943f7345 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 4903ef89e5a013857088cb5f2f29a58fd40be4eb..e3608950fcba49651594a1ac022e7b1d63f56d35 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 663bfe815f7e2040090735174bc6ed245bbfa876..0000000000000000000000000000000000000000
--- 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 4597ebd34a54c7fb602a7327cc6de1c95c700cf5..34c1379bbe9d1a1f9b5934f74ec47958bdeed665 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 9b449b7a5e7b4d8e8ae8df8ae3c1f29d971c4af1..4f689f463550c466ebc5ec578a809577d91bbcdd 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 bda3ed9b00e0d6aad7bbab54b27d803a2d72b361..39a18c6ac0d0fe8e0cc1180c527523012e28bb5d 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 20b42865fc6bb46d1017cf370d7a832c69770049..c6186596f18f76a6d70d0905e84ea5e05b3a44d4 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 0c98783d9eb398f0a971cc4cbe22a124bf31a10c..79d24b904f9520a60733b98393ce80d95c0a8453 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 c2751cf25db2a7b88f19da7b70a7bf3f3767c684..de83754f9615a548ffe5853c159fe8fce0aa9783 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 5aa7faff06300fb81bde745274da28b825ae207e..b9077ffb5d60802ca9511c9d7d8ff09f1bc151da 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 47791406374f02b1c363918d24564cf12ca7dbc3..2cf5ab782ef4fcb6178ceeeb25b80862856e7ab7 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 3c6eae0598c72c14f311bfec97edc275d8bed464..0b749384afd4b66b109f080f4b45fd4eed7914a8 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 debb6cb8657e9db735fe3eef136aed07331fb966..b0f14ca1ba71464a9341d6daa8cac123eab73834 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 64bbad0634074312dfd9c31ad41eba717bdd556b..d7cdbdf05d784a596fd594c12bd3c164ffc3fdaa 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 c9f39d42b81bc00418be2388e829dd24a1aa5fc9..f8c4f7954232823a6484a16bfa768adf9385b3bd 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 6e5a890629c5f98ea8005fd60a70580d0d85f521..79ff4473b578a0ce5bc73d0eda879fd58532bf90 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 639c92d4e34a47f979e4cf4b3843ec666df49798..fc2e1024b737891a2fe232f82c788c442b34d0e7 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 573adc6144355f82923d6fef9422f2c916b2265b..7c0993c67798d6cb98b21f51baa92495a2b15643 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 b5c5c623b13dc0f5eeeb86fa5c92540acfd55861..15b1a772e72527954a0f3dd2e336ad375cb2b7e4 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 53a55111091004735daa7dbb6aad7382f9039ff1..f1c3f3f747f67ed2cf0302b5e966c56e1473db8c 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 921845cf54055c8a400fff49dad0099ad2d85ad5..3457fc6962b2459fa4ee3ecbfb67347d1f994640 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 c628cf717329e63da0de64f94aadaf246b501782..f324faf2589ed937903118a7ce59144983adb157 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 4fd5e1045d5d206ed70a0755df1e0ecf8fd649ae..15444d11c15b52103e0222ca8d3fe20e4f0ea007 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 0f6b67f9737fdb9ca05e19fc35a4f68ac1d61443..664a2f68d4b2a992db970bd77f477f069bfca359 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 5e7e008eec2ee544fa5a9f79250bab77739cb83b..3f63d08c1f8f450b6322b372b1674f98a7cd7e03 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 d33787b88b3d38566a5035714ac368510e5dc857..b28c957f371337bf9cbd5bea154314d6be9d7aab 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 ebd8fbfddd371dd810455f80ad21511488913e6f..44372d5894730005c81e1fd9ecab96de37414c02 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 a2486ba14629d9da18b1f6cb879ef4d957aace3a..b19edf2c7dc67235cbc138e3fdff9e7a427b8775 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 0dc6a39bc4a00af52dad2d89aa24db9d16456e39..c049830beed9ecb670bd31816d91b76c2e48c15e 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 0039480e4bc8ab30d8f362707feacb3f3f2ce107..057ec973207bb09bac052a449dba71690bf7fee3 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 8adad86d8d07f2e1332e65f52c4df592ebb3d7ae..a9bf4c8949feea71a6603c973101dcbd3f33bfb6 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 06e007762b289c103e3dbdbb5bca1db69d7c6eb5..128191776286de926aad3ebffb52c7cdbefa3dc6 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 bab67b578082f0b5a9f4fd276f60f947093c94db..8c6c7360f218b4c4d5478cd43615831c711b7620 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 bc8bd052851f2cf6957db3b70ee5e7bed476e862..153115621572140a95e1714e340a024a9b958287 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 348672611b1a7ca8d4dd90487a9fcac073a99fde..b40dc04ed3c2aa6722a6f55af0c3f04e49d99d95 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 3414b8aea6a27c72b9d28f79d7c3de762dba732e..7244fdf25d881619546d8588fcb1a49042c0b088 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 3a360d1384bde0b412e42eef01d2c723467231a6..ec88fca9c03dc4423f11a2b0d22a879d85c08f87 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 20402c5ae2f01ac464ee137cfa856b1c4692fd91..66ff9e44ed4176ec260e8ce09ebed2e5b6703c21 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 bd9901459e647004668619810310837059308b9f..9a05e6c27769dcf8c00e99e802f4b19de8ea5d4d 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 fe586b97d823a842df1b153962dfeda4b622aac9..e967a97077d56a39ed47fdb0d09a97963f9a1984 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 365b8c4e1fa684a0f39c078b04e588e58447615f..f089e4b87c851601b3c58ce9bdea30540170313b 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 e68995aa7eb6f70547cfbaf12611550436ccb06e..ecc16ac19654631dea8d71966b71c8979833935a 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 44b157455fbb182a67f71f843ffe9dec51f30c24..c2dde22025cbce2e348f5a84d1e0725ef581d51c 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 f094ecfbe5313643cb6e45629980ed48c4f273f3..ec9a59dd2a2f7e539b537d90c66241087beed245 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 bb579237138d2a187963c8846af0b256d9ffe4e5..6e65ee61f9bd00ca74ffeb7bc231d637a241c414 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 8f1e5b4e5642c7c7d453ac609a383443fdb57194..dbe4f4613ced7d1c6ae9596cff59a09fd7692448 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 ebf93ea3658c408ae5f765dc9f15d8112be921f7..fafbdb01e8a798866429a4c398bed0dd554007af 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 70f628392ecbcbc8422b08450d4508e47e3eea11..f255b90eee1310d6c3c7688cb9823b53b789a329 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 2b20048fcaa676297c2c2e690f9287b1c205b3c1..acb076e73ad97271c8bcc0231edc0ab2949fc421 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 22d2153cf2ad7fc29e69dcf061e8f933a6d70d9a..cc512516d7f9173d4b3f4acc56ac9c67ae70fc96 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 17f4a5b1a21444f3487ec58651f2ed24d37efba6..7f3996f346a5c6cfbcf6a3a1c41a9c410eb81aed 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 03619f6bf7f7910dd0fba7a979943fd4b753756a..513c1821d2f270e44334cc3d3fbee1284730df77 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 9a3a86cfd9df0ae2593d412a8ac32b63e2f25729..8a3fadb0e885979ac0d94ec07334d8dc6a1ece9e 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 64b52dd54c162b1fd80b3f87bc23fec2e24a18a0..ac997916f81c14173cde529561b203f35fe1e576 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 8fc9c2ceddad75e28db43e19698bf48b7c8dfea8..a2c2e14e9b88e045644f6e243deae7e1cb273fa2 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 441a0a46e8edb9a93ae24acba60781406f9d0692..30645297f444a7ae2632065246966c1ed487ac69 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 eec9b495d8b9649cf6e5ba4a51cb6b5979ca2764..3bf9ffe85ef8441dca6e1456b8cea6571081bdaa 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 c4d11978f7a133d56a9619535efd5614a7b5e128..b0375dad7e49c5a2da457cfcade8d2188684d30b 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 defa2ac78dfc30f4d66f1250bf4c79a3e09f0b22..f905d2c324fcab0a3ddcbd3fd9a7c4bbc34b0987 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 d5eb381ba6b791fce48a92c2508db3a051367588..6a0d1bb3b6b84acf02261caa67eac07c9695b218 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 1a9bc6333873d05b7cea33f906dd8c82ca9a216c..2f7ac98e27e41ff6a08251ae81e04b9a3c38737b 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 f770b78a14aacacc6c2581267b8d9bfe04879dff..6b286559aad9fcbec39a17f27f661419093aebec 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 77d48699f5407ac87f3283ebd09d36db9d71ce77..0a97e56732473129dc43f427f6927b3f83c67e7d 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 921d748ad423e6ccb31f3b8d7d6bdf2901ba4e97..ca6771e20e1fcbab11b382f1fc781337eb7f0d70 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 90f91a122e54a2636a0cc7bf66633d46c6df87a7..a8f3006b9cb1a1d429291fd0f406fae5c7515ad3 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 475e4fbf83f395259342b359ee0b7572597e04e0..502418457e8fac3a2585247edb67eb4b1c31afe6 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 e598d0c2a7c5f476cbd9e6c275cdd4c4908ec557..3e86a9668a9a388c6e4ef290407c6089baacb678 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 d7ad7d6fba874730cedf2b4fc149b660a77d51a1..292d37a9d876310255f55a8b79c3ce0847f73147 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 ac001f079daf6027c90272a5b16945e7b07ca614..648fbaa5eeb06c1194b58200927a9ad4f83e0211 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 49eb023e2f58712d2278a82f15da271896e01277..42c468bc2c9c5ce292357a7df2327022948605f0 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 9cc129b503fc03b2786b853d3762e6698da37dde..cb97a5570639bfd4e42a61a18b00fc0bf90201c4 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 45e145e5f47da7f2854ffa0a96978eff80b0cd01..c0bb235486eb1ae79e482c95d358e2d7f9fd7636 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 7540f20971e5b7be8b3a3f526db9b54570e10d6b..a6de8017313a09fc3ade4fe2a4351669c60beacc 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 1d763528f2c7d99fff04634a107625fcfa5706c7..adff804c94af205a91e6dc1aa51f5249a4ce451b 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 22e4540728fdc2a5f26df8a80893f52cd9f6e7e4..59db66df7312b5204466fd5963afd69c04594581 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 63f075dff6474862d3e7859d8a093d4b3d648645..27c8992da0d96de95683207c2cb5547d69498ef5 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 2cbc117004f08d946dc36a38cdda1f0e5bfd9c23..fa6256f8ded7b25995bb6d2d705fab5d6e6f140f 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 7874d4920890ccfae9b1b62b7b3c3e248bf7bbb9..be52d7f3b36f1f9763498f0c5425ebe8276588c5 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 27b26c311caa1bdc71486dd8c99d0d0e80261ab7..8e10d73be0b5db72500b8d05e46644fd2ce0d5ad 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 6554536c51154aafec8cface395157eb266a8b7a..a71e42672f0a74fb64f0a0e708f1086e3ababa97 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 518a1c85383f31b65d9b8285a5b53da0ceb3916d..4f850e4fa8747c7ee5a2ed6b566831e7b7b9f212 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 c80897ba33d6583b21ebec7853905babf1552493..691b52cb79df013ec139e1a9f8be462540422faf 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 7d767f7b161ac006ba98b593a2f283943ed530fb..a77ae3d05109666d6e92518bcb75743dd54d005c 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 1e1e079904ff9f72cacb77f2328a9846d09eda23..1cff818821219e8c412b927834ad162c71157bad 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 3d210139b4a3cd045a4e71433ca4488090579ae5..bd6f530f027f06bbfd8049dd77a4e9abb2ce0086 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 3cc6d6474c63befe0cb060187ff74b34df2f9881..2cb2959e589343aa5a9ed18702992e6d04bb53e2 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 dd2a1a4da620ea50e2d6319c66e174a434a51ade..8c7450940252860b5a14622cec8244bce3f9404c 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 3206bbfc485c5bfa1aae4ab25dbc2ff42fbfe35d..344d2380fe91c0a5b81d8282344105a07a623712 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 b3c5ba798ab7cc4265b7cc7fa8ebfa982a731218..837eb3787ed115e9f4a3c295238ac686f39738c3 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 0c512bd15af95731123772c630222852772a84b1..ca4c87480b6d23f78f531535362c2281438e16b4 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 67b6802d3d4a97db48c60fdbdf3ae1e4075b5973..81597d6bab9b434d8b48ab600e44be0f82d0efa8 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 63563fdf34666b8811806640bb1eaec0930e678e..f3aaf738d8d6badf0ce9054e3dcbb3c38bf4f8b8 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 97635a5abcd9bccfc1e35ea07111d377ccbb4e03..13a0e8ce95fa4fdd4952edf4ad74e90b7c967fc3 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 0000000000000000000000000000000000000000..db0b92cb5456e941973fcdbc918207b0684edb50
--- /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 45ec4834c8cb6a83f4c028b454cfcc4f8b027c99..f37495e9f34e856499aef2ab82a39e8170990fa4 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 30c1824ccd79a2e1951f63f9adc0c568fd8a2d40..fca67c69e227d51c1876ef525f9b15a69540d855 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 e26c8a108ddb919fc677184de6abf29331439028..f1a7e4328537bf41cdef57cc7032d699520abec7 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 1b5377aca2d97af36e16994e1f5aded52d91bad0..421791317a2cee35f19c81fb4b5fdf5430d19f53 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 276b296bf07dc2de17a4e856374122a7618ba486..7bd6e65b149c888ebc68218840efe7ee8814571e 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 3f0a6861116da4ab7d0315b9eec6d955261bcc42..13cdcb5e3a1e1fdf7e65108f9287b02e7a414c35 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 9b8e174afeef3e591f8a61ecc4959914e81425f5..7ad0ec06e3be7986666fc03e8f405dfec7aa085e 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 7b75d36d6203a6a7267200aa6035505fa3d17eaa..0274b7b3921483b9f579e5800a5b97b3b0c8cc18 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 20979c5ad8201881308468eaf0430a6d252f81e3..53f89941245063618f5801cb1bf20aec834dd6a5 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 0a1bad31428f9e42fbda17cb272bbfadf0553881..8284c47b8d4e322a8f18cc57ae071d8f2bef97c5 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 947e8bf1b70d08ff4f3ede7860286b6ba1c0b3ea..167ab3430bfc0943f146c928a97cb9edc2c26196 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 34ac59b205769d747118238328569c036b2d11a5..ba8ca63b918c24066c400f8dd13c0184d4f99f23 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 f14f7ca906db888dc8e6cf2f5f76511efdc935b0..c117e55247e6f32abaaa91547402a064d2dba85a 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 40febbb2d088623786333351cf3be4dd718e031a..4a53790151f2dcebc984d032b51273d6e6174bda 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 d2eff12fb151a7508d8ef710e45c3ff42a7e4760..75f1a57a8dd9643a2c4c2676b32e8d0cd1f08dab 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 de5c1c74a395ddd8189d7a7d7b97cdb7deafe4da..b53c7f7c1368825102da091dbaebd466ed06ee80 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 bb9d3bce5a15881f384feafa95b0e5e9b3823797..ed40306e5931afcfed36dca9def9e540f2a7259f 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 98e7742befeb92ec324ddb4786170190a44c8c9e..d43ace1edf85314e91f660bd3918d19ebceb2fdf 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 e40d4f504dfa2f7266e94599c8a339aee7a0ed75..a9838a30eb73f3c4c501e405011a28f3df6e5f6a 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 a7d71ea8ac4655c7afa9bf0fa8b4db6fc26bd4f2..c47bbe177a6b2a1b1e893cc378e57c602d1a3dda 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 71777b5f47ee68bfd278c65e1b59d72844eb275d..f0b52e75502b58e7b603325be8d87e140fab8b29 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 8b87a8388855d83718900bbf36b22d239940a1fb..8395bc8cf5cbcef2c541378b720e3fed6446af61 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 b731ddc29a1fd114e108ef1c6bb81288af26eba6..82eac82dc7b04c85320bf713d4d5891c6522b6eb 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 cb733c89adcf156f89918110c415b7605f2e9651..021b80301e2ce692a5cea8a32e9e1badce878053 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 1b61f1d5b6b01f54462f6e3dd033e8adf5486460..633ec2a0e00530a0f6d112a7cb1bbf93fe0e8be8 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 75dbcbdc37a565f169edf5fc3fb158fe4ea360a8..ad744d766b1965612c234f98882084608f59ae75 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 7d1a17ab3306b8047e4d64b7563093c9f6764c88..c936a9e4ed60000601b49329d0488180fe864c78 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 c903b93eed8f8c5ca1a7c2f2ad9781a2287efdb6..a80d2e76980b6b568324243d1921d769f26cc936 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 4973d52243b94c29a7e6e05eeb442081c5126550..124e0819fa119411fa7b764bd3163f4f1d00fa8b 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 71a3e838ae3786861d79b8bbbddfa7fca2894664..bc3967416a77f6b9f3aab10ee8e859d7102e5850 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 453a3d836bf4bf4ec7d3d01966815eb1af7b0657..a35c7af9a2ef70a6d5e35c7e202c23d0c5ab8af7 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 e2886facbc6cc56d73edc2c673979110c1c942a7..11ff779133e063da203283fc676d57c802d03557 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 b6d4b0f690bd92e7876f5812ef3855347d9f8948..40e9bc97513b211da2d1486d52908cb52b6848d7 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 25bdd5c28ea73fd4c49ccbaa2c174ee2ab475c2c..efac80007024bd3d3f3bdd0a8d4419bc67c7d919 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 9baa030d342435a3a129fb0dad90c63bef1a641e..169dbc140800d289d8f8014dc590887b5ce28a30 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 cdb8862b157c00821ab3b4662bd213f851fe4771..19b7f1cd5d11d1189e200cb3e415d0fe167363fe 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 fb1ae045ee29a67554c469d333190c6baf894b7c..5b948cde334c156102a9ec643a10717bbdfd9f39 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 4c636d0ba9d0f5b1b7ea32fbc17284c8a1168e77..270a1354f069033361290f10a5f6ecd1d7132c39 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 a70f338e7f5dfa426856e6d0bf4c107fecdc966b..eec65b5eb3197b63706b835bcdacc35f73bc24ad 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 47e425b47cdf050dce40840e70150de8de93ea8a..452d4548b8a65eab9e8b96fac6c06d8d3ae7e851 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 e1e66fffc457a46a4b639033ba54f0c8505c9691..b4fb65a00c4c17ee35552e9237d20dff657877b0 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 277749c33b0c34eeeb534dd415ad924430656232..72c3a85d640ebb54426b5acc222f2ae9f46bfa1a 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 36328c49c2a40d664cd8a45979b97f0f9e4c5bfd..f70c7cdab48bfabf9720d88d8447089efc5342a9 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 858590a337c53391d11e40b719df9c7bc3ec0bb8..2dc8375221b2ae3bf05f69b7d489d09fd2a08d28 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 d7922d1c09b8f3f3571da3aed8101df25710452b..52817c7320d5d5f963814c4682c4123ff0307e10 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 ff9025f66ae93788a4816fe33440d4fcabd721aa..7d812ce4c5038a976ebbf653c49b4ed9dd9efaea 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 f9270db5616cdee57eb4e2306909b53b5dc587e6..b32dcd01ec71ff29b58682ac7c2b0e4151c74579 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 0d2b5e4aba778f6a4adb664740d82814247964fb..6d9f602313d20be68a1c9243179589fcb33579bc 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 b800c9c4ac8cd7f72cd1eda9d56d0e553ba3ba0c..1514b01f574e7029ba4d1812598d76935dcc11a1 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 55e195c61e7cb3bdfc666c1f7b5f81a5a208f9b8..469263085c08d47a1262d47e340c20f1fea99ff5 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 b48caa825941e0c3de4adb0ba4a1b1636ffebd02..9d6ad8d7824b2304ce5284daefe484cb781bd70e 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 fb1e5cf3a2798b840b65138d5a62c4d7dbe72c84..7b3c73dc287946020bb9039ce280f3ccf18087cc 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 0773bdbbf1c40f82dc5744556e00891ddbfdb647..b22a6034fe3f63daa9a10c0d52415cba1424ebba 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 34344944fa974890f09b98682cc4992ab4063a13..33043bff61ed89b06934232b9e74e0f48645afd5 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 c2635e1172a90c3e4de300ba5b261fffde99a2b0..a26508b8fde41babcec2388713650994c0b47f86 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 5560855a0d6cbb2847472fcb66e29e392f8d93e3..5446225f294c1b2e8438693db126d998c5181d75 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 d67802a3cc21680c784ee95a46473adf22f7f727..6676679b5b29f546cc95c4b7e2335b2c134c1657 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 1d01590cf4cf0b4b0560c99cb7c766a362017541..27eb7028455b48885df362d875b0051b460faf5f 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 26ccfb2dda255337619d624622f6a822b2de50ec..8cff99d56fae768c35997f2a29139ce5aeb612a7 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 470bd1c0ec35a3badf38f583e52e6bed1dc70e28..c5e55ea7ac32239c6007723e650eaacabcb17978 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 fc8c0b1132bb844e3765dd878774cffa2882ec1e..94a8811c41d246e7c28c72f9c61c61eacb0fb329 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 b390bd7ffe3cd5df937f0d45e426056f451e8ce6..af9d137b3ce4c2590ee79738ef795ee9e634eb28 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 4242b6c2e1686967ed46b7511dd4acbb41a359e6..d6c719c1e4056f811bb76ad94091d33f5557dec1 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 358bc0f19e65b432436c5939766e1eabca665e17..de09fc35b5de49f383b7be27bb7e513259759974 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 f51d556c6e9f33843c0dd5f9ea0d245446d29a14..33b7f4a9874d6da3ab12a9e828afc403c7f608c7 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 44c2ffaa26d4fd9121941b948eff9f17bdde57a4..00d7bdda80a931bd69136baff15f84656cba3209 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 d71dd3491c5899902feca25b46ae3fd278178152..63601b002d28ec7755022e1091040d871c332630 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 3b4fb6dba278c485c5ff379c4a8d862d1102400e..dda28810034ba64a0787bfff9b39bce2abbfd399 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 be69414b0b2d8b236ed494b1dd34d74dfea4119d..b56b73900a0956706b49129c2084be76f6fa0ff1 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 eaf4696504ab113894a7a39055511d6e16090085..fc5b1434c9117dcd78379982bb20aebdfe012a15 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 ea1797f46488f42fe6072340f205efd2abac6cdc..2442aed79f7f7713f1adf97751650ffd613ef4e2 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 b8963654f112a0207a484c026ace816941b80032..7f68c99e7fe50111d3420dca36c9a496827e30fe 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 aaef125ab1a9f7fee8374a112c91e6c4caf9844b..231d7883fd95646c1851f22591acefece32bf99c 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 f2067afe73bdfee266960e9c3411757d58583445..06ab48e61539b58c938ad5bd2e4cce96c7189b76 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 fd139179572f354ae5d0c3dfca935c7566521878..dc93ac9889bc38e8f68af7e45e116b4fccdf4299 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 da38215693134803e6a1dd0e008f65a91756f938..9bc3c222d3d37d14e3eedd86c01a65994942998f 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 ce872e97dec7983b0b8af3bd8ca1a076f5ac0c4b..ad026476234747e663e242e6fae264e2260dd2c3 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 9834c6f4b732cac83862412b89f8534c046b0684..2f457f690cc76a1b31244aedde4255538aed110c 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 c5ea141fe7414085b39a6788afc126bf701b847f..daf7559ff35e483e6be0392f75a78c736054538c 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 982391208ee579d33d3775541355f26806f6a9ee..e3b1af51413145989dbc6c8255bf7a823fb798a6 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 3138549bd4282de25d31dac203a64fcb7ffbe259..f3b9d6c012f660716e779829d5341a30a9b4431a 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 197676df365afb057d0823c76d176075025e2c40..1c522d458d03d31b916ddac7f06a26d62878dcd0 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 b8f075c1202e725cfaee4ddefd3239318cc6193b..22829b8b85cb728ebbc1b8cddc9612a83436af63 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 691a4bd211c30f88bedfa4d1cd2c53fcef069b68..5ddf2daeef50babafb97b77c94e4dcd960da26b7 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 35269a94e07ee2b435bb8a59237efe0249b1231d..2b22110bb6832a8bda95ae34ba5b78a7380b85f4 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 5a3d0b583f302e95263ebd2be5df7fd155d5a1c5..805d3a755dd42995b1e2a9744d8edc93a55aba64 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 21b816daedcd6c48498021579692923fefbca3db..20de33cbe6baf2e7af9f255e0aa2da5cc55b580b 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 fe21666e06641800e38fdc5673b8847818d716b9..bac8cf1e5df75120fb1ceb1e9eefa2b1a70e314b 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 3a326c36cc3cf9ff9a57b6004ad684bb15a5786c..92a5407ed34a48e245d1d368bdb2ab64e1ddd2a8 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 a3b8ca62466873b43a109458b3a74933b71f5ddf..28eef667e1a51844828f2779546849fef0c1392c 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 456c81b44b3823b7f0814d6b935b43e605c8373b..99b77e3f24e023f410623058e07a02951abf1878 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 f987dd39e46c5923fae3a4ea95b50b64a789cbf2..300a5062e0d14ef77c30cc12a0647340e2f2f89f 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 6634adc6577557ce1f18b6e64abcd01a27554102..a9c4bc5bb68d81312552cd1f7ca98249889db520 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 5b0fae4701e049704cdde5aedc95c68a19c930a2..87ad6f655c40cbe8047912ce6b093c0993176542 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 f4968b8e1c2f0a8296edf952850e0e4d9af7ca96..b34b826137c00b0f871011767f71b2e3a1e205ab 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 fd287dc143b3558541d0a43c535dca57aa326da2..3875c1f7025fef9b4b7b4e93ef8c80bbe70b24fe 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 17bdba120e11d81c695d6fe00d0bfa5e8c611bdb..8e6488d19a6491ead1803fa2aade20296f8224ff 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 366e14253f5e56d0660af49d1c586f8dd8aeaa3a..da85b94bb453ecf4b85b6291f946c099106877ab 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 fadaa044a6574b20e710e315157c2ec264746580..40dc56579a50b02b80a588aba0c00f8a7b6fd96e 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 a74ea9d6d8faf27e7c8a2bb3b90c19de08d3bd4e..1c7c7b83a74ea4882b8aad786710644cad6e6d08 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 da8ffbc3d61ff9510a0e5fbdd4e1a5704ec1f91f..38ba8b6a4efd1c4a9ebd5c0c2df90ec9fcc359f3 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 5fb926cf8b4c6124d9222c8b3927517ebb43a427..d53f77b488cbd89cf110e52cc4f035a5ca699f5e 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 d0100ad75fadb90847282a4453cd30d602d43167..da3bb7da0056bf447b93662d0746c0425f6fb00a 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 502c5216a80033d344b1034cfce75f58c331b712..4fdcebcf2adc29244b03b5c4380ac2c196bad3ea 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 0d91a57b22d62bc830c662b008df6904886063f6..72650e2e223a2e74cab8723af8a2e7171e84337c 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 1774f88788bbc37cb34d27a03d74a7961be47a4a..8af26909fa4f1be51917e54b5b32cfe6b30e778f 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 808f6a8107b68d84b29bf13becb49fc399cf6895..2d60c037f71d1b6be24d27b87a041e08de4f7619 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 c0c7437816fb9d5aa24300777b1bb36189107727..8ac7d795b60eb5ae7d869cc93d8616dd9009fb08 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 1b4071dfd120f1b60f0734cb06f5161edac5b9a0..631c33facabed83111f58b34b9e92fae79542996 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 6337df582c864c67a44f0a360e13804dc812318e..22f6d88d0ceedba59ebb36ef5493772f3200a635 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 ce665878b70bc528be9d590690be86c3f516c8a8..65f9469f69fd4d1acaa00b50f17983f7f6e87d4c 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 683ea2847cc369d19b47361e247408e69d0d5141..bf9a12c1b3a1d571313a24287a88e9207c562f6d 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 dd961e9b8eb4cf5549fb9f6ae1ec7870f14f299b..be6456a29fa6b63eb8134f2cc13221072039967f 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 d28713e4d5f44d105a7526e942b98763cf78ec41..99f4ff4529390b2f53ac04b82e8f1b4d352844b0 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 7020e020e81114735f16e9f7d6482788876ab22b..a188eb77eec63e65d3b683c59b65afc19d1ddc40 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 d4465e062e688152ccae97c2cc9205085b7d19ce..ddcc445daa5f466e8f0a04ef71c4c02793b1e860 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 c08d4a3700f407c5fe55a9e4ec4285f0752bd0b5..1e1e1d02acec2468bbb335da7eec4a78f5700f60 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;