diff --git a/common.defs b/common.defs
index 17f4c86..a717515 100644
--- a/common.defs
+++ b/common.defs
@@ -1,44 +1,14 @@
 include_defs('//lib/maven.defs')
 include_defs('//lib/prolog/prolog.defs')
 
-JACKSON_REV = '2.1.1'
-maven_jar(
-  name = 'jackson-core',
-  id = 'com.fasterxml.jackson.core:jackson-core:%s' % JACKSON_REV,
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'jackson-databind',
-  id = 'com.fasterxml.jackson.core:jackson-databind:%s' % JACKSON_REV,
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'jackson-annotations',
-  id = 'com.fasterxml.jackson.core:jackson-annotations:%s' % JACKSON_REV,
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'jackson-dataformat-yaml',
-  id = 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:%s' % JACKSON_REV,
-  license = 'Apache2.0',
-)
-
-maven_jar(
-  name = 'gitective-core',
-  id = 'org.gitective:gitective-core:0.9.9',
-  license = 'Apache2.0',
-)
-
 EXTERNAL_DEPS = [
-  ':gitective-core',
-  ':jackson-core',
-  ':jackson-databind',
-  ':jackson-annotations',
-  ':jackson-dataformat-yaml',
-]
+  '//plugins/gerrit-owners/gerrit-owners-common' + i for i in [
+    ':gitective-core',
+    ':jackson-core',
+    ':jackson-databind',
+    ':jackson-annotations',
+    ':jackson-dataformat-yaml',
+  ]]
 
 # These are dependencies that must be made available to the plugins' libraries at compilation
 # time, but should not be included in the plugins' jar files since they will be provided
@@ -46,6 +16,15 @@
 # For this reason all the intermediate java libraries that we build are java_library2 targets
 # rather than java_library.
 COMPILE_DEPS = [
-  '//:plugin-lib',
+  '//lib:guava',
+  '//lib/guice:guice',
+  '//lib:gwtorm',
+  '//lib/jgit:jgit',
+  '//lib/log:api',
+  '//gerrit-plugin-api:plugin-api',
+  '//gerrit-reviewdb:client',
+  '//gerrit-reviewdb:server',
+  '//gerrit-server:server',
+  '//gerrit-extension-api:lib',
   '//lib/prolog:prolog-cafe',
 ]
diff --git a/gerrit-owners-autoassign/BUCK b/gerrit-owners-autoassign/BUCK
index 18d0393..516426f 100644
--- a/gerrit-owners-autoassign/BUCK
+++ b/gerrit-owners-autoassign/BUCK
@@ -1,4 +1,6 @@
 include_defs('//plugins/gerrit-owners/common.defs')
+include_defs('//lib/maven.defs')
+include_defs('//lib/prolog/prolog.defs')
 
 gerrit_plugin(
   name = 'owners-autoassign',
@@ -9,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-common/BUCK b/gerrit-owners-common/BUCK
index ea5fb6a..61f5e60 100644
--- a/gerrit-owners-common/BUCK
+++ b/gerrit-owners-common/BUCK
@@ -1,14 +1,44 @@
 include_defs('//plugins/gerrit-owners/common.defs')
+include_defs('//lib/maven.defs')
+include_defs('//lib/prolog/prolog.defs')
+
+JACKSON_REV = '2.1.1'
+maven_jar(
+  name = 'jackson-core',
+  id = 'com.fasterxml.jackson.core:jackson-core:%s' % JACKSON_REV,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jackson-databind',
+  id = 'com.fasterxml.jackson.core:jackson-databind:%s' % JACKSON_REV,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jackson-annotations',
+  id = 'com.fasterxml.jackson.core:jackson-annotations:%s' % JACKSON_REV,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'jackson-dataformat-yaml',
+  id = 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:%s' % JACKSON_REV,
+  license = 'Apache2.0',
+)
+
+maven_jar(
+  name = 'gitective-core',
+  id = 'org.gitective:gitective-core:0.9.9',
+  license = 'Apache2.0',
+)
 
 # see common.defs on why this is a java_library2 rather than java_library
-java_library2(
+java_library(
   name = 'common',
   srcs = glob([
     'src/main/java/**/*.java',
   ]),
-  deps = [],
-  # Notice that we put EXTERNAL_DEPS as compile_deps to prevent double inclusion in the owners
-  # plugin.
-  compile_deps = COMPILE_DEPS + EXTERNAL_DEPS,
+  deps = COMPILE_DEPS + EXTERNAL_DEPS,
   visibility = ['PUBLIC'],
 )
diff --git a/gerrit-owners/BUCK b/gerrit-owners/BUCK
index 0ef0040..009de04 100644
--- a/gerrit-owners/BUCK
+++ b/gerrit-owners/BUCK
@@ -1,21 +1,20 @@
 include_defs('//plugins/gerrit-owners/common.defs')
+include_defs('//lib/maven.defs')
+include_defs('//lib/prolog/prolog.defs')
 
 # buck is unhappy to build a gerrit_plugin with no source files.
 # On the other side, gerrit-owners-prolog-rules needs to be built after all the java files have been
 # compiled. For this reason we have a stub class that has no content and just makes buck happy.
 COMPILE_STUB = ['src/main/java/com/vmware/gerrit/owners/CompileStub.java']
 
-java_library2(
+java_library(
   name = 'gerrit-owners-lib',
   srcs = glob([
     'src/main/java/**/*.java',
   ], excludes=COMPILE_STUB),
   deps = [
     '//plugins/gerrit-owners/gerrit-owners-common:common',
-  ],
-  # Notice that we put EXTERNAL_DEPS as compile_deps to prevent double inclusion in the owners
-  # plugin.
-  compile_deps = COMPILE_DEPS + EXTERNAL_DEPS,
+  ] + COMPILE_DEPS + EXTERNAL_DEPS,
 )
 
 prolog_cafe_library(
@@ -34,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);
+  }
+}
