Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryMainDialog.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryMainDialog.java	(revision 31384)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryMainDialog.java	(revision 31385)
@@ -40,5 +40,5 @@
 /**
  * Toggle dialog that shows an image and some buttons.
- * 
+ *
  * @author nokutu
  *
@@ -116,8 +116,20 @@
 
   /**
-   * Downloads the image of the selected MapillaryImage and sets in the
+   * Downloads the full quality picture of the selected MapillaryImage and sets
+   * in the MapillaryImageDisplay object.
+   */
+  public synchronized void updateImage() {
+    updateImage(true);
+  }
+
+  /**
+   * Downloads the picture of the selected MapillaryImage and sets in the
    * MapillaryImageDisplay object.
-   */
-  public synchronized void updateImage() {
+   *
+   * @param fullQuality
+   *          If the full quality picture must be downloaded or just the
+   *          thumbnail.
+   */
+  public synchronized void updateImage(boolean fullQuality) {
     if (!SwingUtilities.isEventDispatchThread()) {
       SwingUtilities.invokeLater(new Runnable() {
@@ -173,9 +185,11 @@
 
         // Downloads the full resolution image.
-        if (imageCache != null)
-          imageCache.cancelOutstandingTasks();
-        imageCache = new MapillaryCache(mapillaryImage.getKey(),
-            MapillaryCache.Type.FULL_IMAGE);
-        imageCache.submit(this, false);
+        if (fullQuality) {
+          if (imageCache != null)
+            imageCache.cancelOutstandingTasks();
+          imageCache = new MapillaryCache(mapillaryImage.getKey(),
+              MapillaryCache.Type.FULL_IMAGE);
+          imageCache.submit(this, false);
+        }
       } else if (image instanceof MapillaryImportedImage) {
         mapillaryImageDisplay.hyperlink.setVisible(false);
@@ -190,4 +204,5 @@
       updateTitle();
     }
+
   }
 
@@ -202,5 +217,5 @@
   /**
    * Sets a new MapillaryImage to be shown.
-   * 
+   *
    * @param image
    */
@@ -244,5 +259,5 @@
   /**
    * Returns the MapillaryImage objects which is being shown.
-   * 
+   *
    * @return
    */
@@ -253,5 +268,5 @@
   /**
    * Action class form the next image button.
-   * 
+   *
    * @author Jorge
    *
@@ -271,5 +286,5 @@
   /**
    * Action class for the previous image button.
-   * 
+   *
    * @author Jorge
    *
@@ -290,5 +305,5 @@
   /**
    * Action class to jump to the image following the red line.
-   * 
+   *
    * @author nokutu
    *
@@ -311,5 +326,5 @@
   /**
    * Action class to jump to the image following the blue line.
-   * 
+   *
    * @author nokutu
    *
@@ -364,5 +379,5 @@
   /**
    * Creates the layout of the dialog.
-   * 
+   *
    * @param data
    *          The content of the dialog
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/mode/SelectMode.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/mode/SelectMode.java	(revision 31384)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/mode/SelectMode.java	(revision 31385)
@@ -39,5 +39,4 @@
 
   public SelectMode() {
-    data = MapillaryData.getInstance();
     record = MapillaryRecord.getInstance();
   }
@@ -49,8 +48,8 @@
       return;
     MapillaryAbstractImage closest = getClosest(e.getPoint());
-    if (Main.map.mapView.getActiveLayer() instanceof OsmDataLayer
-        && closest != null && Main.map.mapMode == Main.map.mapModeSelect) {
+    if (Main.map.mapView.getActiveLayer() instanceof OsmDataLayer && closestTemp != null
+        && Main.map.mapMode == Main.map.mapModeSelect) {
       this.lastClicked = this.closest;
-      MapillaryData.getInstance().setSelectedImage(closest);
+      data.setSelectedImage(closest);
       return;
     } else if (Main.map.mapView.getActiveLayer() != MapillaryLayer
@@ -99,15 +98,13 @@
 
     if (!Main.pref.getBoolean("mapillary.developer"))
-      for (MapillaryAbstractImage img : MapillaryData.getInstance()
-          .getMultiSelectedImages()) {
+      for (MapillaryAbstractImage img : data.getMultiSelectedImages()) {
         if (img instanceof MapillaryImage)
           return;
       }
-    if (MapillaryData.getInstance().getSelectedImage() != null) {
+    if (data.getSelectedImage() != null) {
       if (lastButton == MouseEvent.BUTTON1 && !e.isShiftDown()) {
         LatLon to = Main.map.mapView.getLatLon(e.getX(), e.getY());
         LatLon from = Main.map.mapView.getLatLon(start.getX(), start.getY());
-        for (MapillaryAbstractImage img : MapillaryData.getInstance()
-            .getMultiSelectedImages()) {
+        for (MapillaryAbstractImage img : data.getMultiSelectedImages()) {
 
           img.move(to.getX() - from.getX(), to.getY() - from.getY());
@@ -115,11 +112,8 @@
         Main.map.repaint();
       } else if (lastButton == MouseEvent.BUTTON1 && e.isShiftDown()) {
-        this.closest.turn(Math.toDegrees(Math.atan2((e.getX() - start.x),
-            -(e.getY() - start.y)))
-            - closest.getTempCa());
-        for (MapillaryAbstractImage img : MapillaryData.getInstance()
-            .getMultiSelectedImages()) {
-          img.turn(Math.toDegrees(Math.atan2((e.getX() - start.x),
-              -(e.getY() - start.y))) - closest.getTempCa());
+        this.closest
+            .turn(Math.toDegrees(Math.atan2((e.getX() - start.x), -(e.getY() - start.y))) - closest.getTempCa());
+        for (MapillaryAbstractImage img : data.getMultiSelectedImages()) {
+          img.turn(Math.toDegrees(Math.atan2((e.getX() - start.x), -(e.getY() - start.y))) - closest.getTempCa());
         }
         Main.map.repaint();
@@ -184,17 +178,14 @@
     }
 
-    if (MapillaryData.getInstance().getHighlighted() != closestTemp
-        && closestTemp != null) {
-      MapillaryData.getInstance().setHighlightedImage(closestTemp);
+    if (data.getHighlighted() != closestTemp && closestTemp != null) {
+      data.setHighlightedImage(closestTemp);
       MapillaryMainDialog.getInstance().setImage(closestTemp);
+      MapillaryMainDialog.getInstance().updateImage(false);
+    } else if (data.getHighlighted() != closestTemp && closestTemp == null) {
+      data.setHighlightedImage(null);
+      MapillaryMainDialog.getInstance().setImage(data.getSelectedImage());
       MapillaryMainDialog.getInstance().updateImage();
-    } else if (MapillaryData.getInstance().getHighlighted() != closestTemp
-        && closestTemp == null) {
-      MapillaryData.getInstance().setHighlightedImage(null);
-      MapillaryMainDialog.getInstance().setImage(
-          MapillaryData.getInstance().getSelectedImage());
-      MapillaryMainDialog.getInstance().updateImage();
-    }
-    MapillaryData.getInstance().dataUpdated();
+    }
+    data.dataUpdated();
   }
 
