diff --git a/briar-android/.classpath b/briar-android/.classpath
index 591a99a8cc90c035e10471ad340eef194dc5553b..1242b5cb4f1e07d2e4961679c62d520dbd381678 100644
--- a/briar-android/.classpath
+++ b/briar-android/.classpath
@@ -8,5 +8,6 @@
 	<classpathentry combineaccessrules="false" kind="src" path="/briar-api"/>
 	<classpathentry kind="lib" path="/briar-api/libs/guice-3.0-no_aop.jar"/>
 	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="lib" path="/briar-api/libs/javax.inject.jar"/>
 	<classpathentry kind="output" path="bin/classes"/>
 </classpath>
diff --git a/briar-android/src/net/sf/briar/android/AndroidExecutorImpl.java b/briar-android/src/net/sf/briar/android/AndroidExecutorImpl.java
index 79cf7db9cc5ee34ba067acedfd5dd929a6459a8c..a1030b3e2fd62e99350e967299c140f2b578e478 100644
--- a/briar-android/src/net/sf/briar/android/AndroidExecutorImpl.java
+++ b/briar-android/src/net/sf/briar/android/AndroidExecutorImpl.java
@@ -7,13 +7,13 @@ import java.util.concurrent.Future;
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import javax.inject.Inject;
+
 import net.sf.briar.api.android.AndroidExecutor;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
 
-import com.google.inject.Inject;
-
 class AndroidExecutorImpl implements AndroidExecutor {
 
 	private static final int SHUTDOWN = 0, RUN = 1;
diff --git a/briar-android/src/net/sf/briar/android/AndroidModule.java b/briar-android/src/net/sf/briar/android/AndroidModule.java
index 817ca22b894687af1a35b05795918435bc9bf726..bcccfefd0cce053fab6820630dd3b2ef68e51ea4 100644
--- a/briar-android/src/net/sf/briar/android/AndroidModule.java
+++ b/briar-android/src/net/sf/briar/android/AndroidModule.java
@@ -12,6 +12,8 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.RejectedExecutionHandler;
 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;
@@ -32,7 +34,6 @@ import android.content.Context;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
-import com.google.inject.Singleton;
 
 public class AndroidModule extends AbstractModule {
 
diff --git a/briar-android/src/net/sf/briar/android/BriarService.java b/briar-android/src/net/sf/briar/android/BriarService.java
index 2cee48142064c411d33dd6819eac237ccbc5bbda..569c6e9101db84425a5088ec5101a6f0a6154fc5 100644
--- a/briar-android/src/net/sf/briar/android/BriarService.java
+++ b/briar-android/src/net/sf/briar/android/BriarService.java
@@ -7,6 +7,8 @@ import static java.util.logging.Level.INFO;
 import java.util.concurrent.CountDownLatch;
 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.lifecycle.LifecycleManager;
@@ -19,8 +21,6 @@ import android.os.Binder;
 import android.os.IBinder;
 import android.support.v4.app.NotificationCompat;
 
-import com.google.inject.Inject;
-
 public class BriarService extends RoboService {
 
 	private static final Logger LOG =
diff --git a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
index 71f94b0e883172b50b735cd4831223e93660668b..51eadb0868f222e4c94d9d4ba0d7a4edae03f81d 100644
--- a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
+++ b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
@@ -19,6 +19,8 @@ import java.util.List;
 import java.util.concurrent.Executor;
 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;
@@ -56,8 +58,6 @@ import android.widget.ProgressBar;
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 
-import com.google.inject.Inject;
-
 public class HomeScreenActivity extends RoboActivity {
 
 	// This build expires on 30 November 2013
diff --git a/briar-android/src/net/sf/briar/android/SetupActivity.java b/briar-android/src/net/sf/briar/android/SetupActivity.java
index 14fc2bed19fc4f179512fefec256a5412e348dbe..699aa16bc04e44b5f4a627e528612f13d71c9f0f 100644
--- a/briar-android/src/net/sf/briar/android/SetupActivity.java
+++ b/briar-android/src/net/sf/briar/android/SetupActivity.java
@@ -16,6 +16,8 @@ import java.io.IOException;
 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;
@@ -39,8 +41,6 @@ import android.widget.LinearLayout;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
-import com.google.inject.Inject;
-
 public class SetupActivity extends RoboActivity implements OnClickListener {
 
 	private static final int MIN_PASSWORD_LENGTH = 8;
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
index e525239cc8639dbd0d62b06b14beedd59fd31ecd..834416420ce8f764967b6bef60d3bdfbd80f15e3 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
+++ b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
@@ -21,6 +21,8 @@ import java.util.Map;
 import java.util.concurrent.Executor;
 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;
@@ -50,8 +52,6 @@ import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.ListView;
 
-import com.google.inject.Inject;
-
 public class ContactListActivity extends RoboActivity
 implements OnClickListener, OnItemClickListener, DatabaseListener,
 ConnectionListener {
diff --git a/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java b/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
index 60aa3ac6c3a2b035a0a9dff1872eae2d3e373d6f..e3d12fcc130889c5cc81aaeca6c55fa0b658cb6f 100644
--- a/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
@@ -14,6 +14,8 @@ import java.util.Collections;
 import java.util.concurrent.Executor;
 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;
@@ -40,8 +42,6 @@ import android.widget.ProgressBar;
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
 
-import com.google.inject.Inject;
-
 public class ConfigureGroupActivity extends RoboFragmentActivity
 implements OnClickListener, NoContactsDialog.Listener,
 SelectContactsDialog.Listener {
diff --git a/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java b/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
index 3eb123ad486a54a90d87669502131ea172546aef..b6d0dff45b06972ff468ec95f489d6bbcc0781f1 100644
--- a/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
@@ -19,6 +19,8 @@ import java.util.Collections;
 import java.util.concurrent.Executor;
 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;
@@ -49,8 +51,6 @@ import android.widget.RadioGroup;
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 
-import com.google.inject.Inject;
-
 public class CreateGroupActivity extends RoboFragmentActivity
 implements OnEditorActionListener, OnClickListener, NoContactsDialog.Listener,
 SelectContactsDialog.Listener {
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupActivity.java b/briar-android/src/net/sf/briar/android/groups/GroupActivity.java
index 7819438028dc6e96c6ac877fb05923bf5af00a19..965137b0f5716917781325c063a0ffe04c4911ad 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/GroupActivity.java
@@ -15,6 +15,8 @@ import java.util.Collection;
 import java.util.concurrent.Executor;
 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;
@@ -43,8 +45,6 @@ import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.ListView;
 
-import com.google.inject.Inject;
-
 public class GroupActivity extends RoboActivity implements DatabaseListener,
 OnClickListener, OnItemClickListener {
 
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java b/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
index 613b66ba82f80afec23754d76485b49b79905b5c..7b6d624e35ffc22e4b58927721e1f7f1180e9455 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
@@ -18,6 +18,8 @@ import java.util.Comparator;
 import java.util.concurrent.Executor;
 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;
@@ -49,8 +51,6 @@ import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.ListView;
 
-import com.google.inject.Inject;
-
 public class GroupListActivity extends RoboFragmentActivity
 implements DatabaseListener, OnClickListener, NoGroupsDialog.Listener,
 OnItemClickListener {
diff --git a/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java b/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java
index 9bf1e43d8b2a4cc8d554ec12f04a50d09b5d7f7a..14d326c9c0c99bdc390ca4e9e486c1b4b59bea2b 100644
--- a/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java
@@ -10,6 +10,8 @@ import java.util.Comparator;
 import java.util.concurrent.Executor;
 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;
@@ -30,8 +32,6 @@ import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.ListView;
 
-import com.google.inject.Inject;
-
 public class ManageGroupsActivity extends RoboFragmentActivity
 implements DatabaseListener, OnItemClickListener {
 
diff --git a/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java b/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
index 2f627224181df5cbcffa7f719f40f983a7020afd..3d9c94a130a7a6a1e1fa7bd1c718b9ad998dd4fa 100644
--- a/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
@@ -15,6 +15,8 @@ import java.io.UnsupportedEncodingException;
 import java.util.concurrent.Executor;
 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;
@@ -37,8 +39,6 @@ import android.widget.LinearLayout;
 import android.widget.ScrollView;
 import android.widget.TextView;
 
-import com.google.inject.Inject;
-
 public class ReadGroupPostActivity extends RoboActivity
 implements OnClickListener {
 
diff --git a/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java b/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
index fa4995331b89591c8b7e70419492335615d696d8..8a94109454a50e4766ef2ca5b3d63c80fe6c25b7 100644
--- a/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
@@ -15,6 +15,8 @@ import java.util.Collection;
 import java.util.concurrent.Executor;
 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;
@@ -49,8 +51,6 @@ import android.widget.LinearLayout;
 import android.widget.Spinner;
 import android.widget.TextView;
 
-import com.google.inject.Inject;
-
 public class WriteGroupPostActivity extends RoboActivity
 implements OnItemSelectedListener, OnClickListener {
 
diff --git a/briar-android/src/net/sf/briar/android/helloworld/HelloWorldModule.java b/briar-android/src/net/sf/briar/android/helloworld/HelloWorldModule.java
index 3f074576e82079e6951a7fbb8e9dc14614eac81b..4a28987d2a0915f8646a3fd0a07bdaada959b8ba 100644
--- a/briar-android/src/net/sf/briar/android/helloworld/HelloWorldModule.java
+++ b/briar-android/src/net/sf/briar/android/helloworld/HelloWorldModule.java
@@ -4,13 +4,14 @@ import static android.content.Context.MODE_PRIVATE;
 
 import java.io.File;
 
+import javax.inject.Singleton;
+
 import net.sf.briar.api.db.DatabaseConfig;
 import net.sf.briar.api.ui.UiCallback;
 import android.app.Application;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
-import com.google.inject.Singleton;
 
 public class HelloWorldModule extends AbstractModule {
 
diff --git a/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java b/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
index dba0a3eef8fb5c3061abbc9bc8a4fa34cf2ce279..bd4feb7c04d59fffbd51cf7118385ca0b393168f 100644
--- a/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
+++ b/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
@@ -17,6 +17,8 @@ import java.io.IOException;
 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;
@@ -40,8 +42,6 @@ import android.widget.ProgressBar;
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 
-import com.google.inject.Inject;
-
 public class CreateIdentityActivity extends RoboActivity
 implements OnEditorActionListener, OnClickListener {
 
diff --git a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
index 6c22e433c56d3a8665612bf1b4469d1a696e4a64..fb02e7c71fd80e11fb8c9c430ca36635a747b574 100644
--- a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
+++ b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
@@ -12,6 +12,8 @@ import java.util.Collection;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
+import javax.inject.Inject;
+
 import net.sf.briar.android.identity.LocalAuthorItem;
 import net.sf.briar.android.identity.LocalAuthorItemComparator;
 import net.sf.briar.android.identity.LocalAuthorSpinnerAdapter;
@@ -37,8 +39,6 @@ import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
 
-import com.google.inject.Inject;
-
 public class AddContactActivity extends RoboActivity
 implements InvitationListener {
 
diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java
index 5d023014faf2fe0943c91308a9ce4bc3bffc2427..2dce8e6dd4dab80272fd550c24a4cd3f4c0222ca 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java
@@ -13,6 +13,8 @@ import java.util.Collection;
 import java.util.concurrent.Executor;
 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;
@@ -41,8 +43,6 @@ import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.ListView;
 
-import com.google.inject.Inject;
-
 public class ConversationActivity extends RoboActivity
 implements DatabaseListener, OnClickListener, OnItemClickListener {
 
diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
index 2f27956e8afcb91d3a74b7120c543bfb1cc6a070..719e33419bd1348a26617500fce4000640d01a8f 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
@@ -14,6 +14,8 @@ import java.util.Comparator;
 import java.util.concurrent.Executor;
 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;
@@ -42,8 +44,6 @@ import android.widget.ImageButton;
 import android.widget.LinearLayout;
 import android.widget.ListView;
 
-import com.google.inject.Inject;
-
 public class ConversationListActivity extends RoboFragmentActivity
 implements OnClickListener, DatabaseListener, NoContactsDialog.Listener {
 
diff --git a/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java b/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java
index 4aa8c5ffa9292780bf37f86c6f99d0662d134a97..c47b30603b174950f87c3b1ec4f4d6fc71366383 100644
--- a/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java
@@ -15,6 +15,8 @@ import java.io.UnsupportedEncodingException;
 import java.util.concurrent.Executor;
 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;
@@ -37,8 +39,6 @@ import android.widget.LinearLayout;
 import android.widget.ScrollView;
 import android.widget.TextView;
 
-import com.google.inject.Inject;
-
 public class ReadPrivateMessageActivity extends RoboActivity
 implements OnClickListener {
 
diff --git a/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java b/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java
index e67058b8356ad4bee569bb03b5d397b66cc582db..dfa935cc00afdcd6001f13d2169a22fa1c982d3c 100644
--- a/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java
@@ -16,6 +16,8 @@ import java.util.Collection;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
+import javax.inject.Inject;
+
 import net.sf.briar.R;
 import net.sf.briar.android.contact.ContactItem;
 import net.sf.briar.android.contact.ContactItemComparator;
@@ -47,8 +49,6 @@ import android.widget.LinearLayout;
 import android.widget.Spinner;
 import android.widget.TextView;
 
-import com.google.inject.Inject;
-
 public class WritePrivateMessageActivity extends RoboActivity
 implements OnItemSelectedListener, OnClickListener {
 
diff --git a/briar-core/libs/javax.inject.jar b/briar-api/libs/javax.inject.jar
similarity index 100%
rename from briar-core/libs/javax.inject.jar
rename to briar-api/libs/javax.inject.jar
diff --git a/briar-core/.classpath b/briar-core/.classpath
index f5c11aeb6cb6af46be3520a2828096eb98c8f576..03f19e28f0c8b78b42d7e5353f0b0f6ca30109f9 100644
--- a/briar-core/.classpath
+++ b/briar-core/.classpath
@@ -3,10 +3,10 @@
 	<classpathentry kind="src" path="src"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/briar-api"/>
 	<classpathentry kind="lib" path="/briar-api/libs/guice-3.0-no_aop.jar"/>
-	<classpathentry kind="lib" path="libs/javax.inject.jar"/>
 	<classpathentry kind="lib" path="libs/sc-light-jdk15on-1.47.0.3-SNAPSHOT.jar" sourcepath="libs/source/sc-light-jdk15on-1.47.0.3-SNAPSHOT-source.jar"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="lib" path="libs/h2small-1.3.174.jar"/>
 	<classpathentry kind="lib" path="libs/weupnp-0.1.3-SNAPSHOT.jar"/>
+	<classpathentry kind="lib" path="/briar-api/libs/javax.inject.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
index 6d701dbb5f6752a7f0f9f12093797576065aae41..9fc1ffa8fe240ea19517c4f3106c1b26a49ddfe5 100644
--- a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
+++ b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java
@@ -4,8 +4,8 @@ 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.PARAMETERS;
 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 java.io.ByteArrayOutputStream;
diff --git a/briar-core/src/net/sf/briar/crypto/CryptoModule.java b/briar-core/src/net/sf/briar/crypto/CryptoModule.java
index 288007a9dce04f4c92b5fc7068b81fcdd71e29b2..bda3ed9b00e0d6aad7bbab54b27d803a2d72b361 100644
--- a/briar-core/src/net/sf/briar/crypto/CryptoModule.java
+++ b/briar-core/src/net/sf/briar/crypto/CryptoModule.java
@@ -9,13 +9,14 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.RejectedExecutionHandler;
 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 com.google.inject.AbstractModule;
 import com.google.inject.Provides;
-import com.google.inject.Singleton;
 
 public class CryptoModule extends AbstractModule {
 
diff --git a/briar-core/src/net/sf/briar/db/DatabaseCleanerImpl.java b/briar-core/src/net/sf/briar/db/DatabaseCleanerImpl.java
index 8ede59d1873418be64a9ad569f0de573dff64e4f..10a1a554bda74602596aaf57bcbf2289cde3a2aa 100644
--- a/briar-core/src/net/sf/briar/db/DatabaseCleanerImpl.java
+++ b/briar-core/src/net/sf/briar/db/DatabaseCleanerImpl.java
@@ -6,12 +6,12 @@ import static java.util.logging.Level.WARNING;
 import java.util.TimerTask;
 import java.util.logging.Logger;
 
+import javax.inject.Inject;
+
 import net.sf.briar.api.clock.Timer;
 import net.sf.briar.api.db.DbClosedException;
 import net.sf.briar.api.db.DbException;
 
-import com.google.inject.Inject;
-
 class DatabaseCleanerImpl extends TimerTask implements DatabaseCleaner {
 
 	private static final Logger LOG =
diff --git a/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java b/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java
index 75778cc59555ebc276f308d5a727ba61220dbcf1..df375151f608a1f4b6c4e3c8bd9adad6094cb7ca 100644
--- a/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java
+++ b/briar-core/src/net/sf/briar/db/DatabaseComponentImpl.java
@@ -22,6 +22,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 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;
@@ -76,8 +78,6 @@ import net.sf.briar.api.messaging.TransportUpdate;
 import net.sf.briar.api.transport.Endpoint;
 import net.sf.briar.api.transport.TemporarySecret;
 
-import com.google.inject.Inject;
-
 /**
  * An implementation of DatabaseComponent using reentrant read-write locks.
  * Depending on the JVM's lock implementation, this implementation may allow
diff --git a/briar-core/src/net/sf/briar/db/DatabaseModule.java b/briar-core/src/net/sf/briar/db/DatabaseModule.java
index 87f629c810d4566acdaf78bcfeb24e503ae737b9..165f986e8f29443f40edd5851fc26a73a251e785 100644
--- a/briar-core/src/net/sf/briar/db/DatabaseModule.java
+++ b/briar-core/src/net/sf/briar/db/DatabaseModule.java
@@ -10,6 +10,8 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.RejectedExecutionHandler;
 import java.util.concurrent.ThreadPoolExecutor;
 
+import javax.inject.Singleton;
+
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.clock.SystemClock;
 import net.sf.briar.api.db.DatabaseComponent;
@@ -21,7 +23,6 @@ import net.sf.briar.api.os.FileUtils;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
-import com.google.inject.Singleton;
 
 public class DatabaseModule extends AbstractModule {
 
diff --git a/briar-core/src/net/sf/briar/db/H2Database.java b/briar-core/src/net/sf/briar/db/H2Database.java
index a21aba6d057cc2566cfff0513fe5e9cb80546076..d0dfa1da65f6e0256a62fbf175b6702e87ee1b88 100644
--- a/briar-core/src/net/sf/briar/db/H2Database.java
+++ b/briar-core/src/net/sf/briar/db/H2Database.java
@@ -8,14 +8,14 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.Properties;
 
+import javax.inject.Inject;
+
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.db.DatabaseConfig;
 import net.sf.briar.api.db.DbException;
 import net.sf.briar.api.os.FileUtils;
 import net.sf.briar.util.StringUtils;
 
-import com.google.inject.Inject;
-
 /** Contains all the H2-specific code for the database. */
 class H2Database extends JdbcDatabase {
 
diff --git a/briar-core/src/net/sf/briar/invitation/InvitationModule.java b/briar-core/src/net/sf/briar/invitation/InvitationModule.java
index 4c5293fb15a8127f8112a5db40a3fb46ae65879a..0039480e4bc8ab30d8f362707feacb3f3f2ce107 100644
--- a/briar-core/src/net/sf/briar/invitation/InvitationModule.java
+++ b/briar-core/src/net/sf/briar/invitation/InvitationModule.java
@@ -1,9 +1,10 @@
 package net.sf.briar.invitation;
 
+import javax.inject.Singleton;
+
 import net.sf.briar.api.invitation.InvitationTaskFactory;
 
 import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
 
 public class InvitationModule extends AbstractModule {
 
diff --git a/briar-core/src/net/sf/briar/invitation/InvitationTaskFactoryImpl.java b/briar-core/src/net/sf/briar/invitation/InvitationTaskFactoryImpl.java
index 66d5d649f43568852b83ff043dde0a88fb6a596c..b3fd50162e99ba8efee27cbb9d0f4595a5a76d5e 100644
--- a/briar-core/src/net/sf/briar/invitation/InvitationTaskFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/invitation/InvitationTaskFactoryImpl.java
@@ -1,5 +1,7 @@
 package net.sf.briar.invitation;
 
+import javax.inject.Inject;
+
 import net.sf.briar.api.AuthorFactory;
 import net.sf.briar.api.AuthorId;
 import net.sf.briar.api.clock.Clock;
@@ -15,8 +17,6 @@ import net.sf.briar.api.transport.ConnectionDispatcher;
 import net.sf.briar.api.transport.ConnectionReaderFactory;
 import net.sf.briar.api.transport.ConnectionWriterFactory;
 
-import com.google.inject.Inject;
-
 class InvitationTaskFactoryImpl implements InvitationTaskFactory {
 
 	private final CryptoComponent crypto;
diff --git a/briar-core/src/net/sf/briar/lifecycle/LifecycleManagerImpl.java b/briar-core/src/net/sf/briar/lifecycle/LifecycleManagerImpl.java
index 0c14b3a5ddb345d5a1abb1149ce1d0c6cecc5d98..06e007762b289c103e3dbdbb5bca1db69d7c6eb5 100644
--- a/briar-core/src/net/sf/briar/lifecycle/LifecycleManagerImpl.java
+++ b/briar-core/src/net/sf/briar/lifecycle/LifecycleManagerImpl.java
@@ -10,13 +10,13 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 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 com.google.inject.Inject;
-
 class LifecycleManagerImpl implements LifecycleManager {
 
 	private static final Logger LOG =
diff --git a/briar-core/src/net/sf/briar/lifecycle/LifecycleModule.java b/briar-core/src/net/sf/briar/lifecycle/LifecycleModule.java
index fb17ceb1093026ea04c7d579d3219afe0b3aaf43..bab67b578082f0b5a9f4fd276f60f947093c94db 100644
--- a/briar-core/src/net/sf/briar/lifecycle/LifecycleModule.java
+++ b/briar-core/src/net/sf/briar/lifecycle/LifecycleModule.java
@@ -1,10 +1,11 @@
 package net.sf.briar.lifecycle;
 
+import javax.inject.Singleton;
+
 import net.sf.briar.api.lifecycle.LifecycleManager;
 import net.sf.briar.api.lifecycle.ShutdownManager;
 
 import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
 
 public class LifecycleModule extends AbstractModule {
 
diff --git a/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java
index 8dc4ba94c90327e995d39343d6453e52df666744..a55a60b220443c51df836fe75b9093d90637f893 100644
--- a/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/AuthorFactoryImpl.java
@@ -5,6 +5,8 @@ import static net.sf.briar.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;
@@ -14,8 +16,6 @@ import net.sf.briar.api.crypto.MessageDigest;
 import net.sf.briar.api.serial.Writer;
 import net.sf.briar.api.serial.WriterFactory;
 
-import com.google.inject.Inject;
-
 class AuthorFactoryImpl implements AuthorFactory {
 
 	private final CryptoComponent crypto;
diff --git a/briar-core/src/net/sf/briar/messaging/GroupFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/GroupFactoryImpl.java
index 7bbc7120056b0c06cfa7400323aa0968eda41785..0a251f523dba1d003c4b1a55020d521982b1a67d 100644
--- a/briar-core/src/net/sf/briar/messaging/GroupFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/GroupFactoryImpl.java
@@ -6,6 +6,8 @@ import static net.sf.briar.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;
@@ -14,8 +16,6 @@ import net.sf.briar.api.messaging.GroupId;
 import net.sf.briar.api.serial.Writer;
 import net.sf.briar.api.serial.WriterFactory;
 
-import com.google.inject.Inject;
-
 class GroupFactoryImpl implements GroupFactory {
 
 	private final CryptoComponent crypto;
diff --git a/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
index 810c8fd21041479d1f3dfaed8e4639fb4f007525..5de23a977a86dc377fb278a4124267e671c4cff6 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/MessageFactoryImpl.java
@@ -18,6 +18,8 @@ import java.nio.charset.CharsetDecoder;
 import java.security.GeneralSecurityException;
 import java.security.SecureRandom;
 
+import javax.inject.Inject;
+
 import net.sf.briar.api.Author;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.crypto.CryptoComponent;
@@ -35,8 +37,6 @@ import net.sf.briar.api.serial.SigningConsumer;
 import net.sf.briar.api.serial.Writer;
 import net.sf.briar.api.serial.WriterFactory;
 
-import com.google.inject.Inject;
-
 class MessageFactoryImpl implements MessageFactory {
 
 	private final Signature signature;
diff --git a/briar-core/src/net/sf/briar/messaging/MessageVerifierImpl.java b/briar-core/src/net/sf/briar/messaging/MessageVerifierImpl.java
index a0ffe69ca9aec8c3f6c7e9ce116908e82f1fbf23..9332c59cc66b4aba39417155d4d5554b1a884ad1 100644
--- a/briar-core/src/net/sf/briar/messaging/MessageVerifierImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/MessageVerifierImpl.java
@@ -2,6 +2,8 @@ package net.sf.briar.messaging;
 
 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;
@@ -13,8 +15,6 @@ import net.sf.briar.api.messaging.MessageId;
 import net.sf.briar.api.messaging.MessageVerifier;
 import net.sf.briar.api.messaging.UnverifiedMessage;
 
-import com.google.inject.Inject;
-
 class MessageVerifierImpl implements MessageVerifier {
 
 	private final CryptoComponent crypto;
diff --git a/briar-core/src/net/sf/briar/messaging/PacketReaderFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/PacketReaderFactoryImpl.java
index 624e8506ce54aa134c895ef251e60894d6ba2652..f094ecfbe5313643cb6e45629980ed48c4f273f3 100644
--- a/briar-core/src/net/sf/briar/messaging/PacketReaderFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/PacketReaderFactoryImpl.java
@@ -2,6 +2,8 @@ package net.sf.briar.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;
@@ -9,8 +11,6 @@ import net.sf.briar.api.messaging.UnverifiedMessage;
 import net.sf.briar.api.serial.ReaderFactory;
 import net.sf.briar.api.serial.StructReader;
 
-import com.google.inject.Inject;
-
 class PacketReaderFactoryImpl implements PacketReaderFactory {
 
 	private final ReaderFactory readerFactory;
diff --git a/briar-core/src/net/sf/briar/messaging/PacketWriterFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/PacketWriterFactoryImpl.java
index 3d80c3b3abe76c4b3a154a5ae7a0c31254dd6524..8f1e5b4e5642c7c7d453ac609a383443fdb57194 100644
--- a/briar-core/src/net/sf/briar/messaging/PacketWriterFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/PacketWriterFactoryImpl.java
@@ -2,13 +2,13 @@ package net.sf.briar.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 com.google.inject.Inject;
-
 class PacketWriterFactoryImpl implements PacketWriterFactory {
 
 	private final SerialComponent serial;
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java
index aaea38cbaba01bbdec92f06452682318b5780196..22d2153cf2ad7fc29e69dcf061e8f933a6d70d9a 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnectionFactoryImpl.java
@@ -5,6 +5,8 @@ import static java.util.logging.Level.WARNING;
 import java.util.concurrent.Executor;
 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;
@@ -21,8 +23,6 @@ import net.sf.briar.api.transport.ConnectionReaderFactory;
 import net.sf.briar.api.transport.ConnectionRegistry;
 import net.sf.briar.api.transport.ConnectionWriterFactory;
 
-import com.google.inject.Inject;
-
 class DuplexConnectionFactoryImpl implements DuplexConnectionFactory {
 
 	private static final Logger LOG =
diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexMessagingModule.java b/briar-core/src/net/sf/briar/messaging/duplex/DuplexMessagingModule.java
index f9c3967f897661659fc82aa8c28de74a752a24fe..17f4a5b1a21444f3487ec58651f2ed24d37efba6 100644
--- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexMessagingModule.java
+++ b/briar-core/src/net/sf/briar/messaging/duplex/DuplexMessagingModule.java
@@ -1,9 +1,10 @@
 package net.sf.briar.messaging.duplex;
 
+import javax.inject.Singleton;
+
 import net.sf.briar.api.messaging.duplex.DuplexConnectionFactory;
 
 import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
 
 public class DuplexMessagingModule extends AbstractModule {
 
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java b/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java
index aed86936a68b2531e39ea2f2a3041080ff907017..441a0a46e8edb9a93ae24acba60781406f9d0692 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/messaging/simplex/SimplexConnectionFactoryImpl.java
@@ -5,6 +5,8 @@ import static java.util.logging.Level.WARNING;
 import java.util.concurrent.Executor;
 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;
@@ -22,8 +24,6 @@ import net.sf.briar.api.transport.ConnectionReaderFactory;
 import net.sf.briar.api.transport.ConnectionRegistry;
 import net.sf.briar.api.transport.ConnectionWriterFactory;
 
-import com.google.inject.Inject;
-
 class SimplexConnectionFactoryImpl implements SimplexConnectionFactory {
 
 	private static final Logger LOG =
diff --git a/briar-core/src/net/sf/briar/messaging/simplex/SimplexMessagingModule.java b/briar-core/src/net/sf/briar/messaging/simplex/SimplexMessagingModule.java
index 4455fbe603720838d1b3373cfb98c3ca66f93457..eec9b495d8b9649cf6e5ba4a51cb6b5979ca2764 100644
--- a/briar-core/src/net/sf/briar/messaging/simplex/SimplexMessagingModule.java
+++ b/briar-core/src/net/sf/briar/messaging/simplex/SimplexMessagingModule.java
@@ -1,9 +1,10 @@
 package net.sf.briar.messaging.simplex;
 
+import javax.inject.Singleton;
+
 import net.sf.briar.api.messaging.simplex.SimplexConnectionFactory;
 
 import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
 
 public class SimplexMessagingModule extends AbstractModule {
 
diff --git a/briar-core/src/net/sf/briar/plugins/PluginManagerImpl.java b/briar-core/src/net/sf/briar/plugins/PluginManagerImpl.java
index b24c322c97292fbb7fb23e37b6c1605179a90514..c4d11978f7a133d56a9619535efd5614a7b5e128 100644
--- a/briar-core/src/net/sf/briar/plugins/PluginManagerImpl.java
+++ b/briar-core/src/net/sf/briar/plugins/PluginManagerImpl.java
@@ -14,6 +14,8 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Executor;
 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;
@@ -38,8 +40,6 @@ import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
 import net.sf.briar.api.transport.ConnectionDispatcher;
 import net.sf.briar.api.ui.UiCallback;
 
-import com.google.inject.Inject;
-
 // FIXME: Don't make alien calls with a lock held (that includes waiting on a
 // latch that depends on an alien call)
 class PluginManagerImpl implements PluginManager {
diff --git a/briar-core/src/net/sf/briar/plugins/PluginsModule.java b/briar-core/src/net/sf/briar/plugins/PluginsModule.java
index 2ed0a78c51978752ae6455def96a970a1d832243..defa2ac78dfc30f4d66f1250bf4c79a3e09f0b22 100644
--- a/briar-core/src/net/sf/briar/plugins/PluginsModule.java
+++ b/briar-core/src/net/sf/briar/plugins/PluginsModule.java
@@ -9,13 +9,14 @@ import java.util.concurrent.RejectedExecutionHandler;
 import java.util.concurrent.SynchronousQueue;
 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 com.google.inject.AbstractModule;
 import com.google.inject.Provides;
-import com.google.inject.Singleton;
 
 public class PluginsModule extends AbstractModule {
 
diff --git a/briar-core/src/net/sf/briar/plugins/PollerImpl.java b/briar-core/src/net/sf/briar/plugins/PollerImpl.java
index 30a356feef1aacd5eaf62f7c42236dd5c26ba855..8ae80eed4b009ceb77b6fc525682c7b556b33ad3 100644
--- a/briar-core/src/net/sf/briar/plugins/PollerImpl.java
+++ b/briar-core/src/net/sf/briar/plugins/PollerImpl.java
@@ -8,14 +8,14 @@ import java.util.TreeSet;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
+import javax.inject.Inject;
+
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.plugins.Plugin;
 import net.sf.briar.api.plugins.PluginExecutor;
 import net.sf.briar.api.transport.ConnectionRegistry;
 
-import com.google.inject.Inject;
-
 class PollerImpl implements Poller, Runnable {
 
 	private static final Logger LOG =
diff --git a/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java b/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java
index 411f817b0737682cb00b447573d266f16f713681..406436dba8a843e794791c5b5b7770d17b48964e 100644
--- a/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/reliability/ReliabilityLayerFactoryImpl.java
@@ -2,6 +2,8 @@ package net.sf.briar.reliability;
 
 import java.util.concurrent.Executor;
 
+import javax.inject.Inject;
+
 import net.sf.briar.api.clock.Clock;
 import net.sf.briar.api.clock.SystemClock;
 import net.sf.briar.api.reliability.ReliabilityExecutor;
@@ -9,8 +11,6 @@ import net.sf.briar.api.reliability.ReliabilityLayer;
 import net.sf.briar.api.reliability.ReliabilityLayerFactory;
 import net.sf.briar.api.reliability.WriteHandler;
 
-import com.google.inject.Inject;
-
 class ReliabilityLayerFactoryImpl implements ReliabilityLayerFactory {
 
 	private final Executor executor;
diff --git a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java b/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
index eb8744245f469de7d383b6564baf9e452ed2f0b1..c80897ba33d6583b21ebec7853905babf1552493 100644
--- a/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
+++ b/briar-core/src/net/sf/briar/reliability/ReliabilityModule.java
@@ -9,13 +9,14 @@ import java.util.concurrent.RejectedExecutionHandler;
 import java.util.concurrent.SynchronousQueue;
 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 com.google.inject.AbstractModule;
 import com.google.inject.Provides;
-import com.google.inject.Singleton;
 
 public class ReliabilityModule extends AbstractModule {
 
diff --git a/briar-core/src/net/sf/briar/serial/SerialModule.java b/briar-core/src/net/sf/briar/serial/SerialModule.java
index acc25ce2b5faa905d9b423eb7eb9d128cd016692..0c512bd15af95731123772c630222852772a84b1 100644
--- a/briar-core/src/net/sf/briar/serial/SerialModule.java
+++ b/briar-core/src/net/sf/briar/serial/SerialModule.java
@@ -1,11 +1,12 @@
 package net.sf.briar.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 com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
 
 public class SerialModule extends AbstractModule {
 
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionDispatcherImpl.java b/briar-core/src/net/sf/briar/transport/ConnectionDispatcherImpl.java
index ecd57aa2b73f5846223b77ac95d4137b006cc293..45ec4834c8cb6a83f4c028b454cfcc4f8b027c99 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionDispatcherImpl.java
+++ b/briar-core/src/net/sf/briar/transport/ConnectionDispatcherImpl.java
@@ -9,6 +9,8 @@ import java.io.InputStream;
 import java.util.concurrent.Executor;
 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;
@@ -22,8 +24,6 @@ import net.sf.briar.api.transport.ConnectionDispatcher;
 import net.sf.briar.api.transport.ConnectionRecogniser;
 import net.sf.briar.api.transport.IncomingConnectionExecutor;
 
-import com.google.inject.Inject;
-
 class ConnectionDispatcherImpl implements ConnectionDispatcher {
 
 	private static final Logger LOG =
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionReaderFactoryImpl.java b/briar-core/src/net/sf/briar/transport/ConnectionReaderFactoryImpl.java
index cfd2b8246e1f4d89b77cf2cb9d0785ac21357ac4..30c1824ccd79a2e1951f63f9adc0c568fd8a2d40 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionReaderFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/transport/ConnectionReaderFactoryImpl.java
@@ -2,14 +2,14 @@ package net.sf.briar.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 com.google.inject.Inject;
-
 class ConnectionReaderFactoryImpl implements ConnectionReaderFactory {
 
 	private final CryptoComponent crypto;
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionRecogniserImpl.java b/briar-core/src/net/sf/briar/transport/ConnectionRecogniserImpl.java
index 080860b5b98e35501bd11c89652d3f97c78451c3..1b5377aca2d97af36e16994e1f5aded52d91bad0 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionRecogniserImpl.java
+++ b/briar-core/src/net/sf/briar/transport/ConnectionRecogniserImpl.java
@@ -3,6 +3,8 @@ package net.sf.briar.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;
@@ -12,8 +14,6 @@ import net.sf.briar.api.transport.ConnectionContext;
 import net.sf.briar.api.transport.ConnectionRecogniser;
 import net.sf.briar.api.transport.TemporarySecret;
 
-import com.google.inject.Inject;
-
 class ConnectionRecogniserImpl implements ConnectionRecogniser {
 
 	private final CryptoComponent crypto;
diff --git a/briar-core/src/net/sf/briar/transport/ConnectionWriterFactoryImpl.java b/briar-core/src/net/sf/briar/transport/ConnectionWriterFactoryImpl.java
index fcb1e65eb5f7c11ee609b2c2224f6ec3306f81c9..9b8e174afeef3e591f8a61ecc4959914e81425f5 100644
--- a/briar-core/src/net/sf/briar/transport/ConnectionWriterFactoryImpl.java
+++ b/briar-core/src/net/sf/briar/transport/ConnectionWriterFactoryImpl.java
@@ -4,14 +4,14 @@ import static net.sf.briar.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 com.google.inject.Inject;
-
 class ConnectionWriterFactoryImpl implements ConnectionWriterFactory {
 
 	private final CryptoComponent crypto;
diff --git a/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java b/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java
index cb0fc9b63e87ce27ad3f4f358f2ff0d412d308c3..109df1e9bf5f3303d9c684f20e62d9b22720b040 100644
--- a/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java
+++ b/briar-core/src/net/sf/briar/transport/KeyManagerImpl.java
@@ -14,6 +14,8 @@ import java.util.Map.Entry;
 import java.util.TimerTask;
 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.clock.Clock;
@@ -33,8 +35,6 @@ import net.sf.briar.api.transport.Endpoint;
 import net.sf.briar.api.transport.TemporarySecret;
 import net.sf.briar.util.ByteUtils;
 
-import com.google.inject.Inject;
-
 // FIXME: Don't make alien calls with a lock held
 class KeyManagerImpl extends TimerTask implements KeyManager, DatabaseListener {
 
diff --git a/briar-core/src/net/sf/briar/transport/TransportModule.java b/briar-core/src/net/sf/briar/transport/TransportModule.java
index 3d08f5802412dfb678290ca53230a8488f571e63..de5c1c74a395ddd8189d7a7d7b97cdb7deafe4da 100644
--- a/briar-core/src/net/sf/briar/transport/TransportModule.java
+++ b/briar-core/src/net/sf/briar/transport/TransportModule.java
@@ -9,6 +9,8 @@ import java.util.concurrent.RejectedExecutionHandler;
 import java.util.concurrent.SynchronousQueue;
 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;
@@ -20,7 +22,6 @@ import net.sf.briar.api.transport.IncomingConnectionExecutor;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
-import com.google.inject.Singleton;
 
 public class TransportModule extends AbstractModule {
 
diff --git a/briar-tests/src/net/sf/briar/crypto/KeyAgreementTest.java b/briar-tests/src/net/sf/briar/crypto/KeyAgreementTest.java
index 65c7e97f424b75bdd178dde6e6719ccaa633e24a..f51d556c6e9f33843c0dd5f9ea0d245446d29a14 100644
--- a/briar-tests/src/net/sf/briar/crypto/KeyAgreementTest.java
+++ b/briar-tests/src/net/sf/briar/crypto/KeyAgreementTest.java
@@ -1,7 +1,6 @@
 package net.sf.briar.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;
diff --git a/briar-tests/src/net/sf/briar/crypto/KeyEncodingAndParsingTest.java b/briar-tests/src/net/sf/briar/crypto/KeyEncodingAndParsingTest.java
index 9ecfed57b69e075f8d32779f17456e18ba2c17f8..d46e9ee7bc248f9ceb3f13527aa06dff600fad42 100644
--- a/briar-tests/src/net/sf/briar/crypto/KeyEncodingAndParsingTest.java
+++ b/briar-tests/src/net/sf/briar/crypto/KeyEncodingAndParsingTest.java
@@ -1,7 +1,6 @@
 package net.sf.briar.crypto;
 
 import static org.junit.Assert.assertArrayEquals;
-
 import net.sf.briar.BriarTestCase;
 import net.sf.briar.api.crypto.KeyPair;
 import net.sf.briar.api.crypto.KeyParser;