Index: src/org/openstreetmap/josm/plugins/tracer/TracerAction.java
===================================================================
--- src/org/openstreetmap/josm/plugins/tracer/TracerAction.java	(revision 19927)
+++ src/org/openstreetmap/josm/plugins/tracer/TracerAction.java	(working copy)
@@ -72,21 +72,21 @@
         final LatLon pos = Main.map.mapView.getLatLon(clickPoint.x, clickPoint.y);
 
         try {
-            PleaseWaitRunnable tracerTask = new PleaseWaitRunnable(tr("Tracing")) {
+            Runnable tracerTask = new Runnable() {
 
                 @Override
-                protected void realRun() throws SAXException {
-                    traceSync(pos, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
+                public void run() {
+                    traceSync(pos, null); //progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)
                 }
 
-                @Override
-                protected void finish() {
-                }
+                //@Override
+                //protected void finish() {
+                //}
 
-                @Override
-                protected void cancel() {
-                    TracerAction.this.cancel();
-                }
+                //@Override
+                //protected void cancel() {
+                //    TracerAction.this.cancel();
+                //}
             };
             Thread executeTraceThread = new Thread(tracerTask);
             executeTraceThread.start();
@@ -100,10 +100,10 @@
         way.put("source", "cuzk:km");
     }
 
-    private void traceSync(LatLon pos, ProgressMonitor progressMonitor) {
+    private void traceSync(   LatLon pos, ProgressMonitor progressMonitor) {
         Collection<Command> commands = new LinkedList<Command>();
 
-        progressMonitor.beginTask(null, 3);
+        //progressMonitor.beginTask(null, 3);
         try {
             ArrayList<LatLon> coordList = server.trace(pos);
 
@@ -128,24 +128,25 @@
             commands.add(new AddCommand(way));
 
             // connect to other buildings
-            if (!ctrl) {
-                commands.add(ConnectWays.connect(way));
-                }
+            synchronized(this){
+               if (!ctrl) {
+                      commands.add(ConnectWays.connect(way));
+               }
 
-            if (!commands.isEmpty()) {
-                   Main.main.undoRedo.add(new SequenceCommand(tr("Tracer building"), commands));
+               if (!commands.isEmpty()) {
+                      Main.main.undoRedo.add(new SequenceCommand(tr("Tracer building"), commands));
 
-                if (shift) {
-                    Main.main.getCurrentDataSet().addSelected(way);
-                } else {
-                    Main.main.getCurrentDataSet().setSelected(way);
-                }
-            } else {
-                System.out.println("Failed");
+                   if (shift) {
+                       Main.main.getCurrentDataSet().addSelected(way);
+                   } else {
+                       Main.main.getCurrentDataSet().setSelected(way);
+                   }
+               } else {
+                   System.out.println("Failed");
+               }
             }
-
         } finally {
-            progressMonitor.finishTask();
+            //progressMonitor.finishTask();
         }
     }
 
