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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressEditContainer.java	(revision 23915)
@@ -63,5 +63,5 @@
 	private List<AddressNode> unresolvedAddresses = new ArrayList<AddressNode>(100);
 	private List<AddressNode> incompleteAddresses = new ArrayList<AddressNode>(100);
-	
+	private HashMap<String, AddressNode> addressCache = new HashMap<String, AddressNode>();
 	private HashSet<Node> visitedNodes = new HashSet<Node>();
 	private HashSet<Way> visitedWays = new HashSet<Way>();
@@ -126,6 +126,16 @@
 			return;
 		}
-		
-		AddressNode aNode = NodeFactory.createNode(n);
+	
+		String aid = "" + n.getId();
+		AddressNode aNode = null;
+		if (!addressCache.containsKey(aid)) {
+			aNode = NodeFactory.createNode(n);
+			if (aNode != null) {
+				addressCache.put(aid, aNode);
+			}
+		} else {
+			aNode = addressCache.get(aid);
+			aNode.setOsmObject(n);
+		}
 		
 		if (aNode != null) {
@@ -404,5 +414,5 @@
 
 	@Override
-	public void entityChanged() {
+	public void entityChanged(INodeEntity entity) {
 		invalidate();		
 	}
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressFinderThread.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressFinderThread.java	(revision 23915)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressFinderThread.java	(revision 23915)
@@ -0,0 +1,145 @@
+/*
+ * 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;
+
+import java.util.ConcurrentModificationException;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.Changeset;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.visitor.Visitor;
+
+public class AddressFinderThread implements Runnable, Visitor {
+	private AddressNode addressNode;
+	private double minDist;
+	private Node nearestNode;
+	private Node osmAddressNode;
+	private boolean isRunning = false;
+	private String nearestName = null;
+	private String currentName = null;
+	
+	/**
+	 * @param addressNode
+	 */
+	public AddressFinderThread(AddressNode addressNode) {
+		super();
+		setAddressNode(addressNode);		
+	}
+
+	public AddressFinderThread() {
+		this(null);
+	}
+
+	public void setAddressNode(AddressNode addressNode) {
+		if (isRunning) {
+			throw new ConcurrentModificationException();
+		}
+		this.addressNode = addressNode;
+		if (addressNode != null && addressNode.getOsmObject() instanceof Node) {
+			osmAddressNode = (Node) addressNode.getOsmObject();
+		}
+	}
+
+	public AddressNode getAddressNode() {
+		return addressNode;
+	}
+	
+	public double getMinDist() {
+		return minDist;
+	}
+
+	public Node getNearestNode() {
+		return nearestNode;
+	}
+
+	/**
+	 * @return the nearestName
+	 */
+	public String getGuessedName() {
+		return nearestName;
+	}
+
+	/**
+	 * @return the isRunning
+	 */
+	public boolean isRunning() {
+		return isRunning;
+	}
+
+	@Override
+	public void run() {
+		if (Main.main.getCurrentDataSet() == null || osmAddressNode == null) return;
+
+		isRunning = true;
+		synchronized(this) {			
+			try {
+				minDist = Double.MAX_VALUE;
+				for (OsmPrimitive osmPrimitive : Main.main.getCurrentDataSet().getWays()) {
+					osmPrimitive.visit(this);
+				}
+				
+				if (nearestName != null) {
+					System.out.println("Picked " + nearestName + " with distance " + minDist + "m");
+					addressNode.setGuessedStreetName(nearestName);
+				}
+			} finally {
+				isRunning = false;
+			}
+		}
+	}
+
+
+	@Override
+	public void visit(Node n) {
+		double dist = osmAddressNode.getCoor().greatCircleDistance(n.getCoor());
+		
+		if (dist < minDist) {
+			minDist = dist;
+			nearestNode = n;
+			nearestName = currentName;
+		}
+	}
+
+
+	@Override
+	public void visit(Way w) {
+		// skip non-streets and streets without name
+		if (!TagUtils.hasHighwayTag(w)) return;		
+		if (!TagUtils.hasNameTag(w)) return;
+		
+		currentName = TagUtils.getNameValue(w);
+		for (Node node : w.getNodes()) {
+			visit(node);
+		}
+		
+	}
+
+
+	@Override
+	public void visit(Relation e) {
+		// TODO Auto-generated method stub
+		
+	}
+
+
+	@Override
+	public void visit(Changeset cs) {
+		// TODO Auto-generated method stub
+		
+	}
+
+}
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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressNode.java	(revision 23915)
@@ -15,13 +15,23 @@
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.plugins.addressEdit.gui.GuessAddressDataAction;
 
 public class AddressNode extends NodeEntityBase {
-
-	private static final String MISSING_TAG = "?";
+	public static final String MISSING_TAG = "?";
+	
+	private String guessedStreetName;
 
 	public AddressNode(OsmPrimitive osmObject) {
 		super(osmObject);
 	}
-
+	
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.addressEdit.NodeEntityBase#setOsmObject(org.openstreetmap.josm.data.osm.OsmPrimitive)
+	 */
+	@Override
+	public void setOsmObject(OsmPrimitive osmObject) {
+		super.setOsmObject(osmObject);
+	}
+	
 	/**
 	 * Checks if the underlying address node has all tags usually needed to describe an address.
@@ -45,8 +55,28 @@
 	}
 	
+	/**
+	 * Returns <tt>true</tt>, if this address node has a street name.
+	 * @return
+	 */
 	public boolean hasStreetName() {
 		return TagUtils.hasAddrStreetTag(osmObject);
 	}
 	
+	/**
+	 * Returns the street name guessed by the nearest-neighbour search.
+	 * @return the guessedStreetName
+	 */
+	public String getGuessedStreetName() {
+		return guessedStreetName;
+	}
+
+	/**
+	 * @param guessedStreetName the guessedStreetName to set
+	 */
+	public void setGuessedStreetName(String guessedStreetName) {
+		this.guessedStreetName = guessedStreetName;
+		fireEntityChanged(this);
+	}
+
 	/**
 	 * Gets the name of the post code associated with this address.
@@ -142,5 +172,11 @@
 			setStreetName(node.getName());			
 			node.addAddress(this);
-			fireEntityChanged();
+			fireEntityChanged(this);
+		}
+	}
+	
+	public void applyGuessedStreet() {
+		if (!StringUtils.isNullOrEmpty(getGuessedStreetName())) {
+			setOSMTag(TagUtils.ADDR_STREET_TAG, guessedStreetName);
 		}
 	}
@@ -195,6 +231,12 @@
 		// TODO: Add further countries here
 		// DE
-		return String.format("%s %s, %s-%s %s (%s)", 
-				node.getStreet(),
+		String guessed = node.getGuessedStreetName();
+		String sName = node.getStreet();
+		if (!StringUtils.isNullOrEmpty(guessed) && MISSING_TAG.equals(sName)) {
+			sName = String.format("(%s)", guessed);
+		}	
+		
+		return String.format("%s %s, %s-%s %s (%s) ", 
+				sName,
 				node.getHouseNumber(),
 				node.getCountry(),
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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/IAddressEditContainerListener.java	(revision 23915)
@@ -14,4 +14,5 @@
 package org.openstreetmap.josm.plugins.addressEdit;
 
+
 public interface IAddressEditContainerListener {
 	/**
@@ -24,4 +25,4 @@
 	 * Notifies clients that an entity has been changed.
 	 */
-	public void entityChanged();
+	public void entityChanged(INodeEntity node);
 }
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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/NodeEntityBase.java	(revision 23915)
@@ -39,4 +39,11 @@
 	
 	/**
+	 * @param osmObject the osmObject to set
+	 */
+	protected void setOsmObject(OsmPrimitive osmObject) {
+		this.osmObject = osmObject;
+	}
+
+	/**
 	 * Adds a change listener.
 	 * @param listener
@@ -57,7 +64,7 @@
 	 * Notifies clients that the address container changed.
 	 */
-	protected static void fireEntityChanged() {
+	protected static void fireEntityChanged(INodeEntity entity) {
 		for (IAddressEditContainerListener listener : listeners) {
-			listener.entityChanged();
+			listener.entityChanged(entity);
 		}
 	}
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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AbstractAddressEditAction.java	(revision 23915)
@@ -16,8 +16,8 @@
 import java.awt.event.ActionEvent;
 
-import javax.swing.AbstractAction;
-import javax.swing.Icon;
+import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
 
-public abstract class AbstractAddressEditAction extends AbstractAction {
+public abstract class AbstractAddressEditAction extends JosmAction {
 
 	/**
@@ -27,4 +27,5 @@
 
 	private AddressEditSelectionEvent event;
+	protected AddressEditContainer container;
 
 	/**
@@ -32,6 +33,7 @@
 	 * @param icon
 	 */
-	public AbstractAddressEditAction(String name, Icon icon) {
-		super(name, icon);
+	public AbstractAddressEditAction(String name, String iconName, String tooltip) {
+		super(name, iconName, tooltip, null, true);
+		
 		setEnabled(false);
 	}
@@ -41,9 +43,24 @@
 	 */
 	public AbstractAddressEditAction(String name) {
-		this(name, null);
+		this(name, null, "");
+	}
+	
+	/**
+	 * @return the container
+	 */
+	public AddressEditContainer getContainer() {
+		return container;
 	}
 
 	/**
-	 * Updates 'enabled' state.
+	 * @param container the container to set
+	 */
+	public void setContainer(AddressEditContainer container) {
+		this.container = container;
+		updateEnabledState(container);
+	}
+
+	/**
+	 * Updates 'enabled' state depending on the given selection event.
 	 * @param ev
 	 * @return
@@ -51,6 +68,17 @@
 	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.  
+		super.updateEnabledState();
+		this.event = ev; // save for later use.
+		if (ev != null) {
+			updateEnabledState(ev);
+		}
 	}
+
+	/**
+	 * Updates 'enabled' state depending on the given address container object.
+	 * @param container The address container (maybe null).
+	 * @return
+	 */
+	protected abstract void updateEnabledState(AddressEditContainer container);
 
 	/* (non-Javadoc)
@@ -60,5 +88,8 @@
 	public void actionPerformed(ActionEvent arg0) {
 		if (event != null) { // use the event acquired previously.
-			addressEditActionPerformed(event);			
+			addressEditActionPerformed(event);	
+			event = null; // consume event
+		} else {
+			actionPerformed(arg0);
 		}
 	}
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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditDialog.java	(revision 23915)
@@ -69,8 +69,11 @@
 	private JTable streetTable;
 	
+	/* Actions */
 	private AssignAddressToStreetAction resolveAction = new AssignAddressToStreetAction();
+	private GuessAddressDataAction guessAddressAction = new GuessAddressDataAction();
 	
 	private AbstractAddressEditAction[] actions = new AbstractAddressEditAction[] {
-		resolveAction	
+		resolveAction,
+		guessAddressAction
 	};
 	private JLabel streetLabel;
@@ -123,4 +126,6 @@
 			SideButton assign = new SideButton(resolveAction, "assignstreet_24");															   
 			unresolvedButtons.add(assign);
+			SideButton guess = new SideButton(guessAddressAction);															   
+			unresolvedButtons.add(guess);
 			unresolvedPanel.add(unresolvedButtons, BorderLayout.SOUTH);
 			
@@ -140,4 +145,8 @@
 		} else {
 			this.getContentPane().add(new JLabel(tr("(No data)")), BorderLayout.CENTER);
+		}
+		
+		for (int i = 0; i < actions.length; i++) {
+			actions[i].setContainer(addressEditContainer);
 		}
 		
@@ -226,8 +235,12 @@
 	public void containerChanged(AddressEditContainer container) {
 		updateHeaders();
+		
+		for (int i = 0; i < actions.length; i++) {
+			actions[i].setContainer(container);
+		}
 	}
 
 	@Override
-	public void entityChanged() {
+	public void entityChanged(INodeEntity entity) {
 		updateHeaders();
 	}
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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditTableModel.java	(revision 23915)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
 import org.openstreetmap.josm.plugins.addressEdit.IAddressEditContainerListener;
+import org.openstreetmap.josm.plugins.addressEdit.INodeEntity;
 
 public class AddressEditTableModel extends DefaultTableModel implements IAddressEditContainerListener{
@@ -39,5 +40,5 @@
 
 	@Override
-	public void entityChanged() {
+	public void entityChanged(INodeEntity entity) {
 		fireTableDataChanged();
 	}
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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AssignAddressToStreetAction.java	(revision 23915)
@@ -16,4 +16,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
 import org.openstreetmap.josm.plugins.addressEdit.AddressNode;
 import org.openstreetmap.josm.plugins.addressEdit.StreetNode;
@@ -51,6 +52,11 @@
 	@Override
 	public void updateEnabledState(AddressEditSelectionEvent ev) {
-		super.updateEnabledState(ev);
 		setEnabled(ev.getSelectedStreet() != null && ev.getSelectedUnresolvedAddresses() != null);
+	}
+
+	@Override
+	public void updateEnabledState(AddressEditContainer container) {
+		// we only accept a selection here
+		setEnabled(false);
 	}
 
Index: /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/GuessAddressDataAction.java
===================================================================
--- /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/GuessAddressDataAction.java	(revision 23915)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/GuessAddressDataAction.java	(revision 23915)
@@ -0,0 +1,92 @@
+/*
+ * 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 static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
+import org.openstreetmap.josm.plugins.addressEdit.AddressFinderThread;
+import org.openstreetmap.josm.plugins.addressEdit.AddressNode;
+
+@SuppressWarnings("serial")
+public class GuessAddressDataAction extends AbstractAddressEditAction {
+	private static final int THREAD_COUNT = 5;
+	private AddressFinderThread[] threads = new AddressFinderThread[THREAD_COUNT];
+
+	public GuessAddressDataAction() {
+		super(tr("Guess address data"));
+	}
+
+	@Override
+	public void addressEditActionPerformed(AddressEditSelectionEvent ev) {
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.addressEdit.gui.AbstractAddressEditAction#actionPerformed(java.awt.event.ActionEvent)
+	 */
+	@Override
+	public void actionPerformed(ActionEvent arg0) {
+		if (container == null) return;
+		if (container.getUnresolvedAddresses() == null) return;
+		
+		for (int i = 0; i < threads.length; i++) {
+			threads[i] = new AddressFinderThread();
+		}
+						
+		List<AddressNode> addrNodes = new ArrayList<AddressNode>();		
+		addrNodes.addAll(container.getIncompleteAddresses());
+		for (AddressNode aNode : addrNodes) {
+			if (aNode.hasStreetName()) continue;
+			
+			while(!scheduleNode(aNode)) {
+				try {
+					Thread.sleep(100);
+				} catch (InterruptedException e) {
+					return;
+				}
+			}
+		}
+		container.containerChanged(container);
+	}
+
+	private boolean scheduleNode(AddressNode aNode) {
+		for (int i = 0; i < threads.length; i++) {
+			if (!threads[i].isRunning()) {
+				threads[i].setAddressNode(aNode);
+				threads[i].run();
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.addressEdit.gui.AbstractAddressEditAction#updateEnabledState(org.openstreetmap.josm.plugins.addressEdit.gui.AddressEditSelectionEvent)
+	 */
+	@Override
+	public void updateEnabledState(AddressEditSelectionEvent ev) {
+		// do nothing here
+	}
+
+	@Override
+	protected void updateEnabledState(AddressEditContainer container) {
+		setEnabled(container != null && container.getNumberOfIncompleteAddresses() > 0);
+	}
+
+	
+}
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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/IncompleteAddressesTableModel.java	(revision 23915)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
 import org.openstreetmap.josm.plugins.addressEdit.AddressNode;
+import org.openstreetmap.josm.plugins.addressEdit.StringUtils;
 
 public class IncompleteAddressesTableModel extends AddressEditTableModel {
@@ -76,5 +77,11 @@
 			return aNode.getPostCode();
 		case 4:
-			return aNode.getStreet();
+			if (!StringUtils.isNullOrEmpty(aNode.getGuessedStreetName()) && 
+					AddressNode.MISSING_TAG.equals(aNode.getStreet())) {
+				
+				return "(" + aNode.getGuessedStreetName() + ")";
+			} else {
+				return aNode.getStreet();
+			}
 		default:
 			throw new RuntimeException("Invalid column index: " + column);
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 23914)
+++ /applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/UnresolvedAddressesTableModel.java	(revision 23915)
@@ -33,4 +33,5 @@
 import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
 import org.openstreetmap.josm.plugins.addressEdit.AddressNode;
+import org.openstreetmap.josm.plugins.addressEdit.StringUtils;
 
 /**
@@ -92,5 +93,13 @@
 		switch (column) {
 		case 0:
-			return aNode.getStreet();
+			String guessed = aNode.getGuessedStreetName();
+			String cur = aNode.getStreet();
+			if (!StringUtils.isNullOrEmpty(guessed) && 
+					AddressNode.MISSING_TAG.equals(cur)) {
+				
+				return "*" + guessed;
+			} else {
+				return aNode.getStreet();
+			}
 		case 1:
 			return aNode.getHouseNumber();
@@ -100,5 +109,5 @@
 			return aNode.getPostCode();
 		case 4:
-			return aNode.getName();
+			return aNode.getName();			
 		default:
 			throw new RuntimeException("Invalid column index: " + column);
