Index: /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteActionList.java
===================================================================
--- /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteActionList.java	(revision 33026)
+++ /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteActionList.java	(revision 33027)
@@ -28,20 +28,16 @@
 package org.openstreetmap.josm.plugins.mapdust.gui.action.execute;
 
+import static org.openstreetmap.josm.tools.I18n.tr;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.Iterator;
+
 import javax.swing.JOptionPane;
 import javax.swing.JToggleButton;
+
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustActionUploader;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustActionUploaderException;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustGUI;
-import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObservable;
-import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObserver;
 import org.openstreetmap.josm.plugins.mapdust.gui.value.MapdustPluginState;
-import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBugFilter;
-
 
 /**
@@ -53,13 +49,8 @@
  *
  */
-public class ExecuteActionList extends MapdustExecuteAction implements
-        MapdustUpdateObservable {
-
-    /** List of MapdustRefreshObserver objects */
-    private final ArrayList<MapdustUpdateObserver> observers =
-            new ArrayList<>();
+public class ExecuteActionList extends MapdustExecuteActionObservable {
 
     /**
-     * Builds a <code>ExceuteActionList</code> object
+     * Builds a <code>ExecuteActionList</code> object
      *
      * @param mapdustGUI The <code>MapdustGUI</code> object
@@ -92,36 +83,4 @@
     }
 
-    /**
-     * Adds a new MapDust refresh observer to the list of observers.
-     *
-     * @param observer The <code>MapdustRefreshObserver</code> object
-     */
-    @Override
-    public void addObserver(MapdustUpdateObserver observer) {
-        if (!this.observers.contains(observer)) {
-            this.observers.add(observer);
-        }
-    }
-
-    /**
-     * Removes the MapDust refresh observer object from the list of observers.
-     *
-     * @param observer The <code>MapdustRefreshObserver</code> object
-     */
-    @Override
-    public void removeObserver(MapdustUpdateObserver observer) {
-        this.observers.remove(observer);
-    }
-
-    /**
-     * Notifies the observers observing this action.
-     */
-    @Override
-    public void notifyObservers(MapdustBugFilter filter, boolean first) {
-        Iterator<MapdustUpdateObserver> elements = this.observers.iterator();
-        while (elements.hasNext()) {
-            (elements.next()).update(filter, false);
-        }
-    }
 
 }
Index: /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteFilterBug.java
===================================================================
--- /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteFilterBug.java	(revision 33026)
+++ /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteFilterBug.java	(revision 33027)
@@ -32,17 +32,13 @@
 package org.openstreetmap.josm.plugins.mapdust.gui.action.execute;
 
+import java.awt.event.ActionEvent;
+import java.util.List;
 
-import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
 import javax.swing.JButton;
+
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustGUI;
 import org.openstreetmap.josm.plugins.mapdust.gui.component.dialog.FilterBugDialog;
-import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObservable;
-import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObserver;
 import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBugFilter;
 import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustRelevance;
-
 
 /**
@@ -52,13 +48,8 @@
  * @author Bea
  */
-public class ExecuteFilterBug extends MapdustExecuteAction implements
-        MapdustUpdateObservable {
+public class ExecuteFilterBug extends MapdustExecuteActionObservable {
 
     /** The serial version UID */
     private static final long serialVersionUID = -2724396161610512502L;
-
-    /** The list MapDustBug filter observers */
-    private final ArrayList<MapdustUpdateObserver> observers =
-            new ArrayList<>();
 
     /**
@@ -109,40 +100,3 @@
         }
     }
-
-    /**
-     * Adds a new MapDust bug filter observer to the list of observers.
-     *
-     * @param observer The <code>MapdustBugFilterObserver</code> object
-     */
-    @Override
-    public void addObserver(MapdustUpdateObserver observer) {
-        if (!this.observers.contains(observer)) {
-            this.observers.add(observer);
-        }
-    }
-
-    /**
-     * Removes the MapDust bug filter observer object from the list of
-     * observers.
-     *
-     * @param observer The <code>MapdustBugFilterObserver</code> object
-     */
-    @Override
-    public void removeObserver(MapdustUpdateObserver observer) {
-        this.observers.remove(observer);
-    }
-
-    /**
-     * Notifies the observers observing this action.
-     *
-     * @param filter The <code>MapdustBugFilter</code> object
-     */
-    @Override
-    public void notifyObservers(MapdustBugFilter filter, boolean first) {
-        Iterator<MapdustUpdateObserver> elements = this.observers.iterator();
-        while (elements.hasNext()) {
-            (elements.next()).update(filter, false);
-        }
-    }
-
 }
Index: /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteWorkOffline.java
===================================================================
--- /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteWorkOffline.java	(revision 33026)
+++ /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/ExecuteWorkOffline.java	(revision 33027)
@@ -28,20 +28,16 @@
 package org.openstreetmap.josm.plugins.mapdust.gui.action.execute;
 
+import static org.openstreetmap.josm.tools.I18n.tr;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
 import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.Iterator;
+
 import javax.swing.JOptionPane;
 import javax.swing.JToggleButton;
+
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustActionUploader;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustActionUploaderException;
 import org.openstreetmap.josm.plugins.mapdust.gui.MapdustGUI;
-import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObservable;
-import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObserver;
 import org.openstreetmap.josm.plugins.mapdust.gui.value.MapdustPluginState;
-import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBugFilter;
-
 
 /**
@@ -55,13 +51,8 @@
  *
  */
-public class ExecuteWorkOffline extends MapdustExecuteAction implements
-        MapdustUpdateObservable {
+public class ExecuteWorkOffline extends MapdustExecuteActionObservable {
 
     /** The serial version UID */
     private static final long serialVersionUID = 8792828131813689548L;
-
-    /** The list of MapDust refresh observers */
-    private final ArrayList<MapdustUpdateObserver> observers =
-            new ArrayList<>();
 
     /**
@@ -124,37 +115,3 @@
         }
     }
-
-    /**
-     * Adds a new MapDust refresh observer to the list of observers.
-     *
-     * @param observer The <code>MapdustRefreshObserver</code> object
-     */
-    @Override
-    public void addObserver(MapdustUpdateObserver observer) {
-        if (!this.observers.contains(observer)) {
-            this.observers.add(observer);
-        }
-    }
-
-    /**
-     * Removes the MapDust refresh observer object from the list of observers.
-     *
-     * @param observer The <code>MapdustRefreshObserver</code> object
-     */
-    @Override
-    public void removeObserver(MapdustUpdateObserver observer) {
-        this.observers.remove(observer);
-    }
-
-    /**
-     * Notifies the observers observing this action.
-     */
-    @Override
-    public void notifyObservers(MapdustBugFilter filter, boolean first) {
-        Iterator<MapdustUpdateObserver> elements = this.observers.iterator();
-        while (elements.hasNext()) {
-            (elements.next()).update(filter, false);
-        }
-    }
-
 }
Index: /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/MapdustExecuteActionObservable.java
===================================================================
--- /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/MapdustExecuteActionObservable.java	(revision 33027)
+++ /applications/editors/josm/plugins/mapdust/src/org/openstreetmap/josm/plugins/mapdust/gui/action/execute/MapdustExecuteActionObservable.java	(revision 33027)
@@ -0,0 +1,75 @@
+/* Copyright (c) 2010, skobbler GmbH
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ *    this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ *    this list of conditions and the following disclaimer in the documentation
+ *    and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its
+ *    contributors may be used to endorse or promote products derived from this
+ *    software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.openstreetmap.josm.plugins.mapdust.gui.action.execute;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObservable;
+import org.openstreetmap.josm.plugins.mapdust.gui.observer.MapdustUpdateObserver;
+import org.openstreetmap.josm.plugins.mapdust.service.value.MapdustBugFilter;
+
+public abstract class MapdustExecuteActionObservable extends MapdustExecuteAction implements MapdustUpdateObservable {
+
+    /** The list of MapDust refresh observers */
+    private final ArrayList<MapdustUpdateObserver> observers =
+            new ArrayList<>();
+
+    /**
+     * Adds a new MapDust refresh observer to the list of observers.
+     *
+     * @param observer The <code>MapdustRefreshObserver</code> object
+     */
+    @Override
+    public void addObserver(MapdustUpdateObserver observer) {
+        if (!this.observers.contains(observer)) {
+            this.observers.add(observer);
+        }
+    }
+
+    /**
+     * Removes the MapDust refresh observer object from the list of observers.
+     *
+     * @param observer The <code>MapdustRefreshObserver</code> object
+     */
+    @Override
+    public void removeObserver(MapdustUpdateObserver observer) {
+        this.observers.remove(observer);
+    }
+
+    /**
+     * Notifies the observers observing this action.
+     */
+    @Override
+    public void notifyObservers(MapdustBugFilter filter, boolean first) {
+        Iterator<MapdustUpdateObserver> elements = this.observers.iterator();
+        while (elements.hasNext()) {
+            (elements.next()).update(filter, false);
+        }
+    }
+}
