diff --git a/briar-api/src/org/briarproject/api/reliability/ReliabilityExecutor.java b/briar-api/src/org/briarproject/api/reliability/ReliabilityExecutor.java
deleted file mode 100644
index dbb2ddcd56996853c68c1a3d453c4b8324ba38f3..0000000000000000000000000000000000000000
--- a/briar-api/src/org/briarproject/api/reliability/ReliabilityExecutor.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.briarproject.api.reliability;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import com.google.inject.BindingAnnotation;
-
-/** Annotation for injecting the executor used by reliability layers. */
-@BindingAnnotation
-@Target({ FIELD, METHOD, PARAMETER })
-@Retention(RUNTIME)
-public @interface ReliabilityExecutor {}
\ No newline at end of file
diff --git a/briar-core/src/org/briarproject/reliability/ReliabilityLayerFactoryImpl.java b/briar-core/src/org/briarproject/reliability/ReliabilityLayerFactoryImpl.java
index 0cb3716cbf98615b897fbf5e42eee68cb2b7e8c9..7aee1db755b395e602cf7e2a296ae1d4a198cc9f 100644
--- a/briar-core/src/org/briarproject/reliability/ReliabilityLayerFactoryImpl.java
+++ b/briar-core/src/org/briarproject/reliability/ReliabilityLayerFactoryImpl.java
@@ -4,7 +4,7 @@ import java.util.concurrent.Executor;
 
 import javax.inject.Inject;
 
-import org.briarproject.api.reliability.ReliabilityExecutor;
+import org.briarproject.api.lifecycle.IoExecutor;
 import org.briarproject.api.reliability.ReliabilityLayer;
 import org.briarproject.api.reliability.ReliabilityLayerFactory;
 import org.briarproject.api.reliability.WriteHandler;
@@ -13,16 +13,16 @@ import org.briarproject.system.SystemClock;
 
 class ReliabilityLayerFactoryImpl implements ReliabilityLayerFactory {
 
-	private final Executor executor;
+	private final Executor ioExecutor;
 	private final Clock clock;
 
 	@Inject
-	ReliabilityLayerFactoryImpl(@ReliabilityExecutor Executor executor) {
-		this.executor = executor;
+	ReliabilityLayerFactoryImpl(@IoExecutor Executor ioExecutor) {
+		this.ioExecutor = ioExecutor;
 		clock = new SystemClock();
 	}
 
 	public ReliabilityLayer createReliabilityLayer(WriteHandler writeHandler) {
-		return new ReliabilityLayerImpl(executor, clock, writeHandler);
+		return new ReliabilityLayerImpl(ioExecutor, clock, writeHandler);
 	}
 }
diff --git a/briar-core/src/org/briarproject/reliability/ReliabilityModule.java b/briar-core/src/org/briarproject/reliability/ReliabilityModule.java
index 691b52cb79df013ec139e1a9f8be462540422faf..aabd18e8754d40674096aa71fc38246c96b58f52 100644
--- a/briar-core/src/org/briarproject/reliability/ReliabilityModule.java
+++ b/briar-core/src/org/briarproject/reliability/ReliabilityModule.java
@@ -1,46 +1,14 @@
 package org.briarproject.reliability;
 
-import static java.util.concurrent.TimeUnit.SECONDS;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.RejectedExecutionHandler;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-
-import javax.inject.Singleton;
-
-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;
 
 public class ReliabilityModule extends AbstractModule {
 
-	private final ExecutorService reliabilityExecutor;
-
-	public ReliabilityModule() {
-		// The thread pool is unbounded, so use direct handoff
-		BlockingQueue<Runnable> queue = new SynchronousQueue<Runnable>();
-		// Discard tasks that are submitted during shutdown
-		RejectedExecutionHandler policy =
-				new ThreadPoolExecutor.DiscardPolicy();
-		// Create threads as required and keep them in the pool for 60 seconds
-		reliabilityExecutor = new ThreadPoolExecutor(0, Integer.MAX_VALUE,
-				60, SECONDS, queue, policy);
-	}
-
+	@Override
 	protected void configure() {
 		bind(ReliabilityLayerFactory.class).to(
 				ReliabilityLayerFactoryImpl.class);
 	}
-
-	@Provides @Singleton @ReliabilityExecutor
-	Executor getReliabilityExecutor(LifecycleManager lifecycleManager) {
-		lifecycleManager.registerForShutdown(reliabilityExecutor);
-		return reliabilityExecutor;
-	}
 }