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 31258)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java	(revision 31259)
@@ -156,4 +156,6 @@
 	public void setSelectedImage(MapillaryAbstractImage image) {
 		selectedImage = image;
+		if (image instanceof MapillaryImage)
+			System.out.println(((MapillaryImage) image).getLocation());
 		multiSelectedImages.clear();
 		multiSelectedImages.add(image);
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 31258)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryImage.java	(revision 31259)
@@ -1,3 +1,6 @@
 package org.openstreetmap.josm.plugins.mapillary;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
@@ -13,4 +16,17 @@
 	/** Sequence of pictures containing this */
 	private MapillarySequence sequence;
+
+	private int capturedAt;
+	private String user;
+	private List<String> signals;
+	private String location;
+
+	public String getLocation() {
+		return location;
+	}
+
+	public void setLocation(String location) {
+		this.location = location;
+	}
 
 	/**
@@ -29,4 +45,5 @@
 		super(lat, lon, ca);
 		this.key = key;
+		this.signals = new ArrayList<>();
 	}
 
@@ -38,4 +55,28 @@
 	public String getKey() {
 		return this.key;
+	}
+	
+	public void addSignal(String signal) {
+		signals.add(signal);
+	}
+	
+	public List<String> getSignals() {
+		return signals;
+	}
+
+	public void setCapturedAt(int capturedAt) {
+		this.capturedAt = capturedAt;
+	}
+
+	public int getCapturedAt() {
+		return capturedAt;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public String getUser() {
+		return user;
 	}
 
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 31258)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java	(revision 31259)
@@ -246,4 +246,9 @@
 					g.drawImage(op.filter(bi, null), p.x - (width / 2), p.y
 							- (height / 2), Main.map.mapView);
+					if (!image.getSignals().isEmpty()) {
+						g.drawImage(MapillaryPlugin.MAP_SIGNAL.getImage(), p.x
+								+ width / 2, p.y - height / 2,
+								Main.map.mapView);
+					}
 				} else if (imageAbs instanceof MapillaryImportedImage) {
 					MapillaryImportedImage image = (MapillaryImportedImage) imageAbs;
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 31258)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryPlugin.java	(revision 31259)
@@ -41,4 +41,6 @@
 	public static final ImageIcon MAP_ICON_IMPORTED = new ImageProvider(
 			"mapiconimported.png").get();
+	public static final ImageIcon MAP_SIGNAL = new ImageProvider("signal.png")
+			.get();
 	public static final int ICON_SIZE = 24;
 
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 31258)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryDownloader.java	(revision 31259)
@@ -36,6 +36,8 @@
 		String url1 = BASE_URL;
 		String url2 = BASE_URL;
+		String url3 = BASE_URL;
 		url1 += "search/im/";
 		url2 += "search/s/";
+		url3 += "search/im/or";
 		ConcurrentHashMap<String, Double> hash = new ConcurrentHashMap<>();
 		hash.put("min_lat", minLatLon.lat());
@@ -45,7 +47,9 @@
 		url1 += buildParameters(hash);
 		url2 += buildParameters(hash);
+		url3 += buildParameters(hash);
+		
 		try {
 			Main.info("MapillaryPlugin GET " + url2);
-			Main.worker.submit(new MapillarySquareDownloadManagerThread(url1, url2, new Bounds(minLatLon, maxLatLon)));
+			Main.worker.submit(new MapillarySquareDownloadManagerThread(url1, url2, url3, new Bounds(minLatLon, maxLatLon)));
 		} catch (Exception e) {
 			Main.error(e);
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryImageInfoDownloaderThread.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryImageInfoDownloaderThread.java	(revision 31259)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillaryImageInfoDownloaderThread.java	(revision 31259)
@@ -0,0 +1,66 @@
+package org.openstreetmap.josm.plugins.mapillary.downloads;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.io.InputStreamReader;
+
+import javax.json.JsonArray;
+import javax.json.JsonObject;
+import javax.json.Json;
+
+import java.util.concurrent.ExecutorService;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
+import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
+import org.openstreetmap.josm.plugins.mapillary.MapillaryImage;
+
+/**
+ * This thread downloads one of the images in a given area.
+ * 
+ * @author nokutu
+ * @see MapillarySqueareDownloadManagerThread
+ */
+public class MapillaryImageInfoDownloaderThread implements Runnable {
+	private final String url;
+	private final ExecutorService ex;
+
+	public MapillaryImageInfoDownloaderThread(ExecutorService ex, String url) {
+		this.ex = ex;
+		this.url = url;
+	}
+
+	public void run() {
+		try {
+			BufferedReader br = new BufferedReader(new InputStreamReader(
+					new URL(url).openStream()));
+			JsonObject jsonobj = Json.createReader(br).readObject();
+			if (!jsonobj.getBoolean("more"))
+				ex.shutdownNow();
+			JsonArray jsonarr = jsonobj.getJsonArray("ims");
+			JsonObject data;
+			for (int i = 0; i < jsonarr.size(); i++) {
+				data = jsonarr.getJsonObject(i);
+				String key = data.getString("key");
+				for (MapillaryAbstractImage image : MapillaryData.getInstance()
+						.getImages()) {
+					if (image instanceof MapillaryImage) {
+						if (((MapillaryImage) image).getKey().equals(key)) {
+							((MapillaryImage) image).setUser(data
+									.getString("user"));
+							((MapillaryImage) image).setCapturedAt(data
+									.getJsonNumber("captured_at").intValue());
+							((MapillaryImage) image).setLocation(data.getString("location"));
+						}
+					}
+				}
+			}
+		} catch (MalformedURLException e) {
+			Main.error(e);
+		} catch (IOException e) {
+			Main.error(e);
+		}
+	}
+}
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySignalDownloaderThread.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySignalDownloaderThread.java	(revision 31259)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySignalDownloaderThread.java	(revision 31259)
@@ -0,0 +1,69 @@
+package org.openstreetmap.josm.plugins.mapillary.downloads;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.concurrent.ExecutorService;
+
+import javax.json.Json;
+import javax.json.JsonArray;
+import javax.json.JsonObject;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
+import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
+import org.openstreetmap.josm.plugins.mapillary.MapillaryImage;
+
+public class MapillarySignalDownloaderThread implements Runnable {
+
+	private final String url;
+	private final ExecutorService ex;
+
+	public MapillarySignalDownloaderThread(ExecutorService ex, String url) {
+		this.ex = ex;
+		this.url = url;
+	}
+
+	@Override
+	public void run() {
+		BufferedReader br;
+		try {
+			System.out.println(url);
+			br = new BufferedReader(new InputStreamReader(
+					new URL(url).openStream()));
+			JsonObject jsonobj = Json.createReader(br).readObject();
+			if (!jsonobj.getBoolean("more")) {
+				ex.shutdown();
+			}
+			JsonArray jsonarr = jsonobj.getJsonArray("ims");
+			for (int i = 0; i < jsonarr.size(); i++) {
+				JsonArray rects = jsonarr.getJsonObject(i)
+						.getJsonArray("rects");
+				if (rects == null)
+					return;
+				String key = jsonarr.getJsonObject(i).getString("key");
+				for (int j = 0; j < rects.size(); j++) {
+					JsonObject data = rects.getJsonObject(j);
+					for (MapillaryAbstractImage image : MapillaryData
+							.getInstance().getImages()) {
+						if (((MapillaryImage) image).getKey().equals(key)) {
+							if (image instanceof MapillaryImage) {
+								if (((MapillaryImage) image).getKey().equals(
+										key)) {
+									((MapillaryImage) image).addSignal(data
+											.getString("type"));
+								}
+							}
+						}
+					}
+				}
+			}
+		} catch (MalformedURLException e) {
+			Main.error(e);
+		} catch (IOException e) {
+			Main.error(e);
+		}
+	}
+}
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 31258)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadManagerThread.java	(revision 31259)
@@ -22,13 +22,14 @@
 public class MapillarySquareDownloadManagerThread implements Runnable {
 
-	@SuppressWarnings("unused")
 	private final String urlImages;
 	private final String urlSequences;
+	private final String urlSignals;
 	private final Bounds bounds;
 
 	public MapillarySquareDownloadManagerThread(String urlImages,
-			String urlSequences, Bounds bounds) {
+			String urlSequences, String urlSignals, Bounds bounds) {
 		this.urlImages = urlImages;
 		this.urlSequences = urlSequences;
+		this.urlSignals = urlSignals;
 		this.bounds = bounds;
 	}
@@ -38,4 +39,6 @@
 		try {
 			downloadSequences();
+			completeImages();
+			downloadSignals();
 		} catch (InterruptedException e) {
 			Main.error(e);
@@ -46,7 +49,8 @@
 		else
 			Main.map.statusLine.setHelpText(tr("No images found"));
+		MapillaryData.getInstance().dataUpdated();
 	}
 
-	public void downloadSequences() throws InterruptedException {
+	private void downloadSequences() throws InterruptedException {
 		ThreadPoolExecutor ex = new ThreadPoolExecutor(3, 5, 25,
 				TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(5));
@@ -62,3 +66,31 @@
 		MapillaryData.getInstance().dataUpdated();
 	}
+
+	private void completeImages() throws InterruptedException {
+		ThreadPoolExecutor ex = new ThreadPoolExecutor(3, 5, 25,
+				TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(5));
+		int page = 0;
+		while (!ex.isShutdown()) {
+			ex.execute(new MapillaryImageInfoDownloaderThread(ex, urlImages
+					+ "&page=" + page + "&limit=20"));
+			while (ex.getQueue().remainingCapacity() == 0)
+				Thread.sleep(100);
+			page++;
+		}
+		ex.awaitTermination(15, TimeUnit.SECONDS);
+	}
+
+	private void downloadSignals() throws InterruptedException {
+		ThreadPoolExecutor ex = new ThreadPoolExecutor(3, 5, 25,
+				TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(5));
+		int page = 0;
+		while (!ex.isShutdown()) {
+			ex.execute(new MapillarySignalDownloaderThread(ex, urlSignals
+					+ "&page=" + page + "&limit=20"));
+			while (ex.getQueue().remainingCapacity() == 0)
+				Thread.sleep(100);
+			page++;
+		}
+		ex.awaitTermination(15, TimeUnit.SECONDS);
+	}
 }
Index: plications/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 31258)
+++ 	(revision )
@@ -1,65 +1,0 @@
-package org.openstreetmap.josm.plugins.mapillary.downloads;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.io.InputStreamReader;
-
-import javax.json.JsonArray;
-import javax.json.JsonObject;
-import javax.json.Json;
-
-import java.util.ArrayList;
-import java.util.concurrent.ExecutorService;
-
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.plugins.mapillary.MapillaryAbstractImage;
-import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
-import org.openstreetmap.josm.plugins.mapillary.MapillaryImage;
-
-/**
- * This thread downloads one of the images in a given area.
- * 
- * @author nokutu
- * @see MapillarySqueareDownloadManagerThread
- */
-public class MapillarySquareDownloadThread implements Runnable {
-	private final String url;
-	private final ExecutorService ex;
-
-	public MapillarySquareDownloadThread(ExecutorService ex,
-			MapillaryData data, String url) {
-		this.ex = ex;
-		this.url = url;
-	}
-
-	public void run() {
-		try {
-			BufferedReader br = new BufferedReader(new InputStreamReader(
-					new URL(url).openStream()));
-			JsonObject jsonobj = Json.createReader(br).readObject();
-			if (!jsonobj.getBoolean("more"))
-				ex.shutdownNow();
-			JsonArray jsonarr = jsonobj.getJsonArray("ims");
-			ArrayList<MapillaryAbstractImage> images = new ArrayList<>();
-			JsonObject image;
-			for (int i = 0; i < jsonarr.size(); i++) {
-				try {
-					image = jsonarr.getJsonObject(i);
-					images.add(new MapillaryImage(image.getString("key"), image
-							.getJsonNumber("lat").doubleValue(), image
-							.getJsonNumber("lon").doubleValue(), image
-							.getJsonNumber("ca").doubleValue()));
-				} catch (Exception e) {
-					Main.error(e);
-				}
-			}
-			MapillaryData.getInstance().add(images);
-		} catch (MalformedURLException e) {
-			Main.error(e);
-		} catch (IOException e) {
-			Main.error(e);
-		}
-	}
-}
