diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookArgs.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookArgs.java
index 87d4291..190826e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookArgs.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookArgs.java
@@ -105,7 +105,7 @@
           uf.flatMap(
                   f ->
                       f.getChangeViewUrl(
-                          new Project.NameKey(change.project), new Change.Id(change._number)))
+                          Project.nameKey(change.project), Change.id(change._number)))
               .orElse(""));
     } else {
       args.add("");
@@ -131,7 +131,7 @@
 
   private String format(AccountInfo account) {
     return String.format(
-        "\"%s\"", identifiedUserFactory.create(new Account.Id(account._accountId)).getNameEmail());
+        "\"%s\"", identifiedUserFactory.create(Account.id(account._accountId)).getNameEmail());
   }
 
   @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookMetrics.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookMetrics.java
index 9b0bc82..e5dd877 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookMetrics.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookMetrics.java
@@ -31,7 +31,7 @@
 
   @Inject
   HookMetrics(MetricMaker metricMaker) {
-    Field<String> field = Field.ofString("hook");
+    Field<String> field = Field.ofString("hook").build();
     latency =
         metricMaker.newTimer(
             "latency",
@@ -47,7 +47,7 @@
             "timeout", new Description("Hook execution timeouts").setRate(), field);
   }
 
-  public Timer1.Context start(String name) {
+  public Timer1.Context<String> start(String name) {
     return latency.start(name);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java
index 50ba975..c8f154a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookQueue.java
@@ -21,6 +21,7 @@
 import com.google.inject.Inject;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import org.eclipse.jgit.lib.Config;
 
@@ -47,7 +48,8 @@
       logger.atFine().log("Hook file not found: %s", hook.toAbsolutePath());
       return;
     }
-    queue.submit(new HookTask.Async(projectName, hook, args));
+    @SuppressWarnings("unused")
+    Future<?> ignored = queue.submit(new HookTask.Async(projectName, hook, args));
   }
 
   @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookTask.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookTask.java
index 8b06a24..ee59fb4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/HookTask.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/HookTask.java
@@ -85,7 +85,7 @@
   public HookResult runHook() {
     HookResult result = null;
     String name = getName();
-    try (Timer1.Context timer = args.metrics.start(name)) {
+    try (Timer1.Context<String> timer = args.metrics.start(name)) {
       args.metrics.count(name);
       List<String> argv = new ArrayList<>(1 + args.get().size());
       argv.add(hook.toAbsolutePath().toString());
@@ -98,7 +98,7 @@
       env.put("GERRIT_SITE", sitePath.toAbsolutePath().toString());
 
       if (projectName != null) {
-        try (Repository git = args.gitManager.openRepository(new Project.NameKey(projectName))) {
+        try (Repository git = args.gitManager.openRepository(Project.nameKey(projectName))) {
           pb.directory(git.getDirectory());
           env.put("GIT_DIR", git.getDirectory().getAbsolutePath());
         }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/hooks/Submit.java b/src/main/java/com/googlesource/gerrit/plugins/hooks/Submit.java
index e383200..f23cfa7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/hooks/Submit.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/hooks/Submit.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.plugins.hooks;
 
-import com.google.gerrit.reviewdb.client.Branch;
+import com.google.gerrit.reviewdb.client.BranchNameKey;
 import com.google.gerrit.reviewdb.client.PatchSet;
 import com.google.gerrit.server.IdentifiedUser;
 import com.google.gerrit.server.git.CodeReviewCommit;
@@ -41,7 +41,7 @@
       Repository repo,
       CodeReviewCommit commit,
       ProjectState destProject,
-      Branch.NameKey destBranch,
+      BranchNameKey destBranch,
       PatchSet.Id patchSetId,
       IdentifiedUser caller)
       throws MergeValidationException {
@@ -49,7 +49,7 @@
 
     HookArgs args = hookFactory.createArgs();
     args.add("--project", projectName);
-    args.add("--branch", destBranch.get());
+    args.add("--branch", destBranch.branch());
     args.add("--submitter", caller.getNameEmail());
     args.add("--submitter-username", caller.getUserName().orElse(null));
     args.add("--patchset", patchSetId.get());
