Index: applications/editors/josm/plugins/addrinterpolation/build.xml
===================================================================
--- applications/editors/josm/plugins/addrinterpolation/build.xml	(revision 33691)
+++ applications/editors/josm/plugins/addrinterpolation/build.xml	(revision 33692)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="Impoved Icon"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="10580"/>
+    <property name="plugin.main.version" value="12726"/>
     
     <!-- Configure these properties (replace "..." accordingly).
Index: applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationAction.java
===================================================================
--- applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationAction.java	(revision 33691)
+++ applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationAction.java	(revision 33692)
@@ -27,8 +27,10 @@
     }
 
+    @Override
     public void actionPerformed(ActionEvent e) {
         /*AddrInterpolationDialog addrDialog =*/ new AddrInterpolationDialog(tr("Define Address Interpolation"));
     }
 
+    @Override
     public void selectionChanged(
             Collection<? extends OsmPrimitive> newSelection) {
Index: applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java
===================================================================
--- applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java	(revision 33691)
+++ applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java	(revision 33692)
@@ -24,5 +24,8 @@
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.LinkedList;
+import java.util.Map;
 import java.util.regex.Pattern;
 
@@ -54,4 +57,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.widgets.UrlLabel;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -266,4 +270,5 @@
         // Numeric increment box can be enabled or disabled.
         addrInterpolationList.addActionListener(new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent e) {
                 int selectedIndex = addrInterpolationList.getSelectedIndex();
@@ -527,5 +532,5 @@
     private String FindRelation() {
         String relationDescription = null;
-        DataSet currentDataSet = Main.getLayerManager().getEditDataSet();
+        DataSet currentDataSet = MainApplication.getLayerManager().getEditDataSet();
         if (currentDataSet != null) {
             for (Relation relation : currentDataSet.getRelations()) {
@@ -574,5 +579,5 @@
         int namedWayCount = 0;
         int unNamedWayCount = 0;
-        DataSet currentDataSet = Main.getLayerManager().getEditDataSet();
+        DataSet currentDataSet = MainApplication.getLayerManager().getEditDataSet();
         if (currentDataSet != null) {
             for (OsmPrimitive osm : currentDataSet.getSelectedWays()) {
@@ -667,4 +672,5 @@
     }
 
+    @Override
     public void actionPerformed(ActionEvent e) {
         if ("ok".equals(e.getActionCommand())) {
@@ -761,5 +767,5 @@
                 newHouseNumberNode.put("addr:housenumber", newHouseNumber);
 
-                commandGroup.add(new AddCommand(newHouseNumberNode));
+                commandGroup.add(new AddCommand(MainApplication.getLayerManager().getEditDataSet(), newHouseNumberNode));
                 houseNumberNodes.add(newHouseNumberNode);   // Street, etc information to be added later
 
@@ -863,5 +869,5 @@
                 newHouseNumberNode.put("addr:housenumber", newHouseNumber);
 
-                commandGroup.add(new AddCommand(newHouseNumberNode));
+                commandGroup.add(new AddCommand(MainApplication.getLayerManager().getEditDataSet(), newHouseNumberNode));
                 houseNumberNodes.add(newHouseNumberNode);   // Street, etc information to be added later
 
@@ -1011,4 +1017,5 @@
 
         String streetName = selectedStreet.get("name");
+        DataSet currentDataSet = MainApplication.getLayerManager().getEditDataSet();
 
         if (addrInterpolationWay != null) {
@@ -1018,9 +1025,6 @@
 
             // De-select address interpolation way; leave street selected
-            DataSet currentDataSet = Main.getLayerManager().getEditDataSet();
-            if (currentDataSet != null) {
-                currentDataSet.clearSelection(addrInterpolationWay);
-                currentDataSet.clearSelection(lastNode);  // Workaround for JOSM Bug #3838
-            }
+            currentDataSet.clearSelection(addrInterpolationWay);
+            currentDataSet.clearSelection(lastNode);  // Workaround for JOSM Bug #3838
 
             String interpolationTagValue = selectedMethod;
@@ -1052,5 +1056,5 @@
             // Relation button was selected
             if (associatedStreetRelation == null) {
-                CreateRelation(streetName);
+                CreateRelation(currentDataSet, streetName);
                 // relationChanged = true;   (not changed since it was created)
             }
@@ -1070,14 +1074,16 @@
                 AddToRelation(associatedStreetRelation, node, "house");
             }
+            Map<String, String> tags = new HashMap<>();
             if ((city != null) || (streetNameButton.isSelected())) {
                 // Include street unconditionally if adding nodes only or city name specified
-                commandGroup.add(new ChangePropertyCommand(node, "addr:street", streetName));
+                tags.put("addr:street", streetName);
             }
             // Set or remove remaining optional fields
-            commandGroup.add(new ChangePropertyCommand(node, "addr:city", city));
-            commandGroup.add(new ChangePropertyCommand(node, "addr:state", state));
-            commandGroup.add(new ChangePropertyCommand(node, "addr:postcode", postCode));
-            commandGroup.add(new ChangePropertyCommand(node, "addr:country", country));
-            commandGroup.add(new ChangePropertyCommand(node, "addr:full", fullAddress));
+            tags.put("addr:city", city);
+            tags.put("addr:state", state);
+            tags.put("addr:postcode", postCode);
+            tags.put("addr:country", country);
+            tags.put("addr:full", fullAddress);
+            commandGroup.add(new ChangePropertyCommand(currentDataSet, Collections.singleton(node), tags));
         }
 
@@ -1087,5 +1093,5 @@
 
         Main.main.undoRedo.add(new SequenceCommand(tr("Address Interpolation"), commandGroup));
-        Main.map.repaint();
+        MainApplication.getLayerManager().getEditLayer().invalidate();
 
         return true;
@@ -1109,5 +1115,5 @@
 
     // Create Associated Street relation, add street, and add to list of commands to perform
-    private void CreateRelation(String streetName) {
+    private void CreateRelation(DataSet currentDataSet, String streetName) {
         associatedStreetRelation = new Relation();
         associatedStreetRelation.put("name", streetName);
@@ -1115,5 +1121,5 @@
         RelationMember newStreetMember = new RelationMember("street", selectedStreet);
         associatedStreetRelation.addMember(newStreetMember);
-        commandGroup.add(new AddCommand(associatedStreetRelation));
+        commandGroup.add(new AddCommand(currentDataSet, associatedStreetRelation));
     }
 
Index: applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationPlugin.java
===================================================================
--- applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationPlugin.java	(revision 33691)
+++ applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationPlugin.java	(revision 33692)
@@ -2,5 +2,5 @@
 package org.openstreetmap.josm.plugins.AddrInterpolation;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.plugins.Plugin;
@@ -9,6 +9,4 @@
 public class AddrInterpolationPlugin extends Plugin {
 
-    AddrInterpolationAction action = null;
-
     /**
      * constructor
@@ -16,6 +14,5 @@
     public AddrInterpolationPlugin(PluginInformation info) {
         super(info);
-        action = new AddrInterpolationAction();
-        MainMenu.add(Main.main.menu.dataMenu, action, false, 0);
+        MainMenu.add(MainApplication.getMenu().dataMenu, new AddrInterpolationAction(), false, 0);
     }
 }
Index: applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/EscapeDialog.java
===================================================================
--- applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/EscapeDialog.java	(revision 33691)
+++ applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/EscapeDialog.java	(revision 33692)
@@ -53,7 +53,7 @@
     protected JRootPane createRootPane() {
         ActionListener escapeActionListener = new ActionListener() {
+            @Override
             public void actionPerformed(ActionEvent actionEvent) {
                 dispose();
-                // setVisible(false);
             }
         };
