Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/AddressFinderThread.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/AddressFinderThread.java	(revision 23981)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/AddressFinderThread.java	(revision 23982)
@@ -34,5 +34,5 @@
 
 public class AddressFinderThread extends PleaseWaitRunnable implements Visitor {
-	private AddressEditContainer container;
+	private List<AddressNode> addressesToGuess;
 	private double minDist;
 	private AddressNode curAddressNode;
@@ -43,20 +43,20 @@
 	
 	/**
-	 * @param AddressEditContainer
+	 * @param nodes
 	 */
-	public AddressFinderThread(AddressEditContainer AddressEditContainer, String title) {
+	public AddressFinderThread(List<AddressNode> nodes, String title) {
 		super(title != null ? title : tr("Searching"));
-		setAddressEditContainer(AddressEditContainer);		
+		setAddressEditContainer(nodes);		
 	}
 
-	public void setAddressEditContainer(AddressEditContainer AddressEditContainer) {
+	public void setAddressEditContainer(List<AddressNode> nodes) {
 		if (isRunning) {
 			throw new ConcurrentModificationException();
 		}
-		this.container = AddressEditContainer;		
+		this.addressesToGuess = nodes;		
 	}
 
-	public AddressEditContainer getAddressEditContainer() {
-		return container;
+	public List<AddressNode> getAddressEditContainer() {
+		return addressesToGuess;
 	}
 	/**
@@ -140,5 +140,5 @@
 	protected void realRun() throws SAXException, IOException,
 			OsmTransferException {
-		if (Main.main.getCurrentDataSet() == null || container == null) return;
+		if (Main.main.getCurrentDataSet() == null || addressesToGuess == null) return;
 
 		isRunning = true;
@@ -148,10 +148,15 @@
 		
 		try {
-			progressMonitor.setTicksCount(container.getNumberOfUnresolvedAddresses());
+			progressMonitor.setTicksCount(addressesToGuess.size());
 			
-			List<AddressNode> shadowCopy = new ArrayList<AddressNode>(container.getUnresolvedAddresses());
+			List<AddressNode> shadowCopy = new ArrayList<AddressNode>(addressesToGuess);
 			for (AddressNode aNode : shadowCopy) {					
 				minDist = Double.MAX_VALUE;
 				curAddressNode = aNode;
+				
+				if (aNode.hasStreetName()) {
+					progressMonitor.worked(1);
+					continue;
+				}
 				
 				// check for cancel
@@ -180,6 +185,4 @@
 				progressMonitor.worked(1);				
 			}
-			// request container update
-			container.invalidate();
 		} finally {
 			isRunning = false;
Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/AddressNode.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/AddressNode.java	(revision 23981)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/AddressNode.java	(revision 23982)
@@ -250,4 +250,5 @@
 		if (hasGuessedStreetName()) {
 			setOSMTag(TagUtils.ADDR_STREET_TAG, guessedStreetName);
+			guessedStreetName = null;
 		}
 	}
Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AddressEditDialog.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AddressEditDialog.java	(revision 23981)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AddressEditDialog.java	(revision 23982)
@@ -299,4 +299,5 @@
 		
 		for (int i = 0; i < actions.length; i++) {
+			actions[i].setEvent(null);
 			actions[i].setContainer(container);
 		}
Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/GuessAddressDataAction.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/GuessAddressDataAction.java	(revision 23981)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/GuessAddressDataAction.java	(revision 23982)
@@ -80,5 +80,8 @@
 	 */
 	private void internalGuessAddresses(List<AddressNode> nodes) {
-		Main.worker.submit(new AddressFinderThread(container, tr("Guess street names")));		
+		Main.worker.submit(new AddressFinderThread(nodes, tr("Guess street names")));
+		if (container != null) {
+			container.invalidate();
+		}
 	}
 }
