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 31305)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImportedImage.java	(revision 31306)
@@ -19,5 +19,4 @@
         super(lat, lon, ca);
         this.file = file;
-        System.out.println(datetimeOriginal);
         this.datetimeOriginal = getEpoch(datetimeOriginal, "yyyy/MM/dd hh:mm:ss");
     }
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryMouseAdapter.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryMouseAdapter.java	(revision 31305)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryMouseAdapter.java	(revision 31306)
@@ -125,5 +125,5 @@
 			double dist = clickPoint.distanceSq(imagePoint);
 			if (minDistance > dist
-					&& clickPoint.distance(imagePoint) < snapDistance) {
+					&& clickPoint.distance(imagePoint) < snapDistance && image.isVisible()) {
 				minDistance = dist;
 				closest = image;
@@ -208,5 +208,4 @@
 			Main.map.mapMode.putValue("active", Boolean.FALSE);
 			imageHighlighted = true;
-			System.out.println("1");
 
 		} else if (closestTemp == null
@@ -215,5 +214,4 @@
 			nothingHighlighted = false;
 			Main.map.mapMode.putValue("active", Boolean.TRUE);
-			System.out.println("2");
 
 		} else if (imageHighlighted && !nothingHighlighted
@@ -221,5 +219,4 @@
 				&& Main.map.mapView.getEditLayer().data != null
 				&& Main.map.mapView.getActiveLayer() instanceof OsmDataLayer) {
-			System.out.println("3");
 
 			for (OsmPrimitive primivitive : Main.map.mapView.getEditLayer().data
@@ -231,6 +228,4 @@
 		}
 
-		// TODO check if it is possible to do this while the OSM data layer is
-		// selected.
 		if (MapillaryData.getInstance().getHoveredImage() != closestTemp
 				&& closestTemp != null) {
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 31305)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/cache/MapillaryCache.java	(revision 31306)
@@ -11,59 +11,59 @@
 
 public class MapillaryCache extends
-        JCSCachedTileLoaderJob<String, BufferedImageCacheEntry> {
+		JCSCachedTileLoaderJob<String, BufferedImageCacheEntry> {
 
-    private volatile URL url;
-    private volatile String key;
+	private volatile URL url;
+	private volatile String key;
 
-    public static enum Type {
-        FULL_IMAGE, THUMBNAIL
-    }
+	public static enum Type {
+		FULL_IMAGE, THUMBNAIL
+	}
 
-    public MapillaryCache(String key, Type type) {
-        super(MapillaryPlugin.CACHE, 50000, 50000,
-                new HashMap<String, String>());
-        this.key = key;
-        try {
-            if (type == Type.FULL_IMAGE) {
-                url = new URL("https://d1cuyjsrcm0gby.cloudfront.net/" + key
-                        + "/thumb-2048.jpg");
-                this.key += ".FULL_IMAGE";
+	public MapillaryCache(String key, Type type) {
+		super(MapillaryPlugin.CACHE, 50000, 50000,
+				new HashMap<String, String>());
+		this.key = key;
+		try {
+			if (type == Type.FULL_IMAGE) {
+				url = new URL("https://d1cuyjsrcm0gby.cloudfront.net/" + key
+						+ "/thumb-2048.jpg");
+				this.key += ".FULL_IMAGE";
 
-            } else if (type == Type.THUMBNAIL) {
-                url = new URL("https://d1cuyjsrcm0gby.cloudfront.net/" + key
-                        + "/thumb-320.jpg");
-                this.key += ".THUMBNAIL";
-            }
-        } catch (MalformedURLException e) {
-            Main.error(e);
-        }
-    }
+			} else if (type == Type.THUMBNAIL) {
+				url = new URL("https://d1cuyjsrcm0gby.cloudfront.net/" + key
+						+ "/thumb-320.jpg");
+				this.key += ".THUMBNAIL";
+			}
+		} catch (MalformedURLException e) {
+			Main.error(e);
+		}
+	}
 
-    @Override
-    public String getCacheKey() {
-        return key;
-    }
+	@Override
+	public String getCacheKey() {
+		return key;
+	}
 
-    @Override
-    public URL getUrl() {
-        return url;
-    }
+	@Override
+	public URL getUrl() {
+		return url;
+	}
 
-    @Override
-    protected BufferedImageCacheEntry createCacheEntry(byte[] content) {
-        return new BufferedImageCacheEntry(content);
-    }
+	@Override
+	protected BufferedImageCacheEntry createCacheEntry(byte[] content) {
+		return new BufferedImageCacheEntry(content);
+	}
 
-    @Override
-    protected boolean isObjectLoadable() {
-        if (cacheData == null)
-            return false;
-        byte[] content = cacheData.getContent();
-        return content != null && content.length > 0;
-    }
+	@Override
+	protected boolean isObjectLoadable() {
+		if (cacheData == null)
+			return false;
+		byte[] content = cacheData.getContent();
+		return content != null && content.length > 0;
+	}
 
-    // @Override
-    protected boolean handleNotFound() {
-        return false;
-    }
+	// @Override
+	protected boolean handleNotFound() {
+		return false;
+	}
 }
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryDownloader.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryDownloader.java	(revision 31305)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryDownloader.java	(revision 31306)
@@ -50,5 +50,5 @@
 
         try {
-            Main.info("MapillaryPlugin GET " + url2);
+            Main.info("GET " + url2 + " (Mapillary plugin)");
             Main.worker.submit(new MapillarySquareDownloadManagerThread(url1,
                     url2, url3));
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 31305)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadManagerThread.java	(revision 31306)
@@ -9,4 +9,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
+import org.openstreetmap.josm.plugins.mapillary.gui.MapillaryFilterDialog;
 
 /**
@@ -49,4 +50,5 @@
             Main.map.statusLine.setHelpText(tr("No images found"));
         MapillaryData.getInstance().dataUpdated();
+        MapillaryFilterDialog.getInstance().refresh();
     }
 
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterChooseSigns.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterChooseSigns.java	(revision 31305)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterChooseSigns.java	(revision 31306)
@@ -20,4 +20,6 @@
     public final JCheckBox roundabout = new JCheckBox();
     public final JCheckBox access = new JCheckBox();
+    public final JCheckBox intersection = new JCheckBox();
+    public final JCheckBox direction = new JCheckBox();
 
     private static MapillaryFilterChooseSigns INSTANCE;
@@ -29,4 +31,6 @@
     	roundabout.setSelected(true);
     	access.setSelected(true);
+    	intersection.setSelected(true);
+    	direction.setSelected(true);
 
     	
@@ -73,8 +77,26 @@
         JLabel noEntryLabel = new JLabel(tr("No entry"));
         noEntryLabel.setIcon(new ImageProvider(
-                "styles/standard/vehicle/restriction/access.png").get());
+                "no_entry.png").get());
         noEntryPanel.add(noEntryLabel);
         noEntryPanel.add(access);
         this.add(noEntryPanel);
+        
+        // Danger intersection
+        JPanel intersectionPanel = new JPanel();
+        JLabel intersectionLabel = new JLabel(tr("Intersection danger"));
+        intersectionLabel.setIcon(new ImageProvider(
+                "intersection_danger.png").get());
+        intersectionPanel.add(intersectionLabel);
+        intersectionPanel.add(intersection);
+        this.add(intersectionPanel);
+        
+        // Mandatory direction
+        JPanel directionPanel = new JPanel();
+        JLabel directionLabel = new JLabel(tr("Mandatory direction (any)"));
+        directionLabel.setIcon(new ImageProvider(
+                "/home/nokutu/josm/core/images/styles/standard/vehicle/restriction/turn_restrictions/only_straight_on.png").get());
+        directionPanel.add(directionLabel);
+        directionPanel.add(direction);
+        this.add(directionPanel);
     }
 
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java	(revision 31305)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java	(revision 31306)
@@ -51,5 +51,6 @@
 
 	private final JCheckBox imported = new JCheckBox("Imported images");
-	private final JCheckBox downloaded = new JCheckBox(new downloadCheckBoxAction());
+	private final JCheckBox downloaded = new JCheckBox(
+			new downloadCheckBoxAction());
 	private final JCheckBox onlySigns = new JCheckBox(new OnlySignsAction());
 	private final JComboBox<String> time;
@@ -62,4 +63,13 @@
 	public final MapillaryFilterChooseSigns signFilter = MapillaryFilterChooseSigns
 			.getInstance();
+
+	private final String[] SIGN_TAGS = { "prohibitory_speed_limit",
+			"priority_stop", "other_give_way", "mandatory_roundabout",
+			"other_no_entry", "danger_intersection", "mandatory_go",
+			"mandatory_keep" };
+	private final JCheckBox[] SIGN_CHECKBOXES = { signFilter.maxspeed,
+			signFilter.stop, signFilter.giveWay, signFilter.roundabout,
+			signFilter.access, signFilter.intersection, signFilter.direction,
+			signFilter.direction };
 
 	public MapillaryFilterDialog() {
@@ -70,5 +80,4 @@
 						Shortcut.NONE), 200);
 
- 
 		signChooser.setEnabled(false);
 		JPanel signChooserPanel = new JPanel();
@@ -188,24 +197,13 @@
 
 	private boolean checkSigns(MapillaryImage img) {
-		// TODO move strings into an arraylist
-		if (checkSign(img, signFilter.maxspeed, "prohibitory_speed_limit"))
-			return true;
-		
-		if (checkSign(img, signFilter.stop, "priority_stop"))
-			return true;
-		
-		if (checkSign(img, signFilter.giveWay, "other_give_way"))
-			return true;
-		
-		if (checkSign(img, signFilter.roundabout, "mandatory_roundabout"))
-			return true;
-		
-		if (checkSign(img, signFilter.access, "other_no_entry"))
-			return true;
-
+		for (int i = 0; i < SIGN_TAGS.length; i++) {
+			if (checkSign(img, SIGN_CHECKBOXES[i], SIGN_TAGS[i]))
+				return true;
+		}
 		return false;
 	}
-	
-	private boolean checkSign(MapillaryImage img, JCheckBox signCheckBox, String singString) {
+
+	private boolean checkSign(MapillaryImage img, JCheckBox signCheckBox,
+			String singString) {
 		boolean contains = false;
 		for (String sign : img.getSigns()) {
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 31305)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryToggleDialog.java	(revision 31306)
@@ -298,11 +298,11 @@
 	 */
 	@Override
-	public void loadingFinished(CacheEntry data,
-			CacheEntryAttributes attributes, LoadResult result) {
+	public void loadingFinished(final CacheEntry data,
+			final CacheEntryAttributes attributes, final LoadResult result) {
 		if (!SwingUtilities.isEventDispatchThread()) {
 			SwingUtilities.invokeLater(new Runnable() {
 				@Override
 				public void run() {
-					updateImage();
+					loadingFinished(data, attributes, result);
 				}
 			});
