Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java	(revision 31814)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java	(revision 31815)
@@ -187,5 +187,5 @@
    * @return A List object containing all images.
    */
-  public List<MapillaryAbstractImage> getImages() {
+  public synchronized List<MapillaryAbstractImage> getImages() {
     return this.images;
   }
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryPlugin.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryPlugin.java	(revision 31814)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryPlugin.java	(revision 31815)
@@ -59,5 +59,5 @@
 
   /** Cache that stores the pictures the downloaded pictures. */
-  public static CacheAccess<String, BufferedImageCacheEntry> CACHE;
+  public static CacheAccess<String, BufferedImageCacheEntry> cache;
 
   private static final MapillaryDownloadAction downloadAction = new MapillaryDownloadAction();
@@ -125,5 +125,5 @@
 
     try {
-      CACHE = JCSCacheManager.getCache("mapillary", 10, 10000, this.getPluginDir() + "/cache/");
+      cache = JCSCacheManager.getCache("mapillary", 10, 10000, this.getPluginDir() + "/cache/");
     } catch (IOException e) {
       Main.error(e);
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillarySequence.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillarySequence.java	(revision 31814)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillarySequence.java	(revision 31815)
@@ -18,5 +18,5 @@
   private String key;
   /** Epoch time when the sequence was created */
-  private long created_at;
+  private long createdAt;
 
   /**
@@ -33,11 +33,11 @@
    * @param key
    *          The unique identifier of the sequence.
-   * @param created_at
+   * @param createdAt
    *          The date the sequence was created.
    */
-  public MapillarySequence(String key, long created_at) {
+  public MapillarySequence(String key, long createdAt) {
     this.images = new ArrayList<>();
     this.key = key;
-    this.created_at = created_at;
+    this.createdAt = createdAt;
   }
 
@@ -61,5 +61,5 @@
    */
   public long getCreatedAt() {
-    return this.created_at;
+    return this.createdAt;
   }
 
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/cache/MapillaryCache.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/cache/MapillaryCache.java	(revision 31814)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/cache/MapillaryCache.java	(revision 31815)
@@ -44,5 +44,5 @@
    */
   public MapillaryCache(String key, Type type) {
-    super(MapillaryPlugin.CACHE, 50000, 50000, new HashMap<String, String>());
+    super(MapillaryPlugin.cache, 50000, 50000, new HashMap<String, String>());
     String k = null;
     URL u = null;
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/HyperlinkLabel.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/HyperlinkLabel.java	(revision 31814)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/HyperlinkLabel.java	(revision 31815)
@@ -7,5 +7,4 @@
 import java.awt.Cursor;
 import java.awt.Toolkit;
-import java.awt.datatransfer.Clipboard;
 import java.awt.datatransfer.StringSelection;
 import java.awt.event.ActionEvent;
@@ -22,5 +21,4 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.plugins.mapillary.MapillaryImage;
 import org.openstreetmap.josm.plugins.mapillary.utils.MapillaryUtils;
 
@@ -54,6 +52,5 @@
   @Override
   public void setText(String text) {
-    super
-        .setText("<html><font color=\"#0000CF\" size=\"2\">" + text + "</font></html>"); //$NON-NLS-1$ //$NON-NLS-2$
+    super.setText("<html><a style=\"color:#0000CF;font-size:8px\">" + text + "</a></html>"); //$NON-NLS-1$ //$NON-NLS-2$
     this.text = text;
   }
@@ -64,6 +61,7 @@
    * @param key
    *          The key of the image that the hyperlink will point to.
+   * @throws MalformedURLException
    */
-  public void setURL(String key) {
+  public void setURL(String key) throws MalformedURLException {
     this.key = key;
     if (key == null) {
@@ -71,9 +69,5 @@
       return;
     }
-    try {
-      this.url = new URL("http://www.mapillary.com/map/im/" + key);
-    } catch (MalformedURLException e) {
-      Main.error(e);
-    }
+    this.url = new URL("http://www.mapillary.com/map/im/" + key);
   }
 
@@ -98,5 +92,5 @@
             getNormalText()));
       if (e.getButton() == MouseEvent.BUTTON3) {
-        LinkPopUp menu = new LinkPopUp();
+        LinkPopUp menu = new LinkPopUp(key);
         menu.show(e.getComponent(), e.getX(), e.getY());
       }
@@ -118,53 +112,35 @@
     private final JMenuItem edit;
 
-    public LinkPopUp() {
+    public LinkPopUp(final String key) {
       this.copy = new JMenuItem(tr("Copy key"));
-      this.copy.addActionListener(new copyAction());
+      this.copy.addActionListener(new ActionListener() {
+        @Override
+        public void actionPerformed(ActionEvent paramActionEvent) {
+          Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(key), null);
+        }
+      });
       add(this.copy);
 
       this.copyTag = new JMenuItem(tr("Copy key tag"));
-      this.copyTag.addActionListener(new copyTagAction());
+      this.copyTag.addActionListener(new ActionListener() {
+        @Override
+        public void actionPerformed(ActionEvent paramActionEvent) {
+          Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection("mapillary=" + key), null);
+        }
+      });
       add(this.copyTag);
 
       this.edit = new JMenuItem(tr("Edit on website"));
-      this.edit.addActionListener(new editAction());
+      this.edit.addActionListener(new ActionListener() {
+        @Override
+        public void actionPerformed(ActionEvent paramActionEvent) {
+          try {
+            MapillaryUtils.browse(new URL("http://www.mapillary.com/map/e/" + key));
+          } catch (IOException e) {
+            Main.error(e);
+          }
+        }
+      });
       add(this.edit);
-    }
-
-    private class copyAction implements ActionListener {
-
-      @Override
-      public void actionPerformed(ActionEvent arg0) {
-        StringSelection stringSelection = new StringSelection(
-            ((MapillaryImage) MapillaryMainDialog.getInstance().getImage())
-                .getKey());
-        Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
-        clpbrd.setContents(stringSelection, null);
-      }
-    }
-
-    private class copyTagAction implements ActionListener {
-
-      @Override
-      public void actionPerformed(ActionEvent arg0) {
-        StringSelection stringSelection = new StringSelection(
-            "mapillary="
-                + ((MapillaryImage) MapillaryMainDialog.getInstance()
-                    .getImage()).getKey());
-        Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
-        clpbrd.setContents(stringSelection, null);
-      }
-    }
-
-    private class editAction implements ActionListener {
-
-      @Override
-      public void actionPerformed(ActionEvent arg0) {
-        try {
-          MapillaryUtils.browse(new URL("http://www.mapillary.com/map/e/" + HyperlinkLabel.this.key));
-        } catch (IOException e) {
-          Main.error(e);
-        }
-      }
     }
   }
@@ -201,6 +177,5 @@
     for (int i = 0; i < listeners.length; i += 2) {
       if (listeners[i] == ActionListener.class) {
-        ActionListener listener = (ActionListener) listeners[i + 1];
-        listener.actionPerformed(evt);
+        ((ActionListener) listeners[i + 1]).actionPerformed(evt);
       }
     }
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryImageDisplay.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryImageDisplay.java	(revision 31814)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryImageDisplay.java	(revision 31815)
@@ -44,5 +44,5 @@
 
   /** The image currently displayed */
-  private transient BufferedImage image = null;
+  private transient BufferedImage image;
 
   /**
@@ -50,5 +50,5 @@
    * rectangle is calculated each time the zoom is modified
    */
-  private Rectangle visibleRect = null;
+  private Rectangle visibleRect;
 
   /**
@@ -56,5 +56,5 @@
    * coordinates)
    */
-  private Rectangle selectedRect = null;
+  private Rectangle selectedRect;
 
   /** HyperlinkLabel shown in the bottom right corner. */
@@ -63,7 +63,7 @@
   private class ImgDisplayMouseListener implements MouseListener,
       MouseWheelListener, MouseMotionListener {
-    private boolean mouseIsDragging = false;
-    private long lastTimeForMousePoint = 0L;
-    private Point mousePointInImg = null;
+    private boolean mouseIsDragging;
+    private long lastTimeForMousePoint;
+    private Point mousePointInImg;
 
     /**
@@ -302,12 +302,15 @@
     @Override
     public void mouseEntered(MouseEvent e) {
+      // Do nothing, method is enforced by MouseListener
     }
 
     @Override
     public void mouseExited(MouseEvent e) {
+      // Do nothing, method is enforced by MouseListener
     }
 
     @Override
     public void mouseMoved(MouseEvent e) {
+      // Do nothing, method is enforced by MouseListener
     }
 
@@ -449,11 +452,9 @@
    * @return the part of compRect with the same width/height ratio as the image
    */
-  static Rectangle calculateDrawImageRectangle(Rectangle imgRect,
-      Rectangle compRect) {
-    int x, y, w, h;
-    x = 0;
-    y = 0;
-    w = compRect.width;
-    h = compRect.height;
+  static Rectangle calculateDrawImageRectangle(Rectangle imgRect, Rectangle compRect) {
+    int x = 0;
+    int y = 0;
+    int w = compRect.width;
+    int h = compRect.height;
     int wFact = w * imgRect.height;
     int hFact = h * imgRect.width;
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 31814)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryMainDialog.java	(revision 31815)
@@ -15,4 +15,5 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.net.MalformedURLException;
 import java.util.Arrays;
 import java.util.List;
@@ -106,6 +107,5 @@
     createLayout(
         this.mapillaryImageDisplay,
-        Arrays.asList(new SideButton[] { this.blueButton, this.previousButton,
-            this.nextButton, this.redButton }),
+        Arrays.asList(new SideButton[] {this.blueButton, this.previousButton, this.nextButton, this.redButton}),
         Main.pref.getBoolean("mapillary.reverse-buttons"));
     disableAllButtons();
@@ -137,5 +137,5 @@
    * @return The unique instance of the class.
    */
-  public static MapillaryMainDialog getInstance() {
+  public static synchronized MapillaryMainDialog getInstance() {
     if (instance == null)
       instance = new MapillaryMainDialog();
@@ -154,5 +154,5 @@
         createLayout(
             this.mapillaryImageDisplay,
-            Arrays.asList(new SideButton[] { playButton, pauseButton, stopButton }),
+            Arrays.asList(new SideButton[] {playButton, pauseButton, stopButton}),
             Main.pref.getBoolean("mapillary.reverse-buttons"));
         break;
@@ -161,5 +161,5 @@
         createLayout(
             this.mapillaryImageDisplay,
-            Arrays.asList(new SideButton[] { blueButton, previousButton, nextButton, redButton }),
+            Arrays.asList(new SideButton[] {blueButton, previousButton, nextButton, redButton}),
             Main.pref.getBoolean("mapillary.reverse-buttons"));
         break;
@@ -238,5 +238,9 @@
         this.mapillaryImageDisplay.hyperlink.setVisible(true);
         MapillaryImage mapillaryImage = (MapillaryImage) this.image;
-        this.mapillaryImageDisplay.hyperlink.setURL(mapillaryImage.getKey());
+        try {
+          this.mapillaryImageDisplay.hyperlink.setURL(mapillaryImage.getKey());
+        } catch (MalformedURLException e1) {
+          Main.error(e1);
+        }
         // Downloads the thumbnail.
         this.mapillaryImageDisplay.setImage(null);
@@ -265,5 +269,9 @@
       } else if (this.image instanceof MapillaryImportedImage) {
         this.mapillaryImageDisplay.hyperlink.setVisible(false);
-        this.mapillaryImageDisplay.hyperlink.setURL(null);
+        try {
+          this.mapillaryImageDisplay.hyperlink.setURL(null);
+        } catch (MalformedURLException e1) {
+          Main.error(e1);
+        }
         MapillaryImportedImage mapillaryImage = (MapillaryImportedImage) this.image;
         try {
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/MapillaryRecord.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/MapillaryRecord.java	(revision 31814)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/history/MapillaryRecord.java	(revision 31815)
@@ -3,5 +3,4 @@
 
 import java.util.ArrayList;
-import java.util.List;
 
 import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
