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 31296)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java	(revision 31297)
@@ -234,7 +234,6 @@
             Main.map.mapView.zoomTo(MapillaryData.getInstance()
                     .getSelectedImage().getLatLon());
-        if (Main.map != null) {
+        if (Main.map != null)
             Main.map.mapView.repaint();
-        }
         fireSelectedImageChanged(oldImage, selectedImage);
     }
@@ -300,3 +299,12 @@
         // DO NOTHING
     }
+
+    /**
+     * Returns the amount of images contained by this object.
+     * 
+     * @return
+     */
+    public int size() {
+        return images.size();
+    }
 }
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 31296)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java	(revision 31297)
@@ -7,4 +7,5 @@
 import org.openstreetmap.josm.plugins.mapillary.cache.MapillaryCache;
 import org.openstreetmap.josm.plugins.mapillary.downloads.MapillaryDownloader;
+import org.openstreetmap.josm.plugins.mapillary.gui.MapillaryFilterDialog;
 import org.openstreetmap.josm.plugins.mapillary.gui.MapillaryToggleDialog;
 import org.openstreetmap.josm.Main;
@@ -62,5 +63,5 @@
     public static MapillaryImage RED;
 
-    private final MapillaryData mapillaryData = MapillaryData.getInstance();
+    private final MapillaryData data = MapillaryData.getInstance();
 
     public List<Bounds> bounds;
@@ -69,5 +70,5 @@
     private MouseAdapter mouseAdapter;
 
-    int highlightPointRadius = Main.pref.getInteger(
+    private int highlightPointRadius = Main.pref.getInteger(
             "mappaint.highlight.radius", 7);
     private int highlightStep = Main.pref.getInteger("mappaint.highlight.step",
@@ -105,5 +106,5 @@
     }
 
-    public void startMouseAdapter() {
+    private void startMouseAdapter() {
         mouseAdapter = new MapillaryMouseAdapter();
     }
@@ -161,5 +162,5 @@
      */
     public MapillaryData getMapillaryData() {
-        return mapillaryData;
+        return data;
     }
 
@@ -171,5 +172,5 @@
         MapillaryToggleDialog.getInstance().mapillaryImageDisplay
                 .setImage(null);
-        MapillaryData.getInstance().getImages().clear();
+        data.getImages().clear();
         MapillaryLayer.INSTANCE = null;
         MapillaryData.INSTANCE = null;
@@ -190,8 +191,16 @@
     @Override
     public boolean isModified() {
-        for (MapillaryAbstractImage image : mapillaryData.getImages())
+        for (MapillaryAbstractImage image : data.getImages())
             if (image.isModified())
                 return true;
         return false;
+    }
+    
+    @Override
+    public void setVisible(boolean visible) {
+        super.setVisible(visible);
+        for (MapillaryAbstractImage img : data.getImages())
+            img.setVisible(visible);
+        MapillaryFilterDialog.getInstance().refresh();
     }
 
@@ -209,7 +218,7 @@
             
             // Sets blue and red lines and enables/disables the buttons
-            if (mapillaryData.getSelectedImage() != null) {
+            if (data.getSelectedImage() != null) {
                 MapillaryImage[] closestImages = getClosestImagesFromDifferentSequences();
-                Point selected = mv.getPoint(mapillaryData.getSelectedImage()
+                Point selected = mv.getPoint(data.getSelectedImage()
                         .getLatLon());
                 if (closestImages[0] != null) {
@@ -233,5 +242,5 @@
             }
             g.setColor(Color.WHITE);
-            for (MapillaryAbstractImage imageAbs : mapillaryData.getImages()) {
+            for (MapillaryAbstractImage imageAbs : data.getImages()) {
                 if (!imageAbs.isVisible())
                     continue;
@@ -247,7 +256,7 @@
                         g.drawLine(p.x, p.y, nextp.x, nextp.y);
                     }
-                    
+
                     ImageIcon icon;
-                    if (!mapillaryData.getMultiSelectedImages().contains(image))
+                    if (!data.getMultiSelectedImages().contains(image))
                         icon = MapillaryPlugin.MAP_ICON;
                     else
@@ -263,5 +272,5 @@
                     MapillaryImportedImage image = (MapillaryImportedImage) imageAbs;
                     ImageIcon icon;
-                    if (!mapillaryData.getMultiSelectedImages().contains(image))
+                    if (!data.getMultiSelectedImages().contains(image))
                         icon = MapillaryPlugin.MAP_ICON_IMPORTED;
                     else
@@ -322,5 +331,5 @@
         g.drawImage(op.filter(bi, null), p.x - (width / 2), p.y - (height / 2),
                 Main.map.mapView);
-        if (MapillaryData.getInstance().getHoveredImage() == image) {
+        if (data.getHoveredImage() == image) {
             drawPointHighlight(g, p, 16);
         }
@@ -358,13 +367,13 @@
      */
     private MapillaryImage[] getClosestImagesFromDifferentSequences() {
-        if (!(mapillaryData.getSelectedImage() instanceof MapillaryImage))
+        if (!(data.getSelectedImage() instanceof MapillaryImage))
             return new MapillaryImage[2];
-        MapillaryImage selected = (MapillaryImage) mapillaryData
+        MapillaryImage selected = (MapillaryImage) data
                 .getSelectedImage();
         MapillaryImage[] ret = new MapillaryImage[2];
         double[] distances = { SEQUENCE_MAX_JUMP_DISTANCE,
                 SEQUENCE_MAX_JUMP_DISTANCE };
-        LatLon selectedCoords = mapillaryData.getSelectedImage().getLatLon();
-        for (MapillaryAbstractImage imagePrev : mapillaryData.getImages()) {
+        LatLon selectedCoords = data.getSelectedImage().getLatLon();
+        for (MapillaryAbstractImage imagePrev : data.getImages()) {
             if (!(imagePrev instanceof MapillaryImage))
                 continue;
@@ -393,8 +402,8 @@
         if (ret[0] != null)
             new MapillaryCache(ret[0].getKey(), MapillaryCache.Type.THUMBNAIL)
-                    .submit(MapillaryData.getInstance(), false);
+                    .submit(data, false);
         if (ret[1] != null)
             new MapillaryCache(ret[1].getKey(), MapillaryCache.Type.THUMBNAIL)
-                    .submit(MapillaryData.getInstance(), false);
+                    .submit(data, false);
         return ret;
     }
@@ -407,5 +416,5 @@
         sb.append(tr("Total images:"));
         sb.append(" ");
-        sb.append(this.size());
+        sb.append(data.size());
         sb.append("\n");
         return sb.toString();
@@ -414,9 +423,5 @@
     @Override
     public String getToolTipText() {
-        return this.size() + " " + tr("images");
-    }
-
-    private int size() {
-        return mapillaryData.getImages().size();
+        return data.size() + " " + tr("images");
     }
 
@@ -485,7 +490,7 @@
     public void activeLayerChange(Layer oldLayer, Layer newLayer) {
         if (newLayer == this) {
-            if (MapillaryData.getInstance().getImages().size() > 0)
+            if (data.size() > 0)
                 Main.map.statusLine.setHelpText(tr("Total images: {0}",
-                        MapillaryData.getInstance().getImages().size()));
+                        data.size()));
             else
                 Main.map.statusLine.setHelpText(tr("No images found"));
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 31296)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryPlugin.java	(revision 31297)
@@ -129,11 +129,11 @@
     public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
         if (oldLayer == null && newLayer != null) {
-            DOWNLOAD_MENU.setEnabled(true);
-            IMPORT_MENU.setEnabled(true);
-            DOWNLOAD_VIEW_MENU.setEnabled(true);
+            setMenuEnabled(DOWNLOAD_MENU, true);
+            setMenuEnabled(IMPORT_MENU, true);
+            setMenuEnabled(DOWNLOAD_VIEW_MENU, true);
         } else if (oldLayer != null && newLayer == null) {
-            DOWNLOAD_MENU.setEnabled(false);
-            IMPORT_MENU.setEnabled(false);
-            DOWNLOAD_VIEW_MENU.setEnabled(false);
+            setMenuEnabled(DOWNLOAD_MENU, false);
+            setMenuEnabled(IMPORT_MENU, false);
+            setMenuEnabled(DOWNLOAD_VIEW_MENU, false);
         }
     }
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/actions/MapillaryDownloadAction.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/actions/MapillaryDownloadAction.java	(revision 31296)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/actions/MapillaryDownloadAction.java	(revision 31297)
@@ -45,4 +45,3 @@
         }
     }
-
 }
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 31296)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterChooseSigns.java	(revision 31297)
@@ -12,19 +12,64 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 
-public class MapillaryFilterChooseSigns extends JPanel implements ActionListener {
+public class MapillaryFilterChooseSigns extends JPanel implements
+        ActionListener {
 
-    private JCheckBox maxspeed = new JCheckBox();
-    
+    private final JCheckBox maxspeed = new JCheckBox();
+    private final JCheckBox stop = new JCheckBox();
+    private final JCheckBox giveWay = new JCheckBox();
+    private final JCheckBox roundabout = new JCheckBox();
+    private final JCheckBox access = new JCheckBox();
+
     private static MapillaryFilterChooseSigns INSTANCE;
-    
+
     public MapillaryFilterChooseSigns() {
+        // Max speed sign
         JPanel maxspeedPanel = new JPanel();
         JLabel maxspeedLabel = new JLabel(tr("Speed limit"));
-        maxspeedLabel.setIcon(new ImageProvider("styles/standard/vehicle/restriction/speed.png").get());
+        maxspeedLabel.setIcon(new ImageProvider(
+                "styles/standard/vehicle/restriction/speed.png").get());
         maxspeedPanel.add(maxspeedLabel);
         maxspeedPanel.add(maxspeed);
         this.add(maxspeedPanel);
+
+        // Stop sign
+        JPanel stopPanel = new JPanel();
+        JLabel stopLabel = new JLabel(tr("Stop"));
+        stopLabel.setIcon(new ImageProvider(
+                "styles/standard/vehicle/restriction/stop.png").get());
+        stopPanel.add(stopLabel);
+        stopPanel.add(stop);
+        this.add(stopPanel);
+
+        // Give way sign
+        JPanel giveWayPanel = new JPanel();
+        JLabel giveWayLabel = new JLabel(tr("Give way"));
+        giveWayLabel.setIcon(new ImageProvider(
+                "styles/standard/vehicle/restriction/right_of_way.png").get());
+        giveWayPanel.add(giveWayLabel);
+        giveWayPanel.add(giveWay);
+        this.add(giveWayPanel);
+
+        // Roundabout sign
+        JPanel roundaboutPanel = new JPanel();
+        JLabel roundaboutLabel = new JLabel(tr("Give way"));
+        roundaboutLabel.setIcon(new ImageProvider(
+                "styles/standard/vehicle/restriction/roundabout_right.png")
+                .get());
+        roundaboutPanel.add(roundaboutLabel);
+        roundaboutPanel.add(roundabout);
+        this.add(roundaboutPanel);
+
+        // No entry sign
+        // TODO need icon
+        JPanel noEntryPanel = new JPanel();
+        JLabel noEntryLabel = new JLabel(tr("No entry"));
+        noEntryLabel.setIcon(new ImageProvider(
+                "styles/standard/vehicle/restriction/access.png").get());
+        noEntryPanel.add(noEntryLabel);
+        noEntryPanel.add(access);
+        this.add(noEntryPanel);
     }
-    
+
     public static MapillaryFilterChooseSigns getInstance() {
         if (INSTANCE == null)
@@ -32,9 +77,9 @@
         return INSTANCE;
     }
-    
+
     @Override
     public void actionPerformed(ActionEvent arg0) {
         // TODO Auto-generated method stub
-        
+
     }
 
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 31296)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryFilterDialog.java	(revision 31297)
@@ -225,5 +225,5 @@
         }
     }
-    
+
     private class OnlySignsAction extends AbstractAction {
         public OnlySignsAction() {
@@ -237,4 +237,10 @@
     }
 
+    /**
+     * Opens a new window where you can specifically filter signs.
+     * 
+     * @author nokutu
+     *
+     */
     private class SignChooserAction extends AbstractAction {
         public SignChooserAction() {
@@ -245,6 +251,6 @@
         public void actionPerformed(ActionEvent arg0) {
             JPanel dialog = MapillaryFilterChooseSigns.getInstance();
-            JOptionPane pane = new JOptionPane(dialog, JOptionPane.PLAIN_MESSAGE,
-                    JOptionPane.OK_CANCEL_OPTION);
+            JOptionPane pane = new JOptionPane(dialog,
+                    JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
             JDialog dlg = pane.createDialog(Main.parent, tr("Choose signs"));
             dlg.setMinimumSize(new Dimension(400, 150));
@@ -252,10 +258,9 @@
             MapillaryFilterDialog.getInstance().refresh();
             dlg.dispose();
-
         }
     }
 
     public static void destroyInstance() {
-        MapillaryFilterDialog.INSTANCE = null;        
+        MapillaryFilterDialog.INSTANCE = null;
     }
 }
