Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/AddressEditContainer.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/AddressEditContainer.java	(revision 24977)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/AddressEditContainer.java	(revision 24978)
@@ -52,4 +52,5 @@
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 /**
@@ -70,5 +71,5 @@
  */
 
-public class AddressEditContainer implements Visitor, DataSetListener, IAddressEditContainerListener {
+public class AddressEditContainer implements Visitor, DataSetListener, IAddressEditContainerListener, IProblemVisitor {
 	
 	private Collection<? extends OsmPrimitive> workingSet;
@@ -98,4 +99,7 @@
 	private HashMap<String, String> values = new HashMap<String, String>();
 	
+	/** The list containing the problems */
+	private List<IProblem> problems = new ArrayList<IProblem>();
+	
 	/** The change listeners. */
 	private List<IAddressEditContainerListener> listeners = new ArrayList<IAddressEditContainerListener>();
@@ -214,4 +218,5 @@
 		if (aNode != null) {
 			addAndClassifyAddress(aNode);
+			aNode.visit(this);
 		} 
 		markNodeAsVisited(n);
@@ -463,4 +468,18 @@
 		return all; 
 	}
+	
+	/**
+	 * @return the problems
+	 */
+	protected List<IProblem> getProblems() {
+		return problems;
+	}
+	
+	/**
+	 * Clears the problem list.
+	 */
+	protected void clearProblems() {
+		problems.clear();
+	}
 
 	/**
@@ -540,4 +559,5 @@
 			shadowUnresolvedAddresses.clear();
 			shadowIncompleteAddresses.clear();
+			
 			// update clients
 			fireContainerChanged();
@@ -674,3 +694,30 @@
 		fireEntityChanged(entity);	
 	}
+	
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblemVisitor#addProblem(org.openstreetmap.josm.plugins.fixAddresses.IProblem)
+	 */
+	@Override
+	public void addProblem(IProblem problem) {
+		problems.add(problem);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblemVisitor#removeProblemsOfSource(org.openstreetmap.josm.plugins.fixAddresses.IOSMEntity)
+	 */
+	@Override
+	public void removeProblemsOfSource(IOSMEntity entity) {
+		CheckParameterUtil.ensureParameterNotNull(entity, "entity");
+		
+		List<IProblem> problemsToRemove = new ArrayList<IProblem>();
+		for (IProblem problem : problems) {
+			if (problem.getSource() == entity) {
+				problemsToRemove.add(problem);
+			}
+		}
+		
+		for (IProblem iProblem : problemsToRemove) {
+			problems.remove(iProblem);
+		}
+	}
 }
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/IOSMEntity.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/IOSMEntity.java	(revision 24977)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/IOSMEntity.java	(revision 24978)
@@ -70,3 +70,10 @@
 	 */
 	public void removeCommandListener(ICommandListener listener);
+	
+	/**
+	 * Collects problems and possible solutions.
+	 *
+	 * @param visitor the problem visitor
+	 */
+	public void visit(IProblemVisitor visitor);
 }
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/IProblem.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/IProblem.java	(revision 24978)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/IProblem.java	(revision 24978)
@@ -0,0 +1,73 @@
+/*
+ * 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.fixAddresses;
+
+import java.util.List;
+
+public interface IProblem {
+	
+	/**
+	 * Gets the OSM entity which causes the problem.
+	 *
+	 * @return the source
+	 */
+	public IOSMEntity getSource();
+	
+	/**
+	 * Gets the problem description.
+	 *
+	 * @return the description
+	 */
+	public String getDescription();
+	
+	/**
+	 * Gets the problem type.
+	 *
+	 * @return the type
+	 */
+	public ProblemType getType();
+	
+	/**
+	 * Gets the available solutions for this problem.
+	 *
+	 * @return the solutions
+	 */
+	public List<ISolution> getSolutions();
+	
+	/**
+	 * Adds a possible solution to the problem.
+	 *
+	 * @param solution the solution
+	 */
+	public void addSolution(ISolution solution);
+	
+	/**
+	 * Removes a solution from this problem.
+	 *
+	 * @param solution the solution
+	 */
+	public void removeSolution(ISolution solution);
+	
+	/**
+	 * Removes all solutions from this problem.
+	 */
+	public void clearSolutions();
+	
+	/**
+	 * Applies a {@link ISolution} instance on the problem.
+	 *
+	 * @param solution the solution
+	 */
+	public void applySolution(ISolution solution);
+}
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/IProblemVisitor.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/IProblemVisitor.java	(revision 24978)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/IProblemVisitor.java	(revision 24978)
@@ -0,0 +1,29 @@
+/*
+ * 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.fixAddresses;
+
+
+public interface IProblemVisitor {
+	/**
+	 * Adds a problem without solution.
+	 *
+	 * @param problem the problem to add
+	 */
+	public void addProblem(IProblem problem);
+	
+	/**
+	 * Removes the problems of the given source.
+	 */
+	public void removeProblemsOfSource(IOSMEntity entity);
+}
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/ISolution.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/ISolution.java	(revision 24978)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/ISolution.java	(revision 24978)
@@ -0,0 +1,45 @@
+/*
+ * 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.fixAddresses;
+
+import org.openstreetmap.josm.actions.JosmAction;
+
+public interface ISolution {
+	
+	/**
+	 * Gets the description of the solution.
+	 *
+	 * @return the description
+	 */
+	public String getDescription();
+	
+	/**
+	 * Gets the action to execute for solving the problem.
+	 *
+	 * @return the action
+	 */
+	public JosmAction getAction();
+	
+	/**
+	 * Gets the solution type.
+	 *
+	 * @return the type
+	 */
+	public SolutionType getType();
+
+	/**
+	 * Executes one or more actions to solve a problem.
+	 */
+	public void solve();
+}
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMAddress.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMAddress.java	(revision 24977)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMAddress.java	(revision 24978)
@@ -628,4 +628,18 @@
 	}
 	
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.OSMEntityBase#visit(org.openstreetmap.josm.plugins.fixAddresses.IProblemVisitor)
+	 */
+	public void visit(IProblemVisitor visitor) {
+		CheckParameterUtil.ensureParameterNotNull(visitor, "visitor");
+		
+		if (!hasStreetName()) {
+			
+		}
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.OSMEntityBase#toString()
+	 */
 	@Override
 	public String toString() {
@@ -633,4 +647,10 @@
 	}
 
+	/**
+	 * Gets the formatted string representation of the given node.
+	 *
+	 * @param node the node
+	 * @return the format string
+	 */
 	public static String getFormatString(OSMAddress node) {
 		// TODO: Add further countries here
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMEntityBase.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMEntityBase.java	(revision 24977)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMEntityBase.java	(revision 24978)
@@ -202,4 +202,9 @@
 		return this.getName().compareTo(o.getName());
 	}
+	
+	@Override
+	public void visit(IProblemVisitor visitor) {
+		// do nothing
+	}
 
 	/* (non-Javadoc)
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/Problem.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/Problem.java	(revision 24978)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/Problem.java	(revision 24978)
@@ -0,0 +1,149 @@
+/*
+ * 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.fixAddresses;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.openstreetmap.josm.tools.CheckParameterUtil;
+
+public class Problem implements IProblem {
+	private List<ISolution> solutions = null;
+	private String description;
+	private ProblemType type;
+	private IOSMEntity source;
+
+	/**
+	 * Instantiates a new problem.
+	 *
+	 * @param source the source
+	 * @param description The problem description.
+	 * @param solutions This list of solutions.
+	 * @param type the type
+	 */
+	public Problem(IOSMEntity source, String description,
+			List<ISolution> solutions, ProblemType type) {
+		super();
+		this.source = source;
+		this.description = description;
+		this.solutions = solutions;
+		this.type = type;
+	}
+
+	/**
+	 * Instantiates a new problem with type 'warning'.
+	 *
+	 * @param source the source
+	 * @param description The problem description.
+	 * @param solutions This list of solutions.
+	 */
+	public Problem(IOSMEntity source, String description, List<ISolution> solutions) {
+		this(source, description, solutions, ProblemType.Warning);
+	}
+	
+	/**
+	 * Instantiates a new problem with type 'warning' and without solutions.
+	 *
+	 * @param source the source
+	 * @param description The problem description.
+	 */
+	public Problem(IOSMEntity source, String description) {
+		this(source, description, null, ProblemType.Warning);
+	}
+
+	/**
+	 * Creates the solution list, if necessary.
+	 */
+	private void lazyCreateSolutions() {
+		if (solutions == null) {
+			solutions = new ArrayList<ISolution>();
+		}
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblem#addSolution(org.openstreetmap.josm.plugins.fixAddresses.ISolution)
+	 */
+	@Override
+	public void addSolution(ISolution solution) {
+		CheckParameterUtil.ensureParameterNotNull(solution, "solution");
+		
+		lazyCreateSolutions();
+		solutions.add(solution);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblem#applySolution(org.openstreetmap.josm.plugins.fixAddresses.ISolution)
+	 */
+	@Override
+	public void applySolution(ISolution solution) {
+		CheckParameterUtil.ensureParameterNotNull(solution, "solution");
+				
+		solution.solve();		
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblem#clearSolutions()
+	 */
+	@Override
+	public void clearSolutions() {
+		if (solutions == null) return;
+		
+		solutions.clear();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblem#getDescription()
+	 */
+	@Override
+	public String getDescription() {
+		return description;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblem#getSolutions()
+	 */
+	@Override
+	public List<ISolution> getSolutions() {
+		return solutions;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblem#getType()
+	 */
+	@Override
+	public ProblemType getType() {
+		return type;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblem#removeSolution(org.openstreetmap.josm.plugins.fixAddresses.ISolution)
+	 */
+	@Override
+	public void removeSolution(ISolution solution) {
+		if (solutions == null ) throw new RuntimeException("Solution list is null");
+		if (solutions.size() == 0) throw new RuntimeException("Solution list is empty");
+		
+		CheckParameterUtil.ensureParameterNotNull(solution, "solution");
+		solutions.remove(solution);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.openstreetmap.josm.plugins.fixAddresses.IProblem#getSource()
+	 */
+	@Override
+	public IOSMEntity getSource() {
+		return source;
+	}
+
+}
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/ProblemType.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/ProblemType.java	(revision 24978)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/ProblemType.java	(revision 24978)
@@ -0,0 +1,19 @@
+/*
+ * 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.fixAddresses;
+
+public enum ProblemType {
+	Warning,
+	Error,
+}
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/SolutionType.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/SolutionType.java	(revision 24978)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/SolutionType.java	(revision 24978)
@@ -0,0 +1,24 @@
+/*
+ * 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.fixAddresses;
+
+/**
+ * SolutionType represents the solution kind for a problem, e. g. 'remove' deletes the
+ * tag causing the problem.
+ */
+public enum SolutionType {
+	Remove,
+	Change,
+	Add
+}
Index: applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/AbstractAddressEditAction.java
===================================================================
--- applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/AbstractAddressEditAction.java	(revision 24977)
+++ applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/AbstractAddressEditAction.java	(revision 24978)
@@ -175,4 +175,6 @@
 	@Override
 	public void entityChanged(IOSMEntity node) {
+		container.removeProblemsOfSource(node); // clear problems of changed node...
+		node.visit(container);					// .. and revisit it.
 		updateEnabledState();		
 	}
