diff --git a/src/main/java/com/googlesource/gerrit/plugins/download/command/project/DownloadCommandUpdater.java b/src/main/java/com/googlesource/gerrit/plugins/download/command/project/DownloadCommandUpdater.java
index 125426e..ce0f857 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/download/command/project/DownloadCommandUpdater.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/download/command/project/DownloadCommandUpdater.java
@@ -73,12 +73,22 @@
 
   @Override
   public void start() {
-    for (Project.NameKey p : projectCache.all()) {
-      ProjectState projectState = projectCache.get(p);
-      if (projectState != null) {
-        installCommandAsync(projectState);
+    executor.submit(new Runnable() {
+      @Override
+      public void run() {
+        for (Project.NameKey p : projectCache.all()) {
+          ProjectState projectState = projectCache.get(p);
+          if (projectState != null) {
+            PluginConfig cfg =
+                projectState.getConfig().getPluginConfig(pluginName);
+            for (String name : cfg.getNames()) {
+              installCommand(projectState.getProject().getNameKey(), name,
+                  cfg.getString(name));
+            }
+          }
+        }
       }
-    }
+    });
   }
 
   @Override
@@ -117,18 +127,6 @@
     }
   }
 
-  private void installCommandAsync(final ProjectState p) {
-    executor.submit(new Runnable() {
-      @Override
-      public void run() {
-        PluginConfig cfg = p.getConfig().getPluginConfig(pluginName);
-        for (String name : cfg.getNames()) {
-          installCommand(p.getProject().getNameKey(), name, cfg.getString(name));
-        }
-      }
-    });
-  }
-
   private void installCommand(final Project.NameKey p, String name,
       final String command) {
     ProjectDownloadCommand dc = projectDownloadCommands.get(name);
