Index: /applications/editors/josm/plugins/waydownloader/build.xml
===================================================================
--- /applications/editors/josm/plugins/waydownloader/build.xml	(revision 18299)
+++ /applications/editors/josm/plugins/waydownloader/build.xml	(revision 18300)
@@ -91,5 +91,5 @@
                 <attribute name="Plugin-Description" value="Easy downloading along a long set of interconnected ways"/>
                 <attribute name="Plugin-Link" value="http://wiki.openstreetmap.org/wiki/JOSM/Plugins/WayDownloaderPlugin"/>
-                <attribute name="Plugin-Mainversion" value="2217"/>
+                <attribute name="Plugin-Mainversion" value="2327"/>
                 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
             </manifest>
Index: /applications/editors/josm/plugins/waydownloader/src/org/openstreetmap/josm/plugins/waydownloader/WayDownloaderPlugin.java
===================================================================
--- /applications/editors/josm/plugins/waydownloader/src/org/openstreetmap/josm/plugins/waydownloader/WayDownloaderPlugin.java	(revision 18299)
+++ /applications/editors/josm/plugins/waydownloader/src/org/openstreetmap/josm/plugins/waydownloader/WayDownloaderPlugin.java	(revision 18300)
@@ -8,4 +8,5 @@
 import java.util.Collection;
 import java.util.LinkedList;
+import java.util.concurrent.Future;
 
 import javax.swing.JOptionPane;
@@ -100,11 +101,30 @@
                         double lonbuffer=0.0005;
                         DownloadOsmTask downloadTask = new DownloadOsmTask();
-                        downloadTask.download( null,
-                                               selectedNode.getCoor().lat()-latbuffer,
-                                               selectedNode.getCoor().lon()-lonbuffer,
-                                               selectedNode.getCoor().lat()+latbuffer,
-                                               selectedNode.getCoor().lon()+lonbuffer,
-                                               new PleaseWaitProgressMonitor());
-
+                        final PleaseWaitProgressMonitor monitor = new PleaseWaitProgressMonitor();
+                        final Future<?> future = downloadTask.download( 
+                        		false /* no new layer */,
+                        		new Bounds(
+                        				selectedNode.getCoor().lat()- latbuffer, 
+                        				selectedNode.getCoor().lon()- lonbuffer, 
+                        				selectedNode.getCoor().lat()+ latbuffer, 
+                        				selectedNode.getCoor().lon()+ lonbuffer
+                        		), 
+                        		monitor
+                        );
+                        // schedule closing of the progress monitor after the download
+                        // job has finished
+                        Main.worker.submit(
+                                new Runnable() {
+                                    public void run() {
+                                        try {
+                                            future.get();
+                                        } catch(Exception e) {
+                                            e.printStackTrace();
+                                            return;
+                                        }
+                                        monitor.close();
+                                    }
+                                }
+                        );
                         //The download is scheduled to be executed.
                         //Now schedule the run() method (below) to be executed once that's completed.
@@ -238,8 +258,8 @@
             Bounds bounds = datasource.bounds;
 
-            if (node.getCoor().lat()>bounds.min.lat() &&
-                node.getCoor().lat()<bounds.max.lat() &&
-                node.getCoor().lon()>bounds.min.lon() &&
-                node.getCoor().lon()<bounds.max.lon()) {
+            if (node.getCoor().lat()>bounds.getMin().lat() &&
+                node.getCoor().lat()<bounds.getMax().lat() &&
+                node.getCoor().lon()>bounds.getMin().lon() &&
+                node.getCoor().lon()<bounds.getMax().lon()) {
                 return true;
             }
