Index: /applications/editors/josm/plugins/pt_assistant/build.xml
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/build.xml	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/build.xml	(revision 33571)
@@ -5,5 +5,5 @@
   <property name="commit.message" value="Commit message"/>
   <!-- enter the *lowest JOSM version this plugin is currently compatible with -->
-  <property name="plugin.main.version" value="10580"/>
+  <property name="plugin.main.version" value="12671"/>
 
   <property name="plugin.author" value="Darya Golovko darya0705@gmail.com"/>
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/PTAssistantPlugin.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/PTAssistantPlugin.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/PTAssistantPlugin.java	(revision 33571)
@@ -9,9 +9,9 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.validation.OsmValidator;
 import org.openstreetmap.josm.gui.IconToggleButton;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MapFrame;
@@ -71,9 +71,9 @@
         RepeatLastFixAction repeatLastFixAction = new RepeatLastFixAction();
         EditHighlightedRelationsAction editHighlightedRelationsAction = new EditHighlightedRelationsAction();
-        repeatLastFixMenu = MainMenu.add(Main.main.menu.toolsMenu, repeatLastFixAction);
-        editHighlightedRelationsMenu = MainMenu.add(Main.main.menu.toolsMenu, editHighlightedRelationsAction);
-        MainMenu.add(Main.main.menu.toolsMenu, new SplitRoundaboutAction());
-        MainMenu.add(Main.main.menu.toolsMenu, new SortPTRouteMembersAction());
-        MainMenu.add(Main.main.menu.toolsMenu, new CreatePlatformNodeAction());
+        repeatLastFixMenu = MainMenu.add(MainApplication.getMenu().toolsMenu, repeatLastFixAction);
+        editHighlightedRelationsMenu = MainMenu.add(MainApplication.getMenu().toolsMenu, editHighlightedRelationsAction);
+        MainMenu.add(MainApplication.getMenu().toolsMenu, new SplitRoundaboutAction());
+        MainMenu.add(MainApplication.getMenu().toolsMenu, new SortPTRouteMembersAction());
+        MainMenu.add(MainApplication.getMenu().toolsMenu, new CreatePlatformNodeAction());
     }
 
@@ -86,6 +86,6 @@
             repeatLastFixMenu.setEnabled(false);
             editHighlightedRelationsMenu.setEnabled(false);
-            Main.map.addMapMode(new IconToggleButton(new AddStopPositionAction()));
-            Main.map.addMapMode(new IconToggleButton(new EdgeSelectionAction()));
+            MainApplication.getMap().addMapMode(new IconToggleButton(new AddStopPositionAction()));
+            MainApplication.getMap().addMapMode(new IconToggleButton(new EdgeSelectionAction()));
         } else if (oldFrame != null && newFrame == null) {
             repeatLastFixMenu.setEnabled(false);
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/AddStopPositionAction.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/AddStopPositionAction.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/AddStopPositionAction.java	(revision 33571)
@@ -16,5 +16,4 @@
 import java.util.Set;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JoinNodeWayAction;
 import org.openstreetmap.josm.actions.SplitWayAction;
@@ -32,4 +31,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.plugins.pt_assistant.data.PTStop;
 import org.openstreetmap.josm.plugins.pt_assistant.utils.RouteUtils;
@@ -77,6 +77,6 @@
     public void enterMode() {
         super.enterMode();
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MainApplication.getMap().mapView.addMouseListener(this);
+        MainApplication.getMap().mapView.addMouseMotionListener(this);
     }
 
@@ -84,6 +84,6 @@
     public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
+        MainApplication.getMap().mapView.removeMouseListener(this);
+        MainApplication.getMap().mapView.removeMouseMotionListener(this);
     }
 
@@ -96,5 +96,5 @@
         Cursor newCurs = getCursor();
 
-        Node n = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isUsable);
+        Node n = MainApplication.getMap().mapView.getNearestNode(e.getPoint(), OsmPrimitive::isUsable);
         if (n != null) {
             newHighlights.add(n);
@@ -102,5 +102,5 @@
         } else {
             List<WaySegment> wss =
-                    Main.map.mapView.getNearestWaySegments(e.getPoint(), OsmPrimitive::isSelectable);
+                MainApplication.getMap().mapView.getNearestWaySegments(e.getPoint(), OsmPrimitive::isSelectable);
 
             if (!wss.isEmpty()) {
@@ -112,5 +112,5 @@
         }
 
-        Main.map.mapView.setCursor(newCurs);
+        MainApplication.getMap().mapView.setCursor(newCurs);
         updateHighlights();
     }
@@ -123,8 +123,8 @@
 
         //check if the user as selected an existing node, or a new one
-        Node n = Main.map.mapView.getNearestNode(e.getPoint(), OsmPrimitive::isUsable);
+        Node n = MainApplication.getMap().mapView.getNearestNode(e.getPoint(), OsmPrimitive::isUsable);
         if (n == null) {
             newNode = true;
-            newStopPos = new Node(Main.map.mapView.getLatLon(e.getX(), e.getY()));
+            newStopPos = new Node(MainApplication.getMap().mapView.getLatLon(e.getX(), e.getY()));
         } else {
             newStopPos = new Node(n);
@@ -136,11 +136,11 @@
 
         if (newNode) {
-            Main.main.undoRedo.add(new AddCommand(newStopPos));
+            MainApplication.undoRedo.add(new AddCommand(newStopPos));
         } else {
-            Main.main.undoRedo.add(new ChangeCommand(n, newStopPos));
+            MainApplication.undoRedo.add(new ChangeCommand(n, newStopPos));
             newStopPos = n;
         }
 
-        Main.getLayerManager().getEditLayer().data.setSelected(newStopPos);
+        MainApplication.getLayerManager().getEditLayer().data.setSelected(newStopPos);
 
         //join the node to the way only if the node is new
@@ -163,5 +163,5 @@
         if (result == null) //if the way is already split, return
             return;
-        Main.main.undoRedo.add(result.getCommand());
+        MainApplication.undoRedo.add(result.getCommand());
 
         List<Command> cmds = new ArrayList<>();
@@ -174,5 +174,5 @@
             cmds.add(new ChangeCommand(route.getKey(), r));
         }
-        Main.main.undoRedo.add(new SequenceCommand("Update PT Relations", cmds));
+        MainApplication.undoRedo.add(new SequenceCommand("Update PT Relations", cmds));
     }
 
@@ -263,5 +263,5 @@
         }
 
-        Main.getLayerManager().getEditLayer().invalidate();
+        MainApplication.getLayerManager().getEditLayer().invalidate();
 
         oldHighlights.clear();
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/CreatePlatformNodeAction.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/CreatePlatformNodeAction.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/CreatePlatformNodeAction.java	(revision 33571)
@@ -13,5 +13,4 @@
 import java.util.TreeSet;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.command.AddCommand;
@@ -25,5 +24,7 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.validation.routines.RegexValidator;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.UserCancelException;
 
@@ -78,7 +79,7 @@
         SortedSet<String> refs = new TreeSet<>();
 
-        Main.main.undoRedo.add(new AddCommand(dummy1));
-        Main.main.undoRedo.add(new AddCommand(dummy2));
-        Main.main.undoRedo.add(new AddCommand(dummy3));
+        MainApplication.undoRedo.add(new AddCommand(dummy1));
+        MainApplication.undoRedo.add(new AddCommand(dummy2));
+        MainApplication.undoRedo.add(new AddCommand(dummy3));
 
         refs.addAll(populateMap(stopPositionNode));
@@ -113,11 +114,11 @@
             List<Command> cmds = CombinePrimitiveResolverDialog.launchIfNecessary(
                     tagColl, prims, Collections.singleton(platformNode));
-            Main.main.undoRedo.add(new SequenceCommand("merging", cmds));
+            MainApplication.undoRedo.add(new SequenceCommand("merging", cmds));
         } catch (UserCancelException ex) {
-            Main.trace(ex);
+            Logging.trace(ex);
         } finally {
-            Main.main.undoRedo.add(new DeleteCommand(dummy1));
-            Main.main.undoRedo.add(new DeleteCommand(dummy2));
-            Main.main.undoRedo.add(new DeleteCommand(dummy3));
+            MainApplication.undoRedo.add(new DeleteCommand(dummy1));
+            MainApplication.undoRedo.add(new DeleteCommand(dummy2));
+            MainApplication.undoRedo.add(new DeleteCommand(dummy3));
         }
     }
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/EdgeSelectionAction.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/EdgeSelectionAction.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/EdgeSelectionAction.java	(revision 33571)
@@ -13,5 +13,4 @@
 import java.util.stream.Collectors;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
@@ -20,4 +19,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.RelationSorter;
 import org.openstreetmap.josm.plugins.pt_assistant.utils.RouteUtils;
@@ -137,6 +137,6 @@
     public void mouseClicked(MouseEvent e) {
 
-        DataSet ds = Main.getLayerManager().getEditLayer().data;
-        Way initial = Main.map.mapView.getNearestWay(e.getPoint(), OsmPrimitive::isUsable);
+        DataSet ds = MainApplication.getLayerManager().getEditLayer().data;
+        Way initial = MainApplication.getMap().mapView.getNearestWay(e.getPoint(), OsmPrimitive::isUsable);
         if (initial != null) {
             List<Way> edge = getEdgeFromWay(initial, getModeOfTravel());
@@ -159,9 +159,9 @@
         highlighted.clear();
 
-        Way initial = Main.map.mapView.getNearestWay(e.getPoint(), OsmPrimitive::isUsable);
+        Way initial = MainApplication.getMap().mapView.getNearestWay(e.getPoint(), OsmPrimitive::isUsable);
         if (initial == null) {
-            Main.map.mapView.setCursor(selectionCursor);
+            MainApplication.getMap().mapView.setCursor(selectionCursor);
         } else {
-            Main.map.mapView.setCursor(waySelectCursor);
+            MainApplication.getMap().mapView.setCursor(waySelectCursor);
             highlighted.addAll(getEdgeFromWay(initial, getModeOfTravel()));
         }
@@ -175,6 +175,6 @@
     public void enterMode() {
         super.enterMode();
-        Main.map.mapView.addMouseListener(this);
-        Main.map.mapView.addMouseMotionListener(this);
+        MainApplication.getMap().mapView.addMouseListener(this);
+        MainApplication.getMap().mapView.addMouseMotionListener(this);
     }
 
@@ -182,6 +182,6 @@
     public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
-        Main.map.mapView.removeMouseMotionListener(this);
+        MainApplication.getMap().mapView.removeMouseListener(this);
+        MainApplication.getMap().mapView.removeMouseMotionListener(this);
     }
 }
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/EditHighlightedRelationsAction.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/EditHighlightedRelationsAction.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/EditHighlightedRelationsAction.java	(revision 33571)
@@ -7,7 +7,7 @@
 import java.awt.event.KeyEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.plugins.pt_assistant.PTAssistantPlugin;
@@ -41,5 +41,5 @@
         for (Relation relation : PTAssistantPlugin.getHighlightedRelations()) {
             RelationEditor editor = RelationEditor.getEditor(
-                    Main.getLayerManager().getEditLayer(), relation, null);
+                    MainApplication.getLayerManager().getEditLayer(), relation, null);
             editor.setVisible(true);
         }
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/FixTask.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/FixTask.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/FixTask.java	(revision 33571)
@@ -11,7 +11,7 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
@@ -52,5 +52,5 @@
                     @Override
                     public void run() {
-                        Main.main.undoRedo.addNoRedraw(fixCommand);
+                        MainApplication.undoRedo.addNoRedraw(fixCommand);
                     }
                 });
@@ -71,10 +71,5 @@
             monitor.setTicksCount(testErrors.size());
             int i = 0;
-            SwingUtilities.invokeAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    Main.getLayerManager().getEditDataSet().beginUpdate();
-                }
-            });
+            SwingUtilities.invokeAndWait(() -> MainApplication.getLayerManager().getEditDataSet().beginUpdate());
             try {
                 for (TestError error : testErrors) {
@@ -87,25 +82,16 @@
                 }
             } finally {
-                SwingUtilities.invokeAndWait(new Runnable() {
-                    @Override
-                    public void run() {
-                        Main.getLayerManager().getEditDataSet().endUpdate();
-                    }
-                });
+                SwingUtilities.invokeAndWait(() -> MainApplication.getLayerManager().getEditDataSet().endUpdate());
             }
             monitor.subTask(tr("Updating map ..."));
-            SwingUtilities.invokeAndWait(new Runnable() {
-                @Override
-                public void run() {
-                    Main.main.undoRedo.afterAdd();
-                    Main.map.repaint();
-                    // tree.resetErrors();
-                    Main.getLayerManager().getEditDataSet().fireSelectionChanged();
-                }
+            SwingUtilities.invokeAndWait(() -> {
+                MainApplication.undoRedo.afterAdd();
+                MainApplication.getMap().repaint();
+                // tree.resetErrors();
+                MainApplication.getLayerManager().getEditDataSet().fireSelectionChanged();
             });
         } catch (InterruptedException | InvocationTargetException e) {
             // FIXME: signature of realRun should have a generic checked
-            // exception we
-            // could throw here
+            // exception we could throw here
             throw new RuntimeException(e);
         } finally {
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/IncompleteMembersDownloadThread.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/IncompleteMembersDownloadThread.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/IncompleteMembersDownloadThread.java	(revision 33571)
@@ -6,5 +6,4 @@
 import java.util.List;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -12,6 +11,8 @@
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.DownloadPrimitivesWithReferrersTask;
 import org.openstreetmap.josm.plugins.pt_assistant.utils.RouteUtils;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -39,5 +40,5 @@
 
                 // if there are selected routes, try adding them first:
-                for (Relation currentSelectedRelation : Main.getLayerManager().getEditDataSet()
+                for (Relation currentSelectedRelation : MainApplication.getLayerManager().getEditDataSet()
                         .getSelectedRelations()) {
                     if (RouteUtils.isVersionTwoPTRoute(currentSelectedRelation)) {
@@ -49,5 +50,5 @@
                     // add all route relations that are of public_transport
                     // version 2:
-                    Collection<Relation> allRelations = Main.getLayerManager().getEditDataSet().getRelations();
+                    Collection<Relation> allRelations = MainApplication.getLayerManager().getEditDataSet().getRelations();
                     for (Relation currentRelation : allRelations) {
                         if (RouteUtils.isVersionTwoPTRoute(currentRelation)) {
@@ -58,5 +59,5 @@
 
                 // add all stop_positions:
-                Collection<Node> allNodes = Main.getLayerManager().getEditDataSet().getNodes();
+                Collection<Node> allNodes = MainApplication.getLayerManager().getEditDataSet().getNodes();
                 for (Node currentNode : allNodes) {
                     if (currentNode.hasTag("public_transport", "stop_position")) {
@@ -87,5 +88,5 @@
         } catch (InterruptedException e) {
             // do nothing in case the download was interrupted
-            Main.trace(e);
+            Logging.trace(e);
         }
 
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/RepeatLastFixAction.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/RepeatLastFixAction.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/RepeatLastFixAction.java	(revision 33571)
@@ -6,6 +6,6 @@
 import java.awt.event.ActionEvent;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.plugins.pt_assistant.PTAssistantPlugin;
 import org.openstreetmap.josm.plugins.pt_assistant.validation.SegmentChecker;
@@ -36,5 +36,5 @@
     public void actionPerformed(ActionEvent e) {
 
-        if (!isEnabled() || !Main.isDisplayingMapView()) {
+        if (!isEnabled() || !MainApplication.isDisplayingMapView()) {
             return;
         }
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SortPTRouteMembersAction.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SortPTRouteMembersAction.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SortPTRouteMembersAction.java	(revision 33571)
@@ -28,4 +28,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.RelationSorter;
@@ -33,4 +34,5 @@
 import org.openstreetmap.josm.plugins.pt_assistant.utils.RouteUtils;
 import org.openstreetmap.josm.plugins.pt_assistant.utils.StopToWayAssigner;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -64,15 +66,15 @@
 
                     List<Relation> incomplete = Collections.singletonList(rel);
-                    Future<?> future = Main.worker.submit(new DownloadRelationMemberTask(
+                    Future<?> future = MainApplication.worker.submit(new DownloadRelationMemberTask(
                             incomplete,
                             DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(incomplete),
-                            Main.getLayerManager().getEditLayer()));
-
-                        Main.worker.submit(() -> {
+                            MainApplication.getLayerManager().getEditLayer()));
+
+                        MainApplication.worker.submit(() -> {
                             try {
                                 future.get();
                                 continueAfterDownload(rel);
                             } catch (InterruptedException | ExecutionException e1) {
-                                 Main.error(e1);
+                                Logging.error(e1);
                                 return;
                             }
@@ -88,5 +90,5 @@
         Relation newRel = new Relation(rel);
         sortPTRouteMembers(newRel);
-        Main.main.undoRedo.add(new ChangeCommand(rel, newRel));
+        MainApplication.undoRedo.add(new ChangeCommand(rel, newRel));
     }
 
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SplitRoundaboutAction.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SplitRoundaboutAction.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SplitRoundaboutAction.java	(revision 33571)
@@ -36,6 +36,8 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
 import org.openstreetmap.josm.plugins.pt_assistant.utils.RouteUtils;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 
@@ -80,10 +82,10 @@
         Future<?> future = task.download(false, area, null);
 
-        Main.worker.submit(() -> {
+        MainApplication.worker.submit(() -> {
             try {
                 future.get();
                 downloadIncompleteRelations(roundabout);
             } catch (InterruptedException | ExecutionException e1) {
-                 Main.error(e1);
+                Logging.error(e1);
                 return;
             }
@@ -105,5 +107,5 @@
 
         //remove the roundabout from each relation
-        Main.main.undoRedo.add(getRemoveRoundaboutFromRelationsCommand(roundabout));
+        MainApplication.undoRedo.add(getRemoveRoundaboutFromRelationsCommand(roundabout));
 
         //split the roundabout on the designed nodes
@@ -111,10 +113,10 @@
         SplitWayResult result = SplitWayAction.split(getLayerManager().getEditLayer(),
                 roundabout, splitNodes, Collections.emptyList());
-        Main.main.undoRedo.add(result.getCommand());
+        MainApplication.undoRedo.add(result.getCommand());
         Collection<Way> splitWays = result.getNewWays();
         splitWays.add(result.getOriginalWay());
 
         //update the relations.
-        Main.main.undoRedo.add(getUpdateRelationsCommand(savedPositions, splitNodes, splitWays));
+        MainApplication.undoRedo.add(getUpdateRelationsCommand(savedPositions, splitNodes, splitWays));
     }
 
@@ -128,15 +130,15 @@
         }
 
-        Future<?> future = Main.worker.submit(new DownloadRelationMemberTask(
+        Future<?> future = MainApplication.worker.submit(new DownloadRelationMemberTask(
             parents,
             DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(parents),
-            Main.getLayerManager().getEditLayer()));
-
-        Main.worker.submit(() -> {
+            MainApplication.getLayerManager().getEditLayer()));
+
+        MainApplication.worker.submit(() -> {
             try {
                 future.get();
                 continueAfterDownload(roundabout);
             } catch (InterruptedException | ExecutionException e1) {
-                 Main.error(e1);
+                Logging.error(e1);
                 return;
             }
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayer.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayer.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantLayer.java	(revision 33571)
@@ -2,5 +2,4 @@
 package org.openstreetmap.josm.plugins.pt_assistant.gui;
 
-import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.util.ArrayList;
@@ -13,5 +12,4 @@
 import javax.swing.Icon;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.RenameLayerAction;
 import org.openstreetmap.josm.data.Bounds;
@@ -20,4 +18,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
@@ -50,6 +49,6 @@
     public PTAssistantLayer() {
         super("pt_assistant layer");
-        Main.getLayerManager().addLayerChangeListener(this);
-        Main.getLayerManager().addLayer(this);
+        MainApplication.getLayerManager().addLayerChangeListener(this);
+        MainApplication.getLayerManager().addLayer(this);
     }
 
@@ -73,5 +72,5 @@
         fixVariants.clear();
         wayColoring.clear();
-        Main.map.mapView.repaint();
+        MainApplication.getMap().mapView.repaint();
     }
 
@@ -191,12 +190,11 @@
         primitives.clear();
         primitives.add(relation);
-        if (!Main.getLayerManager().containsLayer(this)) {
-            Main.getLayerManager().addLayer(this);
+        if (!MainApplication.getLayerManager().containsLayer(this)) {
+            MainApplication.getLayerManager().addLayer(this);
         }
 
         if (paintVisitor == null) {
-            Graphics g = Main.map.mapView.getGraphics();
-            MapView mv = Main.map.mapView;
-            paintVisitor = new PTAssistantPaintVisitor(g, mv);
+            MapView mv = MainApplication.getMap().mapView;
+            paintVisitor = new PTAssistantPaintVisitor(mv.getGraphics(), mv);
         }
 
@@ -207,5 +205,5 @@
         paintVisitor.visitFixVariants(fixVariants, wayColoring);
 
-        Main.map.mapView.repaint();
+        MainApplication.getMap().mapView.repaint();
     }
 
@@ -228,5 +226,5 @@
             fixVariants.clear();
             wayColoring.clear();
-            Main.map.mapView.repaint();
+            MainApplication.getMap().mapView.repaint();
         }
 
@@ -243,5 +241,5 @@
     @Override
     public synchronized void destroy() {
-        Main.getLayerManager().removeLayerChangeListener(this);
+        MainApplication.getLayerManager().removeLayerChangeListener(this);
         super.destroy();
     }
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/gui/PTAssistantPaintVisitor.java	(revision 33571)
@@ -15,5 +15,4 @@
 import java.util.Map.Entry;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -23,4 +22,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.validation.PaintVisitor;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType;
@@ -29,4 +29,5 @@
 import org.openstreetmap.josm.plugins.pt_assistant.data.PTWay;
 import org.openstreetmap.josm.plugins.pt_assistant.utils.RouteUtils;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Pair;
 
@@ -117,5 +118,5 @@
                 } catch (NullPointerException ex) {
                     // do nothing
-                    Main.trace(ex);
+                    Logging.trace(ex);
                 }
                 stopCount++;
@@ -241,5 +242,5 @@
             } catch (NullPointerException ex) {
                 // do nothing
-                Main.trace(ex);
+                Logging.trace(ex);
             }
 
@@ -430,5 +431,5 @@
      *
      */
-    private class RefTagComparator implements Comparator<String> {
+    private static class RefTagComparator implements Comparator<String> {
 
         @Override
@@ -503,6 +504,6 @@
         int colorIndex = 0;
 
-        double letterX = Main.map.mapView.getBounds().getMinX() + 20;
-        double letterY = Main.map.mapView.getBounds().getMinY() + 100;
+        double letterX = MainApplication.getMap().mapView.getBounds().getMinX() + 20;
+        double letterY = MainApplication.getMap().mapView.getBounds().getMinY() + 100;
 
         for (Entry<Character, List<PTWay>> entry : fixVariants.entrySet()) {
@@ -632,5 +633,5 @@
         } catch (NullPointerException ex) {
             // do nothing
-            Main.trace(ex);
+            Logging.trace(ex);
         }
 
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/Checker.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/Checker.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/Checker.java	(revision 33571)
@@ -8,5 +8,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.command.Command;
@@ -18,4 +17,5 @@
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -146,5 +146,5 @@
         SelectCommand command = new SelectCommand(primitivesToZoom);
 
-        List<OsmDataLayer> listOfLayers = Main.getLayerManager().getLayersOfType(OsmDataLayer.class);
+        List<OsmDataLayer> listOfLayers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class);
         for (OsmDataLayer osmDataLayer : listOfLayers) {
             if (osmDataLayer.data == originalRelation.getDataSet()) {
Index: /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/SegmentChecker.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/SegmentChecker.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/SegmentChecker.java	(revision 33571)
@@ -14,5 +14,4 @@
 import javax.swing.SwingUtilities;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.command.ChangeCommand;
@@ -28,4 +27,5 @@
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.TestError.Builder;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
@@ -879,6 +879,6 @@
 
         // // add the key listener:
-        Main.map.mapView.requestFocus();
-        Main.map.mapView.addKeyListener(new KeyListener() {
+        MainApplication.getMap().mapView.requestFocus();
+        MainApplication.getMap().mapView.addKeyListener(new KeyListener() {
 
             @Override
@@ -892,5 +892,5 @@
                 Character typedKeyUpperCase = typedKey.toString().toUpperCase().toCharArray()[0];
                 if (allowedCharacters.contains(typedKeyUpperCase)) {
-                    Main.map.mapView.removeKeyListener(this);
+                    MainApplication.getMap().mapView.removeKeyListener(this);
                     List<PTWay> selectedFix = test.getFixVariant(typedKeyUpperCase);
                     test.clearFixVariants();
@@ -898,5 +898,5 @@
                 }
                 if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
-                    Main.map.mapView.removeKeyListener(this);
+                    MainApplication.getMap().mapView.removeKeyListener(this);
                     test.clearFixVariants();
                 }
@@ -941,6 +941,6 @@
         modifiedRelation.setMembers(getModifiedRelationMembers(testError, fix));
         ChangeCommand changeCommand = new ChangeCommand(originalRelation, modifiedRelation);
-        Main.main.undoRedo.addNoRedraw(changeCommand);
-        Main.main.undoRedo.afterAdd();
+        MainApplication.undoRedo.addNoRedraw(changeCommand);
+        MainApplication.undoRedo.afterAdd();
         PTRouteSegment wrongSegment = wrongSegments.get(testError);
         wrongSegments.remove(testError);
@@ -957,5 +957,5 @@
         // get layer:
         OsmDataLayer layer = null;
-        List<OsmDataLayer> listOfLayers = Main.getLayerManager().getLayersOfType(OsmDataLayer.class);
+        List<OsmDataLayer> listOfLayers = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class);
         for (OsmDataLayer osmDataLayer : listOfLayers) {
             if (osmDataLayer.data == originalRelation.getDataSet()) {
@@ -1076,6 +1076,6 @@
                 modifiedRelation.setMembers(getModifiedRelationMembers(testError, segment.getPTWays()));
                 ChangeCommand changeCommand = new ChangeCommand(originalRelation, modifiedRelation);
-                Main.main.undoRedo.addNoRedraw(changeCommand);
-                Main.main.undoRedo.afterAdd();
+                MainApplication.undoRedo.addNoRedraw(changeCommand);
+                MainApplication.undoRedo.afterAdd();
                 wrongSegmentsToRemove.add(testError);
             }
@@ -1084,10 +1084,10 @@
         // update the errors displayed in the validator dialog:
         List<TestError> modifiedValidatorTestErrors = new ArrayList<>();
-        for (TestError validatorTestError : Main.map.validatorDialog.tree.getErrors()) {
+        for (TestError validatorTestError : MainApplication.getMap().validatorDialog.tree.getErrors()) {
             if (!wrongSegmentsToRemove.contains(validatorTestError)) {
                 modifiedValidatorTestErrors.add(validatorTestError);
             }
         }
-        Main.map.validatorDialog.tree.setErrors(modifiedValidatorTestErrors);
+        MainApplication.getMap().validatorDialog.tree.setErrors(modifiedValidatorTestErrors);
 
         // update wrong segments:
Index: /applications/editors/josm/plugins/pt_assistant/test/unit/org/openstreetmap/josm/plugins/pt_assistant/ImportUtils.java
===================================================================
--- /applications/editors/josm/plugins/pt_assistant/test/unit/org/openstreetmap/josm/plugins/pt_assistant/ImportUtils.java	(revision 33570)
+++ /applications/editors/josm/plugins/pt_assistant/test/unit/org/openstreetmap/josm/plugins/pt_assistant/ImportUtils.java	(revision 33571)
@@ -8,10 +8,10 @@
 
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.io.importexport.OsmImporter;
+import org.openstreetmap.josm.gui.io.importexport.OsmImporter.OsmImporterData;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.IllegalDataException;
-import org.openstreetmap.josm.io.OsmImporter;
-import org.openstreetmap.josm.io.OsmImporter.OsmImporterData;
 
 /**
