Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressNode.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressNode.java	(revision 23836)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressNode.java	(revision 23837)
@@ -14,4 +14,7 @@
 package org.openstreetmap.josm.plugins.addressEdit;
 
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangeCommand;
+import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 
@@ -149,7 +152,7 @@
 		if (streetName != null && streetName.length() == 0) return;
 		
-		this.osmObject.put(TagUtils.ADDR_STREET_TAG, streetName);
-		this.osmObject.setModified(true);
-	}
+		changeAddressValue(TagUtils.ADDR_STREET_TAG, streetName);
+	}
+
 	
 	/**
@@ -160,6 +163,5 @@
 		if (state != null && state.length() == 0) return;
 		
-		this.osmObject.put(TagUtils.ADDR_STATE_TAG, state);
-		this.osmObject.setModified(true);
+		changeAddressValue(TagUtils.ADDR_STATE_TAG, state);
 	}
 	
@@ -171,6 +173,5 @@
 		if (country != null && country.length() == 0) return;
 		
-		this.osmObject.put(TagUtils.ADDR_COUNTRY_TAG, country);
-		this.osmObject.setModified(true);
+		changeAddressValue(TagUtils.ADDR_COUNTRY_TAG, country);
 	}
 	
@@ -182,7 +183,21 @@
 		if (postCode != null && postCode.length() == 0) return;
 		
-		this.osmObject.put(TagUtils.ADDR_POSTCODE_TAG, postCode);
-		this.osmObject.setModified(true);
-	}
+		changeAddressValue(TagUtils.ADDR_POSTCODE_TAG, postCode);
+	}
+	
+	/**
+	 * Internal helper method which changes the given property and
+	 * puts the appropriate command {@link src.org.openstreetmap.josm.command.Command}
+	 * into the undo/redo queue.
+	 * @param tag The tag to change.
+	 * @param newValue The new value for the tag.
+	 */
+	private void changeAddressValue(String tag, String newValue) {
+		Node oldNode = (Node)osmObject;
+		OsmPrimitive newNode = new Node(oldNode);
+		newNode.put(tag, newValue);
+		Main.main.undoRedo.add( new ChangeCommand(oldNode, newNode));
+	}
+
 
 	@Override
