diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
index d697d11..36c9c98 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationTasksStorage.java
@@ -68,14 +68,6 @@
     public final String uri;
     public final String remote;
 
-    public ReplicateRefUpdate(UriUpdates uriUpdates, String ref) {
-      this(
-          uriUpdates.getProjectNameKey().get(),
-          ref,
-          uriUpdates.getURI(),
-          uriUpdates.getRemoteName());
-    }
-
     public ReplicateRefUpdate(String project, String ref, URIish uri, String remote) {
       this.project = project;
       this.ref = ref;
@@ -119,14 +111,14 @@
   }
 
   public synchronized void start(UriUpdates uriUpdates) {
-    for (String ref : uriUpdates.getRefs()) {
-      new Task(new ReplicateRefUpdate(uriUpdates, ref)).start();
+    for (ReplicateRefUpdate update : uriUpdates.getReplicateRefUpdates()) {
+      new Task(update).start();
     }
   }
 
   public synchronized void reset(UriUpdates uriUpdates) {
-    for (String ref : uriUpdates.getRefs()) {
-      new Task(new ReplicateRefUpdate(uriUpdates, ref)).reset();
+    for (ReplicateRefUpdate update : uriUpdates.getReplicateRefUpdates()) {
+      new Task(update).reset();
     }
   }
 
@@ -137,8 +129,8 @@
   }
 
   public synchronized void finish(UriUpdates uriUpdates) {
-    for (String ref : uriUpdates.getRefs()) {
-      new Task(new ReplicateRefUpdate(uriUpdates, ref)).finish();
+    for (ReplicateRefUpdate update : uriUpdates.getReplicateRefUpdates()) {
+      new Task(update).finish();
     }
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/UriUpdates.java b/src/main/java/com/googlesource/gerrit/plugins/replication/UriUpdates.java
index d6d6adf..9c56c8e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/UriUpdates.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/UriUpdates.java
@@ -15,7 +15,9 @@
 package com.googlesource.gerrit.plugins.replication;
 
 import com.google.gerrit.entities.Project;
+import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 import org.eclipse.jgit.transport.URIish;
 
 /** A data container for updates to a single URI */
@@ -27,4 +29,13 @@
   String getRemoteName();
 
   Set<String> getRefs();
+
+  default List<ReplicationTasksStorage.ReplicateRefUpdate> getReplicateRefUpdates() {
+    return getRefs().stream()
+        .map(
+            (ref) ->
+                new ReplicationTasksStorage.ReplicateRefUpdate(
+                    getProjectNameKey().get(), ref, getURI(), getRemoteName()))
+        .collect(Collectors.toList());
+  }
 }
