diff --git a/.buckconfig b/.buckconfig
index 36c84eb..daef711 100644
--- a/.buckconfig
+++ b/.buckconfig
@@ -4,6 +4,8 @@
 
 [java]
   src_roots = java, resources
+  source_level = 8
+  target_level = 8
 
 [project]
   ignore = .git
diff --git a/.gitignore b/.gitignore
index 9ab384b..f69c160 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@
 /buck-cache
 /buck-out
 /bucklets
+*.iml
diff --git a/BUCK b/BUCK
index 0160c15..547d0e8 100644
--- a/BUCK
+++ b/BUCK
@@ -21,7 +21,6 @@
   name = 'cookbook_tests',
   srcs = glob(['src/test/java/**/*IT.java']),
   labels = ['cookbook-plugin'],
-  source_under_test = [':cookbook-plugin__plugin'],
   deps = GERRIT_PLUGIN_API + GERRIT_TESTS + [
     ':cookbook-plugin__plugin',
   ],
diff --git a/BUILD b/BUILD
new file mode 100644
index 0000000..1ca5610
--- /dev/null
+++ b/BUILD
@@ -0,0 +1,34 @@
+load("//tools/bzl:junit.bzl", "junit_tests")
+load("//tools/bzl:plugin.bzl", "gerrit_plugin")
+
+MODULE = "com.googlesource.gerrit.plugins.cookbook.HelloForm"
+
+gerrit_plugin(
+    name = "cookbook-plugin",
+    srcs = glob(["src/main/java/**/*.java"]),
+    gwt_module = MODULE,
+    manifest_entries = [
+        "Gerrit-PluginName: cookbook",
+        "Gerrit-Module: com.googlesource.gerrit.plugins.cookbook.Module",
+        "Gerrit-HttpModule: com.googlesource.gerrit.plugins.cookbook.HttpModule",
+        "Gerrit-SshModule: com.googlesource.gerrit.plugins.cookbook.SshModule",
+        "Implementation-Title: Cookbook plugin",
+        "Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/cookbook-plugin",
+    ],
+    resources = glob(["src/main/**/*"]),
+)
+
+junit_tests(
+    name = "cookbook_tests",
+    size = "small",
+    srcs = glob(["src/test/java/**/*IT.java"]),
+    tags = [
+        "cookbook-plugin",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        ":cookbook-plugin__plugin",
+        "//gerrit-acceptance-framework:lib",
+        "//gerrit-plugin-api:lib",
+    ],
+)
diff --git a/lib/BUCK b/lib/BUCK
index 9c596fa..d333cba 100644
--- a/lib/BUCK
+++ b/lib/BUCK
@@ -1,13 +1,6 @@
 include_defs('//bucklets/maven_jar.bucklet')
 
 maven_jar(
-  name = 'guava',
-  id = 'com.google.guava:guava:19.0-rc2',
-  sha1 = '93e17f60bc524c2610b41c494bb829c11ca89436',
-  license = 'Apache2.0',
-)
-
-maven_jar(
   name = 'junit',
   id = 'junit:junit:4.11',
   sha1 = '4e031bb61df09069aeb2bffb4019e7a5034a4ee0',
@@ -20,7 +13,6 @@
   sha1 = 'bd17774d2dc0fffa884d42c07d2537e86c67acd6',
   license = 'DO_NOT_DISTRIBUTE',
   exported_deps = [
-    ':guava',
     ':junit',
   ],
 )
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK
index 2e795df..802c1b7 100644
--- a/lib/gerrit/BUCK
+++ b/lib/gerrit/BUCK
@@ -1,12 +1,11 @@
 include_defs('//bucklets/maven_jar.bucklet')
 
-VER = '2.13'
-REPO = MAVEN_CENTRAL
+VER = '2.14-SNAPSHOT'
+REPO = MAVEN_LOCAL
 
 maven_jar(
   name = 'acceptance-framework',
   id = 'com.google.gerrit:gerrit-acceptance-framework:' + VER,
-  sha1 = 'a6913a61196a8fccdb45e761f43a0b7e21867c90',
   license = 'Apache2.0',
   attach_source = False,
   repository = REPO,
@@ -15,7 +14,6 @@
 maven_jar(
   name = 'plugin-api',
   id = 'com.google.gerrit:gerrit-plugin-api:' + VER,
-  sha1 = 'e25d55b8f41627c4ae6b9d2069ec398638b219a3',
   license = 'Apache2.0',
   attach_source = False,
   repository = REPO,
@@ -24,7 +22,6 @@
 maven_jar(
   name = 'gwtui-api',
   id = 'com.google.gerrit:gerrit-plugin-gwtui:' + VER,
-  sha1 = '0890414f42fc1fd0fef0400a479836f558727234',
   license = 'Apache2.0',
   attach_source = False,
   repository = REPO,
diff --git a/lib/gwt/BUCK b/lib/gwt/BUCK
index 394ed92..26e55d3 100644
--- a/lib/gwt/BUCK
+++ b/lib/gwt/BUCK
@@ -1,27 +1,21 @@
 include_defs('//bucklets/maven_jar.bucklet')
 
-VER = '2.7.0'
+VERSION = '2.8.0'
 
 maven_jar(
   name = 'user',
-  id = 'com.google.gwt:gwt-user:' + VER,
-  sha1 = 'bdc7af42581745d3d79c2efe0b514f432b998a5b',
+  id = 'com.google.gwt:gwt-user:' + VERSION,
+  sha1 = '518579870499e15531f454f35dca0772d7fa31f7',
   license = 'Apache2.0',
   attach_source = False,
-  deps = [
-    ':javax-validation',
-    ':javax-validation_src',
-  ]
 )
 
 maven_jar(
   name = 'dev',
-  id = 'com.google.gwt:gwt-dev:' + VER,
-  sha1 = 'c2c3dd5baf648a0bb199047a818be5e560f48982',
+  id = 'com.google.gwt:gwt-dev:' + VERSION,
+  sha1 = 'f160a61272c5ebe805cd2d3d3256ed3ecf14893f',
   license = 'Apache2.0',
   attach_source = False,
-  exclude = ['org/eclipse/jetty/*'],
-  deps = [':json'],
 )
 
 maven_jar(
@@ -30,14 +24,50 @@
   bin_sha1 = 'b6bd7f9d78f6fdaa3c37dae18a4bd298915f328e',
   src_sha1 = '7a561191db2203550fbfa40d534d4997624cd369',
   license = 'Apache2.0',
-  visibility = [],
+  visibility = ['PUBLIC'],
 )
 
 maven_jar(
-  name = 'json',
-  id = 'org.json:json:20140107',
-  sha1 = 'd1ffca6e2482b002702c6a576166fd685e3370e3',
-  license = 'DO_NOT_DISTRIBUTE',
+  name = 'jsinterop-annotations',
+  id = 'com.google.jsinterop:jsinterop-annotations:1.0.0',
+  bin_sha1 = '23c3a3c060ffe4817e67673cc8294e154b0a4a95',
+  src_sha1 = '5d7c478efbfccc191430d7c118d7bd2635e43750',
+  license = 'Apache2.0',
+  visibility = ['PUBLIC'],
+)
+
+maven_jar(
+  name = 'ant',
+  id = 'ant:ant:1.6.5',
+  bin_sha1 = '7d18faf23df1a5c3a43613952e0e8a182664564b',
+  src_sha1 = '9e0a847494563f35f9b02846a1c1eb4aa2ee5a9a',
+  license = 'Apache2.0',
+  visibility = ['PUBLIC'],
+)
+
+maven_jar(
+  name = 'colt',
+  id = 'colt:colt:1.2.0',
   attach_source = False,
-  visibility = [],
+  bin_sha1 = '0abc984f3adc760684d49e0f11ddf167ba516d4f',
+  license = 'DO_NOT_DISTRIBUTE',
+  visibility = ['PUBLIC'],
+)
+
+maven_jar(
+  name = 'tapestry',
+  id = 'tapestry:tapestry:4.0.2',
+  attach_source = False,
+  bin_sha1 = 'e855a807425d522e958cbce8697f21e9d679b1f7',
+  license = 'Apache2.0',
+  visibility = ['PUBLIC'],
+)
+
+maven_jar(
+  name = 'w3c-css-sac',
+  id = 'org.w3c.css:sac:1.3',
+  attach_source = False,
+  bin_sha1 = 'cdb2dcb4e22b83d6b32b93095f644c3462739e82',
+  license = 'DO_NOT_DISTRIBUTE',
+  visibility = ['PUBLIC'],
 )
diff --git a/lib/ow2/BUCK b/lib/ow2/BUCK
index db6c76c..543bc09 100644
--- a/lib/ow2/BUCK
+++ b/lib/ow2/BUCK
@@ -1,32 +1,39 @@
 include_defs('//bucklets/maven_jar.bucklet')
 
-VERSION = '5.0.3'
+VERSION = '5.1'
 
 maven_jar(
   name = 'ow2-asm',
   id = 'org.ow2.asm:asm:' + VERSION,
-  sha1 = 'dcc2193db20e19e1feca8b1240dbbc4e190824fa',
+  sha1 = '5ef31c4fe953b1fd00b8a88fa1d6820e8785bb45',
   license = 'ow2',
 )
 
 maven_jar(
   name = 'ow2-asm-analysis',
   id = 'org.ow2.asm:asm-analysis:' + VERSION,
-  sha1 = 'c7126aded0e8e13fed5f913559a0dd7b770a10f3',
+  sha1 = '6d1bf8989fc7901f868bee3863c44f21aa63d110',
+  license = 'ow2',
+)
+
+maven_jar(
+  name = 'ow2-asm-commons',
+  id = 'org.ow2.asm:asm-commons:' + VERSION,
+  sha1 = '25d8a575034dd9cfcb375a39b5334f0ba9c8474e',
+  deps = [':ow2-asm-tree'],
   license = 'ow2',
 )
 
 maven_jar(
   name = 'ow2-asm-tree',
   id = 'org.ow2.asm:asm-tree:' + VERSION,
-  sha1 = '287749b48ba7162fb67c93a026d690b29f410bed',
+  sha1 = '87b38c12a0ea645791ead9d3e74ae5268d1d6c34',
   license = 'ow2',
 )
 
 maven_jar(
   name = 'ow2-asm-util',
   id = 'org.ow2.asm:asm-util:' + VERSION,
-  sha1 = '1512e5571325854b05fb1efce1db75fcced54389',
+  sha1 = 'b60e33a6bd0d71831e0c249816d01e6c1dd90a47',
   license = 'ow2',
 )
-
diff --git a/pom.xml b/pom.xml
index a36df53..a85d1a1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,10 +22,11 @@
   <groupId>com.googlesource.gerrit.plugins</groupId>
   <artifactId>cookbook-plugin</artifactId>
   <packaging>jar</packaging>
-  <version>2.13</version>
+  <version>2.14-SNAPSHOT</version>
   <properties>
     <Gerrit-ApiType>plugin</Gerrit-ApiType>
     <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion>
+    <GWT-Version>2.8.0</GWT-Version>
   </properties>
 
   <build>
@@ -60,8 +61,8 @@
         <artifactId>maven-compiler-plugin</artifactId>
         <version>2.3.2</version>
         <configuration>
-          <source>1.7</source>
-          <target>1.7</target>
+          <source>1.8</source>
+          <target>1.8</target>
           <encoding>UTF-8</encoding>
         </configuration>
       </plugin>
@@ -69,7 +70,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>gwt-maven-plugin</artifactId>
-        <version>2.7.0</version>
+        <version>${GWT-Version}</version>
         <configuration>
           <module>com.googlesource.gerrit.plugins.cookbook.HelloForm</module>
           <disableClassMetadata>true</disableClassMetadata>
@@ -104,7 +105,7 @@
     <dependency>
       <groupId>com.google.gwt</groupId>
       <artifactId>gwt-user</artifactId>
-      <version>2.7.0</version>
+      <version>${GWT-Version}</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -113,6 +114,12 @@
       <version>4.11</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>com.google.gerrit</groupId>
+      <artifactId>gerrit-acceptance-framework</artifactId>
+      <version>${Gerrit-ApiVersion}</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <repositories>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cookbook/AssigneeValidator.java b/src/main/java/com/googlesource/gerrit/plugins/cookbook/AssigneeValidator.java
new file mode 100644
index 0000000..b7b66f5
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/cookbook/AssigneeValidator.java
@@ -0,0 +1,57 @@
+// Copyright (C) 2014 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.cookbook;
+
+import com.google.gerrit.reviewdb.client.Account;
+import com.google.gerrit.reviewdb.client.Change;
+import com.google.gerrit.server.query.QueryParseException;
+import com.google.gerrit.server.query.change.ChangeQueryBuilder;
+import com.google.gerrit.server.query.change.ChangeQueryProcessor;
+import com.google.gerrit.server.validators.AssigneeValidationListener;
+import com.google.gerrit.server.validators.ValidationException;
+import com.google.gwtorm.server.OrmException;
+import com.google.inject.Inject;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AssigneeValidator implements AssigneeValidationListener {
+  private static final Logger log =
+      LoggerFactory.getLogger(AssigneeValidationListener.class);
+
+  private static int MAX_ASSIGNED_CHANGES = 5;
+
+  @Inject
+  ChangeQueryBuilder queryBuilder;
+
+  @Inject
+  ChangeQueryProcessor queryProcessor;
+
+  @Override
+  public void validateAssignee(Change change, Account assignee)
+      throws ValidationException {
+    try {
+      if (queryProcessor
+          .query(queryBuilder.assignee(assignee.getPreferredEmail())).entities()
+          .size() > MAX_ASSIGNED_CHANGES) {
+        throw new ValidationException("Cannot assign user to more than "
+            + MAX_ASSIGNED_CHANGES + " changes");
+      }
+    } catch (OrmException | QueryParseException e) {
+      log.error("Failed to validate assignee for change " + change.getId(), e);
+      // Allow assignee.
+    }
+  }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cookbook/HelloProjectAction.java b/src/main/java/com/googlesource/gerrit/plugins/cookbook/HelloProjectAction.java
index 8057bb7..0e5f6f0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cookbook/HelloProjectAction.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cookbook/HelloProjectAction.java
@@ -14,8 +14,6 @@
 
 package com.googlesource.gerrit.plugins.cookbook;
 
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Strings;
 import com.google.gerrit.extensions.restapi.RestModifyView;
 import com.google.gerrit.extensions.webui.UiAction;
 import com.google.gerrit.server.CurrentUser;
@@ -39,6 +37,20 @@
     this.user = user;
   }
 
+  private boolean isNullOrEmpty(String s) {
+    return s == null || s.isEmpty();
+  }
+
+  private Object firstNonNull(String first, String second) {
+    if (first != null) {
+      return first;
+    }
+    if (second != null) {
+      return second;
+    }
+    throw new NullPointerException();
+  }
+
   @Override
   public String apply(ProjectResource rsrc, Input input) {
     final String greeting = input.french
@@ -46,8 +58,8 @@
         : "Hello";
     return String.format("%s %s from project %s!",
         greeting,
-        Strings.isNullOrEmpty(input.message)
-            ? MoreObjects.firstNonNull(user.get().getUserName(), "world")
+        isNullOrEmpty(input.message)
+            ? firstNonNull(user.get().getUserName(), "world")
             : input.message,
         rsrc.getName());
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cookbook/Module.java b/src/main/java/com/googlesource/gerrit/plugins/cookbook/Module.java
index b17c871..7ac8eb3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cookbook/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cookbook/Module.java
@@ -42,6 +42,7 @@
 import com.google.gerrit.server.git.validators.UploadValidationListener;
 import com.google.gerrit.server.plugins.ServerPluginProvider;
 import com.google.gerrit.server.query.change.ChangeQueryBuilder.ChangeOperatorFactory;
+import com.google.gerrit.server.validators.AssigneeValidationListener;
 import com.google.gerrit.server.validators.HashtagValidationListener;
 import com.google.inject.AbstractModule;
 
@@ -75,6 +76,8 @@
         .to(MergeUserValidator.class);
     DynamicSet.bind(binder(), HashtagValidationListener.class)
         .to(HashtagValidator.class);
+    DynamicSet.bind(binder(), AssigneeValidationListener.class)
+        .to(AssigneeValidator.class);
     DynamicSet.bind(binder(), CommitValidationListener.class)
         .to(CommitValidator.class);
     DynamicSet.bind(binder(), NewProjectCreatedListener.class)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cookbook/pluginprovider/HelloSshPluginContentScanner.java b/src/main/java/com/googlesource/gerrit/plugins/cookbook/pluginprovider/HelloSshPluginContentScanner.java
index 794dca0..198e02a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cookbook/pluginprovider/HelloSshPluginContentScanner.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cookbook/pluginprovider/HelloSshPluginContentScanner.java
@@ -14,7 +14,6 @@
 
 package com.googlesource.gerrit.plugins.cookbook.pluginprovider;
 
-import com.google.common.base.Optional;
 import com.google.gerrit.server.plugins.InvalidPluginException;
 import com.google.gerrit.server.plugins.PluginContentScanner;
 import com.google.gerrit.server.plugins.PluginEntry;
@@ -26,6 +25,7 @@
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.Map;
+import java.util.Optional;
 import java.util.jar.Manifest;
 
 /**
@@ -74,8 +74,8 @@
    * Return plugin resource entry: not used in this sample.
    */
   @Override
-  public Optional<PluginEntry> getEntry(String resourcePath) throws IOException {
-    return Optional.absent();
+  public Optional<PluginEntry> getEntry(String resourcePath) {
+    return Optional.empty();
   }
 
   /**
diff --git a/src/test/java/com/googlesource/gerrit/plugins/cookbook/CookbookIT.java b/src/test/java/com/googlesource/gerrit/plugins/cookbook/CookbookIT.java
index 316c08e..ad38f8e 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/cookbook/CookbookIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/cookbook/CookbookIT.java
@@ -16,13 +16,19 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.gerrit.acceptance.PluginDaemonTest;
+import com.google.gerrit.acceptance.LightweightPluginDaemonTest;
 import com.google.gerrit.acceptance.RestResponse;
+import com.google.gerrit.acceptance.TestPlugin;
 
 import org.junit.Test;
 
-public class CookbookIT extends PluginDaemonTest {
-
+@TestPlugin(
+    name = "cookbook",
+    sysModule = "com.googlesource.gerrit.plugins.cookbook.Module",
+    httpModule = "com.googlesource.gerrit.plugins.cookbook.HttpModule",
+    sshModule = "com.googlesource.gerrit.plugins.cookbook.SshModule"
+)
+public class CookbookIT extends LightweightPluginDaemonTest {
   @Test
   public void printTest() throws Exception {
     assertThat(adminSshSession.exec("cookbook print"))
