diff --git a/gerrit-owners-autoassign/BUCK b/gerrit-owners-autoassign/BUCK
index 2678ed9..516426f 100644
--- a/gerrit-owners-autoassign/BUCK
+++ b/gerrit-owners-autoassign/BUCK
@@ -11,6 +11,7 @@
     'Implementation-Title: Gerrit OWNERS autoassign plugin',
     'Implementation-URL: https://github.com/vadims/gerrit-owners',
     'Gerrit-PluginName: owners-autoassign',
+    'Gerrit-Module: com.vmware.gerrit.owners.common.AutoassignModule',
   ],
   deps = [
     '//plugins/gerrit-owners/gerrit-owners-common:common',
diff --git a/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/AutoassignModule.java b/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/AutoassignModule.java
new file mode 100644
index 0000000..eab2403
--- /dev/null
+++ b/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/AutoassignModule.java
@@ -0,0 +1,13 @@
+package com.vmware.gerrit.owners.common;
+
+import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
+import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.inject.AbstractModule;
+
+public class AutoassignModule extends AbstractModule {
+  @Override
+  protected void configure() {
+    DynamicSet.bind(binder(), GitReferenceUpdatedListener.class)
+        .to(GitRefListener.class);
+  }
+}
diff --git a/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java b/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java
index d7ba7a3..1d2e307 100644
--- a/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java
+++ b/gerrit-owners-autoassign/src/main/java/com/vmware/gerrit/owners/common/ReviewerManager.java
@@ -4,11 +4,13 @@
 package com.vmware.gerrit.owners.common;
 
 import com.google.gerrit.common.errors.EmailException;
+import com.google.gerrit.extensions.api.changes.AddReviewerInput;
 import com.google.gerrit.extensions.restapi.RestApiException;
 import com.google.gerrit.reviewdb.client.Account;
 import com.google.gerrit.reviewdb.client.Change;
 import com.google.gerrit.server.CurrentUser;
 import com.google.gerrit.server.change.ChangeResource;
+import com.google.gerrit.server.change.ChangesCollection;
 import com.google.gerrit.server.change.PostReviewers;
 import com.google.gerrit.server.project.ChangeControl;
 import com.google.gerrit.server.project.NoSuchChangeException;
@@ -29,25 +31,29 @@
 
   private final ChangeControl.GenericFactory changeControlFactory;
 
+  private final ChangesCollection changesCollection;
+
   @Inject
   public ReviewerManager(Provider<CurrentUser> currentUserProvider,
                          Provider<PostReviewers> postReviewersProvider,
-                         ChangeControl.GenericFactory changeControlFactory) {
+                         ChangeControl.GenericFactory changeControlFactory,
+                         ChangesCollection changesCollection) {
     this.currentUserProvider = currentUserProvider;
     this.postReviewersProvider = postReviewersProvider;
     this.changeControlFactory = changeControlFactory;
+    this.changesCollection = changesCollection;
   }
 
   public void addReviewers(Change change, Collection<Account.Id> reviewers) throws ReviewerManagerException {
     try {
       PostReviewers postReviewers = postReviewersProvider.get();
       ChangeControl changeControl = changeControlFactory.controlFor(change, currentUserProvider.get());
-      ChangeResource changeResource = new ChangeResource(changeControl);
+      ChangeResource changeResource = changesCollection.parse(changeControl);
 
       // HACK(vspivak): Using PostReviewers is probably inefficient here, however it has all the hook/notification
       // logic, so it's easier to call it then to mimic/copy the logic here.
       for (Account.Id accountId : reviewers) {
-        PostReviewers.Input input = new PostReviewers.Input();
+        AddReviewerInput input = new AddReviewerInput();
         input.reviewer = accountId.toString();
         postReviewers.apply(changeResource, input);
       }
diff --git a/gerrit-owners/BUCK b/gerrit-owners/BUCK
index c425c65..009de04 100644
--- a/gerrit-owners/BUCK
+++ b/gerrit-owners/BUCK
@@ -33,6 +33,7 @@
     'Implementation-Title: Gerrit OWNERS plugin',
     'Implementation-URL: https://github.com/vadims/gerrit-owners',
     'Gerrit-PluginName: owners',
+    'Gerrit-Module: com.vmware.gerrit.owners.OwnersModule',
   ],
   deps = [
     ':gerrit-owners-lib',
diff --git a/gerrit-owners/src/main/java/com/vmware/gerrit/owners/OwnersModule.java b/gerrit-owners/src/main/java/com/vmware/gerrit/owners/OwnersModule.java
new file mode 100644
index 0000000..e2c90c4
--- /dev/null
+++ b/gerrit-owners/src/main/java/com/vmware/gerrit/owners/OwnersModule.java
@@ -0,0 +1,14 @@
+package com.vmware.gerrit.owners;
+
+import com.google.gerrit.rules.PredicateProvider;
+import com.google.gerrit.extensions.registration.DynamicSet;
+import com.google.inject.AbstractModule;
+
+
+public class OwnersModule extends AbstractModule {
+  @Override
+  protected void configure() {
+    DynamicSet.bind(binder(), PredicateProvider.class)
+        .to(OwnerPredicateProvider.class);
+  }
+}
