diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java
index dd8a9cb..ed1b915 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestCreateChange.java
@@ -41,11 +41,12 @@
 import com.google.gerrit.server.project.ProjectControl;
 import com.google.gerrit.server.project.RefControl;
 import com.google.gerrit.server.query.QueryParseException;
+import com.google.gerrit.server.query.QueryProcessor;
+import com.google.gerrit.server.query.QueryResult;
 import com.google.gerrit.server.query.change.ChangeData;
 import com.google.gerrit.server.query.change.ChangeQueryBuilder;
+import com.google.gerrit.server.query.change.ChangeQueryProcessor;
 import com.google.gerrit.server.query.change.InternalChangeQuery;
-import com.google.gerrit.server.query.change.QueryProcessor;
-import com.google.gerrit.server.query.change.QueryResult;
 import com.google.gwtorm.server.OrmException;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
@@ -77,7 +78,7 @@
   private final GenericFactory userFactory;
   private final Provider<InternalChangeQuery> queryProvider;
   private final BatchUpdate.Factory updateFactory;
-  private final QueryProcessor qp;
+  private final QueryProcessor<ChangeData> qp;
   private final ChangeQueryBuilder changeQuery;
 
   @Inject
@@ -87,7 +88,7 @@
       IdentifiedUser.GenericFactory userFactory,
       Provider<InternalChangeQuery> queryProvider,
       BatchUpdate.Factory batchUpdateFactory,
-      QueryProcessor qp,
+      ChangeQueryProcessor qp,
       ChangeQueryBuilder changeQuery) {
     this.changeInserterFactory = changeInserterFactory;
     this.patchSetInserterFactory = patchSetInserterFactory;
@@ -195,10 +196,10 @@
   }
 
   private List<ChangeData> queryChangesForSha1(String pullRequestSha1) {
-    QueryResult results;
+    QueryResult<ChangeData> results;
     try {
-      results = qp.queryChanges(changeQuery.commit(pullRequestSha1));
-      return results.changes();
+      results = qp.query(changeQuery.commit(pullRequestSha1));
+      return results.entities();
     } catch (OrmException | QueryParseException e) {
       LOG.error("Invalid SHA1 " + pullRequestSha1
           + ": cannot query changes for this pull request", e);
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/AccountController.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/AccountController.java
index 16ef7f9..882ded3 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/AccountController.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/AccountController.java
@@ -109,7 +109,7 @@
 
       accountCache.evict(accountId);
       log.debug("Account cache evicted for {}", accountId);
-    } catch (AccountException | OrmException e) {
+    } catch (AccountException | OrmException | IOException e) {
       throw new ServletException("Cannot associate email '" + email
           + "' to current user '" + user + "'", e);
     }
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/PullRequestListController.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/PullRequestListController.java
index 4fd0d66..3faa6b4 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/PullRequestListController.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/wizard/PullRequestListController.java
@@ -23,8 +23,10 @@
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.project.ProjectCache;
 import com.google.gerrit.server.query.QueryParseException;
+import com.google.gerrit.server.query.QueryProcessor;
+import com.google.gerrit.server.query.change.ChangeData;
 import com.google.gerrit.server.query.change.ChangeQueryBuilder;
-import com.google.gerrit.server.query.change.QueryProcessor;
+import com.google.gerrit.server.query.change.ChangeQueryProcessor;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonPrimitive;
@@ -32,15 +34,11 @@
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
-
 import com.googlesource.gerrit.plugins.github.GitHubConfig;
 import com.googlesource.gerrit.plugins.github.oauth.GitHubLogin;
 
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
-import org.eclipse.jgit.errors.MissingObjectException;
-import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.revwalk.RevWalk;
 import org.kohsuke.github.GHIssueState;
 import org.kohsuke.github.GHPullRequest;
 import org.kohsuke.github.GHPullRequestCommitDetail;
@@ -70,7 +68,7 @@
   private final ProjectCache projectsCache;
   private final GitRepositoryManager repoMgr;
   private final Provider<ReviewDb> schema;
-  private final QueryProcessor qp;
+  private final QueryProcessor<ChangeData> qp;
   private final ChangeQueryBuilder changeQuery;
 
   @Inject
@@ -78,7 +76,7 @@
       GitRepositoryManager repoMgr,
       Provider<ReviewDb> schema,
       GitHubConfig config,
-      QueryProcessor qp,
+      ChangeQueryProcessor qp,
       ChangeQueryBuilder changeQuery) {
     this.projectsCache = projectsCache;
     this.repoMgr = repoMgr;
@@ -203,8 +201,8 @@
       for (GHPullRequestCommitDetail pullRequestCommit : ghPullRequest
           .listCommits()) {
         pullRequestToImport |=
-            qp.queryChanges(changeQuery.commit(pullRequestCommit.getSha()))
-                .changes().isEmpty();
+            qp.query(changeQuery.commit(pullRequestCommit.getSha()))
+                .entities().isEmpty();
       }
       return pullRequestToImport;
     } catch (OrmException | QueryParseException e) {
