Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 10446)
@@ -325,5 +325,5 @@
                 } else {
                     lastZoomArea = -1;
-                    Area sourceArea = Main.main.getCurrentDataSet().getDataSourceArea();
+                    Area sourceArea = Main.getLayerManager().getEditDataSet().getDataSourceArea();
                     if (sourceArea != null) {
                         v.visit(new Bounds(sourceArea.getBounds2D()));
Index: trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 10446)
@@ -144,5 +144,5 @@
         }
 
-        final Collection<Way> selectedWays = Main.main.getCurrentDataSet().getSelectedWays();
+        final Collection<Way> selectedWays = Main.getLayerManager().getEditDataSet().getSelectedWays();
 
         if (selectedWays.isEmpty()) {
@@ -157,5 +157,5 @@
         }
 
-        final Collection<Relation> selectedRelations = Main.main.getCurrentDataSet().getSelectedRelations();
+        final Collection<Relation> selectedRelations = Main.getLayerManager().getEditDataSet().getSelectedRelations();
         final Relation multipolygonRelation = update
                 ? getSelectedMultipolygonRelation(selectedWays, selectedRelations)
Index: trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java	(revision 10446)
@@ -61,5 +61,5 @@
                         @Override
                         public void run() {
-                            Main.main.getCurrentDataSet().setSelected(downloaded);
+                            Main.getLayerManager().getEditDataSet().setSelected(downloaded);
                         }
                     });
Index: trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 10446)
@@ -413,5 +413,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        join(Main.main.getCurrentDataSet().getSelectedWays());
+        join(Main.getLayerManager().getEditDataSet().getSelectedWays());
     }
 
@@ -1425,5 +1425,5 @@
         List<RelationRole> result = new ArrayList<>();
 
-        for (Relation r : Main.main.getCurrentDataSet().getRelations()) {
+        for (Relation r : Main.getLayerManager().getEditDataSet().getRelations()) {
             if (r.isDeleted()) {
                 continue;
Index: trunk/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/SelectNonBranchingWaySequencesAction.java	(revision 10446)
@@ -32,5 +32,5 @@
     @Override
     public void actionPerformed(ActionEvent ev) {
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         SelectNonBranchingWaySequences ws = new SelectNonBranchingWaySequences(ds.getSelectedWays());
         ws.extend(ds);
@@ -44,5 +44,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(Main.main.getCurrentDataSet() != null);
+        setEnabled(Main.getLayerManager().getEditDataSet() != null);
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 10446)
@@ -145,5 +145,5 @@
         }
         if (Main.main != null) {
-            DataSet dataset = Main.main.getCurrentDataSet();
+            DataSet dataset = Main.getLayerManager().getEditDataSet();
             if (dataset != null) {
                 String result = DatasetConsistencyTest.runTests(dataset);
Index: trunk/src/org/openstreetmap/josm/actions/UploadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/UploadAction.java	(revision 10446)
@@ -268,5 +268,5 @@
             return;
         }
-        APIDataSet apiData = new APIDataSet(Main.main.getCurrentDataSet());
+        APIDataSet apiData = new APIDataSet(Main.getLayerManager().getEditDataSet());
         uploadData(Main.getLayerManager().getEditLayer(), apiData);
     }
Index: trunk/src/org/openstreetmap/josm/actions/ValidateAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 10446)
@@ -73,7 +73,7 @@
         Collection<OsmPrimitive> selection;
         if (getSelectedItems) {
-            selection = Main.main.getCurrentDataSet().getAllSelected();
+            selection = Main.getLayerManager().getEditDataSet().getAllSelected();
             if (selection.isEmpty()) {
-                selection = Main.main.getCurrentDataSet().allNonDeletedPrimitives();
+                selection = Main.getLayerManager().getEditDataSet().allNonDeletedPrimitives();
                 lastSelection = null;
             } else {
@@ -84,5 +84,5 @@
         } else {
             if (lastSelection == null) {
-                selection = Main.main.getCurrentDataSet().allNonDeletedPrimitives();
+                selection = Main.getLayerManager().getEditDataSet().allNonDeletedPrimitives();
             } else {
                 selection = lastSelection;
@@ -147,5 +147,5 @@
                     Main.map.validatorDialog.tree.setErrors(errors);
                     Main.map.validatorDialog.unfurlDialog();
-                    Main.main.getCurrentDataSet().fireSelectionChanged();
+                    Main.getLayerManager().getEditDataSet().fireSelectionChanged();
                 }
             });
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 10446)
@@ -336,5 +336,5 @@
         // let everybody else know about the current selection
         //
-        Main.main.getCurrentDataSet().fireSelectionChanged();
+        Main.getLayerManager().getEditDataSet().fireSelectionChanged();
         lastUsedNode = null;
         wayIsFinished = true;
Index: trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java	(revision 10446)
@@ -39,5 +39,5 @@
         Collection<Command> cmds = new LinkedList<>();
         for (Relation orig : relations) {
-            Command c = GenericRelationEditor.addPrimitivesToRelation(orig, Main.main.getCurrentDataSet().getSelected());
+            Command c = GenericRelationEditor.addPrimitivesToRelation(orig, Main.getLayerManager().getEditDataSet().getSelected());
             if (c != null) {
                 cmds.add(c);
Index: trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/relation/RecentRelationsAction.java	(revision 10446)
@@ -100,5 +100,5 @@
         return relation != null &&
             !relation.isDeleted() &&
-            Main.main.getCurrentDataSet().containsRelation(relation);
+            Main.getLayerManager().getEditDataSet().containsRelation(relation);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 10446)
@@ -550,5 +550,5 @@
 
         static SearchTask newSearchTask(SearchSetting setting) {
-            final DataSet ds = Main.main.getCurrentDataSet();
+            final DataSet ds = Main.getLayerManager().getEditDataSet();
             final Collection<OsmPrimitive> selection = new HashSet<>(ds.getAllSelected());
             return new SearchTask(ds, setting, selection, new Predicate<OsmPrimitive>() {
@@ -579,7 +579,7 @@
                 Collection<OsmPrimitive> all;
                 if (setting.allElements) {
-                    all = Main.main.getCurrentDataSet().allPrimitives();
+                    all = Main.getLayerManager().getEditDataSet().allPrimitives();
                 } else {
-                    all = Main.main.getCurrentDataSet().allNonDeletedCompletePrimitives();
+                    all = Main.getLayerManager().getEditDataSet().allNonDeletedCompletePrimitives();
                 }
                 final ProgressMonitor subMonitor = getProgressMonitor().createSubTaskMonitor(all.size(), false);
Index: trunk/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/upload/ApiPreconditionCheckerHook.java	(revision 10446)
@@ -73,5 +73,5 @@
                             JOptionPane.ERROR_MESSAGE
                     );
-                    Main.main.getCurrentDataSet().setSelected(Collections.singleton(osmPrimitive));
+                    Main.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
                     return false;
                 }
@@ -90,5 +90,5 @@
                         JOptionPane.ERROR_MESSAGE
                 );
-                Main.main.getCurrentDataSet().setSelected(Collections.singleton(osmPrimitive));
+                Main.getLayerManager().getEditDataSet().setSelected(Collections.singleton(osmPrimitive));
                 return false;
             }
Index: trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 10446)
@@ -151,5 +151,5 @@
             OsmValidator.initializeErrorLayer();
             Main.map.validatorDialog.unfurlDialog();
-            Main.main.getCurrentDataSet().fireSelectionChanged();
+            Main.getLayerManager().getEditDataSet().fireSelectionChanged();
             return false;
         }
Index: trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 10446)
@@ -59,5 +59,5 @@
 
         // the command may have changed the selection so tell the listeners about the current situation
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         if (ds != null) {
             ds.fireSelectionChanged();
@@ -88,6 +88,6 @@
         if (commands.isEmpty())
             return;
-        Collection<? extends OsmPrimitive> oldSelection = Main.main.getCurrentDataSet().getSelected();
-        Main.main.getCurrentDataSet().beginUpdate();
+        Collection<? extends OsmPrimitive> oldSelection = Main.getLayerManager().getEditDataSet().getSelected();
+        Main.getLayerManager().getEditDataSet().beginUpdate();
         try {
             for (int i = 1; i <= num; ++i) {
@@ -100,10 +100,10 @@
             }
         } finally {
-            Main.main.getCurrentDataSet().endUpdate();
-        }
-        fireCommandsChanged();
-        Collection<? extends OsmPrimitive> newSelection = Main.main.getCurrentDataSet().getSelected();
+            Main.getLayerManager().getEditDataSet().endUpdate();
+        }
+        fireCommandsChanged();
+        Collection<? extends OsmPrimitive> newSelection = Main.getLayerManager().getEditDataSet().getSelected();
         if (!oldSelection.equals(newSelection)) {
-            Main.main.getCurrentDataSet().fireSelectionChanged();
+            Main.getLayerManager().getEditDataSet().fireSelectionChanged();
         }
     }
@@ -123,5 +123,5 @@
         if (redoCommands.isEmpty())
             return;
-        Collection<? extends OsmPrimitive> oldSelection = Main.main.getCurrentDataSet().getSelected();
+        Collection<? extends OsmPrimitive> oldSelection = Main.getLayerManager().getEditDataSet().getSelected();
         for (int i = 0; i < num; ++i) {
             final Command c = redoCommands.removeFirst();
@@ -133,7 +133,7 @@
         }
         fireCommandsChanged();
-        Collection<? extends OsmPrimitive> newSelection = Main.main.getCurrentDataSet().getSelected();
+        Collection<? extends OsmPrimitive> newSelection = Main.getLayerManager().getEditDataSet().getSelected();
         if (!oldSelection.equals(newSelection)) {
-            Main.main.getCurrentDataSet().fireSelectionChanged();
+            Main.getLayerManager().getEditDataSet().fireSelectionChanged();
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java	(revision 10446)
@@ -164,5 +164,5 @@
         mindist = Main.pref.getDouble(PREFIX + ".node_way_distance", 10.0);
         minmiddledist = Main.pref.getDouble(PREFIX + ".way_way_distance", 0.0);
-        dsArea = Main.main == null || !Main.main.hasEditLayer() ? null : Main.main.getCurrentDataSet().getDataSourceArea();
+        dsArea = Main.main == null || !Main.main.hasEditLayer() ? null : Main.getLayerManager().getEditDataSet().getDataSourceArea();
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 10446)
@@ -462,5 +462,5 @@
          */
         private void popupCycleSelection(Collection<OsmPrimitive> osms, int mods) {
-            DataSet ds = Main.main.getCurrentDataSet();
+            DataSet ds = Main.getLayerManager().getEditDataSet();
             // Find some items that are required for cycling through
             OsmPrimitive firstItem = null;
@@ -566,5 +566,5 @@
          */
         private void popupSetLabelColors(JLabel lbl, OsmPrimitive osm) {
-            DataSet ds = Main.main.getCurrentDataSet();
+            DataSet ds = Main.getLayerManager().getEditDataSet();
             if (ds.isSelected(osm)) {
                 lbl.setBackground(SystemColor.textHighlight);
@@ -638,5 +638,5 @@
                 @Override
                 public void mouseClicked(MouseEvent e) {
-                    DataSet ds = Main.main.getCurrentDataSet();
+                    DataSet ds = Main.getLayerManager().getEditDataSet();
                     // Let the user toggle the selection
                     ds.toggleSelected(osm);
Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10446)
@@ -311,5 +311,5 @@
     @Deprecated
     protected DataSet getCurrentDataSet() {
-        return Main.main.getCurrentDataSet();
+        return Main.getLayerManager().getEditDataSet();
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/SelectionManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 10446)
@@ -199,5 +199,5 @@
     @Override
     public void mousePressed(MouseEvent e) {
-        if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() > 1 && Main.main.getCurrentDataSet() != null) {
+        if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() > 1 && Main.getLayerManager().getEditDataSet() != null) {
             SelectByInternalPointAction.performSelection(Main.map.mapView.getEastNorth(e.getX(), e.getY()),
                     (e.getModifiersEx() & MouseEvent.SHIFT_DOWN_MASK) != 0,
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 10446)
@@ -268,7 +268,7 @@
             if (sel.isEmpty())
                 return;
-            if (Main.main.getCurrentDataSet() == null)
-                return;
-            new SelectObjectsAction().selectObjectsByChangesetIds(Main.main.getCurrentDataSet(), sel);
+            if (Main.getLayerManager().getEditDataSet() == null)
+                return;
+            new SelectObjectsAction().selectObjectsByChangesetIds(Main.getLayerManager().getEditDataSet(), sel);
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 10446)
@@ -460,5 +460,5 @@
                 sel.add(o);
             }
-            DataSet ds = Main.main.getCurrentDataSet();
+            DataSet ds = Main.getLayerManager().getEditDataSet();
             if (ds != null) { // Can't see how it is possible but it happened in #7942
                 ds.setSelected(sel);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java	(revision 10446)
@@ -77,5 +77,5 @@
 
     public void executeFilters() {
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         boolean changed = false;
         if (ds == null) {
@@ -124,5 +124,5 @@
 
     public void executeFilters(Collection<? extends OsmPrimitive> primitives) {
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         if (ds == null)
             return;
@@ -177,5 +177,5 @@
 
     public void clearFilterFlags() {
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         if (ds != null) {
             FilterWorker.clearFilterFlags(ds.allPrimitives());
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 10446)
@@ -125,5 +125,5 @@
 
     protected static String buildMapPaintText() {
-        final Collection<OsmPrimitive> sel = Main.main.getCurrentDataSet().getAllSelected();
+        final Collection<OsmPrimitive> sel = Main.getLayerManager().getEditDataSet().getAllSelected();
         ElemStyles elemstyles = MapPaintStyles.getStyles();
         NavigatableComponent nc = Main.map.mapView;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 10446)
@@ -330,5 +330,5 @@
 
         protected void setCurrentRelationAsSelection() {
-            Main.main.getCurrentDataSet().setSelected(displaylist.getSelectedValue());
+            Main.getLayerManager().getEditDataSet().setSelected(displaylist.getSelectedValue());
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 10446)
@@ -847,5 +847,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            Main.main.getCurrentDataSet().setSelected(sel);
+            Main.getLayerManager().getEditDataSet().setSelected(sel);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 10446)
@@ -356,5 +356,5 @@
                 users.add(data.get(index).user);
             }
-            Collection<OsmPrimitive> selected = Main.main.getCurrentDataSet().getAllSelected();
+            Collection<OsmPrimitive> selected = Main.getLayerManager().getEditDataSet().getAllSelected();
             Collection<OsmPrimitive> byUser = new LinkedList<>();
             for (OsmPrimitive p : selected) {
@@ -363,5 +363,5 @@
                 }
             }
-            Main.main.getCurrentDataSet().setSelected(byUser);
+            Main.getLayerManager().getEditDataSet().setSelected(byUser);
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 10446)
@@ -125,5 +125,5 @@
             @Override
             public void actionPerformed(ActionEvent e) {
-                final DataSet ds = Main.main.getCurrentDataSet();
+                final DataSet ds = Main.getLayerManager().getEditDataSet();
                 if (ds == null) {
                     return;
@@ -174,5 +174,5 @@
     public void showNotify() {
         DataSet.addSelectionListener(this);
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         if (ds != null) {
             updateSelection(ds.getAllSelected());
@@ -342,5 +342,5 @@
             }
         }
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         if (ds != null) {
             ds.setSelected(sel);
@@ -479,5 +479,5 @@
 
             if (isDblClick) {
-                Main.main.getCurrentDataSet().setSelected(sel);
+                Main.getLayerManager().getEditDataSet().setSelected(sel);
                 if (Main.pref.getBoolean("validator.autozoom", false)) {
                     AutoScaleAction.zoomTo(sel);
@@ -617,5 +617,5 @@
                     @Override
                     public void run() {
-                        Main.main.getCurrentDataSet().beginUpdate();
+                        Main.getLayerManager().getEditDataSet().beginUpdate();
                     }
                 });
@@ -633,5 +633,5 @@
                         @Override
                         public void run() {
-                            Main.main.getCurrentDataSet().endUpdate();
+                            Main.getLayerManager().getEditDataSet().endUpdate();
                         }
                     });
@@ -644,5 +644,5 @@
                         Main.map.repaint();
                         tree.resetErrors();
-                        Main.main.getCurrentDataSet().fireSelectionChanged();
+                        Main.getLayerManager().getEditDataSet().fireSelectionChanged();
                     }
                 });
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 10446)
@@ -609,5 +609,5 @@
     public void setVisible(boolean b) {
         super.setVisible(b);
-        if (b && Main.main.getCurrentDataSet() != null) {
+        if (b && Main.getLayerManager().getEditDataSet() != null) {
             updateSelection();
         }
@@ -1413,5 +1413,5 @@
     public void preferenceChanged(PreferenceChangeEvent e) {
         super.preferenceChanged(e);
-        if ("display.discardable-keys".equals(e.getKey()) && Main.main.getCurrentDataSet() != null) {
+        if ("display.discardable-keys".equals(e.getKey()) && Main.getLayerManager().getEditDataSet() != null) {
             // Re-load data when display preference change
             updateSelection();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java	(revision 10446)
@@ -324,5 +324,5 @@
             return;
         clearErrors();
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         for (TestError error : newerrors) {
             if (!error.isIgnored()) {
@@ -443,5 +443,5 @@
     private void clearErrors() {
         if (errors != null) {
-            DataSet ds = Main.main.getCurrentDataSet();
+            DataSet ds = Main.getLayerManager().getEditDataSet();
             if (ds != null) {
                 for (TestError e : errors) {
Index: trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/io/DownloadPrimitivesWithReferrersTask.java	(revision 10446)
@@ -157,5 +157,5 @@
         // Warm about deleted primitives
         final Set<PrimitiveId> del = new HashSet<>();
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         for (PrimitiveId id : ids) {
             OsmPrimitive osm = ds.getPrimitiveById(id);
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 10446)
@@ -355,5 +355,5 @@
             return;
         }
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         Collection<OsmPrimitive> participants = Collections.emptyList();
         if (Main.main != null && ds != null) {
@@ -520,5 +520,5 @@
 
     protected final void updateEnabledState() {
-        setEnabled(Main.main != null && Main.main.getCurrentDataSet() != null);
+        setEnabled(Main.main != null && Main.getLayerManager().getEditDataSet() != null);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSearchPrimitiveDialog.java	(revision 10446)
@@ -93,6 +93,6 @@
             TaggingPreset preset = selector.getSelectedPresetAndUpdateClassification();
             if (preset != null) {
-                final Set<OsmPrimitive> matching = new HashSet<>(Utils.filter(Main.main.getCurrentDataSet().allPrimitives(), preset));
-                Main.main.getCurrentDataSet().setSelected(matching);
+                final Set<OsmPrimitive> matching = new HashSet<>(Utils.filter(Main.getLayerManager().getEditDataSet().allPrimitives(), preset));
+                Main.getLayerManager().getEditDataSet().setSelected(matching);
             }
         }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetSelector.java	(revision 10446)
@@ -241,5 +241,5 @@
         boolean inTags = ckSearchInTags != null && ckSearchInTags.isSelected();
 
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         Collection<OsmPrimitive> selected = (ds == null) ? Collections.<OsmPrimitive>emptyList() : ds.getSelected();
         final List<PresetClassification> result = classifications.getMatchingPresets(
@@ -372,6 +372,6 @@
                 typesInSelectionDirty = false;
                 typesInSelection.clear();
-                if (Main.main == null || Main.main.getCurrentDataSet() == null) return typesInSelection;
-                for (OsmPrimitive primitive : Main.main.getCurrentDataSet().getSelected()) {
+                if (Main.main == null || Main.getLayerManager().getEditDataSet() == null) return typesInSelection;
+                for (OsmPrimitive primitive : Main.getLayerManager().getEditDataSet().getSelected()) {
                     typesInSelection.add(TaggingPresetType.forPrimitive(primitive));
                 }
Index: trunk/src/org/openstreetmap/josm/gui/util/HighlightHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/util/HighlightHelper.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/gui/util/HighlightHelper.java	(revision 10446)
@@ -122,5 +122,5 @@
      */
     public void findAllHighlighted() {
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         if (ds != null) {
             highlightedPrimitives.addAll(ds.allNonDeletedPrimitives());
@@ -132,5 +132,5 @@
      */
     public static void clearAllHighlighted() {
-        DataSet ds = Main.main.getCurrentDataSet();
+        DataSet ds = Main.getLayerManager().getEditDataSet();
         if (ds != null) {
             for (OsmPrimitive p: ds.allNonDeletedPrimitives()) {
Index: trunk/src/org/openstreetmap/josm/io/GpxExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 10446)
@@ -172,5 +172,5 @@
             gpxData = ((GpxLayer) layer).data;
         } else {
-            gpxData = OsmDataLayer.toGpxData(Main.main.getCurrentDataSet(), file);
+            gpxData = OsmDataLayer.toGpxData(Main.getLayerManager().getEditDataSet(), file);
         }
 
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 10446)
@@ -242,5 +242,5 @@
     protected void buttonAction(int buttonIndex, ActionEvent evt) {
         // if layer all layers were closed, ignore all actions
-        if (Main.main.getCurrentDataSet() != null && buttonIndex != 2) {
+        if (Main.getLayerManager().getEditDataSet() != null && buttonIndex != 2) {
             TableModel tm = propertyTable.getModel();
             for (int i = 0; i < tm.getRowCount(); i++) {
@@ -304,5 +304,5 @@
     public static void addTags(String[][] keyValue, String sender, Collection<? extends OsmPrimitive> primitives) {
         if (trustedSenders.contains(sender)) {
-            if (Main.main.getCurrentDataSet() != null) {
+            if (Main.getLayerManager().getEditDataSet() != null) {
                 for (String[] row : keyValue) {
                     Main.main.undoRedo.add(new ChangePropertyCommand(primitives, row[0], row[1]));
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java	(revision 10446)
@@ -102,5 +102,5 @@
         }
 
-        Main.main.getCurrentDataSet().setSelected(node);
+        Main.getLayerManager().getEditDataSet().setSelected(node);
         if (PermissionPrefWithDefault.CHANGE_VIEWPORT.isAllowed()) {
             AutoScaleAction.autoScale("selection");
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java	(revision 10446)
@@ -171,5 +171,5 @@
         commands.add(new AddCommand(way));
         Main.main.undoRedo.add(new SequenceCommand(tr("Add way"), commands));
-        Main.main.getCurrentDataSet().setSelected(way);
+        Main.getLayerManager().getEditDataSet().setSelected(way);
         if (PermissionPrefWithDefault.CHANGE_VIEWPORT.isAllowed()) {
             AutoScaleAction.autoScale("selection");
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java	(revision 10446)
@@ -119,5 +119,5 @@
                         // find out whether some data has already been downloaded
                         Area present = null;
-                        DataSet ds = Main.main.getCurrentDataSet();
+                        DataSet ds = Main.getLayerManager().getEditDataSet();
                         if (ds != null) {
                             present = ds.getDataSourceArea();
@@ -158,5 +158,5 @@
                 @Override
                 public void run() {
-                    DataSet ds = Main.main.getCurrentDataSet();
+                    DataSet ds = Main.getLayerManager().getEditDataSet();
                     if (ds == null) // e.g. download failed
                         return;
@@ -174,5 +174,5 @@
                 public void run() {
                     Set<OsmPrimitive> newSel = new HashSet<>();
-                    DataSet ds = Main.main.getCurrentDataSet();
+                    DataSet ds = Main.getLayerManager().getEditDataSet();
                     if (ds == null) // e.g. download failed
                         return;
@@ -200,5 +200,5 @@
                     @Override
                     public void run() {
-                        final DataSet ds = Main.main.getCurrentDataSet();
+                        final DataSet ds = Main.getLayerManager().getEditDataSet();
                         final Collection<OsmPrimitive> filteredPrimitives = Utils.filter(ds.allPrimitives(), search);
                         ds.setSelected(filteredPrimitives);
@@ -221,10 +221,10 @@
                 @Override
                 public void run() {
-                    if (Main.main.getCurrentDataSet() != null) {
+                    if (Main.getLayerManager().getEditDataSet() != null) {
                         if (args.containsKey("changeset_comment")) {
-                            Main.main.getCurrentDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
+                            Main.getLayerManager().getEditDataSet().addChangeSetTag("comment", args.get("changeset_comment"));
                         }
                         if (args.containsKey("changeset_source")) {
-                            Main.main.getCurrentDataSet().addChangeSetTag("source", args.get("changeset_source"));
+                            Main.getLayerManager().getEditDataSet().addChangeSetTag("source", args.get("changeset_source"));
                         }
                     }
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 10444)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java	(revision 10446)
@@ -72,5 +72,5 @@
                 public void run() {
                     final List<PrimitiveId> downloaded = task.getDownloadedId();
-                    final DataSet ds = Main.main.getCurrentDataSet();
+                    final DataSet ds = Main.getLayerManager().getEditDataSet();
                     if (downloaded != null) {
                         GuiHelper.runInEDT(new Runnable() {
