Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryAbstractImage.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryAbstractImage.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryAbstractImage.java	(revision 31256)
@@ -103,15 +103,3 @@
 		return tempCa;
 	}
-	
-	@Override
-	public boolean equals(Object object) {
-		if (object instanceof MapillaryAbstractImage)
-			return this.getLatLon().equalsEpsilon(((MapillaryAbstractImage) object).getLatLon());
-		return false;
-	}
-	
-	@Override
-	public int hashCode() {
-		return this.getLatLon().hashCode();
-	}
 }
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImage.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImage.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImage.java	(revision 31256)
@@ -1,4 +1,3 @@
 package org.openstreetmap.josm.plugins.mapillary;
-
 
 /**
@@ -88,3 +87,15 @@
 		return this.getSequence().previous(this);
 	}
+
+	@Override
+	public boolean equals(Object object) {
+		if (object instanceof MapillaryImage)
+			return this.key.equals(((MapillaryImage) object).getKey());
+		return false;
+	}
+
+	@Override
+	public int hashCode() {
+		return this.key.hashCode();
+	}
 }
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImportedImage.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImportedImage.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImportedImage.java	(revision 31256)
@@ -9,13 +9,25 @@
 public class MapillaryImportedImage extends MapillaryAbstractImage {
 
-	private File file;
-	
+	protected File file;
+
 	public MapillaryImportedImage(double lat, double lon, double ca, File file) {
 		super(lat, lon, ca);
 		this.file = file;
 	}
-	
+
 	public BufferedImage getImage() throws IOException {
 		return ImageIO.read(file);
 	}
+
+	@Override
+	public boolean equals(Object object) {
+		if (object instanceof MapillaryImportedImage)
+			return this.file.equals(((MapillaryImportedImage) object).file);
+		return false;
+	}
+
+	@Override
+	public int hashCode() {
+		return this.file.hashCode();
+	}
 }
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java	(revision 31256)
@@ -300,5 +300,5 @@
 		LatLon selectedCoords = mapillaryData.getSelectedImage().getLatLon();
 		for (MapillaryAbstractImage imagePrev : mapillaryData.getImages()) {
-			if (!(imagePrev instanceof MapillaryImportedImage))
+			if (!(imagePrev instanceof MapillaryImage))
 				continue;
 			MapillaryImage image = (MapillaryImage) imagePrev;
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 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillarySequence.java	(revision 31256)
@@ -22,5 +22,4 @@
 	}
 
-
 	/**
 	 * Returns all MapillaryImages objects contained by this object.
@@ -31,5 +30,4 @@
 		return this.images;
 	}
-	
 
 	public int getCreatedAt() {
@@ -45,5 +43,5 @@
 		this.images.add(image);
 	}
-	
+
 	public String getKey() {
 		return this.key;
@@ -56,7 +54,6 @@
 	 */
 	public synchronized void add(List<MapillaryImage> images) {
-		for (MapillaryImage image : images) {
+		for (MapillaryImage image : images)
 			add(image);
-		}
 	}
 
@@ -80,7 +77,7 @@
 			throw new IllegalArgumentException();
 		int i = images.indexOf(image);
-		if (i == images.size() - 1) {
+		if (i == images.size() - 1)
 			return null;
-		} else
+		else
 			return images.get(i + 1);
 	}
@@ -96,7 +93,7 @@
 			throw new IllegalArgumentException();
 		int i = images.indexOf(image);
-		if (i == 0) {
+		if (i == 0)
 			return null;
-		} else
+		else
 			return images.get(i - 1);
 	}
@@ -116,5 +113,5 @@
 				- this.images.indexOf(image2));
 	}
-	
+
 	@Override
 	public boolean equals(Object obj) {
@@ -123,5 +120,5 @@
 		return false;
 	}
-	
+
 	@Override
 	public int hashCode() {
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/actions/MapillaryImportAction.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/actions/MapillaryImportAction.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/actions/MapillaryImportAction.java	(revision 31256)
@@ -30,4 +30,6 @@
 
 	public JFileChooser chooser;
+
+	private int noTagsPics = 0;
 
 	public MapillaryImportAction() {
@@ -69,6 +71,6 @@
 							Main.error(ex);
 						}
-					}
-					else if (file.getPath().substring(file.getPath().length() - 4)
+					} else if (file.getPath()
+							.substring(file.getPath().length() - 4)
 							.equals(".png")) {
 						readPNG(file);
@@ -97,11 +99,11 @@
 			double lonValue = 0;
 			double caValue = 0;
-			if (lat.getValue() instanceof RationalNumber[])
+			if (lat != null && lat.getValue() instanceof RationalNumber[])
 				latValue = DegMinSecToDouble((RationalNumber[]) lat.getValue(),
 						lat_ref.getValue().toString());
-			if (lon.getValue() instanceof RationalNumber[])
+			if (lon != null && lon.getValue() instanceof RationalNumber[])
 				lonValue = DegMinSecToDouble((RationalNumber[]) lon.getValue(),
 						lon_ref.getValue().toString());
-			if (ca.getValue() instanceof RationalNumber)
+			if (ca != null && ca.getValue() instanceof RationalNumber)
 				caValue = ((RationalNumber) ca.getValue()).doubleValue();
 			if (lat_ref.getValue().toString().equals("S"))
@@ -114,19 +116,25 @@
 								file));
 			} else {
-				LatLon pos = Main.map.mapView.getProjection().eastNorth2latlon(
-						Main.map.mapView.getCenter());
-				MapillaryData.getInstance().add(
-						new MapillaryImportedImage(pos.lat(), pos.lon(), 0,
-								file));
+				readNoTags(file);
 			}
 		}
 	}
-	
-	private void readPNG(File file) {
+
+	private void readNoTags(File file) {
+		double HORIZONTAL_DISTANCE = 0.0001;
+		double horDev;
+		if (noTagsPics % 2 == 0)
+			horDev = HORIZONTAL_DISTANCE * noTagsPics / 2;
+		else
+			horDev = -HORIZONTAL_DISTANCE * (noTagsPics + 1) / 2;
 		LatLon pos = Main.map.mapView.getProjection().eastNorth2latlon(
 				Main.map.mapView.getCenter());
 		MapillaryData.getInstance().add(
-				new MapillaryImportedImage(pos.lat(), pos.lon(), 0,
-						file));
+				new MapillaryImportedImage(pos.lat(), pos.lon() + horDev, 0, file));
+		noTagsPics++;
+	}
+
+	private void readPNG(File file) {
+		readNoTags(file);
 	}
 
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/commands/CommandMoveImage.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/commands/CommandMoveImage.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/commands/CommandMoveImage.java	(revision 31256)
@@ -1,4 +1,5 @@
 package org.openstreetmap.josm.plugins.mapillary.commands;
 
+import static org.openstreetmap.josm.tools.I18n.trn;
 import java.util.ArrayList;
 import java.util.List;
@@ -41,3 +42,7 @@
 		Main.map.repaint();
 	}
+	
+	public String toString() {
+		return trn("Moved {0} node", "Moved {0} nodes", images.size(), images.size());
+	}
 }
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/commands/CommandTurnImage.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/commands/CommandTurnImage.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/commands/CommandTurnImage.java	(revision 31256)
@@ -1,3 +1,5 @@
 package org.openstreetmap.josm.plugins.mapillary.commands;
+
+import static org.openstreetmap.josm.tools.I18n.trn;
 
 import java.util.ArrayList;
@@ -40,3 +42,6 @@
 	}
 
+	public String toString() {
+		return trn("Turned {0} node", "Moved {0} nodes", images.size(), images.size());
+	}
 }
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportManager.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportManager.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportManager.java	(revision 31256)
@@ -16,4 +16,5 @@
 import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
 import org.openstreetmap.josm.plugins.mapillary.MapillaryImage;
+import org.openstreetmap.josm.plugins.mapillary.MapillaryImportedImage;
 import org.xml.sax.SAXException;
 
@@ -37,5 +38,6 @@
 	String path;
 
-	public MapillaryExportManager(List<MapillaryAbstractImage> images, String path) {
+	public MapillaryExportManager(List<MapillaryAbstractImage> images,
+			String path) {
 		super(tr("Downloading") + "...", new PleaseWaitProgressMonitor(
 				"Exporting Mapillary Images"), true);
@@ -64,25 +66,29 @@
 			if (image instanceof MapillaryImage) {
 				try {
-					ex.execute(new MapillaryExportDownloadThread((MapillaryImage) image, queue,
-							queueImages));
+					ex.execute(new MapillaryExportDownloadThread(
+							(MapillaryImage) image, queue, queueImages));
 				} catch (Exception e) {
 					Main.error(e);
 				}
+			} else if (image instanceof MapillaryImportedImage) {
 				try {
-					// If the queue is full, waits for it to have more space
-					// available before executing anything else.
-					while (ex.getQueue().remainingCapacity() == 0)
-						Thread.sleep(100);
-				} catch (Exception e) {
+					queue.put(((MapillaryImportedImage) image).getImage());
+					queueImages.put((MapillaryImportedImage) image);
+				} catch (InterruptedException e) {
 					Main.error(e);
 				}
 			}
-			else {
-				//TODO
+			try {
+				// If the queue is full, waits for it to have more space
+				// available before executing anything else.
+				while (ex.getQueue().remainingCapacity() == 0)
+					Thread.sleep(100);
+			} catch (Exception e) {
+				Main.error(e);
 			}
 		}
 		try {
 			writer.join();
-		} catch (Exception e) {
+		} catch (InterruptedException e) {
 			Main.error(e);
 		}
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportWriterThread.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportWriterThread.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryExportWriterThread.java	(revision 31256)
@@ -91,9 +91,7 @@
 				Main.error(e);
 			} catch (ImageWriteException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
+				Main.error(e);
 			} catch (ImageReadException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
+				Main.error(e);
 			}
 
@@ -103,4 +101,3 @@
 		}
 	}
-
 }
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySequenceDownloadThread.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySequenceDownloadThread.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySequenceDownloadThread.java	(revision 31256)
@@ -49,7 +49,6 @@
 			JsonObject jsonall = Json.createReader(br).readObject();
 
-			if (!jsonall.getBoolean("more") && !ex.isShutdown()) {
+			if (!jsonall.getBoolean("more") && !ex.isShutdown())
 				ex.shutdown();
-			}
 			JsonArray jsonseq = jsonall.getJsonArray("ss");
 			// At the moment there is a bug with some sequences at Mapillay API,
@@ -72,14 +71,16 @@
 						Main.warn("Mapillary bug at " + url);
 						isSequenceWrong = true;
-					} catch (Exception e) {
-						Main.error(e);
 					}
 				}
 				if (isSequenceWrong)
 					break;
-				MapillarySequence sequence = new MapillarySequence(jsonobj.getString("key"), jsonobj.getJsonNumber("captured_at").intValue());
-				for (MapillaryAbstractImage mimage : MapillaryData.getInstance().getImages())
+				MapillarySequence sequence = new MapillarySequence(
+						jsonobj.getString("key"), jsonobj.getJsonNumber(
+								"captured_at").intValue());
+				for (MapillaryAbstractImage mimage : MapillaryData
+						.getInstance().getImages())
 					if (mimage instanceof MapillaryImage
-							&& ((MapillaryImage) mimage).getSequence().getKey().equals(sequence.getKey()))
+							&& ((MapillaryImage) mimage).getSequence().getKey()
+									.equals(sequence.getKey()))
 						break;
 				int first = -1;
@@ -108,9 +109,11 @@
 					img.setSequence(sequence);
 				}
-				MapillaryData.getInstance().addWithoutUpdate(new ArrayList<MapillaryAbstractImage>(finalImages));
+				MapillaryData.getInstance().addWithoutUpdate(
+						new ArrayList<MapillaryAbstractImage>(finalImages));
 				sequence.add(finalImages);
 			}
 		} catch (IOException e) {
-			Main.error("Error reading the url " + url + " might be a Mapillary problem.");
+			Main.error("Error reading the url " + url
+					+ " might be a Mapillary problem.");
 		}
 	}
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadManagerThread.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadManagerThread.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadManagerThread.java	(revision 31256)
@@ -27,5 +27,6 @@
 	private final Bounds bounds;
 
-	public MapillarySquareDownloadManagerThread(String urlImages, String urlSequences, Bounds bounds) {
+	public MapillarySquareDownloadManagerThread(String urlImages,
+			String urlSequences, Bounds bounds) {
 		this.urlImages = urlImages;
 		this.urlSequences = urlSequences;
@@ -35,5 +36,9 @@
 	public void run() {
 		Main.map.statusLine.setHelpText("Downloading images from Mapillary");
-		downloadSequences();
+		try {
+			downloadSequences();
+		} catch (InterruptedException e) {
+			Main.error(e);
+		}
 		if (MapillaryData.getInstance().getImages().size() > 0)
 			Main.map.statusLine.setHelpText(tr("Total images: ")
@@ -43,25 +48,16 @@
 	}
 
-	public void downloadSequences() {
+	public void downloadSequences() throws InterruptedException {
 		ThreadPoolExecutor ex = new ThreadPoolExecutor(3, 5, 25,
 				TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(5));
 		int page = 0;
 		while (!ex.isShutdown()) {
-			ex.execute(new MapillarySequenceDownloadThread(ex,
-					urlSequences + "&page=" + page + "&limit=1", bounds));
-			try {
-				while (ex.getQueue().remainingCapacity() == 0)
-					Thread.sleep(100);
-			} catch (Exception e) {
-				Main.error(e);
-			}
+			ex.execute(new MapillarySequenceDownloadThread(ex, urlSequences
+					+ "&page=" + page + "&limit=1", bounds));
+			while (ex.getQueue().remainingCapacity() == 0)
+				Thread.sleep(100);
 			page++;
 		}
-		try {
-			while (!ex.awaitTermination(15, TimeUnit.SECONDS)) {
-			}
-		} catch (Exception e) {
-			Main.error(e);
-		}
+		ex.awaitTermination(15, TimeUnit.SECONDS);
 		MapillaryData.getInstance().dataUpdated();
 	}
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadThread.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadThread.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadThread.java	(revision 31256)
@@ -2,4 +2,6 @@
 
 import java.io.BufferedReader;
+import java.io.IOException;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.io.InputStreamReader;
@@ -35,11 +37,9 @@
 	public void run() {
 		try {
-			BufferedReader br;
-			br = new BufferedReader(new InputStreamReader(
+			BufferedReader br = new BufferedReader(new InputStreamReader(
 					new URL(url).openStream()));
 			JsonObject jsonobj = Json.createReader(br).readObject();
-			if (!jsonobj.getBoolean("more")) {
+			if (!jsonobj.getBoolean("more"))
 				ex.shutdownNow();
-			}
 			JsonArray jsonarr = jsonobj.getJsonArray("ims");
 			ArrayList<MapillaryAbstractImage> images = new ArrayList<>();
@@ -57,5 +57,7 @@
 			}
 			MapillaryData.getInstance().add(images);
-		} catch (Exception e) {
+		} catch (MalformedURLException e) {
+			Main.error(e);
+		} catch (IOException e) {
 			Main.error(e);
 		}
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 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/HyperlinkLabel.java	(revision 31256)
@@ -2,4 +2,5 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
+
 import java.awt.Cursor;
 import java.awt.event.ActionEvent;
@@ -14,13 +15,11 @@
 import javax.swing.SwingUtilities;
 
+import org.openstreetmap.josm.Main;
+
 import java.awt.Desktop;
 
 public class HyperlinkLabel extends JLabel implements ActionListener {
 
-	/**
-	 * The normal text set by the user.
-	 */
 	private String text;
-
 	private URL url;
 
@@ -44,10 +43,18 @@
 	}
 
+	/**
+	 * Sets a new URL, just pass the key of the image or null if there is none.
+	 * 
+	 * @param key
+	 */
 	public void setURL(String key) {
+		if (key == null) {
+			this.url = null;
+			return;
+		}
 		try {
 			this.url = new URL("http://www.mapillary.com/map/im/" + key);
 		} catch (MalformedURLException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
+			Main.error(e);
 		}
 	}
@@ -56,5 +63,4 @@
 	 * Returns the text set by the user.
 	 */
-
 	public String getNormalText() {
 		return text;
@@ -64,5 +70,4 @@
 	 * Processes mouse events and responds to clicks.
 	 */
-
 	protected void processMouseEvent(MouseEvent evt) {
 		super.processMouseEvent(evt);
@@ -76,5 +81,4 @@
 	 * when the label is clicked.
 	 */
-
 	public void addActionListener(ActionListener listener) {
 		listenerList.add(ActionListener.class, listener);
@@ -85,5 +89,4 @@
 	 * notifications when the label is clicked.
 	 */
-
 	public void removeActionListener(ActionListener listener) {
 		listenerList.remove(ActionListener.class, listener);
@@ -93,5 +96,4 @@
 	 * Fires an ActionEvent to all interested listeners.
 	 */
-
 	protected void fireActionPerformed(ActionEvent evt) {
 		Object[] listeners = listenerList.getListenerList();
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryExportDialog.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryExportDialog.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryExportDialog.java	(revision 31256)
@@ -28,11 +28,15 @@
 
 	protected JOptionPane optionPane;
-	// Button to export all downloaded images.
+	/** Button to export all downloaded images. */
 	public JRadioButton all;
-	// Button to export all images in the sequence of the selected
-	// MapillaryImage.
+	/**
+	 * Button to export all images in the sequence of the selected
+	 * MapillaryImage.
+	 */
 	public JRadioButton sequence;
-	// Button to export all images belonging to the selected MapillaryImage
-	// objects.
+	/**
+	 * Button to export all images belonging to the selected MapillaryImage
+	 * objects.
+	 */
 	public JRadioButton selected;
 	public ButtonGroup group;
@@ -78,5 +82,4 @@
 		add(path);
 		add(choose);
-
 	}
 
@@ -98,4 +101,3 @@
 		}
 	}
-
 }
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryHistoryDialog.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryHistoryDialog.java	(revision 31256)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryHistoryDialog.java	(revision 31256)
@@ -0,0 +1,13 @@
+package org.openstreetmap.josm.plugins.mapillary.gui;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
+
+public class MapillaryHistoryDialog extends ToggleDialog {
+
+	public MapillaryHistoryDialog() {
+		super(tr("Mapillary history"), "mapillary.png",
+				tr("Open Mapillary history dialog"), null, 200);
+	}
+}
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 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryImageDisplay.java	(revision 31256)
@@ -42,4 +42,5 @@
 	 */
 	private Rectangle visibleRect = null;
+
 	/**
 	 * When a selection is done, the rectangle of the selection (in image
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java	(revision 31256)
@@ -23,5 +23,4 @@
 	@Override
 	public void addGui(PreferenceTabbedPane gui) {
-		// TODO Auto-generated method stub
 		JPanel panel = new JPanel();
 		
@@ -42,5 +41,4 @@
 	@Override
 	public boolean isExpert() {
-		// TODO Auto-generated method stub
 		return false;
 	}
Index: applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryToggleDialog.java
===================================================================
--- applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryToggleDialog.java	(revision 31255)
+++ applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryToggleDialog.java	(revision 31256)
@@ -65,5 +65,4 @@
 		mapillaryImageDisplay = new MapillaryImageDisplay();
 
-		// this.add(mapillaryImageDisplay);
 		blueButton.setForeground(Color.BLUE);
 		redButton.setForeground(Color.RED);
@@ -82,7 +81,6 @@
 
 	public static MapillaryToggleDialog getInstance() {
-		if (INSTANCE == null) {
+		if (INSTANCE == null)
 			INSTANCE = new MapillaryToggleDialog();
-		}
 		return INSTANCE;
 	}
@@ -142,4 +140,5 @@
 					Main.error(e);
 				}
+				mapillaryImageDisplay.hyperlink.setURL(null);
 			}
 		}
@@ -281,5 +280,5 @@
 				}
 			} catch (IOException e) {
-				e.printStackTrace();
+				Main.error(e);
 			}
 		}
@@ -306,7 +305,6 @@
 					FlowLayout.LEFT) : new GridLayout(1, buttons.size()));
 			buttonsPanel.add(buttonRowPanel);
-			for (SideButton button : buttons) {
+			for (SideButton button : buttons)
 				buttonRowPanel.add(button);
-			}
 			if (reverse)
 				top.add(buttonsPanel, BorderLayout.SOUTH);
