Index: trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 10386)
@@ -17,5 +17,4 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
 import org.openstreetmap.josm.io.AllFormatsImporter;
@@ -67,5 +66,4 @@
                 FileImporter importer = importerClass.getConstructor().newInstance();
                 importers.add(importer);
-                MapView.addLayerChangeListener(importer);
             } catch (ReflectiveOperationException e) {
                 if (Main.isDebugEnabled()) {
Index: trunk/src/org/openstreetmap/josm/actions/ZoomToAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ZoomToAction.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/actions/ZoomToAction.java	(revision 10386)
@@ -12,14 +12,18 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.conflict.pair.nodes.NodeListTable;
 import org.openstreetmap.josm.gui.conflict.pair.relation.RelationMemberTable;
 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
-import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
-public class ZoomToAction extends AbstractAction implements LayerChangeListener, ListSelectionListener {
+public class ZoomToAction extends AbstractAction implements LayerChangeListener, ActiveLayerChangeListener, ListSelectionListener {
 
     private final OsmPrimitivesTable table;
@@ -98,16 +102,21 @@
 
     @Override
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
         updateEnabledState();
     }
 
     @Override
-    public void layerAdded(Layer newLayer) {
+    public void layerAdded(LayerAddEvent e) {
         updateEnabledState();
     }
 
     @Override
-    public void layerRemoved(Layer oldLayer) {
+    public void layerRemoving(LayerRemoveEvent e) {
         updateEnabledState();
     }
+
+    @Override
+    public void layerOrderChanged(LayerOrderChangeEvent e) {
+        // Do nothing
+    }
 }
Index: trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 10386)
@@ -34,8 +34,9 @@
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
-import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.Notification;
-import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -59,4 +60,7 @@
  *
  *      The deleted layers dir keeps at most PROP_DELETED_LAYERS files.
+ *
+ * @since  3378 (creation)
+ * @since 10386 (new LayerChangeListener interface)
  */
 public class AutosaveTask extends TimerTask implements LayerChangeListener, Listener {
@@ -125,5 +129,5 @@
             timer = new Timer(true);
             timer.schedule(this, 1000L, PROP_INTERVAL.get() * 1000L);
-            MapView.addLayerChangeListener(this);
+            Main.getLayerManager().addLayerChangeListener(this);
             if (Main.isDisplayingMapView()) {
                 for (OsmDataLayer l: Main.getLayerManager().getLayersOfType(OsmDataLayer.class)) {
@@ -250,5 +254,5 @@
 
     @Override
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+    public void layerOrderChanged(LayerOrderChangeEvent e) {
         // Do nothing
     }
@@ -262,15 +266,15 @@
 
     @Override
-    public void layerAdded(Layer newLayer) {
-        if (newLayer instanceof OsmDataLayer) {
-            registerNewlayer((OsmDataLayer) newLayer);
+    public void layerAdded(LayerAddEvent e) {
+        if (e.getAddedLayer() instanceof OsmDataLayer) {
+            registerNewlayer((OsmDataLayer) e.getAddedLayer());
         }
     }
 
     @Override
-    public void layerRemoved(Layer oldLayer) {
-        if (oldLayer instanceof OsmDataLayer) {
+    public void layerRemoving(LayerRemoveEvent e) {
+        if (e.getRemovedLayer() instanceof OsmDataLayer) {
             synchronized (layersLock) {
-                OsmDataLayer osmLayer = (OsmDataLayer) oldLayer;
+                OsmDataLayer osmLayer = (OsmDataLayer) e.getRemovedLayer();
                 osmLayer.data.removeDataSetListener(datasetAdapter);
                 Iterator<AutosaveLayerInfo> it = layersInfo.iterator();
Index: trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/data/osm/history/HistoryDataSet.java	(revision 10386)
@@ -18,7 +18,8 @@
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
-import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
-import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
@@ -26,4 +27,5 @@
  * A data set holding histories of OSM primitives.
  * @since 1670
+ * @since 10386 (new LayerChangeListener interface)
  */
 public class HistoryDataSet implements LayerChangeListener {
@@ -39,5 +41,5 @@
         if (historyDataSet == null) {
             historyDataSet = new HistoryDataSet();
-            MapView.addLayerChangeListener(historyDataSet);
+            Main.getLayerManager().addLayerChangeListener(historyDataSet);
         }
         return historyDataSet;
@@ -201,17 +203,17 @@
     /* ------------------------------------------------------------------------------ */
     @Override
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+    public void layerOrderChanged(LayerOrderChangeEvent e) {
         /* irrelevant in this context */
     }
 
     @Override
-    public void layerAdded(Layer newLayer) {
+    public void layerAdded(LayerAddEvent e) {
         /* irrelevant in this context */
     }
 
     @Override
-    public void layerRemoved(Layer oldLayer) {
+    public void layerRemoving(LayerRemoveEvent e) {
         if (!Main.isDisplayingMapView()) return;
-        if (Main.map.mapView.getNumLayers() == 0) {
+        if (Main.getLayerManager().getLayers().isEmpty()) {
             data.clear();
             fireCacheCleared();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 10386)
@@ -62,5 +62,4 @@
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
@@ -69,4 +68,10 @@
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -83,6 +88,5 @@
 
 /**
- * A dialog showing all known relations, with buttons to add, edit, and
- * delete them.
+ * A dialog showing all known relations, with buttons to add, edit, and delete them.
  *
  * We don't have such dialogs for nodes, segments, and ways, because those
@@ -220,5 +224,6 @@
     @Override
     public void showNotify() {
-        MapView.addLayerChangeListener(newAction);
+        Main.getLayerManager().addLayerChangeListener(newAction);
+        Main.getLayerManager().addActiveLayerChangeListener(newAction);
         MapView.addZoomChangeListener(this);
         newAction.updateEnabledState();
@@ -232,5 +237,6 @@
     @Override
     public void hideNotify() {
-        MapView.removeLayerChangeListener(newAction);
+        Main.getLayerManager().removeActiveLayerChangeListener(newAction);
+        Main.getLayerManager().removeLayerChangeListener(newAction);
         MapView.removeZoomChangeListener(this);
         DatasetEventManager.getInstance().removeDatasetListener(this);
@@ -345,8 +351,7 @@
 
     /**
-     * The action for creating a new relation
-     *
-     */
-    static class NewAction extends AbstractAction implements LayerChangeListener {
+     * The action for creating a new relation.
+     */
+    static class NewAction extends AbstractAction implements LayerChangeListener, ActiveLayerChangeListener {
         NewAction() {
             putValue(SHORT_DESCRIPTION, tr("Create a new relation"));
@@ -370,16 +375,21 @@
 
         @Override
-        public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+        public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
             updateEnabledState();
         }
 
         @Override
-        public void layerAdded(Layer newLayer) {
+        public void layerAdded(LayerAddEvent e) {
             updateEnabledState();
         }
 
         @Override
-        public void layerRemoved(Layer oldLayer) {
+        public void layerRemoving(LayerRemoveEvent e) {
             updateEnabledState();
+        }
+
+        @Override
+        public void layerOrderChanged(LayerOrderChangeEvent e) {
+            // Do nothing
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java	(revision 10386)
@@ -28,9 +28,12 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction;
-import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.util.HighlightHelper;
@@ -82,5 +85,6 @@
         JPopupMenu menu = super.buildPopupMenu();
         zoomToGap = new ZoomToGapAction();
-        MapView.addLayerChangeListener(zoomToGap);
+        Main.getLayerManager().addLayerChangeListener(zoomToGap);
+        Main.getLayerManager().addActiveLayerChangeListener(zoomToGap);
         getSelectionModel().addListSelectionListener(zoomToGap);
         menu.add(zoomToGap);
@@ -137,5 +141,6 @@
     public void unlinkAsListener() {
         super.unlinkAsListener();
-        MapView.removeLayerChangeListener(zoomToGap);
+        Main.getLayerManager().removeLayerChangeListener(zoomToGap);
+        Main.getLayerManager().removeActiveLayerChangeListener(zoomToGap);
     }
 
@@ -189,5 +194,5 @@
     }
 
-    private class ZoomToGapAction extends AbstractAction implements LayerChangeListener, ListSelectionListener {
+    private class ZoomToGapAction extends AbstractAction implements LayerChangeListener, ActiveLayerChangeListener, ListSelectionListener {
 
         /**
@@ -241,16 +246,21 @@
 
         @Override
-        public void activeLayerChange(Layer oldLayer, Layer newLayer) {
-            updateEnabledState();
-        }
-
-        @Override
-        public void layerAdded(Layer newLayer) {
-            updateEnabledState();
-        }
-
-        @Override
-        public void layerRemoved(Layer oldLayer) {
-            updateEnabledState();
+        public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
+            updateEnabledState();
+        }
+
+        @Override
+        public void layerAdded(LayerAddEvent e) {
+            updateEnabledState();
+        }
+
+        @Override
+        public void layerRemoving(LayerRemoveEvent e) {
+            updateEnabledState();
+        }
+
+        @Override
+        public void layerOrderChanged(LayerOrderChangeEvent e) {
+            // Do nothing
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/gui/layer/ValidatorLayer.java	(revision 10386)
@@ -22,7 +22,10 @@
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.MultiMap;
@@ -32,4 +35,7 @@
  *
  * @author frsantos
+ *
+ * @since  3669 (creation)
+ * @since 10386 (new LayerChangeListener interface)
  */
 public class ValidatorLayer extends Layer implements LayerChangeListener {
@@ -42,5 +48,5 @@
     public ValidatorLayer() {
         super(tr("Validation errors"));
-        MapView.addLayerChangeListener(this);
+        Main.getLayerManager().addLayerChangeListener(this);
     }
 
@@ -143,10 +149,10 @@
 
     @Override
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+    public void layerOrderChanged(LayerOrderChangeEvent e) {
         // Do nothing
     }
 
     @Override
-    public void layerAdded(Layer newLayer) {
+    public void layerAdded(LayerAddEvent e) {
         // Do nothing
     }
@@ -156,9 +162,9 @@
      */
     @Override
-    public void layerRemoved(Layer oldLayer) {
-        if (oldLayer instanceof OsmDataLayer && Main.isDisplayingMapView() && !Main.main.hasEditLayer()) {
+    public void layerRemoving(LayerRemoveEvent e) {
+        if (e.getRemovedLayer() instanceof OsmDataLayer && Main.isDisplayingMapView() && !Main.main.hasEditLayer()) {
             Main.main.removeLayer(this);
-        } else if (oldLayer == this) {
-            MapView.removeLayerChangeListener(this);
+        } else if (e.getRemovedLayer() == this) {
+            Main.getLayerManager().removeLayerChangeListener(this);
             OsmValidator.errorLayer = null;
         }
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 10386)
@@ -51,5 +51,4 @@
 import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener;
 import org.openstreetmap.josm.gui.MapView;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.NavigatableComponent;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
@@ -62,4 +61,10 @@
 import org.openstreetmap.josm.gui.layer.JumpToMarkerActions.JumpToPreviousMarker;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
+import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.JpgImporter;
@@ -889,21 +894,23 @@
         mapModeListener.mapModeChange(null, Main.map.mapMode);
 
-        MapView.addLayerChangeListener(new LayerChangeListener() {
+        Main.getLayerManager().addActiveLayerChangeListener(new ActiveLayerChangeListener() {
             @Override
-            public void activeLayerChange(Layer oldLayer, Layer newLayer) {
-                if (newLayer == GeoImageLayer.this) {
+            public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
+                if (Main.getLayerManager().getActiveLayer() == GeoImageLayer.this) {
                     // only in select mode it is possible to click the images
                     Main.map.selectSelectTool(false);
                 }
             }
-
+        });
+
+        Main.getLayerManager().addLayerChangeListener(new LayerChangeListener() {
             @Override
-            public void layerAdded(Layer newLayer) {
+            public void layerAdded(LayerAddEvent e) {
                 // Do nothing
             }
 
             @Override
-            public void layerRemoved(Layer oldLayer) {
-                if (oldLayer == GeoImageLayer.this) {
+            public void layerRemoving(LayerRemoveEvent e) {
+                if (e.getRemovedLayer() == GeoImageLayer.this) {
                     stopLoadThumbs();
                     Main.map.mapView.removeMouseListener(mouseAdapter);
@@ -915,6 +922,11 @@
                     data = null;
                     // stop listening to layer change events
-                    MapView.removeLayerChangeListener(this);
-                }
+                    Main.getLayerManager().removeLayerChangeListener(this);
+                }
+            }
+
+            @Override
+            public void layerOrderChanged(LayerOrderChangeEvent e) {
+                // Do nothing
             }
         });
Index: trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java	(revision 10386)
@@ -10,7 +10,7 @@
 import javax.swing.table.TableColumnModel;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ZoomToAction;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 
@@ -83,5 +83,6 @@
         JPopupMenu menu = new JPopupMenu();
         zoomToAction = buildZoomToAction();
-        MapView.addLayerChangeListener(zoomToAction);
+        Main.getLayerManager().addLayerChangeListener(zoomToAction);
+        Main.getLayerManager().addActiveLayerChangeListener(zoomToAction);
         getSelectionModel().addListSelectionListener(zoomToAction);
         menu.add(zoomToAction);
@@ -90,5 +91,6 @@
 
     public void unlinkAsListener() {
-        MapView.removeLayerChangeListener(zoomToAction);
+        Main.getLayerManager().removeLayerChangeListener(zoomToAction);
+        Main.getLayerManager().removeActiveLayerChangeListener(zoomToAction);
     }
 
Index: trunk/src/org/openstreetmap/josm/io/FileImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/FileImporter.java	(revision 10384)
+++ trunk/src/org/openstreetmap/josm/io/FileImporter.java	(revision 10386)
@@ -13,7 +13,5 @@
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.Notification;
-import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.util.GuiHelper;
@@ -22,6 +20,7 @@
  * Abstract file importer.
  * @since 1637
+ * @since 10386 (signature)
  */
-public abstract class FileImporter implements Comparable<FileImporter>, LayerChangeListener {
+public abstract class FileImporter implements Comparable<FileImporter> {
 
     /**
@@ -182,18 +181,3 @@
         this.enabled = enabled;
     }
-
-    @Override
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
-        // To be overriden by subclasses if their enabled state depends of the active layer nature
-    }
-
-    @Override
-    public void layerAdded(Layer newLayer) {
-        // To be overriden by subclasses if needed
-    }
-
-    @Override
-    public void layerRemoved(Layer oldLayer) {
-        // To be overriden by subclasses if needed
-    }
 }
