diff --git a/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesTask.java b/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesTask.java
index 8dc358470..6f163de4a 100644
--- a/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesTask.java
+++ b/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesTask.java
@@ -55,6 +55,8 @@ public DownloadPrimitivesTask(OsmDataLayer layer, List<PrimitiveId> ids, boolean
     protected void initMultiFetchReader(MultiFetchServerObjectReader reader) {
         getProgressMonitor().indeterminateSubTask(tr("Initializing nodes to download ..."));
         reader.setRecurseDownRelations(fullRelation);
-        reader.appendIds(ids);
+        if (ids != null) {
+            ids.forEach(reader::append);
+        }
     }
 }
diff --git a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
index 23ec25627..efc0e53d4 100644
--- a/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
+++ b/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
@@ -131,7 +131,7 @@ public static MultiFetchServerObjectReader create(final boolean fromMirror) {
      *
      * @param id  the id
      */
-    protected void remember(PrimitiveId id) {
+    public void append(PrimitiveId id) {
         if (id.isNew()) return;
         switch(id.getType()) {
         case NODE: nodes.add(id.getUniqueId()); break;
@@ -152,16 +152,7 @@ protected void remember(PrimitiveId id) {
      */
     public MultiFetchServerObjectReader append(DataSet ds, long id, OsmPrimitiveType type) {
         OsmPrimitive p = ds.getPrimitiveById(id, type);
-        switch(type) {
-        case NODE:
-            return appendNode((Node) p);
-        case WAY:
-            return appendWay((Way) p);
-        case RELATION:
-            return appendRelation((Relation) p);
-        default:
-            return this;
-        }
+        return append(p);
     }
 
     /**
@@ -172,7 +163,7 @@ public MultiFetchServerObjectReader append(DataSet ds, long id, OsmPrimitiveType
      */
     public MultiFetchServerObjectReader appendNode(Node node) {
         if (node == null || node.isNew()) return this;
-        remember(node.getPrimitiveId());
+        append(node.getPrimitiveId());
         return this;
     }
 
@@ -185,13 +176,9 @@ public MultiFetchServerObjectReader appendNode(Node node) {
     public MultiFetchServerObjectReader appendWay(Way way) {
         if (way == null || way.isNew()) return this;
         if (recurseDownAppended) {
-            for (Node node : way.getNodes()) {
-                if (!node.isNew()) {
-                    remember(node.getPrimitiveId());
-                }
-            }
+            append(way.getNodes());
         }
-        remember(way.getPrimitiveId());
+        append(way.getPrimitiveId());
         return this;
     }
 
@@ -203,7 +190,7 @@ public MultiFetchServerObjectReader appendWay(Way way) {
      */
     protected MultiFetchServerObjectReader appendRelation(Relation relation) {
         if (relation == null || relation.isNew()) return this;
-        remember(relation.getPrimitiveId());
+        append(relation.getPrimitiveId());
         if (recurseDownAppended) {
             for (RelationMember member : relation.getMembers()) {
                 // avoid infinite recursion in case of cyclic dependencies in relations
@@ -245,41 +232,7 @@ public MultiFetchServerObjectReader append(OsmPrimitive primitive) {
      */
     public MultiFetchServerObjectReader append(Collection<? extends OsmPrimitive> primitives) {
         if (primitives == null) return this;
-        for (OsmPrimitive primitive : primitives) {
-            append(primitive);
-        }
-        return this;
-    }
-
-    /**
-     * appends a list of {@link PrimitiveId} to the list of ids which will be fetched from the server.
-     *
-     * @param ids the list of primitive Ids (ignored, if null)
-     * @return this
-     * @since 15811
-     *
-     */
-    public MultiFetchServerObjectReader appendIds(Collection<PrimitiveId> ids) {
-        if (ids == null)
-            return this;
-        for (PrimitiveId id : ids) {
-            if (id.isNew()) continue;
-            switch (id.getType()) {
-            case NODE:
-                nodes.add(id.getUniqueId());
-                break;
-            case WAY:
-            case CLOSEDWAY:
-                ways.add(id.getUniqueId());
-                break;
-            case MULTIPOLYGON:
-            case RELATION:
-                relations.add(id.getUniqueId());
-                break;
-            default:
-                throw new AssertionError();
-            }
-        }
+        primitives.forEach(this::append);
         return this;
     }
 
