Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressEditAction.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressEditAction.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressEditAction.java	(revision 23834)
@@ -11,11 +11,8 @@
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.progress.ProgressMonitor.CancelListener;
 import org.openstreetmap.josm.plugins.addressEdit.gui.AddressEditDialog;
-import org.openstreetmap.josm.plugins.addressEdit.gui.AddressEditModel;
 import org.openstreetmap.josm.tools.Shortcut;
 
-public class AddressEditAction extends JosmAction implements
-SelectionChangedListener, CancelListener {
+public class AddressEditAction extends JosmAction implements SelectionChangedListener {
 
 	/**
@@ -23,6 +20,4 @@
 	 */
 	private static final long serialVersionUID = 1L;
-	private AddressEditModel addressModel;
-	private boolean isCanceled = false;
 	private AddressEditContainer addressEditContainer;
 
@@ -128,8 +123,3 @@
 		return result.toString();
 	}
-
-	@Override
-	public void operationCanceled() {
-		isCanceled = true;
-	}
 }
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressEditContainer.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressEditContainer.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressEditContainer.java	(revision 23834)
@@ -59,5 +59,5 @@
  */
 
-public class AddressEditContainer implements Visitor, DataSetListener {
+public class AddressEditContainer implements Visitor, DataSetListener, IAddressEditContainerListener {
 	private HashMap<String, StreetNode> streetDict = new HashMap<String, StreetNode>(100); 
 	private List<AddressNode> unresolvedAddresses = new ArrayList<AddressNode>(100);
@@ -68,4 +68,11 @@
 	private List<IAddressEditContainerListener> listeners = new ArrayList<IAddressEditContainerListener>();
 	
+	/**
+	 * 
+	 */
+	public AddressEditContainer() {
+		NodeEntityBase.addChangedListener(this);
+	}
+
 	/**
 	 * Adds a change listener.
@@ -251,4 +258,6 @@
 		}
 		
+		resolveAddresses();
+		
 		fireContainerChanged();
 	}
@@ -311,3 +320,14 @@
 	public void wayNodesChanged(WayNodesChangedEvent event) {
 	}
+
+	@Override
+	public void containerChanged(AddressEditContainer container) {
+		
+	}
+
+	@Override
+	public void entityChanged() {
+		System.out.println("entityChanged, inavlidate... :-)");
+		invalidate();		
+	}
 }
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 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressNode.java	(revision 23834)
@@ -137,4 +137,5 @@
 			setStreetName(node.getName());
 			node.addAddress(this);
+			fireEntityChanged();
 		}
 	}
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/IAddressEditContainerListener.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/IAddressEditContainerListener.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/IAddressEditContainerListener.java	(revision 23834)
@@ -16,7 +16,12 @@
 public interface IAddressEditContainerListener {
 	/**
-	 * Notifies clients the the container has been changed
+	 * Notifies clients that the container has been changed.
 	 * @param container
 	 */
 	public void containerChanged(AddressEditContainer container);
+	
+	/**
+	 * Notifies clients that an entity has been changed.
+	 */
+	public void entityChanged();
 }
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/NodeEntityBase.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/NodeEntityBase.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/NodeEntityBase.java	(revision 23834)
@@ -16,4 +16,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.util.ArrayList;
 import java.util.List;
 
@@ -22,4 +23,5 @@
 public class NodeEntityBase implements INodeEntity, Comparable<INodeEntity> {
 	public static final String ANONYMOUS = tr("No name");
+	private static List<IAddressEditContainerListener> listeners = new ArrayList<IAddressEditContainerListener>();
 	
 	protected OsmPrimitive osmObject;
@@ -31,4 +33,29 @@
 		super();
 		this.osmObject = osmObject;
+	}
+	
+	/**
+	 * Adds a change listener.
+	 * @param listener
+	 */
+	public static void addChangedListener(IAddressEditContainerListener listener) {
+		listeners.add(listener);
+	}
+	
+	/**
+	 * Removes a change listener.
+	 * @param listener
+	 */
+	public static void removeChangedListener(IAddressEditContainerListener listener) {
+		listeners.remove(listener);
+	}
+	
+	/**
+	 * Notifies clients that the address container changed.
+	 */
+	protected static void fireEntityChanged() {
+		for (IAddressEditContainerListener listener : listeners) {
+			listener.entityChanged();
+		}
 	}
 
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/StreetNode.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/StreetNode.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/StreetNode.java	(revision 23834)
@@ -16,6 +16,4 @@
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 
@@ -62,5 +60,5 @@
 	public void addAddress(AddressNode aNode) {
 		lazyCreateAddresses();
-		addresses.add(aNode);
+		addresses.add(aNode);		
 	}
 
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AbstractAddressEditAction.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AbstractAddressEditAction.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AbstractAddressEditAction.java	(revision 23834)
@@ -26,5 +26,5 @@
 	private static final long serialVersionUID = 3080414353417044998L;
 
-	private AddressSelectionEvent event;
+	private AddressEditSelectionEvent event;
 
 	/**
@@ -49,5 +49,5 @@
 	 * @return
 	 */
-	public void updateEnabledState(AddressSelectionEvent ev) {
+	public void updateEnabledState(AddressEditSelectionEvent ev) {
 		// If the tree selection changes, we will get a new event. So this is safe.
 		this.event = ev; // save for later use.  
@@ -69,5 +69,5 @@
 	 * @param ev
 	 */
-	public abstract void addressEditActionPerformed(AddressSelectionEvent ev);
+	public abstract void addressEditActionPerformed(AddressEditSelectionEvent ev);
 	
 	
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditDialog.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditDialog.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditDialog.java	(revision 23834)
@@ -32,27 +32,11 @@
 import javax.swing.JSplitPane;
 import javax.swing.JTable;
-import javax.swing.JTree;
 import javax.swing.ListSelectionModel;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.table.DefaultTableModel;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
 
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
-import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
-import org.openstreetmap.josm.data.osm.event.DataSetListener;
-import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
-import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
-import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
-import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
-import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
-import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
 import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
 
-public class AddressEditDialog extends JFrame implements ActionListener, TreeSelectionListener, ListSelectionListener {
+public class AddressEditDialog extends JFrame implements ActionListener, ListSelectionListener {
 	private static final String CANCEL_COMMAND = "Cancel";
 	private static final String OK_COMMAND = "Ok";
@@ -61,5 +45,5 @@
 	 */
 	private static final long serialVersionUID = 6251676464816335631L;
-	private AddressEditContainer model;
+	private AddressEditContainer addressContainer;
 	private JTable unresolvedTable;
 	private JTable incompleteTable;
@@ -79,5 +63,5 @@
 		super(tr("Edit Addresses"));
 	
-		this.model = addressEditContainer; 
+		this.addressContainer = addressEditContainer; 
 		setLayout(new BorderLayout());
 		setSize(800,600);
@@ -88,5 +72,5 @@
 		if (addressEditContainer != null) {
 			JPanel streetPanel = new JPanel(new BorderLayout());
-			streetList = new JTable(new StreetTableModel(model));
+			streetList = new JTable(new StreetTableModel(addressContainer));
 			streetList.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 			streetList.getSelectionModel().addListSelectionListener(this);
@@ -94,9 +78,9 @@
 			JScrollPane scroll1 = new JScrollPane(streetList);
 			streetPanel.add(scroll1, BorderLayout.CENTER);
-			streetPanel.add(new JLabel("Unresolved Addresses"), BorderLayout.NORTH);
+			streetPanel.add(new JLabel("Streets"), BorderLayout.NORTH);
 			streetPanel.setMinimumSize(new Dimension(350, 400));
 			
 			JPanel unresolvedPanel = new JPanel(new BorderLayout());		
-			unresolvedTable = new JTable(new UnresolvedAddressesTableModel(model));
+			unresolvedTable = new JTable(new UnresolvedAddressesTableModel(addressContainer));
 			unresolvedTable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
 			unresolvedTable.getSelectionModel().addListSelectionListener(this);
@@ -114,5 +98,5 @@
 			JPanel incompletePanel = new JPanel(new BorderLayout());
 			
-			incompleteTable = new JTable(new IncompleteAddressesTableModel(model));
+			incompleteTable = new JTable(new IncompleteAddressesTableModel(addressContainer));
 			incompleteTable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
 			incompleteTable.getSelectionModel().addListSelectionListener(this);
@@ -128,5 +112,4 @@
 			this.getContentPane().add(pane, BorderLayout.CENTER);
 		} else {
-			streetList = new JTable(new DefaultTableModel());
 			this.getContentPane().add(new JLabel(tr("(No data)")), BorderLayout.CENTER);
 		}
@@ -161,23 +144,12 @@
 
 	@Override
-	public void valueChanged(TreeSelectionEvent event) {
-		// Updates the selection
-		if (event.getSource() == streetList) {
-			int selStr = streetList.getSelectedRow();
-			 
-		}
+	public void valueChanged(ListSelectionEvent e) {
 		
-		/*
-		AddressSelectionEvent ev = new AddressSelectionEvent(event.getSource(),
-				selStreet, selUnrAddr, selIncAddr);		
+		AddressEditSelectionEvent ev = new AddressEditSelectionEvent(e.getSource(),
+				streetList, unresolvedTable, incompleteTable, addressContainer);
+		
 		for (AbstractAddressEditAction action : actions) {
 			action.updateEnabledState(ev);
-		}*/
-	}
-
-	@Override
-	public void valueChanged(ListSelectionEvent e) {
-		// TODO Auto-generated method stub
-		
+		}
 	}
 
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditSelectionEvent.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditSelectionEvent.java	(revision 23834)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditSelectionEvent.java	(revision 23834)
@@ -0,0 +1,140 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under 
+ * the terms of the GNU General Public License as published by the 
+ * Free Software Foundation, either version 3 of the License, or 
+ * (at your option) any later version. 
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+ * See the GNU General Public License for more details. 
+ * 
+ * You should have received a copy of the GNU General Public License along with this program. 
+ * If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.openstreetmap.josm.plugins.addressEdit.gui;
+
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JTable;
+
+import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
+import org.openstreetmap.josm.plugins.addressEdit.AddressNode;
+import org.openstreetmap.josm.plugins.addressEdit.StreetNode;
+
+public class AddressEditSelectionEvent extends ActionEvent {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -93034483427803409L;
+	private JTable streetTable;
+	private JTable unresolvedAddressTable;
+	private JTable incompleteAddressTable;
+	private AddressEditContainer addressContainer;
+	
+	/**
+	 * Creates a new 'AddressEditSelectionEvent'.
+	 * @param source The event source.
+	 * @param selStreet The street table component.
+	 * @param unresolvedAddr The unresolved addresses table component.
+	 * @param incomplete The incomplete addresses table component.
+	 * @param container The address container instance holding the entities for streets and addresses.
+	 */
+	public AddressEditSelectionEvent(Object source, JTable selStreet, JTable unresolvedAddr, JTable incomplete, AddressEditContainer container) {
+		super(source, -1, "");
+		this.streetTable = selStreet;
+		this.unresolvedAddressTable = unresolvedAddr;
+		this.incompleteAddressTable = incomplete;
+		this.addressContainer = container;
+	}
+	
+	/**
+	 * Gets the street table component.
+	 * @return
+	 */
+	public JTable getStreetTable() {
+		return streetTable;
+	}
+
+	/**
+	 * Gets the 'unresolved addresses' table component.
+	 * @return
+	 */
+	public JTable getUnresolvedAddressTable() {
+		return unresolvedAddressTable;
+	}
+
+	/**
+	 * Gets the 'incomplete addresses' table component.
+	 * @return
+	 */
+	public JTable getIncompleteAddressTable() {
+		return incompleteAddressTable;
+	}
+
+	public AddressEditContainer getAddressContainer() {
+		return addressContainer;
+	}
+	
+	/**
+	 * Gets the selected street of the street table.
+	 * @return
+	 */
+	public StreetNode getSelectedStreet() {
+		if (streetTable != null && addressContainer != null && addressContainer.getStreetList() != null) {
+			int selRows = streetTable.getSelectedRow();
+			
+			if (selRows < 0 || selRows >= addressContainer.getStreetList().size()) {
+				return null;
+			}
+			
+			return addressContainer.getStreetList().get(selRows);
+		}
+		return null;
+	}
+	
+	/**
+	 * Gets the list containing the selected items of the 'incomplete addresses ' table.
+	 * @return
+	 */
+	public List<AddressNode> getSelectedIncompleteAddresses() {
+		if (incompleteAddressTable != null && 
+				addressContainer != null &&
+				addressContainer.getIncompleteAddresses() != null) {
+			
+			int[] selRows = incompleteAddressTable.getSelectedRows();
+			
+			List<AddressNode> nodes = new ArrayList<AddressNode>();
+			for (int i = 0; i < selRows.length; i++) {
+				if (i >= 0 && i < addressContainer.getIncompleteAddresses().size()) {
+					nodes.add(addressContainer.getIncompleteAddresses().get(selRows[i]));
+				}
+			}
+			return nodes;
+		}
+		return null;
+	}
+	
+	/**
+	 * Gets the list containing the selected items of the 'unresolved addresses ' table.
+	 * @return
+	 */
+	public List<AddressNode> getSelectedUnresolvedAddresses() {
+		if (unresolvedAddressTable != null && 
+				addressContainer != null && 
+				addressContainer.getUnresolvedAddresses() != null) {
+			
+			int[] selRows = unresolvedAddressTable.getSelectedRows();
+			
+			List<AddressNode> nodes = new ArrayList<AddressNode>();
+			for (int i = 0; i < selRows.length; i++) {
+				if (i >= 0 && i < addressContainer.getUnresolvedAddresses().size()) {
+					nodes.add(addressContainer.getUnresolvedAddresses().get(selRows[i]));
+				}
+			}
+			return nodes;
+		}
+		return null;
+	}
+}
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditTableModel.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditTableModel.java	(revision 23834)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditTableModel.java	(revision 23834)
@@ -0,0 +1,46 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under 
+ * the terms of the GNU General Public License as published by the 
+ * Free Software Foundation, either version 3 of the License, or 
+ * (at your option) any later version. 
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+ * See the GNU General Public License for more details. 
+ * 
+ * You should have received a copy of the GNU General Public License along with this program. 
+ * If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.openstreetmap.josm.plugins.addressEdit.gui;
+
+import javax.swing.table.DefaultTableModel;
+
+import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
+import org.openstreetmap.josm.plugins.addressEdit.IAddressEditContainerListener;
+
+public class AddressEditTableModel extends DefaultTableModel implements IAddressEditContainerListener{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 424009321818130586L;
+	protected AddressEditContainer addressContainer;
+
+	public AddressEditTableModel(AddressEditContainer addressContainer) {
+		super();
+		this.addressContainer = addressContainer;
+		addressContainer.addChangedListener(this);
+	}
+
+	@Override
+	public void containerChanged(AddressEditContainer container) {
+		fireTableDataChanged();
+		System.out.println("Fire data table changed...");
+	}
+
+	@Override
+	public void entityChanged() {
+		fireTableDataChanged();
+		System.out.println("Fire data table changed...");
+	}
+}
Index: plications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressSelectionEvent.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressSelectionEvent.java	(revision 23833)
+++ 	(revision )
@@ -1,47 +1,0 @@
-/*
- * This program is free software: you can redistribute it and/or modify it under 
- * the terms of the GNU General Public License as published by the 
- * Free Software Foundation, either version 3 of the License, or 
- * (at your option) any later version. 
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
- * See the GNU General Public License for more details. 
- * 
- * You should have received a copy of the GNU General Public License along with this program. 
- * If not, see <http://www.gnu.org/licenses/>.
- */
-package org.openstreetmap.josm.plugins.addressEdit.gui;
-
-import java.awt.event.ActionEvent;
-
-import javax.swing.tree.DefaultMutableTreeNode;
-
-public class AddressSelectionEvent extends ActionEvent {
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -93034483427803409L;
-	private DefaultMutableTreeNode selStreet;
-	private DefaultMutableTreeNode unresolvedAddr;
-	private DefaultMutableTreeNode incomplete;
-	
-	public AddressSelectionEvent(Object source, DefaultMutableTreeNode selStreet, DefaultMutableTreeNode unresolvedAddr, DefaultMutableTreeNode incomplete ) {
-		super(source, -1, "");
-		this.selStreet = selStreet;
-		this.unresolvedAddr = unresolvedAddr;
-		this.incomplete = incomplete;
-	}
-	
-	public DefaultMutableTreeNode getSelectedStreet() {
-		return selStreet;
-	}
-
-	public DefaultMutableTreeNode getSelectedUnresolvedAddress() {
-		return unresolvedAddr;
-	}
-
-	public DefaultMutableTreeNode getSelectedIncompleteAddress() {
-		return incomplete;
-	}
-}
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AssignAddressToStreetAction.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AssignAddressToStreetAction.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AssignAddressToStreetAction.java	(revision 23834)
@@ -14,12 +14,8 @@
 package org.openstreetmap.josm.plugins.addressEdit.gui;
 
-import java.awt.event.ActionEvent;
-
-import javax.swing.AbstractAction;
-import javax.swing.tree.DefaultMutableTreeNode;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 import org.openstreetmap.josm.plugins.addressEdit.AddressNode;
 import org.openstreetmap.josm.plugins.addressEdit.StreetNode;
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 public class AssignAddressToStreetAction extends AbstractAddressEditAction {
@@ -36,30 +32,20 @@
 
 	@Override
-	public void addressEditActionPerformed(AddressSelectionEvent ev) {
-		DefaultMutableTreeNode streetNode = ev.getSelectedStreet();
-		StreetNode sNode = null;
-		AddressNode aNode = null;
+	public void addressEditActionPerformed(AddressEditSelectionEvent ev) {		
+		StreetNode streetNode = ev.getSelectedStreet();
 		
-		if (streetNode != null) {
-			sNode = (StreetNode) streetNode.getUserObject();
+		
+		if (streetNode != null && ev.getSelectedIncompleteAddresses() != null) {
+			for (AddressNode addrNode : ev.getSelectedUnresolvedAddresses()) {
+				addrNode.assignStreet(streetNode);
+				System.out.println("Assign " + addrNode + " to " + streetNode);
+			}
 		}
-		
-		DefaultMutableTreeNode addrNode = ev.getSelectedUnresolvedAddress();
-		if (addrNode != null) {
-			aNode = (AddressNode) addrNode.getUserObject();
-		}
-		
-		if (sNode != null && aNode != null) {
-			System.out.println("Assign " + aNode + " top " + sNode);
-			
-			aNode.assignStreet(sNode);
-			addrNode.removeFromParent();			
-		}		
 	}
 
 	@Override
-	public void updateEnabledState(AddressSelectionEvent ev) {
+	public void updateEnabledState(AddressEditSelectionEvent ev) {
 		super.updateEnabledState(ev);
-		setEnabled(ev.getSelectedStreet() != null && ev.getSelectedUnresolvedAddress() != null);
+		setEnabled(ev.getSelectedStreet() != null && ev.getSelectedUnresolvedAddresses() != null);
 	}
 
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/IncompleteAddressesTableModel.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/IncompleteAddressesTableModel.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/IncompleteAddressesTableModel.java	(revision 23834)
@@ -16,10 +16,14 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import javax.swing.table.DefaultTableModel;
 
 import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
 import org.openstreetmap.josm.plugins.addressEdit.AddressNode;
 
-public class IncompleteAddressesTableModel extends DefaultTableModel {
+public class IncompleteAddressesTableModel extends AddressEditTableModel {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -5951629033395186324L;
+	
 	private static final int NUMBER_OF_COLUMNS = 5;
 	private static final String[] COLUMN_NAMES = new String[]{tr("Country"), tr("State"), tr("City"), tr("Post Code"), tr("Street")}; 
@@ -28,16 +32,8 @@
 	
 	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 424009321818130586L;
-
-	private AddressEditContainer addressContainer;
-
-	/**
 	 * @param addressContainer
 	 */
 	public IncompleteAddressesTableModel(AddressEditContainer addressContainer) {
-		super();
-		this.addressContainer = addressContainer;
+		super(addressContainer);
 	}
 
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/StreetTableModel.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/StreetTableModel.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/StreetTableModel.java	(revision 23834)
@@ -14,10 +14,10 @@
 package org.openstreetmap.josm.plugins.addressEdit.gui;
 
-import javax.swing.table.DefaultTableModel;
 import static org.openstreetmap.josm.tools.I18n.tr;
+
 import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
 import org.openstreetmap.josm.plugins.addressEdit.StreetNode;
 
-public class StreetTableModel extends DefaultTableModel {
+public class StreetTableModel extends AddressEditTableModel {
 
 	private static final int NUMBER_OF_COLUMNS = 4;
@@ -30,12 +30,9 @@
 	private static final long serialVersionUID = 424009321818130586L;
 
-	private AddressEditContainer addressContainer;
-
 	/**
 	 * @param addressContainer
 	 */
 	public StreetTableModel(AddressEditContainer addressContainer) {
-		super();
-		this.addressContainer = addressContainer;
+		super(addressContainer);
 	}
 
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/UnresolvedAddressesTableModel.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/UnresolvedAddressesTableModel.java	(revision 23833)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/UnresolvedAddressesTableModel.java	(revision 23834)
@@ -31,6 +31,4 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import javax.swing.table.DefaultTableModel;
-
 import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
 import org.openstreetmap.josm.plugins.addressEdit.AddressNode;
@@ -42,5 +40,5 @@
  */
 
-public class UnresolvedAddressesTableModel extends DefaultTableModel {
+public class UnresolvedAddressesTableModel extends AddressEditTableModel {
 
 	private static final int NUMBER_OF_COLUMNS = 2;
@@ -52,13 +50,10 @@
 	 */
 	private static final long serialVersionUID = 424009321818130586L;
-
-	private AddressEditContainer addressContainer;
-
+	
 	/**
 	 * @param addressContainer
 	 */
 	public UnresolvedAddressesTableModel(AddressEditContainer addressContainer) {
-		super();
-		this.addressContainer = addressContainer;
+		super(addressContainer);
 	}
 
