Index: /applications/editors/josm/plugins/tracer/build.xml
===================================================================
--- /applications/editors/josm/plugins/tracer/build.xml	(revision 33812)
+++ /applications/editors/josm/plugins/tracer/build.xml	(revision 33813)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="Tracer plugin can load at runtime"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="10580"/>
+    <property name="plugin.main.version" value="12643"/>
     <property name="plugin.canloadatruntime" value="true"/>
 
Index: /applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/ConnectWays.java
===================================================================
--- /applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/ConnectWays.java	(revision 33812)
+++ /applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/ConnectWays.java	(revision 33813)
@@ -8,9 +8,10 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import org.openstreetmap.josm.Main;
+
 import org.openstreetmap.josm.command.ChangeCommand;
 import org.openstreetmap.josm.command.Command;
@@ -19,8 +20,9 @@
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.BBox;
 import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
-import org.openstreetmap.josm.data.osm.BBox;
-import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Pair;
 
@@ -53,5 +55,5 @@
             // bude se node slucovat s jinym?
             double minDistanceSq = MIN_DISTANCE;
-            List<Node> nodes = Main.getLayerManager().getEditDataSet().searchNodes(bbox);
+            List<Node> nodes = MainApplication.getLayerManager().getEditDataSet().searchNodes(bbox);
             Node nearestNode = null;
             for (Node nn : nodes) {
@@ -133,5 +135,5 @@
         // node nebyl slouceny s jinym
         // hledani pripadne blizke usecky, kam bod pridat
-        List<Way> ways = Main.getLayerManager().getEditDataSet().searchWays(bbox);
+        List<Way> ways = MainApplication.getLayerManager().getEditDataSet().searchWays(bbox);
         double minDist = Double.MAX_VALUE;
         Way nearestWay = null;
@@ -190,5 +192,5 @@
             double minDistanceSq = MIN_DISTANCE_SQ;
             //double maxAngle = MAX_ANGLE;
-            List<Node> nodes = Main.getLayerManager().getEditDataSet().searchNodes(new BBox(
+            List<Node> nodes = MainApplication.getLayerManager().getEditDataSet().searchNodes(new BBox(
                 Math.min(n1.getX(), n2.getX()) - minDistanceSq,
                 Math.min(n1.getY(), n2.getY()) - minDistanceSq,
Index: /applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/TracerAction.java
===================================================================
--- /applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/TracerAction.java	(revision 33812)
+++ /applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/TracerAction.java	(revision 33813)
@@ -7,4 +7,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+
 import java.awt.Cursor;
 import java.awt.Point;
@@ -17,4 +18,5 @@
 import java.util.Collection;
 import java.util.LinkedList;
+
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
@@ -23,10 +25,12 @@
 import org.openstreetmap.josm.command.SequenceCommand;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 import org.xml.sax.SAXException;
@@ -41,6 +45,6 @@
     protected TracerServer server = new TracerServer();
 
-    public TracerAction(MapFrame mapFrame) {
-        super(tr("Tracer"), "tracer-sml", tr("Tracer."), Shortcut.registerShortcut("tools:tracer", tr("Tool: {0}", tr("Tracer")), KeyEvent.VK_T, Shortcut.DIRECT), mapFrame, getCursor());
+    public TracerAction() {
+        super(tr("Tracer"), "tracer-sml", tr("Tracer."), Shortcut.registerShortcut("tools:tracer", tr("Tool: {0}", tr("Tracer")), KeyEvent.VK_T, Shortcut.DIRECT), getCursor());
     }
 
@@ -51,6 +55,6 @@
         }
         super.enterMode();
-        Main.map.mapView.setCursor(getCursor());
-        Main.map.mapView.addMouseListener(this);
+        MainApplication.getMap().mapView.setCursor(getCursor());
+        MainApplication.getMap().mapView.addMouseListener(this);
     }
 
@@ -58,5 +62,5 @@
     public void exitMode() {
         super.exitMode();
-        Main.map.mapView.removeMouseListener(this);
+        MainApplication.getMap().mapView.removeMouseListener(this);
     }
 
@@ -70,5 +74,5 @@
          * Positional data
          */
-        final LatLon pos = Main.map.mapView.getLatLon(clickPoint.x, clickPoint.y);
+        final LatLon pos = MainApplication.getMap().mapView.getLatLon(clickPoint.x, clickPoint.y);
 
         try {
@@ -92,5 +96,5 @@
             executeTraceThread.start();
         } catch (Exception e) {
-            e.printStackTrace();
+            Logging.error(e);
         }
     }
@@ -111,4 +115,6 @@
                 return;
             }
+            
+            DataSet ds = MainApplication.getLayerManager().getEditDataSet();
 
             // make nodes a way
@@ -120,5 +126,5 @@
                     firstNode = node;
                 }
-                commands.add(new AddCommand(node));
+                commands.add(new AddCommand(ds, node));
                 way.addNode(node);
             }
@@ -126,5 +132,5 @@
 
             tagBuilding(way);
-            commands.add(new AddCommand(way));
+            commands.add(new AddCommand(ds, way));
 
             // connect to other buildings
@@ -137,7 +143,7 @@
 
                 if (shift) {
-                    Main.getLayerManager().getEditDataSet().addSelected(way);
+                    ds.addSelected(way);
                 } else {
-                    Main.getLayerManager().getEditDataSet().setSelected(way);
+                    ds.setSelected(way);
                 }
             } else {
@@ -168,5 +174,5 @@
     @Override
     public void mousePressed(MouseEvent e) {
-        if (!Main.map.mapView.isActiveLayerDrawable()) {
+        if (!MainApplication.getMap().mapView.isActiveLayerDrawable()) {
             return;
         }
Index: /applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/TracerPlugin.java
===================================================================
--- /applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/TracerPlugin.java	(revision 33812)
+++ /applications/editors/josm/plugins/tracer/src/org/openstreetmap/josm/plugins/tracer/TracerPlugin.java	(revision 33813)
@@ -7,5 +7,5 @@
 package org.openstreetmap.josm.plugins.tracer;
 
-import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.plugins.Plugin;
@@ -16,5 +16,5 @@
     public TracerPlugin(PluginInformation info) {
         super(info);
-        MainMenu.add(Main.main.menu.moreToolsMenu, new TracerAction(Main.map));
+        MainMenu.add(MainApplication.getMenu().moreToolsMenu, new TracerAction());
     }
 
