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 27321)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/OSMAddress.java	(revision 27322)
@@ -15,10 +15,11 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+
 import java.util.Collection;
 import java.util.HashMap;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AddressActions;
 import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ApplyAllGuessesAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.RemoveAddressTagsAction;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
@@ -728,5 +729,5 @@
 		AddressSolution s = new AddressSolution(
 						tr("Remove all address tags"),
-						new RemoveAddressTagsAction(),
+						AddressActions.getRemoveTagsAction(),
 						SolutionType.Remove);
 		problem.addSolution(s);
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 27321)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/AddressEditDialog.java	(revision 27322)
@@ -57,11 +57,5 @@
 import org.openstreetmap.josm.plugins.fixAddresses.StringUtils;
 import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AbstractAddressEditAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ApplyAllGuessesAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AssignAddressToStreetAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ConvertAllToRelationAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ConvertToRelationAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.GuessAddressDataAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.RemoveAddressTagsAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.SelectAddressesInMapAction;
+import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AddressActions;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -79,22 +73,14 @@
 	private JTable streetTable;
 
-	/* Actions */
-	private AssignAddressToStreetAction resolveAction = new AssignAddressToStreetAction();
-	private ApplyAllGuessesAction applyAllGuessesAction = new ApplyAllGuessesAction();
-	private GuessAddressDataAction guessAddressAction = new GuessAddressDataAction();
-	private SelectAddressesInMapAction selectAddressesInMapAction = new SelectAddressesInMapAction();
-	private RemoveAddressTagsAction removeAddressTagsAction = new RemoveAddressTagsAction();
-	private ConvertToRelationAction convertToRelationAction = new ConvertToRelationAction();
-	private ConvertAllToRelationAction convertAllToRelationAction = new ConvertAllToRelationAction();
-
 	private AbstractAddressEditAction[] actions = new AbstractAddressEditAction[] {
-		resolveAction,
-		guessAddressAction,
-		applyAllGuessesAction,
-		selectAddressesInMapAction,
-		removeAddressTagsAction,
-		convertToRelationAction,
-		convertAllToRelationAction
+		AddressActions.getResolveAction(),
+		AddressActions.getGuessAddressAction(),
+		AddressActions.getApplyGuessesAction(),
+		AddressActions.getSelectAction(),
+		AddressActions.getRemoveTagsAction(),
+		AddressActions.getConvertToRelationAction(),
+		AddressActions.getConvertAllToRelationAction()
 	};
+	
 	private JLabel streetLabel;
 	private JLabel unresolvedAddressesLabel;
@@ -157,5 +143,5 @@
 			unresolvedTable.getSelectionModel().addListSelectionListener(this);
 			unresolvedTable.getSelectionModel().addListSelectionListener(new IncompleteAddressListener());
-			unresolvedTable.addMouseListener(applyAllGuessesAction);
+			unresolvedTable.addMouseListener(AddressActions.getApplyGuessesAction());
 
 			JTableHeader header = unresolvedTable.getTableHeader();
@@ -178,18 +164,18 @@
 			try {
 				JPanel unresolvedButtons = new JPanel(new GridLayout(2,5, 5, 5));
-				SideButton assign = new SideButton(resolveAction);
+				SideButton assign = new SideButton(AddressActions.getResolveAction());
 				unresolvedButtons.add(assign);
 
-				SideButton guess = new SideButton(guessAddressAction);
+				SideButton guess = new SideButton(AddressActions.getGuessAddressAction());
 				unresolvedButtons.add(guess);
-				SideButton applyAllGuesses = new SideButton(applyAllGuessesAction);
+				SideButton applyAllGuesses = new SideButton(AddressActions.getApplyGuessesAction());
 				unresolvedButtons.add(applyAllGuesses);
 
-				SideButton removeAddressTags = new SideButton(removeAddressTagsAction);
+				SideButton removeAddressTags = new SideButton(AddressActions.getRemoveTagsAction());
 				unresolvedButtons.add(removeAddressTags);
 
 				unresolvedButtons.add(new JPanel());
 
-				SideButton selectInMap = new SideButton(selectAddressesInMapAction);
+				SideButton selectInMap = new SideButton(AddressActions.getSelectAction());
 				unresolvedButtons.add(selectInMap);
 				headerPanel2.setMinimumSize(new Dimension(100, 70));
Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/IncompleteAddressesDialog.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/IncompleteAddressesDialog.java	(revision 27321)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/IncompleteAddressesDialog.java	(revision 27322)
@@ -21,4 +21,5 @@
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
+import javax.swing.SwingUtilities;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
@@ -29,4 +30,5 @@
 import org.openstreetmap.josm.data.osm.event.DataSetListener;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
+import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
 import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
 import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
@@ -35,5 +37,4 @@
 import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
 import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
-import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
 import org.openstreetmap.josm.gui.SideButton;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
@@ -43,8 +44,5 @@
 import org.openstreetmap.josm.plugins.fixAddresses.OsmUtils;
 import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AbstractAddressEditAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.ApplyAllGuessesAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.GuessAddressDataAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.RemoveAddressTagsAction;
-import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.SelectAddressesInMapAction;
+import org.openstreetmap.josm.plugins.fixAddresses.gui.actions.AddressActions;
 
 @SuppressWarnings("serial")
@@ -54,16 +52,11 @@
 	private AddressEditContainer container;
 
-	// Create action objects
-	private SelectAddressesInMapAction selectAction = new SelectAddressesInMapAction();
-	private GuessAddressDataAction guessDataAction = new GuessAddressDataAction();
-	private ApplyAllGuessesAction applyGuessesAction = new ApplyAllGuessesAction();
-	private RemoveAddressTagsAction removeTagsAction = new RemoveAddressTagsAction();
 
 	// Array containing the available actions
 	private AbstractAddressEditAction[] actions = new AbstractAddressEditAction[]{
-			selectAction,
-			guessDataAction,
-			applyGuessesAction,
-			removeTagsAction
+			AddressActions.getSelectAction(),
+			AddressActions.getGuessAddressAction(),
+			AddressActions.getApplyGuessesAction(),
+			AddressActions.getRemoveTagsAction(),
 	};
 
@@ -215,8 +208,10 @@
 	@Override
 	public void containerChanged(AddressEditContainer container) {
-		if (container != null && container.getNumberOfIncompleteAddresses() > 0) {
-			setTitle(String.format("%s (%d %s)", FIXED_DIALOG_TITLE, container.getNumberOfIncompleteAddresses(), tr("items")));
-		} else {
-			setTitle(String.format("%s (%s)", FIXED_DIALOG_TITLE, tr("no items")));
+		if (SwingUtilities.isEventDispatchThread()) {
+			if (container != null && container.getNumberOfIncompleteAddresses() > 0) {
+				setTitle(String.format("%s (%d %s)", FIXED_DIALOG_TITLE, container.getNumberOfIncompleteAddresses(), tr("items")));
+			} else {
+				setTitle(String.format("%s (%s)", FIXED_DIALOG_TITLE, tr("no items")));
+			}
 		}
 	}
@@ -227,5 +222,7 @@
 	@Override
 	public void entityChanged(IOSMEntity node) {
-		container.invalidate();
+		if (SwingUtilities.isEventDispatchThread()) {
+			container.invalidate();
+		}
 	}
 }
Index: /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/AddressActions.java
===================================================================
--- /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/AddressActions.java	(revision 27322)
+++ /applications/editors/josm/plugins/FixAddresses/src/org/openstreetmap/josm/plugins/fixAddresses/gui/actions/AddressActions.java	(revision 27322)
@@ -0,0 +1,48 @@
+/*
+ * 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.gui.actions;
+
+public final class AddressActions {
+	/* Global action objects */
+	private static SelectAddressesInMapAction selectAction = new SelectAddressesInMapAction();
+	private static GuessAddressDataAction guessDataAction = new GuessAddressDataAction();
+	private static ApplyAllGuessesAction applyGuessesAction = new ApplyAllGuessesAction();
+	private static RemoveAddressTagsAction removeTagsAction = new RemoveAddressTagsAction();
+	private static AssignAddressToStreetAction resolveAction = new AssignAddressToStreetAction();
+	private static ConvertToRelationAction convertToRelationAction = new ConvertToRelationAction();
+	private static ConvertAllToRelationAction convertAllToRelationAction = new ConvertAllToRelationAction();
+	
+	public static SelectAddressesInMapAction getSelectAction() {
+		return selectAction;
+	}
+	public static GuessAddressDataAction getGuessAddressAction() {
+		return guessDataAction;
+	}
+	public static ApplyAllGuessesAction getApplyGuessesAction() {
+		return applyGuessesAction;
+	}
+	public static RemoveAddressTagsAction getRemoveTagsAction() {
+		return removeTagsAction;
+	}
+	public static AssignAddressToStreetAction getResolveAction() {
+		return resolveAction;
+	}
+	public static ConvertToRelationAction getConvertToRelationAction() {
+		return convertToRelationAction;
+	}
+	public static ConvertAllToRelationAction getConvertAllToRelationAction() {
+		return convertAllToRelationAction;
+	}
+}
