Index: applications/editors/josm/plugins/utilsplugin2/build.xml
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/build.xml	(revision 35640)
+++ applications/editors/josm/plugins/utilsplugin2/build.xml	(revision 35671)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="[josm_utilsplugin2]: select boundary by double-click; multitagger table highlights"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="16567"/>
+    <property name="plugin.main.version" value="17199"/>
 
     <property name="plugin.author" value="Kalle Lampila, Upliner, Zverik, akks, joshdoe and others"/>
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/PasteRelationsAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/PasteRelationsAction.java	(revision 35640)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/PasteRelationsAction.java	(revision 35671)
@@ -16,5 +16,5 @@
 
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.command.ChangeMembersCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.command.SequenceCommand;
@@ -82,22 +82,23 @@
         for (Map.Entry<Relation, String> entry : relations.entrySet()) {
             Relation rel = entry.getKey();
-            Relation r = new Relation(rel);
+            List<RelationMember> members = new ArrayList<>(rel.getMembers());
             boolean changed = false;
             for (OsmPrimitive p : selection) {
-                if (!r.getMemberPrimitives().contains(p) && !r.equals(p)) {
+                if (!rel.getMemberPrimitives().contains(p) && !rel.equals(p)) {
                     String role = entry.getValue();
-                    if ("associatedStreet".equals(r.get("type"))) {
-                        if (p.get("highway") != null) {
+                    if (rel.hasTag("type", "associatedStreet")) {
+                        if (p.hasKey("highway")) {
                             role = "street";
-                        } else if (p.get("addr:housenumber") != null) {
+                        } else if (p.hasKey("addr:housenumber")) {
                             role = "house";
                         }
                     }
-                    r.addMember(new RelationMember(role, p));
+                    members.add(new RelationMember(role, p));
                     changed = true;
                 }
             }
-            if (changed)
-                commands.add(new ChangeCommand(rel, r));
+            if (changed) {
+                commands.add(new ChangeMembersCommand(rel, members));
+            }
         }
 
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/UnGlueRelationAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/UnGlueRelationAction.java	(revision 35640)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/UnGlueRelationAction.java	(revision 35671)
@@ -85,5 +85,5 @@
         } else {
             UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Unglued Relations"), cmds));
-            //Set selection all primiteves (new and old)
+            //Set selection all primitives (new and old)
             newPrimitives.addAll(selection);
             ds.setSelected(newPrimitives);
Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceMembershipAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceMembershipAction.java	(revision 35640)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/replacegeometry/ReplaceMembershipAction.java	(revision 35671)
@@ -16,5 +16,5 @@
 
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.command.ChangeMembersCommand;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.UndoRedoHandler;
@@ -71,9 +71,13 @@
         for (final Map.Entry<Relation, Set<RelationToChildReference>> i : byRelation.entrySet()) {
             final Relation oldRelation = i.getKey();
-            final Relation newRelation = new Relation(oldRelation);
+            List<RelationMember> members = new ArrayList<>(oldRelation.getMembers());
+            boolean modified = false;
             for (final RelationToChildReference reference : i.getValue()) {
-                newRelation.setMember(reference.getPosition(), new RelationMember(reference.getRole(), secondObject));
+                members.set(reference.getPosition(), new RelationMember(reference.getRole(), secondObject));
+                modified = true;
             }
-            commands.add(new ChangeCommand(oldRelation, newRelation));
+            if (modified) {
+                commands.add(new ChangeMembersCommand(oldRelation, members));
+            }
         }
 
