Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsidePlugin.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsidePlugin.java	(revision 34411)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsidePlugin.java	(revision 34412)
@@ -20,9 +20,10 @@
 import org.openstreetmap.josm.plugins.streetside.gui.StreetsidePreferenceSetting;
 import org.openstreetmap.josm.plugins.streetside.gui.StreetsideViewerDialog;
-import org.openstreetmap.josm.plugins.streetside.gui.imageinfo.ImageInfoHelpPopup;
 import org.openstreetmap.josm.plugins.streetside.gui.imageinfo.ImageInfoPanel;
 import org.openstreetmap.josm.plugins.streetside.oauth.StreetsideUser;
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
 import org.openstreetmap.josm.tools.ImageProvider;
+
+import org.openstreetmap.josm.plugins.streetside.gui.imageinfo.ImageInfoHelpPopup;
 
 /**
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cache/StreetsideCache.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cache/StreetsideCache.java	(revision 34411)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cache/StreetsideCache.java	(revision 34412)
@@ -30,14 +30,5 @@
 		FULL_IMAGE,
 		/** Low quality image */
-		THUMBNAIL,
-		/** cubemap faces */
-		// TODO: one class per cache/load required? really?!
-		CUBEMAP/*,
-		CUBEMAP_FRONT,
-		CUBEMAP_RIGHT,
-		CUBEMAP_BACK,
-		CUBEMAP_LEFT,
-		CUBEMAP_UP,
-		CUBEMAP_DOWN*/
+		THUMBNAIL
 	}
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilder.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilder.java	(revision 34411)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilder.java	(revision 34412)
@@ -35,5 +35,5 @@
 	protected boolean cancelled;
 	private long startTime;
-  private Map<String, BufferedImage> tileImages = new HashMap<String,BufferedImage>();
+  private Map<String, BufferedImage> tileImages = new HashMap<>();
 
   /**
@@ -83,5 +83,5 @@
 	public void reload(String imageId) {
 		if (cubemap != null && imageId.equals(cubemap.getId())) {
-			tileImages = new HashMap<String,BufferedImage>();
+			tileImages = new HashMap<>();
 		  downloadCubemapImages(imageId);
 		}
@@ -96,4 +96,10 @@
 		int fails = 0;
 
+		int min = 0;   int max = (StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get()?96:24)*2;
+
+		String[] message = new String[2];
+    message[0] = MessageFormat.format("Downloading Streetside imagery for {0}", imageId);
+    message[1] = "Wait for completion…….";
+
 		long startTime = System.currentTimeMillis();
 
@@ -101,5 +107,5 @@
 
 			ExecutorService pool = Executors.newFixedThreadPool(maxThreadCount);
-			List<Callable<String>> tasks = new ArrayList<Callable<String>>(maxThreadCount);
+			List<Callable<String>> tasks = new ArrayList<>(maxThreadCount);
 
 			// launch 4-tiled (low-res) downloading tasks . . .
@@ -111,5 +117,5 @@
 
 							String tileId = String.valueOf(imageId + CubemapUtils.getFaceNumberForCount(i)
-									+ Integer.valueOf(tileNr++).toString());// + Integer.valueOf(k).toString()));
+									+ Integer.valueOf(tileNr++).toString());
 							tasks.add(new TileDownloadingTask(tileId));
 						}
@@ -220,6 +226,5 @@
 				// rotate top cubeface 180 degrees - misalignment workaround
 				if (i == 4) {
-				  final long start = System.nanoTime();
-					finalImg = GraphicsUtils.rotateImage(finalImg);
+				  finalImg = GraphicsUtils.rotateImage(finalImg);
 				}
 				finalImages[i] = GraphicsUtils.convertBufferedImage2JavaFXImage(finalImg);
@@ -267,15 +272,17 @@
     long endTime = System.currentTimeMillis();
     long runTime = (endTime - startTime) / 1000;
+
+    String message = MessageFormat.format("Completed downloading, assembling and setting cubemap imagery for cubemap {0} in  {1} seconds.", cubemap.getId(),
+      runTime);
+
     if (StreetsideProperties.DEBUGING_ENABLED.get()) {
-      logger.debug(
-        MessageFormat.format("Completed downloading, assembling and setting cubemap imagery for cubemap {0} in  {1} seconds.", cubemap.getId(),
-          runTime)
-      );
+      logger.debug(message);
     }
+
     CubemapBuilder.getInstance().resetTileImages();
 	}
 
 	private void resetTileImages() {
-    tileImages = new HashMap<String,BufferedImage>();
+    tileImages = new HashMap<>();
   }
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ImageInfoHelpPopup.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ImageInfoHelpPopup.java	(revision 34411)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ImageInfoHelpPopup.java	(revision 34412)
@@ -44,11 +44,9 @@
     mainText.setContentType("text/html");
     mainText.setFont(SelectableLabel.DEFAULT_FONT);
-    mainText.setText(
-      "<html><div style='width:250px'>" +
-      "The Streetside plugin now uses a separate panel to display extra information (like the image key) and actions for the currently selected Streetside image (like viewing it in a browser)." +
-      "<br><br>" +
-      "It can be activated by clicking the left button at the bottom of this message or the button in the toolbar on the left, which uses the same icon." +
-      "</div></html>"
-    );
+    mainText.setText("<html><div style='width:250px'>" +
+      "Welcome to the Microsoft Streetside JOSM Plugin. To view the vector bubbles for the 360 degree imagery, select Imagery->Streetside from the JOSM menu."
+      + "<br><br>"
+      + "Once the blue bubbles appear on the map, click on a vector bubble and undock/maximize the 360 viewer to view the imagery."
+      + "</div></html>");
     add(mainText, BorderLayout.CENTER);
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerHelpPopup.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerHelpPopup.java	(revision 34411)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerHelpPopup.java	(revision 34412)
@@ -7,4 +7,5 @@
 import java.awt.IllegalComponentStateException;
 import java.awt.event.ActionEvent;
+import java.text.MessageFormat;
 
 import javax.swing.AbstractAction;
@@ -14,4 +15,5 @@
 import javax.swing.JTextPane;
 
+import org.apache.log4j.Logger;
 import org.openstreetmap.josm.plugins.streetside.gui.boilerplate.SelectableLabel;
 import org.openstreetmap.josm.plugins.streetside.gui.boilerplate.StreetsideButton;
@@ -20,9 +22,11 @@
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Logging;
+
 
 public class StreetsideViewerHelpPopup extends JPopupMenu {
 
 	private static final long serialVersionUID = -7840242522398163839L;
+
+	final static Logger logger = Logger.getLogger(StreetsideViewerHelpPopup.class);
 
 	private final Component invokerComp;
@@ -43,9 +47,9 @@
 		mainText.setContentType("text/html");
 		mainText.setFont(SelectableLabel.DEFAULT_FONT);
-		mainText.setText("<html><div style='width:250px'>" + I18n.tr(
-				"Welcome to the Microsoft Streetside JOSM Plugin. To view the vector bubbles for the 360 degree imagery, select Imagery->Streetside from the JOSM menu.")
+		mainText.setText("<html><div style='width:250px'>" +
+				"Welcome to the Microsoft Streetside JOSM Plugin. To view the vector bubbles for the 360 degree imagery, select Imagery->Streetside from the JOSM menu."
 				+ "<br><br>"
-				+ I18n.tr(
-						"Once the blue bubbles appear on the map, click on a vector bubble and undock/maximize the 360 viewer to view the imagery.")
+				+
+						"Once the blue bubbles appear on the map, click on a vector bubble and undock/maximize the 360 viewer to view the imagery."
 				+ "</div></html>");
 		add(mainText, BorderLayout.CENTER);
@@ -83,5 +87,5 @@
      return true;
    } catch (IllegalComponentStateException e) {
-     Logging.log(Logging.LEVEL_WARN, "Could not show ImageInfoHelpPopup, because probably the invoker component has disappeared from screen.", e);
+     logger.error(MessageFormat.format("Could not show ImageInfoHelpPopup, because probably the invoker component has disappeared from screen. {0}", e.getMessage()));
    }
  }
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/ImageDetailsDownloadRunnable.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/ImageDetailsDownloadRunnable.java	(revision 34411)
+++ 	(revision )
@@ -1,41 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.plugins.streetside.io.download;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.function.Function;
-
-import org.openstreetmap.josm.data.Bounds;
-import org.openstreetmap.josm.plugins.streetside.StreetsideData;
-import org.openstreetmap.josm.plugins.streetside.utils.StreetsideURL.APIv3;
-
-
-public class ImageDetailsDownloadRunnable extends BoundsDownloadRunnable {
-  private static final Function<Bounds, URL> URL_GEN = APIv3::searchStreetsideImages;
-
-  private final StreetsideData data;
-
-  public ImageDetailsDownloadRunnable(final StreetsideData data, final Bounds bounds) {
-    super(bounds);
-    this.data = data;
-  }
-
-  @Override
-  public void run(final URLConnection con) throws IOException {
-     // TODO: Enable ImageInfo support in decoder for Streetside
-	  /*try (JsonReader reader = Json.createReader(new BufferedInputStream(con.getInputStream()))) {
-      JsonImageDetailsDecoder.decodeImageInfos(reader.readObject(), data);
-      logConnectionInfo(con, null);
-      StreetsideMainDialog.getInstance().updateTitle();
-    } catch (JsonException | NumberFormatException e) {
-      throw new IOException(e);
-    }*/
-  }
-
-  @Override
-  protected Function<Bounds, URL> getUrlGenerator() {
-    return URL_GEN;
-  }
-
-}
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/SequenceDownloadRunnable.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/SequenceDownloadRunnable.java	(revision 34411)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/SequenceDownloadRunnable.java	(revision 34412)
@@ -78,6 +78,7 @@
           if(previous!=null) {
         	  // Analyze sequence behaviour
-        	  //previous.setNext(image.)
+        	  //previous.setNext(image.getId());
           }
+          previous = image;
           image.setAd(node.path("ad").asInt());
           image.setAl(node.path("al").asDouble());
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/StreetsideSquareDownloadRunnable.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/StreetsideSquareDownloadRunnable.java	(revision 34411)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/StreetsideSquareDownloadRunnable.java	(revision 34412)
@@ -8,5 +8,4 @@
 import org.openstreetmap.josm.plugins.streetside.utils.PluginState;
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideUtils;
-import org.openstreetmap.josm.tools.I18n;
 
 public class StreetsideSquareDownloadRunnable implements Runnable {
@@ -38,17 +37,7 @@
     }
 
-    Thread imgDetailsThread = new Thread(new ImageDetailsDownloadRunnable(StreetsideLayer.getInstance().getData(), bounds));
-    imgDetailsThread.start();
-
     // Image detections are not currently supported for Streetside (Mapillary code removed)
 
-    try {
-      imgDetailsThread.join();
-    } catch (InterruptedException e) {
-      logger.warn(I18n.tr("Streetside download interrupted (probably because of closing the layer).", e));
-      Thread.currentThread().interrupt();
-    } finally {
-      PluginState.finishDownload();
-    }
+    PluginState.finishDownload();
 
     StreetsideUtils.updateHelpText();
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/export/StreetsideExportDownloadThread.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/export/StreetsideExportDownloadThread.java	(revision 34411)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/export/StreetsideExportDownloadThread.java	(revision 34412)
@@ -58,5 +58,6 @@
   @Override
   public void run() {
-    CacheUtils.submit(image.getId(), StreetsideCache.Type.FULL_IMAGE, this);
+    //CacheUtils.submit(image.getId(), StreetsideCache.Type.FULL_IMAGE, this);
+    CacheUtils.submit(image.getId(), StreetsideCache.Type.THUMBNAIL, this);
   }
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideURL.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideURL.java	(revision 34411)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideURL.java	(revision 34412)
@@ -174,5 +174,5 @@
 				throw new IllegalArgumentException("The image id may not be null!");
 			}
-			return StreetsideURL.string2URL(VirtualEarth.BASE_URL_PREFIX + id + VirtualEarth.BASE_URL_SUFFIX);
+			return StreetsideURL.string2URL(MessageFormat.format("{0}{1}{2}{3}{4}",VirtualEarth.BASE_URL_PREFIX, "0", id, "01", VirtualEarth.BASE_URL_SUFFIX));
 		}
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetailsDecoder.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetailsDecoder.java	(revision 34411)
+++ 	(revision )
@@ -1,45 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.plugins.streetside.utils.api;
-
-
-import javax.json.JsonObject;
-import javax.json.JsonValue;
-
-import org.openstreetmap.josm.plugins.streetside.StreetsideData;
-import org.openstreetmap.josm.plugins.streetside.StreetsideImage;
-import org.openstreetmap.josm.plugins.streetside.utils.StreetsideURL.APIv3;
-
-
-/**
- * Decodes the JSON returned by {@link APIv3} into Java objects.
- * Takes a {@link JsonObject} and {@link #decodeImageInfos(JsonObject, StreetsideData)} tries to add the timestamps.
- */
-public final class JsonImageDetailsDecoder {
-  private JsonImageDetailsDecoder() {
-    // Private constructor to avoid instantiation
-  }
-
-  public static void decodeImageInfos(final JsonObject json, final StreetsideData data) {
-    if (data != null) {
-      JsonDecoder.decodeFeatureCollection(json, j -> {
-        decodeImageInfo(j, data);
-        return null;
-      });
-    }
-  }
-
-  private static void decodeImageInfo(final JsonObject json, final StreetsideData data) {
-    if (json != null && data != null) {
-      JsonValue properties = json.get("properties");
-      if (properties instanceof JsonObject) {
-        String id = ((JsonObject) properties).getString("id", null);
-        Long he = JsonDecoder.decodeTimestamp(((JsonObject)properties).getString("he", null));
-        if (id != null && he != null) {
-          data.getImages().stream().filter(
-            img -> img instanceof StreetsideImage && id.equals(((StreetsideImage) img).getId())
-          ).forEach(img -> img.setHe(he));
-        }
-      }
-    }
-  }
-}
Index: applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetailsDecoderTest.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/test/unit/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetailsDecoderTest.java	(revision 34411)
+++ 	(revision )
@@ -1,101 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.plugins.streetside.utils.api;
-
-import static org.junit.Assert.assertEquals;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Set;
-
-import javax.json.Json;
-import javax.json.JsonObject;
-
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.plugins.streetside.StreetsideAbstractImage;
-import org.openstreetmap.josm.plugins.streetside.StreetsideData;
-import org.openstreetmap.josm.plugins.streetside.StreetsideImage;
-import org.openstreetmap.josm.plugins.streetside.StreetsideImportedImage;
-import org.openstreetmap.josm.plugins.streetside.cubemap.CubemapUtils;
-import org.openstreetmap.josm.plugins.streetside.utils.JsonUtil;
-import org.openstreetmap.josm.plugins.streetside.utils.TestUtil;
-import org.openstreetmap.josm.plugins.streetside.utils.TestUtil.StreetsideTestRules;
-import org.openstreetmap.josm.testutils.JOSMTestRules;
-
-public class JsonImageDetailsDecoderTest {
-
-  @Rule
-  public JOSMTestRules rules = new StreetsideTestRules().platform().preferences();
-
-  @Test
-  public void testUtilityClass() {
-    TestUtil.testUtilityClass(JsonImageDetailsDecoder.class);
-  }
-
-  @Ignore
-  @Test
-  public void testDecodeImageInfos() {
-    JsonObject searchImagesResponse = Json.createReader(
-      JsonImageDetailsDecoderTest.class.getResourceAsStream("/api/v3/responses/searchImages.json")
-    ).readObject();
-    StreetsideData data = new StreetsideDataMock();
-    StreetsideImage img1 = new StreetsideImage("_yA5uXuSNugmsK5VucU6Bg", new LatLon(0, 0), 0);
-    StreetsideImage img2 = new StreetsideImage("nmF-Wq4EvVTgAUmBicSCCg", new LatLon(0, 0), 0);
-    StreetsideImage img3 = new StreetsideImage("arbitrary_key", new LatLon(0, 0), 0);
-    StreetsideAbstractImage img4 = new StreetsideImportedImage(CubemapUtils.IMPORTED_ID, new LatLon(0, 0), 0, null);
-    img4.setHe(0);
-    data.add(img1);
-    data.add(img2);
-    data.add(img3);
-    data.add(img4);
-    JsonImageDetailsDecoder.decodeImageInfos(searchImagesResponse, data);
-    assertEquals(1_491_803_490_334L, img1.getHe()); // 2017-04-10T05:51:30.334Z
-    assertEquals(1_491_803_486_853L, img2.getHe()); // 2017-04-10T05:51:26.853Z
-    assertEquals(0L, img3.getHe());
-    assertEquals(0L, img4.getHe());
-  }
-
-  @Test
-  public void testInvalidImageInfos() {
-    StreetsideDataMock data = new StreetsideDataMock();
-    JsonImageDetailsDecoder.decodeImageInfos(null, data);
-    JsonImageDetailsDecoder.decodeImageInfos(JsonUtil.string2jsonObject("{}"), null);
-    JsonImageDetailsDecoder.decodeImageInfos(JsonUtil.string2jsonObject("{}"), data);
-    JsonImageDetailsDecoder.decodeImageInfos(JsonUtil.string2jsonObject("{\"type\":\"FeatureCollection\", \"features\":0}"), data);
-    JsonImageDetailsDecoder.decodeImageInfos(JsonUtil.string2jsonObject("{\"type\":\"FeatureCollection\", \"features\":[0, null]}"), data);
-    assertEquals(0, data.getNumImageRerievals());
-  }
-
-  @Test
-  public void testInvalidImageInfo() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
-    Method decodeImageInfo = JsonImageDetailsDecoder.class.getDeclaredMethod("decodeImageInfo", JsonObject.class, StreetsideData.class);
-    StreetsideDataMock data = new StreetsideDataMock();
-    decodeImageInfo.setAccessible(true);
-    decodeImageInfo.invoke(null, null, data);
-    decodeImageInfo.invoke(null, JsonUtil.string2jsonObject("{}"), null);
-    decodeImageInfo.invoke(null, JsonUtil.string2jsonObject("{\"properties\":null}"), data);
-    decodeImageInfo.invoke(null, JsonUtil.string2jsonObject("{\"properties\":{}}"), data);
-    decodeImageInfo.invoke(null, JsonUtil.string2jsonObject("{\"properties\":{\"key\":\"arbitrary_key\"}}"), data);
-    assertEquals(0, data.getNumImageRerievals());
-  }
-
-  private static class StreetsideDataMock extends StreetsideData {
-    private int imageRetrievals;
-
-    /**
-     * Returns how often the method {@link #getImages()} has been accessed for this instance.
-     * @return
-     */
-    public int getNumImageRerievals() {
-      return imageRetrievals;
-    }
-
-    @Override
-    public Set<StreetsideAbstractImage> getImages() {
-      imageRetrievals++;
-      return super.getImages();
-    }
-  }
-}
