diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
index 154978f..298367c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
@@ -33,9 +33,8 @@
 import com.googlesource.gerrit.plugins.rabbitmq.message.MessagePublisher;
 import com.googlesource.gerrit.plugins.rabbitmq.message.Publisher;
 import com.googlesource.gerrit.plugins.rabbitmq.message.PublisherFactory;
-import com.googlesource.gerrit.plugins.rabbitmq.session.Session;
 import com.googlesource.gerrit.plugins.rabbitmq.session.SessionFactory;
-import com.googlesource.gerrit.plugins.rabbitmq.session.impl.AMQPSession;
+import com.googlesource.gerrit.plugins.rabbitmq.session.SessionFactoryProvider;
 import com.googlesource.gerrit.plugins.rabbitmq.solver.SolverImpl;
 import com.googlesource.gerrit.plugins.rabbitmq.solver.Solver;
 import com.googlesource.gerrit.plugins.rabbitmq.solver.SolverFactory;
@@ -48,6 +47,8 @@
 
   @Override
   protected void configure() {
+    bind(SessionFactory.class).toProvider(SessionFactoryProvider.class);
+
     Multibinder<Section> sectionBinder = Multibinder.newSetBinder(binder(), Section.class);
     sectionBinder.addBinding().to(AMQP.class);
     sectionBinder.addBinding().to(Exchange.class);
@@ -56,7 +57,6 @@
     sectionBinder.addBinding().to(Monitor.class);
 
     install(new FactoryModuleBuilder().implement(Solver.class, SolverImpl.class).build(SolverFactory.class));
-    install(new FactoryModuleBuilder().implement(Session.class, AMQPSession.class).build(SessionFactory.class));
     install(new FactoryModuleBuilder().implement(Publisher.class, MessagePublisher.class).build(PublisherFactory.class));
     install(new FactoryModuleBuilder().implement(Properties.class, PluginProperties.class).build(PropertiesFactory.class));
     install(new FactoryModuleBuilder().implement(ChangeWorker.class, UserChangeWorker.class).build(ChangeWorkerFactory.class));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
index 344d4f7..5413940 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/message/MessagePublisher.java
@@ -24,6 +24,7 @@
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Monitor;
 import com.googlesource.gerrit.plugins.rabbitmq.session.Session;
 import com.googlesource.gerrit.plugins.rabbitmq.session.SessionFactory;
+import com.googlesource.gerrit.plugins.rabbitmq.session.SessionFactoryProvider;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,9 +47,9 @@
   @Inject
   public MessagePublisher(
       @Assisted Properties properties,
-      SessionFactory sessionFactory,
+      SessionFactoryProvider sessionFactoryProvider,
       Gson gson) {
-    this.session = sessionFactory.create(properties);
+    this.session = sessionFactoryProvider.get().create(properties);
     this.properties = properties;
     this.gson = gson;
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/SessionFactory.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/SessionFactory.java
index 12683af..16bd310 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/SessionFactory.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/SessionFactory.java
@@ -14,7 +14,10 @@
 package com.googlesource.gerrit.plugins.rabbitmq.session;
 
 import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
+import com.googlesource.gerrit.plugins.rabbitmq.session.type.AMQPSession;
 
-public interface SessionFactory {
-  Session create(Properties properties);
+public class SessionFactory {
+  public Session create(Properties properties) {
+    return new AMQPSession(properties);
+  }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/SessionFactoryProvider.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/SessionFactoryProvider.java
new file mode 100644
index 0000000..07a6552
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/SessionFactoryProvider.java
@@ -0,0 +1,24 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.googlesource.gerrit.plugins.rabbitmq.session;
+
+import com.google.inject.Provider;
+
+public class SessionFactoryProvider implements Provider<SessionFactory> {
+
+  @Override
+  public SessionFactory get() {
+    return new SessionFactory();
+  }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/impl/AMQPSession.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
similarity index 98%
rename from src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/impl/AMQPSession.java
rename to src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
index ca42547..a3eeeed 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/impl/AMQPSession.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/session/type/AMQPSession.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.rabbitmq.session.impl;
+package com.googlesource.gerrit.plugins.rabbitmq.session.type;
 
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
@@ -94,7 +94,7 @@
   private final ShutdownListener channelListener = new ShutdownListenerImpl(Channel.class);
 
   @Inject
-  public AMQPSession(@Assisted Properties properties) {
+  public AMQPSession(Properties properties) {
     this.properties = properties;
   }
 
