Index: /applications/editors/josm/plugins/buildings_tools/build.xml
===================================================================
--- /applications/editors/josm/plugins/buildings_tools/build.xml	(revision 35667)
+++ /applications/editors/josm/plugins/buildings_tools/build.xml	(revision 35668)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="buildings_tools: add option to disable click+drag"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="14960"/>
+    <property name="plugin.main.version" value="17329"/>
     
     <!-- Configure these properties (replace "..." accordingly).
Index: /applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/Building.java
===================================================================
--- /applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/Building.java	(revision 35667)
+++ /applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/Building.java	(revision 35668)
@@ -22,5 +22,5 @@
 import org.openstreetmap.josm.actions.CreateCircleAction;
 import org.openstreetmap.josm.command.AddCommand;
-import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.command.ChangeMembersCommand;
 import org.openstreetmap.josm.command.ChangeNodesCommand;
 import org.openstreetmap.josm.command.Command;
@@ -472,13 +472,12 @@
                 for (OsmPrimitive p : addrNode.getReferrers()) {
                     Relation r = (Relation) p;
-                    Relation rnew = new Relation(r);
-                    for (int i = 0; i < r.getMembersCount(); i++) {
-                        RelationMember member = r.getMember(i);
+                    List<RelationMember> members = new ArrayList<>(r.getMembers());
+                    for (int i = 0; i < members.size(); i++) {
+                        RelationMember member = members.get(i);
                         if (addrNode.equals(member.getMember())) {
-                            rnew.removeMember(i);
-                            rnew.addMember(i, new RelationMember(member.getRole(), w));
+                            members.set(i, new RelationMember(member.getRole(), w));
                         }
                     }
-                    addressCmds.add(new ChangeCommand(r, rnew));
+                    addressCmds.add(new ChangeMembersCommand(r, members));
                 }
                 addressCmds.add(new DeleteCommand(addrNode));
Index: /applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/MergeAddrPointsAction.java
===================================================================
--- /applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/MergeAddrPointsAction.java	(revision 35667)
+++ /applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/MergeAddrPointsAction.java	(revision 35668)
@@ -16,11 +16,11 @@
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.stream.Collectors;
-import java.util.Set;
 
 import javax.swing.JOptionPane;
 
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.command.ChangeMembersCommand;
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
@@ -158,12 +158,11 @@
 
         for (Relation r : modifiedRelations) {
-            Relation rnew = new Relation(r);
+            List<RelationMember> members = new ArrayList<>(r.getMembers());
             boolean modified = false;
             for (Pair<Node, Way> repl : replaced) {
-                for (int i = 0; i < rnew.getMembersCount(); i++) {
-                    RelationMember member = rnew.getMember(i);
+                for (int i = 0; i < members.size(); i++) {
+                    RelationMember member = members.get(i);
                     if (repl.a.equals(member.getMember())) {
-                        rnew.removeMember(i);
-                        rnew.addMember(i, new RelationMember(member.getRole(), repl.b));
+                        members.set(i, new RelationMember(member.getRole(), repl.b));
                         modified = true;
                     }
@@ -171,5 +170,5 @@
             }
             if (modified) {
-                cmds.add(new ChangeCommand(r, rnew));
+                cmds.add(new ChangeMembersCommand(r, members));
             }
         }
