Index: applications/editors/josm/plugins/MicrosoftStreetside/.classpath
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/.classpath	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/.classpath	(revision 34399)
@@ -19,10 +19,4 @@
 		</attributes>
 	</classpathentry>
-	<classpathentry including="**/*.po" kind="src" output="bin/main" path="poSrc">
-		<attributes>
-			<attribute name="gradle_scope" value="main"/>
-			<attribute name="gradle_used_by_scope" value="main,test"/>
-		</attributes>
-	</classpathentry>
 	<classpathentry kind="src" output="bin/test" path="test/data">
 		<attributes>
Index: applications/editors/josm/plugins/MicrosoftStreetside/build.gradle
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/build.gradle	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/build.gradle	(revision 34399)
@@ -49,7 +49,4 @@
       srcDirs = ['src']
     }
-    po {
-      srcDirs = ['poSrc']
-    }
     resources {
       srcDirs = ["$projectDir"]
@@ -73,11 +70,5 @@
   debugPort = 7051
   manifest {
-    // See https://floscher.github.io/gradle-josm-plugin/kdoc/current/gradle-josm-plugin/org.openstreetmap.josm.gradle.plugin.config/-josm-manifest/old-version-download-link.html
-    //oldVersionDownloadLink 13643, 'v1.5.14', new URL("https://github.com/JOSM/Mapillary/releases/download/v1.5.14/Mapillary.jar")
-    //oldVersionDownloadLink 13558, 'v1.5.12+pre13643', new URL('https://github.com/JOSM/Mapillary/releases/download/v1.5.12%2Bpre13643/Mapillary.jar')
-    //oldVersionDownloadLink 12987, 'v1.5.10', new URL('https://github.com/JOSM/Mapillary/releases/download/v1.5.10/Mapillary.jar')
-    //oldVersionDownloadLink 12675, 'v1.5.7', new URL('https://github.com/JOSM/Mapillary/releases/download/v1.5.7/Mapillary.jar')
-    //oldVersionDownloadLink 12128, 'v1.5.5', new URL('https://github.com/JOSM/Mapillary/releases/download/v1.5.5/Mapillary.jar')
-    //oldVersionDownloadLink 10824, 'v1.5.3', new URL('https://github.com/JOSM/Mapillary/releases/download/v1.5.3/Mapillary.jar')
+      //oldVersionDownloadLink 10824, 'v1.5.3', new URL('https://github.com/JOSM/Mapillary/releases/download/v1.5.3/Mapillary.jar')
   }
   i18n {
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideCubemap.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideCubemap.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideCubemap.java	(revision 34399)
@@ -10,7 +10,5 @@
  *
  */
-public class StreetsideCubemap extends StreetsideAbstractImage /*implements Comparable<StreetsideAbstractImage>*/{
-
-	//private static Map<String,Map<String,BufferedImage>> face2TilesMap = new HashMap<String,Map<String,BufferedImage>>();
+public class StreetsideCubemap extends StreetsideAbstractImage {
 
 	/**
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideImage.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideImage.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideImage.java	(revision 34399)
@@ -24,5 +24,5 @@
    */
   public static class Rn {
-	  // placeholder for nexted Rn attribute
+	  // placeholder for Rn attribute (undocumented streetside complex inner type)
   }
 
@@ -53,9 +53,4 @@
 
   /**
-   * Set of traffic signs in the image.
-   *//*
-  private final List<ImageDetection> detections = Collections.synchronizedList(new ArrayList<>());
-*/
-  /**
    * Main constructor of the class StreetsideImage
    *
@@ -94,16 +89,4 @@
     return String.valueOf(id);
   }
-
-  /*public List<ImageDetection> getDetections() {
-    return detections;
-  }*/
-
-  /*public void setAllDetections(Collection<ImageDetection> newDetections) {
-    logger.debug("Add {0} detections to image {1}", newDetections.size(), getId());
-    synchronized (detections) {
-      detections.clear();
-      detections.addAll(newDetections);
-    }
-  }*/
 
   public UserProfile getUser() {
@@ -120,5 +103,4 @@
   }
 
-  // TODO: implement equals @rrh
   @Override
   public boolean equals(Object object) {
@@ -126,5 +108,4 @@
   }
 
-  // TODO: implement compareTo @rrh
   @Override
   public int compareTo(StreetsideAbstractImage image) {
@@ -135,5 +116,4 @@
   }
 
-  // TODO: implement hashcode @rrh
   @Override
   public int hashCode() {
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideLayer.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideLayer.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideLayer.java	(revision 34399)
@@ -122,12 +122,4 @@
     if (StreetsidePlugin.getMapView() != null) {
       StreetsideMainDialog.getInstance().streetsideImageDisplay.repaint();
-      /*StreetsideMainDialog.getInstance()
-        .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
-        .put(KeyStroke.getKeyStroke("DELETE"), "StreetsideDel");
-      StreetsideMainDialog.getInstance().getActionMap()
-        .put("StreetsideDel", new DeleteImageAction());*/
-
-			// There is no delete image action for Streetside (Streetside functionality here removed).
-			//getLocationChangeset().addChangesetListener(StreetsideChangesetDialog.getInstance());
 		}
 		createHatchTexture();
@@ -257,7 +249,4 @@
     super.setVisible(visible);
     getData().getImages().parallelStream().forEach(img -> img.setVisible(visible));
-    if (MainApplication.getMap() != null) {
-      //StreetsideFilterDialog.getInstance().refresh();
-    }
   }
 
@@ -301,4 +290,8 @@
       }
     }
+
+    // TODO: Sequence lines removed because Streetside imagery is organized
+    // such that the images are sorted by the distance from the center of
+    // the bounding box - Redefine sequences?
 
     // Draw sequence line
@@ -379,18 +372,4 @@
       g.drawOval(p.x - IMG_MARKER_RADIUS, p.y - IMG_MARKER_RADIUS, 2 * IMG_MARKER_RADIUS, 2 * IMG_MARKER_RADIUS);
     }
-
-
-		/*if (img instanceof StreetsideImage && !((StreetsideImage) img).getDetections().isEmpty()) {
-			final Path2D trafficSign = new Path2D.Double();
-			trafficSign.moveTo(p.getX() - StreetsideLayer.TRAFFIC_SIGN_SIZE / 2d, p.getY() - StreetsideLayer.TRAFFIC_SIGN_HEIGHT_3RD);
-			trafficSign.lineTo(p.getX() + StreetsideLayer.TRAFFIC_SIGN_SIZE / 2d, p.getY() - StreetsideLayer.TRAFFIC_SIGN_HEIGHT_3RD);
-			trafficSign.lineTo(p.getX(), p.getY() + 2 * StreetsideLayer.TRAFFIC_SIGN_HEIGHT_3RD);
-			trafficSign.closePath();
-			g.setColor(Color.WHITE);
-			g.fill(trafficSign);
-			g.setStroke(new BasicStroke(1));
-			g.setColor(Color.RED);
-			g.draw(trafficSign);
-		}*/
 	}
 
@@ -536,21 +515,4 @@
   }
 
-  /**
-   * Action used to delete images.
-   *
-   * @author nokutu
-   */
-  /*private class DeleteImageAction extends AbstractAction {
-
-    private static final long serialVersionUID = -982809854631863962L;
-
-    @Override
-    public void actionPerformed(ActionEvent e) {
-      if (instance != null)
-        StreetsideRecord.getInstance().addCommand(
-          new CommandDelete(getData().getMultiSelectedImages()));
-    }
-  }*/
-
   private static class NearestImgToTargetComparator implements Comparator<StreetsideAbstractImage> {
     private final StreetsideAbstractImage target;
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 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsidePlugin.java	(revision 34399)
@@ -37,6 +37,4 @@
   /** Walk action */
   private static final StreetsideWalkAction WALK_ACTION = new StreetsideWalkAction();
-  /** Upload action */
-  //private static final StreetsideUploadAction UPLOAD_ACTION = new StreetsideUploadAction();
 
   static {
@@ -48,6 +46,4 @@
       MainMenu.add(MainApplication.getMenu().dataMenu, new StreetsideJoinAction(), false);
       MainMenu.add(MainApplication.getMenu().moreToolsMenu, WALK_ACTION, false);
-      //MainMenu.add(MainApplication.getMenu().imagerySubMenu, new MapObjectLayerAction(), false);
-      //MainMenu.add(MainApplication.getMenu().imagerySubMenu, new MapObjectLayerAction(), false);
     }
   }
@@ -90,13 +86,7 @@
       ));
       MainApplication.getMap().addToggleDialog(StreetsideViewerDialog.getInstance(), false);
-      //MainApplication.getMap().addToggleDialog(StreetsideHistoryDialog.getInstance(), false);
-      //MainApplication.getMap().addToggleDialog(StreetsideChangesetDialog.getInstance(), false);
-      //MainApplication.getMap().addToggleDialog(StreetsideFilterDialog.getInstance(), false);
     }
     if (oldFrame != null && newFrame == null) { // map frame destroyed
       StreetsideMainDialog.destroyInstance();
-      //StreetsideHistoryDialog.destroyInstance();
-      //StreetsideChangesetDialog.destroyInstance();
-      //StreetsideFilterDialog.destroyInstance();
       ImageInfoPanel.destroyInstance();
       CubemapBuilder.destroyInstance();
@@ -120,17 +110,3 @@
     return null;
   }
-
-  /**
-   * @return the {@link StreetsideUploadAction} for the plugin
-   */
-  /*public static StreetsideUploadAction getUploadAction() {
-    return UPLOAD_ACTION;
-  }*/
-
-  /**
-   * @return the {@link StreetsideZoomAction} for the plugin
-   */
-  /*public static StreetsideZoomAction getZoomAction() {
-    return ZOOM_ACTION;
-  }*/
-  }
+}
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideSequence.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideSequence.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideSequence.java	(revision 34399)
@@ -7,6 +7,4 @@
 
 import org.openstreetmap.josm.plugins.streetside.model.UserProfile;
-
-import org.openstreetmap.josm.plugins.streetside.utils.StreetsideUtils;
 
 /**
@@ -67,5 +65,4 @@
 }
 
-// TODO: Are all my sequences only set with id values? (no LatLon/Cas?) @rrh
 public StreetsideSequence(String id) {
 	this.id = id;
@@ -88,8 +85,5 @@
    * @param images The set of {@link StreetsideAbstractImage} objects to be added.
    */
-  @SuppressWarnings("unchecked")
   public synchronized void add(final Collection<? extends StreetsideAbstractImage> images) {
-    Collection<? extends StreetsideAbstractImage> res = images;
-    res = StreetsideUtils.sortImagesInSequence((List<StreetsideAbstractImage>) images);
     this.images.addAll(images);
     images.forEach(img -> img.setSequence(this));
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/actions/StreetsideDownloadAction.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/actions/StreetsideDownloadAction.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/actions/StreetsideDownloadAction.java	(revision 34399)
@@ -28,6 +28,5 @@
   private static final long serialVersionUID = 4426446157849005029L;
 
-  // TODO: I18n "Open Streeside Layer"
-  public static final Shortcut SHORTCUT = Shortcut.registerShortcut("Streetside", /*tr(*/"Open Streetside layer"/*)*/, KeyEvent.VK_COMMA, Shortcut.SHIFT);
+  public static final Shortcut SHORTCUT = Shortcut.registerShortcut("Streetside", "Open Streetside layer", KeyEvent.VK_COMMA, Shortcut.SHIFT);
 
   final static Logger logger = Logger.getLogger(StreetsideDownloadAction.class);
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/actions/StreetsideExportAction.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/actions/StreetsideExportAction.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/actions/StreetsideExportAction.java	(revision 34399)
@@ -29,5 +29,4 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
-import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Shortcut;
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cache/CacheUtils.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cache/CacheUtils.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cache/CacheUtils.java	(revision 34399)
@@ -11,5 +11,4 @@
 import org.openstreetmap.josm.plugins.streetside.StreetsideImage;
 import org.openstreetmap.josm.plugins.streetside.cubemap.CubemapBuilder;
-import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -85,5 +84,6 @@
      break;
    case FULL_IMAGE:
-   // TODO: is this still useful? @rrh
+     // not used (relic from Mapillary)
+     break;
    case CUBEMAP:
 	   if(img.getId()==null) {
@@ -98,151 +98,4 @@
  }
 }
-
-/**
-* Downloads the picture of the given image. Does nothing when it is already
-* in cache.
-*
-* @param cm
-*          The cubemap to be downloaded.
-* @param pic
-*          The picture type to be downloaded (full quality, thumbnail, both, or cubemap.)
-*/
-/*public static void downloadCubemapFront(StreetsideImage cm, PICTURE pic) {
- switch (pic) {
-   case CUBEMAP:
-	   for (int i = 0; i < 6; i++) {
-			for (int j = 0; j < 4; j++) {
-				for (int k = 0; k < 4; k++) {
-					String cubeface = CubemapUtils.getFaceNumberForCount(i);
-					String tileNr = CubemapUtils.rowCol2StreetsideCellAddressMap
-							.get(Integer.toString(j) + Integer.toString(k));
-					long tileId = Long.parseLong(cm.getId() + cubeface + tileNr);
-
-					submit(cm.getId(), StreetsideCache.Type.CUBEMAP_FRONT, ignoreDownload);
-
-				}
-			}
-		}
-	   break;
-   default:
-     submit(cm.getId(), StreetsideCache.Type.CUBEMAP_FRONT, ignoreDownload);
-     break;
- }
-}*/
-
-/*public static void downloadCubemapRight(StreetsideImage cm, PICTURE pic) {
-	 switch (pic) {
-	   case CUBEMAP:
-		   for (int i = 0; i < 6; i++) {
-				for (int j = 0; j < 4; j++) {
-					for (int k = 0; k < 4; k++) {
-						String cubeface = CubemapUtils.getFaceNumberForCount(i);
-						String tileNr = CubemapUtils.rowCol2StreetsideCellAddressMap
-								.get(Integer.toString(j) + Integer.toString(k));
-						long tileId = Long.parseLong(cm.getId() + cubeface + tileNr);
-
-						submit(cm.getId(), StreetsideCache.Type.CUBEMAP_RIGHT, ignoreDownload);
-
-					}
-				}
-			}
-		   break;
-	   default:
-	     submit(cm.getId(), StreetsideCache.Type.CUBEMAP_RIGHT, ignoreDownload);
-	     break;
-	 }
-	}*/
-
-/*public static void downloadCubemapBack(StreetsideImage cm, PICTURE pic) {
-	 switch (pic) {
-	   case CUBEMAP:
-		   for (int i = 0; i < 6; i++) {
-				for (int j = 0; j < 4; j++) {
-					for (int k = 0; k < 4; k++) {
-						String cubeface = CubemapUtils.getFaceNumberForCount(i);
-						String tileNr = CubemapUtils.rowCol2StreetsideCellAddressMap
-								.get(Integer.toString(j) + Integer.toString(k));
-						long tileId = Long.parseLong(cm.getId() + cubeface + tileNr);
-
-						submit(cm.getId(), StreetsideCache.Type.CUBEMAP_BACK, ignoreDownload);
-
-					}
-				}
-			}
-		   break;
-	   default:
-	     submit(cm.getId(), StreetsideCache.Type.CUBEMAP_BACK, ignoreDownload);
-	     break;
-	 }
-	}*/
-
-/*public static void downloadCubemapLeft(StreetsideImage cm, PICTURE pic) {
-	 switch (pic) {
-	   case CUBEMAP:
-		   for (int i = 0; i < 6; i++) {
-				for (int j = 0; j < 4; j++) {
-					for (int k = 0; k < 4; k++) {
-						String cubeface = CubemapUtils.getFaceNumberForCount(i);
-						String tileNr = CubemapUtils.rowCol2StreetsideCellAddressMap
-								.get(Integer.toString(j) + Integer.toString(k));
-						long tileId = Long.parseLong(cm.getId() + cubeface + tileNr);
-
-						submit(cm.getId(), StreetsideCache.Type.CUBEMAP_LEFT, ignoreDownload);
-
-					}
-				}
-			}
-		   break;
-	   default:
-	     submit(cm.getId(), StreetsideCache.Type.CUBEMAP_LEFT, ignoreDownload);
-	     break;
-	 }
-	}*/
-
-/*public static void downloadCubemapUp(StreetsideImage cm, PICTURE pic) {
-	 switch (pic) {
-	   case CUBEMAP:
-		   for (int i = 0; i < 6; i++) {
-				for (int j = 0; j < 4; j++) {
-					for (int k = 0; k < 4; k++) {
-						String cubeface = CubemapUtils.getFaceNumberForCount(i);
-						String tileNr = CubemapUtils.rowCol2StreetsideCellAddressMap
-								.get(Integer.toString(j) + Integer.toString(k));
-						long tileId = Long.parseLong(cm.getId() + cubeface + tileNr);
-
-						submit(cm.getId(), StreetsideCache.Type.CUBEMAP_UP, ignoreDownload);
-
-					}
-				}
-			}
-		   break;
-	   default:
-	     submit(cm.getId(), StreetsideCache.Type.CUBEMAP_UP, ignoreDownload);
-	     break;
-	 }
-	}*/
-
-/*public static void downloadCubemapDown(StreetsideImage cm, PICTURE pic) {
-	 switch (pic) {
-	   case CUBEMAP:
-		   for (int i = 0; i < 6; i++) {
-				for (int j = 0; j < 4; j++) {
-					for (int k = 0; k < 4; k++) {
-						String cubeface = CubemapUtils.getFaceNumberForCount(i);
-						String tileNr = CubemapUtils.rowCol2StreetsideCellAddressMap
-								.get(Integer.toString(j) + Integer.toString(k));
-						long tileId = Long.parseLong(cm.getId() + cubeface + tileNr);
-
-						submit(cm.getId(), StreetsideCache.Type.CUBEMAP_DOWN, ignoreDownload);
-
-					}
-				}
-			}
-		   break;
-	   default:
-	     submit(cm.getId(), StreetsideCache.Type.CUBEMAP_DOWN, ignoreDownload);
-	     break;
-	 }
-	}*/
 
 /**
@@ -266,10 +119,10 @@
 }
 
-private static class IgnoreDownload implements ICachedLoaderListener {
+  private static class IgnoreDownload implements ICachedLoaderListener {
 
- @Override
- public void loadingFinished(CacheEntry arg0, CacheEntryAttributes arg1, LoadResult arg2) {
-   // Ignore download
- }
+    @Override
+    public void loadingFinished(CacheEntry arg0, CacheEntryAttributes arg1, LoadResult arg2) {
+      // Ignore download
+    }
+  }
 }
-}
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 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cache/StreetsideCache.java	(revision 34399)
@@ -52,16 +52,4 @@
 	 */
 	public StreetsideCache(final String id, final Type type) {
-		//ICacheAccess<String,BufferedImageCacheEntry>,TileJobOptions,ThreadPoolExecutor
-		// TODO: StreetsideCache.java:53: error: no suitable constructor found for JCSCachedTileLoaderJob(CacheAccess<String,BufferedImageCacheEntry>,int,int,HashMap<String,String>)
-//	    [javac] 		super(Caches.ImageCache.getInstance().getCache(), 50000, 50000, new HashMap<String,String>());
-//	    [javac] 		^
-//	    [javac]     constructor JCSCachedTileLoaderJob.JCSCachedTileLoaderJob(ICacheAccess<String,BufferedImageCacheEntry>,TileJobOptions,ThreadPoolExecutor) is not applicable
-//	    [javac]       (actual and formal argument lists differ in length)
-//	    [javac]     constructor JCSCachedTileLoaderJob.JCSCachedTileLoaderJob(ICacheAccess<String,BufferedImageCacheEntry>,TileJobOptions) is not applicable
-//	    [javac]       (actual and formal argument lists differ in length)
-
-		//super(Caches.ImageCache.getInstance().getCache(), 50000, 50000, new HashMap<String,String>());
-		//super(Caches.ImageCache.getInstance().getCache(),TileJobOptions,ThreadpoolExecutor)
-		//TileJobOptions tjo = ;
 		super(Caches.ImageCache.getInstance().getCache(),new TileJobOptions(50000, 50000, new HashMap<String,String>(),50000l));
 
@@ -70,6 +58,4 @@
 			url = null;
 		} else {
-			//this.id = id + (type == Type.FULL_IMAGE ? ".FULL_IMAGE" : ".THUMBNAIL");
-			// Add an "01" to the Streetside imageId in order to get a frontal thumbnail image for the display
 			this.id = id;
 			url = VirtualEarth.streetsideTile(id, type == Type.THUMBNAIL);
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CameraTransformer.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CameraTransformer.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CameraTransformer.java	(revision 34399)
@@ -11,4 +11,5 @@
 import javafx.scene.transform.Translate;
 
+// necessary because JavaFX is not an official part of Java 8 (access)
 @SuppressWarnings("restriction")
 public class CameraTransformer extends Group {
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 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilder.java	(revision 34399)
@@ -3,4 +3,5 @@
 
 import java.awt.image.BufferedImage;
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -22,8 +23,10 @@
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
 import org.openstreetmap.josm.tools.I18n;
+import org.slf4j.helpers.MessageFormatter;
 
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 
+// JavaFX access in Java 8
 @SuppressWarnings("restriction")
 public class CubemapBuilder implements ITileDownloadingTaskListener, StreetsideDataListener {
@@ -76,5 +79,5 @@
 			long runTime = (System.currentTimeMillis()-startTime)/1000;
 			if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-			  logger.debug("Completed downloading tiles for " + newImage.getId() + " in " + runTime + " seconds.");
+			  logger.debug(MessageFormat.format("Completed downloading tiles for {0} in {1} seconds.", newImage.getId() , runTime));
 			}
 		}
@@ -121,5 +124,5 @@
 
 					if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-					  logger.debug("Completed tile downloading task " +  ff.get() + " in " + (startTime - System.currentTimeMillis())/ 1000 + " seconds.");
+					  logger.debug(MessageFormat.format("Completed tile downloading task {0} in {1} seconds.", ff.get(), (startTime - System.currentTimeMillis())/ 1000));
 					}
 				}
@@ -141,6 +144,6 @@
 				for (Future<String> ff : results) {
 					if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-					  logger.debug("Completed tile downloading task " + ff.get() + " in " +
-							(startTime - System.currentTimeMillis())/ 1000 + " seconds.");
+					  logger.debug(MessageFormat.format("Completed tile downloading task {0} in {1} seconds.",ff.get(),
+							(startTime - System.currentTimeMillis())/ 1000));
 					}
 				}
@@ -156,5 +159,5 @@
 
 		if (StreetsideProperties.DEBUGING_ENABLED.get()) {
-      logger.debug("Tile imagery downloading tasks completed in " + runTime/1000000);
+      logger.debug(MessageFormat.format("Tile imagery downloading tasks completed in {0} seconds.",  runTime/1000000));
 		}
 
@@ -180,6 +183,6 @@
 		if (tileCount == (CubemapUtils.NUM_SIDES * maxCols * maxRows)) {
 		  if (StreetsideProperties.DEBUGING_ENABLED.get()) {
-        logger.debug(tileCount + " tile images ready for building cumbemap faces for cubemap " +
-					CubemapBuilder.getInstance().getCubemap().getId());
+        logger.debug(MessageFormat.format("{0} tile images ready for building cumbemap faces for cubemap {1}.", tileCount,
+					CubemapBuilder.getInstance().getCubemap().getId()));
 		  }
 
@@ -269,6 +272,6 @@
     if (StreetsideProperties.DEBUGING_ENABLED.get()) {
       logger.debug(
-        "Completed downloading, assembling and setting cubemap imagery for cubemap " + cubemap.getId() + " in "
-          + runTime + " sceconds."
+        MessageFormat.format("Completed downloading, assembling and setting cubemap imagery for cubemap {0} in  {1} seconds.", cubemap.getId(),
+          runTime)
       );
     }
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapUtils.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapUtils.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapUtils.java	(revision 34399)
@@ -9,5 +9,4 @@
 import org.apache.log4j.Logger;
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
-import org.openstreetmap.josm.tools.I18n;
 
 public class CubemapUtils {
@@ -110,6 +109,4 @@
 		}
 
-		// TODO: leading zeros added in StreetsideURL now
-		//sb.append("0");
 		res = sb.reverse().toString();
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/GraphicsUtils.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/GraphicsUtils.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/GraphicsUtils.java	(revision 34399)
@@ -5,9 +5,8 @@
 import java.awt.image.AffineTransformOp;
 import java.awt.image.BufferedImage;
+import java.text.MessageFormat;
 
 import org.apache.log4j.Logger;
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
-import org.openstreetmap.josm.tools.I18n;
-import org.openstreetmap.josm.tools.Logging;
 
 import javafx.application.Platform;
@@ -68,47 +67,39 @@
         for (int i = 0; i < rows; i++) {
             for (int j = 0; j < cols; j++) {
-                // TODO: this makes the image a mirror image. why!?!
-            	img.createGraphics().drawImage(tiles[num], chunkWidth * j, (chunkHeight * i), null);
+        // TODO: unintended mirror image created with draw call - requires
+        // extra reversal step - fix!
+        img.createGraphics().drawImage(tiles[num], chunkWidth * j, (chunkHeight * i), null);
 
-            	// TODO: remove file test!
-            	/*try {
-        			ImageIO.write(img, "jpeg", new File("/Users/renerr18/Desktop/TileImagesTest/tile16b" + Long.valueOf(System.currentTimeMillis()).toString() + "createGraphicsAfter.jpeg"));
-        			//ImageIO.write(res[i], "jpeg", outputfileAfter);
-        		} catch (IOException e) {
-        			// TODO Auto-generated catch block
-        			e.printStackTrace();
-        		}*/
+        int width = StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get() ? 1014 : 510;
+        int height = StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get() ? 1014 : 510;
 
-                int width = StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get()?1014:510;
-                int height = StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get()?1014:510;
+        // BufferedImage for mirror image
+        res = new BufferedImage(
+          StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get() ? 1014 : 510,
+          StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get() ? 1014 : 510, BufferedImage.TYPE_INT_ARGB);
 
-                // BufferedImage for mirror image
-                res = new BufferedImage(StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get()?1014:510, StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get()?1014:510,
-                                                BufferedImage.TYPE_INT_ARGB);
+        // Create mirror image pixel by pixel
+        for (int y = 0; y < height; y++) {
+          for (int lx = 0, rx = width - 1; lx < width; lx++, rx--) {
+            // lx starts from the left side of the image
+            // rx starts from the right side of the image
+            // lx is used since we are getting pixel from left side
+            // rx is used to set from right side
+            // get source pixel value
+            int p = img.getRGB(lx, y);
 
-                // Create mirror image pixel by pixel
-                for (int y = 0; y < height; y++)
-                {
-                    for (int lx = 0, rx = width - 1; lx < width; lx++, rx--)
-                    {
-                        // lx starts from the left side of the image
-                        // rx starts from the right side of the image
-                        // lx is used since we are getting pixel from left side
-                        // rx is used to set from right side
-                        // get source pixel value
-                        int p = img.getRGB(lx, y);
+            // set mirror image pixel value
+            res.setRGB(rx, y, p);
+          }
+        }
+        num++;
+      }
+    }
 
-                        // set mirror image pixel value
-                        res.setRGB(rx, y, p);
-                    }
-                }
-                num++;
-            }
-        }
-
-        if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-          logger.debug("Image concatenated in " + (System.currentTimeMillis()-start) + " millisecs.");
-        }
-        return res;
+    if (StreetsideProperties.DEBUGING_ENABLED.get()) {
+      logger
+        .debug(MessageFormat.format("Image concatenated in {0} seconds.", (System.currentTimeMillis() - start) / 1000));
+    }
+    return res;
 	}
 
@@ -137,5 +128,5 @@
 
 		if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-			logger.debug("Images cropped in " + (System.currentTimeMillis()-start) + " millisecs.");
+			logger.debug(MessageFormat.format("Images cropped in {0}", (System.currentTimeMillis()-start) + " millisecs."));
 		}
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/TileDownloadingTask.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/TileDownloadingTask.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/TileDownloadingTask.java	(revision 34399)
@@ -3,4 +3,5 @@
 
 import java.awt.image.BufferedImage;
+import java.text.MessageFormat;
 import java.util.List;
 import java.util.Objects;
@@ -14,6 +15,4 @@
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideURL;
-import org.openstreetmap.josm.tools.I18n;
-import org.openstreetmap.josm.tools.Logging;
 
 import us.monoid.web.Resty;
@@ -117,5 +116,5 @@
 		  long endTime = System.currentTimeMillis();
 	    long runTime = (endTime-startTime)/1000;
-	    logger.debug("Loaded image for " + tileId + " in " + runTime + " seconds");
+	    logger.debug(MessageFormat.format("Loaded image for {0} in {1} seconds.", tileId, runTime));
 		}
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsideMainDialog.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsideMainDialog.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsideMainDialog.java	(revision 34399)
@@ -39,5 +39,4 @@
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -290,13 +289,5 @@
 					}
 				}
-			// TODO: handle/convert/remove "imported images"
-			} /*else if (image instanceof StreetsideImportedImage) {
-				final StreetsideImportedImage streetsideImage = (StreetsideImportedImage) image;
-				try {
-					streetsideImageDisplay.setImage(streetsideImage.getImage(), null);
-				} catch (final IOException e) {
-					logger.error(e);
-				}
-			}*/
+			}
 			updateTitle();
 		}
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsidePreferenceSetting.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsidePreferenceSetting.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsidePreferenceSetting.java	(revision 34399)
@@ -59,33 +59,19 @@
 
   private final JCheckBox displayHour =
-    // TODO tr( RRH
-    // i18n: Checkbox label in JOSM settings
     new JCheckBox(I18n.tr("Display hour when the picture was taken"), StreetsideProperties.DISPLAY_HOUR.get());
   private final JCheckBox format24 =
-    // TODO tr( RRH
-    // i18n: Checkbox label in JOSM settings
     new JCheckBox(I18n.tr("Use 24 hour format"), StreetsideProperties.TIME_FORMAT_24.get());
   private final JCheckBox moveTo =
-    // TODO tr( RRH
-    // i18n: Checkbox label in JOSM settings
     new JCheckBox(I18n.tr("Move to picture''s location with next/previous buttons"), StreetsideProperties.MOVE_TO_IMG.get());
   private final JCheckBox hoverEnabled =
-    // TODO tr( RRH
-    // i18n: Checkbox label in JOSM settings
     new JCheckBox(I18n.tr("Preview images when hovering its icon"), StreetsideProperties.HOVER_ENABLED.get());
   private final JCheckBox cutOffSeq =
-    // TODO tr( RRH
-    // i18n: Checkbox label in JOSM settings
     new JCheckBox(I18n.tr("Cut off sequences at download bounds"), StreetsideProperties.CUT_OFF_SEQUENCES_AT_BOUNDS.get());
   private final JCheckBox imageLinkToBlurEditor =
     new JCheckBox(
-      // TODO tr( RRH
-      // i18n: Checkbox label in JOSM settings
       I18n.tr("When opening Streetside image in web browser, show the blur editor instead of the image viewer"),
       StreetsideProperties.IMAGE_LINK_TO_BLUR_EDITOR.get()
     );
   private final JCheckBox developer =
-    // TODO tr( RRH
-    // i18n: Checkbox label in JOSM settings
     new JCheckBox(I18n.tr("Enable experimental beta-features (might be unstable)"), StreetsideProperties.DEVELOPER.get());
   private final SpinnerNumberModel preFetchSize = new SpinnerNumberModel(
@@ -113,5 +99,4 @@
     loginPanel.setBackground(StreetsideColorScheme.TOOLBAR_DARK_GREY);
     JLabel brandImage = new JLabel();
-    // TODO: change icons RRH
     try (InputStream is = StreetsidePreferenceSetting.class.getResourceAsStream("/images/streetside-logo-white.png")) {
       if (is != null) {
@@ -139,5 +124,4 @@
 
     JPanel downloadModePanel = new JPanel();
-    // TODO tr( RRH
     downloadModePanel.add(new JLabel(I18n.tr("Download mode")));
     downloadModePanel.add(downloadModeComboBox);
@@ -152,6 +136,4 @@
 
     final JPanel preFetchPanel = new JPanel();
-    // TODO: tr( RRH
-    // i18n: Spinner label in JOSM settings
     preFetchPanel.add(new JLabel(I18n.tr("Number of images to be pre-fetched (forwards and backwards)")));
     final JSpinner spinner = new JSpinner(preFetchSize);
@@ -189,5 +171,4 @@
     loginPanel.remove(loginButton);
     loginPanel.add(logoutButton, 3);
-    // TODO tr( RRH
     loginLabel.setText(I18n.tr("You are logged in as ''{0}''.", username));
     loginPanel.revalidate();
@@ -199,5 +180,4 @@
     loginPanel.remove(logoutButton);
     loginPanel.add(loginButton, 3);
-    // TODO: tr( RRH
     loginLabel.setText(I18n.tr("You are currently not logged in."));
     loginPanel.revalidate();
@@ -249,10 +229,5 @@
       OAuthPortListener portListener = new OAuthPortListener(callback);
       portListener.start();
-      /*try {
-        // TODO: change URL RRH
-        StreetsideUtils.browse(StreetsideURL.MainWebsite.connect("http://localhost:"+OAuthPortListener.PORT+'/'));
-      } catch (IOException e) {
-        logger.error(e);
-      }*/
+      // user authentication not supported for Streetside (Mapillary relic)
     }
   }
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsideViewerDialog.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsideViewerDialog.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsideViewerDialog.java	(revision 34399)
@@ -9,5 +9,4 @@
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
 import org.openstreetmap.josm.plugins.streetside.gui.imageinfo.StreetsideViewerPanel;
-import org.openstreetmap.josm.tools.I18n;
 
 /**
@@ -22,6 +21,5 @@
 	private static final long serialVersionUID = -8983900297628236197L;
 
-	// TODO: I18n support in all languages?
-	private static final String BASE_TITLE = /*I18n.marktr(*/"360° Streetside Viewer"/*)*/;
+	private static final String BASE_TITLE = "360° Streetside Viewer";
 
 	private static StreetsideViewerDialog instance;
@@ -34,5 +32,5 @@
 	private StreetsideViewerDialog() {
 	  // TODO: I18n support in all languages?
-	  super(/*I18n.tr(*/StreetsideViewerDialog.BASE_TITLE/*)*/, "streetside-viewer", /*I18n.tr(*/"Open Streetside Viewer window"/*)*/,
+	  super(StreetsideViewerDialog.BASE_TITLE, "streetside-viewer", "Open Streetside Viewer window",
 				null, 200, true, StreetsidePreferenceSetting.class);
 		streetsideViewerPanel = new StreetsideViewerPanel();
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/dialog/ChooseGeoImageLayersDialog.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/dialog/ChooseGeoImageLayersDialog.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/dialog/ChooseGeoImageLayersDialog.java	(revision 34399)
@@ -6,9 +6,6 @@
 import java.awt.Container;
 import java.awt.FlowLayout;
-import java.awt.GraphicsEnvironment;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
 
 import javax.swing.AbstractListModel;
@@ -23,11 +20,6 @@
 import javax.swing.UIManager;
 
-import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
-import org.openstreetmap.josm.plugins.streetside.StreetsideImportedImage;
-import org.openstreetmap.josm.plugins.streetside.StreetsideLayer;
-import org.openstreetmap.josm.plugins.streetside.StreetsidePlugin;
-import org.openstreetmap.josm.plugins.streetside.StreetsideSequence;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -58,34 +50,8 @@
     buttonPanel.add(cancelButton);
     final JButton importButton = new JButton(I18n.tr("Import"), new ImageProvider("copy").get());
-    /*importButton.addActionListener(e -> {
-      list.getSelectedValuesList().parallelStream().map(gil -> {
-        StreetsideSequence seq = new StreetsideSequence();
-        seq.add(
-          gil.getImages().parallelStream()
-            .map(img -> {
-              try {
-                return StreetsideImportedImage.createInstance(img);
-              } catch (IllegalArgumentException iae) {
-                final String message = I18n.tr("Could not import a geotagged image to the Streetside layer!");
-                logger.warn(I18n.tr(message, iae));
-                if (!GraphicsEnvironment.isHeadless()) {
-                  new Notification(message).setIcon(StreetsidePlugin.LOGO.get()).show();
-                }
-                return null;
-              }
-            })
-            .filter(Objects::nonNull)
-            .sorted((o1, o2) -> (int) Math.signum(o1.getCd() - o2.getCd())) // order by capture date timestamp (ascending)
-            .collect(Collectors.toList())
-        );
-        return seq;
-      }).forEach(seq -> {
-        StreetsideLayer.getInstance().getData().addAll(seq.getImages(), false);
-        // TODO: @rrh
-        //StreetsideImportAction.recordChanges(seq.getImages());
-      });
-      StreetsideLayer.invalidateInstance();
-      dispose();
-    });*/
+
+    // Streetside does not support importing images (Mapillary relic)
+    importButton.setEnabled(false);
+
     buttonPanel.add(importButton);
     c.add(buttonPanel, BorderLayout.SOUTH);
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 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ImageInfoHelpPopup.java	(revision 34399)
@@ -44,10 +44,9 @@
     mainText.setContentType("text/html");
     mainText.setFont(SelectableLabel.DEFAULT_FONT);
-    // TODO: Translate into all supported languages
     mainText.setText(
       "<html><div style='width:250px'>" +
-      /*I18n.tr(*/"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)."/*)*/ +
+      "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>" +
-      /*I18n.tr(*/"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."/*)*/ +
+      "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>"
     );
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ImageInfoPanel.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ImageInfoPanel.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ImageInfoPanel.java	(revision 34399)
@@ -93,5 +93,5 @@
     JPanel imgButtons = new JPanel();
     imgButtons.add(new StreetsideButton(imgLinkAction, true));
-    imgButtons.add(new StreetsideButton(null/*addStreetsideTagAction*/, true));
+    imgButtons.add(new StreetsideButton(addStreetsideTagAction, true));
     seqKeyValue = new SelectableLabel();
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerPanel.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerPanel.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerPanel.java	(revision 34399)
@@ -3,4 +3,5 @@
 
 import java.awt.BorderLayout;
+import java.text.MessageFormat;
 
 import javax.swing.JCheckBox;
@@ -22,5 +23,4 @@
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideURL;
 import org.openstreetmap.josm.tools.I18n;
-import org.openstreetmap.josm.tools.Logging;
 
 public final class StreetsideViewerPanel extends JPanel
@@ -86,10 +86,8 @@
 	    JPanel privacyLink = new JPanel();
 
-	    // TODO: I18n for all languages?
-	    imgLinkAction = new WebLinkAction(/*I18n.tr(*/"Report a privacy concern with this image"/*)*/, null);
+	    imgLinkAction = new WebLinkAction("Report a privacy concern with this image", null);
 	    privacyLink.add(new StreetsideButton(imgLinkAction, true));
 	    checkPanel.add(privacyLink, BorderLayout.PAGE_END);
 
-	    //add(checkPanel, BorderLayout.PAGE_START);
 	    add(threeSixtyDegreeViewerPanel, BorderLayout.CENTER);
 
@@ -134,7 +132,5 @@
 		    ));
 
-		    //imgIdValue.setEnabled(newImage instanceof StreetsideImage);
-		    //final String newImageId = newImage instanceof StreetsideImage ? ((StreetsideImage) newImage).getId(): null;
-		    final String newImageId = CubemapBuilder.getInstance().getCubemap() !=null ? CubemapBuilder.getInstance().getCubemap().getId() : newImage instanceof StreetsideImage ? ((StreetsideImage) newImage).getId(): null;;
+		    final String newImageId = CubemapBuilder.getInstance().getCubemap() !=null ? CubemapBuilder.getInstance().getCubemap().getId() : newImage instanceof StreetsideImage ? ((StreetsideImage) newImage).getId(): null;
 		    if (newImageId != null) {
 		      final String bubbleId = CubemapUtils.convertQuaternary2Decimal(newImageId);
@@ -144,5 +140,5 @@
 
 		      if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-		        logger.debug(/*I18n.tr(*/"Privacy link set for Streetside image " + bubbleId + " quadKey " + newImageId/*)*/);
+		        logger.debug(MessageFormat.format("Privacy link set for Streetside image {0} quadKey {1}", bubbleId, newImageId));
 		      }
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ThreeSixtyDegreeViewerPanel.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ThreeSixtyDegreeViewerPanel.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ThreeSixtyDegreeViewerPanel.java	(revision 34399)
@@ -195,21 +195,4 @@
 		});
 
-		/*scene.widthProperty().addListener(new ChangeListener<Number>() {
-		    @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) {
-		        System.out.println("Width: " + newSceneWidth);
-		    }
-
-			@Override
-			public void changed(ObservableValue<? extends Number> observable, Number oldSceneWidth, Number newSceneWidth) {
-				draw();
-			}
-		});*/
-		/*scene.heightProperty().addListener(new ChangeListener<Number>() {
-		    @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) {
-		        //System.out.println("Height: " + newSceneHeight);
-		    	draw();
-		    }
-		});*/
-
 		root.getChildren().addAll(cubemapBox, subGroup);
 		root.setAutoSizeChildren(true);
@@ -224,8 +207,5 @@
 
 	private static Scene createDefaultScene() {
-		// TODO: default scene with message? @rrh
-
 		// Load Cubemap box AFTER camera is initialized
-		//final double size = 100000D;
 
 		TextArea textArea = new TextArea();
@@ -330,21 +310,4 @@
     });
 
-    /*scene.widthProperty().addListener(new ChangeListener<Number>() {
-        @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) {
-            System.out.println("Width: " + newSceneWidth);
-        }
-
-      @Override
-      public void changed(ObservableValue<? extends Number> observable, Number oldSceneWidth, Number newSceneWidth) {
-        draw();
-      }
-    });*/
-    /*scene.heightProperty().addListener(new ChangeListener<Number>() {
-        @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) {
-            //System.out.println("Height: " + newSceneHeight);
-          draw();
-        }
-    });*/
-
     root.getChildren().addAll(cubemapBox, subGroup);
     root.setAutoSizeChildren(true);
@@ -355,7 +318,5 @@
     Platform.setImplicitExit(false);
 
-    //return scene;
-
-		defaultScene = new Scene(vbox, 200, 100);
+    defaultScene = new Scene(vbox, 200, 100);
 		return defaultScene;
 	}
@@ -379,7 +340,4 @@
 		camera.setFieldOfView(42);
 		camera.setTranslateZ(-cameraDistance);
-		// cameraTransform.ry.setAngle(-45.0);
-		// cameraTransform.rx.setAngle(-10.0);
-		// add a Point Light for better viewing of the grid coordinate system
 		final PointLight light = new PointLight(Color.WHITE);
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/history/commands/CommandImport.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/history/commands/CommandImport.java	(revision 34398)
+++ 	(revision )
@@ -1,59 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.plugins.streetside.history.commands;
-
-import static org.openstreetmap.josm.tools.I18n.trn;
-
-import java.util.Set;
-
-import org.openstreetmap.josm.plugins.streetside.StreetsideAbstractImage;
-import org.openstreetmap.josm.plugins.streetside.StreetsideLayer;
-
-
-/**
- * Imports a set of images stored locally.
- *
- * @author nokutu
- *
- */
-public class CommandImport extends StreetsideExecutableCommand {
-
-  /**
-   * Main constructor.
-   *
-   * @param images
-   *          The set of images that are going to be added. Might be in the same
-   *          sequence or not.
-   */
-  public CommandImport(Set<StreetsideAbstractImage> images) {
-    super(images);
-  }
-
-  @Override
-  public void execute() {
-    StreetsideLayer.getInstance().getData().addAll(this.images);
-  }
-
-  @Override
-  public void undo() {
-    for (StreetsideAbstractImage img : this.images) {
-      StreetsideLayer.getInstance().getData().getImages().remove(img);
-    }
-    StreetsideLayer.invalidateInstance();
-  }
-
-  @Override
-  public void redo() {
-    this.execute();
-  }
-
-  @Override
-  public void sum(StreetsideCommand command) {
-  }
-
-  @Override
-  public String toString() {
-    // TODO: trn( RRH
-    return trn("Imported {0} image", "Imported {0} images", this.images.size(),
-        this.images.size());
-  }
-}
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/BoundsDownloadRunnable.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/BoundsDownloadRunnable.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/BoundsDownloadRunnable.java	(revision 34399)
@@ -7,4 +7,5 @@
 import java.net.URL;
 import java.net.URLConnection;
+import java.text.MessageFormat;
 import java.util.function.Function;
 
@@ -15,7 +16,5 @@
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideURL.APIv3;
-import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.ImageProvider.ImageSizes;
-import org.openstreetmap.josm.tools.Logging;
 
 public abstract class BoundsDownloadRunnable implements Runnable {
@@ -34,5 +33,5 @@
     URL nextURL = getUrlGenerator().apply(bounds);
     if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-      logger.debug("nextURL: " + nextURL.toString());
+      logger.debug(MessageFormat.format("nextURL: {0}", nextURL.toString()));
     }
     try {
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 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/ImageDetailsDownloadRunnable.java	(revision 34399)
@@ -22,8 +22,7 @@
   }
 
-  // TODO: image infos for 360 degree viewer? @rrh
   @Override
   public void run(final URLConnection con) throws IOException {
-     // TODO: modifiy decoder to handle Streetside image info. @rrh
+     // TODO: Enable ImageInfo support in decoder for Streetside
 	  /*try (JsonReader reader = Json.createReader(new BufferedInputStream(con.getInputStream()))) {
       JsonImageDetailsDecoder.decodeImageInfos(reader.readObject(), data);
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 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/SequenceDownloadRunnable.java	(revision 34399)
@@ -48,7 +48,4 @@
     StreetsideSequence seq = new StreetsideSequence(StreetsideSequenceIdGenerator.generateId());
 
-    // TODO: how can LatLon and heading / camera angles (he attribute) be set for a sequence?
-    // and does it make sense? @rrh
-
     List<StreetsideImage> bubbleImages = new ArrayList<>();
 
@@ -94,6 +91,4 @@
           image.setPi(node.path("pi").asDouble());
           image.setPr(node.path("pr").asLong());
-          // TODO: inner class @rrh
-          // image.setRn(node.path("rn").asText());
           image.setRo(node.path("ro").asDouble());
 
@@ -106,5 +101,4 @@
               // Initialize four-tiled cubemap faces (four images per cube side with 18-length
               // Quadkey)
-              // if (StreetsideProperties.CUBEFACE_SIZE.get().intValue() == 4) {
               if (!StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get()) {
                 StreetsideImage tile = new StreetsideImage(String.valueOf(image.getId() + Integer.valueOf(i)));
@@ -113,5 +107,4 @@
               // Initialize four-tiled cubemap faces (four images per cub eside with 20-length
               // Quadkey)
-              // if (StreetsideProperties.CUBEFACE_SIZE.get().intValue() == 16) {
               if (StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY.get()) {
                 for (int j = 0; j < 4; j++) {
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/StreetsideDownloader.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/StreetsideDownloader.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/StreetsideDownloader.java	(revision 34399)
@@ -28,9 +28,8 @@
   /** Possible download modes. */
   public enum DOWNLOAD_MODE {
-    // i18n: download mode for Streetside images
     VISIBLE_AREA("visibleArea", I18n.tr("everything in the visible area")),
-    // i18n: download mode for Streetside images
+
     OSM_AREA("osmArea", I18n.tr("areas with downloaded OSM-data")),
-    // i18n: download mode for Streetside images
+
     MANUAL_ONLY("manualOnly", I18n.tr("only when manually requested"));
 
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 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/io/download/StreetsideSquareDownloadRunnable.java	(revision 34399)
@@ -9,5 +9,4 @@
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideUtils;
 import org.openstreetmap.josm.tools.I18n;
-import org.openstreetmap.josm.tools.Logging;
 
 public class StreetsideSquareDownloadRunnable implements Runnable {
@@ -39,16 +38,11 @@
     }
 
-    // TODO: Revamp image details for Streetside RRH
-    // Asynchronously load the rest of the image details
     Thread imgDetailsThread = new Thread(new ImageDetailsDownloadRunnable(StreetsideLayer.getInstance().getData(), bounds));
     imgDetailsThread.start();
 
-    // TODO: Do we support detections? RRH
-    /*Thread detectionsThread = new Thread(new DetectionsDownloadRunnable(StreetsideLayer.getInstance().getData(), bounds));
-    detectionsThread.start();*/
+    // Image detections are not currently supported for Streetside (Mapillary code removed)
 
     try {
       imgDetailsThread.join();
-      //detectionsThread.join();
     } catch (InterruptedException e) {
       logger.warn(I18n.tr("Streetside download interrupted (probably because of closing the layer).", e));
@@ -60,5 +54,4 @@
     StreetsideUtils.updateHelpText();
     StreetsideLayer.invalidateInstance();
-    //StreetsideFilterDialog.getInstance().refresh();
     StreetsideMainDialog.getInstance().updateImage();
   }
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/CubemapBox.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/CubemapBox.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/CubemapBox.java	(revision 34399)
@@ -30,295 +30,270 @@
  */
 @SuppressWarnings("restriction")
-public  class CubemapBox extends Group{
-
-	public enum CubemapBoxImageType{
-        MULTIPLE, SINGLE
-    }
-
-    private final Affine affine = new Affine();
-
-    private final ImageView
-    front = new ImageView(),
-	right = new ImageView(),
-	back  = new ImageView(),
-	left  = new ImageView(),
-    up    = new ImageView(),
-    down  = new ImageView();
-
-    {
-    	front.setId(CubemapUtils.CubemapFaces.FRONT.getValue());
-    	right.setId(CubemapUtils.CubemapFaces.RIGHT.getValue());
-    	back.setId(CubemapUtils.CubemapFaces.BACK.getValue());
-    	left.setId(CubemapUtils.CubemapFaces.LEFT.getValue());
-    	up.setId(CubemapUtils.CubemapFaces.UP.getValue());
-        down .setId(CubemapUtils.CubemapFaces.DOWN.getValue());
-
-    }
-    private final ImageView[] views = new ImageView[]{
-    	front,
-    	right,
-    	back,
-    	left,
-    	up,
-        down
+public class CubemapBox extends Group {
+
+  public enum CubemapBoxImageType {
+    MULTIPLE, SINGLE
+  }
+
+  private final Affine affine = new Affine();
+
+  private final ImageView front = new ImageView(), right = new ImageView(), back = new ImageView(),
+    left = new ImageView(), up = new ImageView(), down = new ImageView();
+
+  {
+    front.setId(CubemapUtils.CubemapFaces.FRONT.getValue());
+    right.setId(CubemapUtils.CubemapFaces.RIGHT.getValue());
+    back.setId(CubemapUtils.CubemapFaces.BACK.getValue());
+    left.setId(CubemapUtils.CubemapFaces.LEFT.getValue());
+    up.setId(CubemapUtils.CubemapFaces.UP.getValue());
+    down.setId(CubemapUtils.CubemapFaces.DOWN.getValue());
+
+  }
+  private final ImageView[] views = new ImageView[] { front, right, back, left, up, down };
+
+  private Image frontImg, rightImg, backImg, leftImg, upImg, downImg, singleImg;
+
+  // private WritableImage convertedImage;
+
+  private final PerspectiveCamera camera;
+  private AnimationTimer timer;
+  private final CubemapBoxImageType imageType;
+
+  public CubemapBox(Image singleImg, double size, PerspectiveCamera camera) {
+    super();
+    imageType = CubemapBoxImageType.SINGLE;
+
+    this.singleImg = singleImg;
+    this.size.set(size);
+    this.camera = camera;
+
+    getTransforms().add(affine);
+
+    loadImageViews();
+
+    getChildren().addAll(views);
+  }
+
+  // private constructor to prevent instantiation
+  public CubemapBox(double size, PerspectiveCamera camera) {
+    super();
+    imageType = CubemapBoxImageType.SINGLE;
+
+    this.size.set(size);
+    this.camera = camera;
+
+    getTransforms().add(affine);
+
+    loadImageViews();
+
+    getChildren().addAll(views);
+  }
+
+  public CubemapBox(
+    Image frontImg, Image rightImg, Image backImg, Image leftImg, Image upImg, Image downImg, double size,
+    PerspectiveCamera camera
+  ) {
+    super();
+    imageType = CubemapBoxImageType.MULTIPLE;
+
+    this.frontImg = frontImg;
+    this.rightImg = rightImg;
+    this.backImg = backImg;
+    this.leftImg = leftImg;
+    this.upImg = upImg;
+    this.downImg = downImg;
+    this.size.set(size);
+    this.camera = camera;
+
+    loadImageViews();
+
+    getTransforms().add(affine);
+
+    getChildren().addAll(views);
+
+    startTimer();
+  }
+
+  public void loadImageViews() {
+
+    for (ImageView iv : views) {
+      iv.setSmooth(true);
+      iv.setPreserveRatio(true);
+    }
+
+    validateImageType();
+  }
+
+  private void layoutViews() {
+
+    for (ImageView v : views) {
+      v.setFitWidth(getSize());
+      v.setFitHeight(getSize());
+    }
+
+    back.setTranslateX(-0.5 * getSize());
+    back.setTranslateY(-0.5 * getSize());
+    back.setTranslateZ(-0.5 * getSize());
+
+    front.setTranslateX(-0.5 * getSize());
+    front.setTranslateY(-0.5 * getSize());
+    front.setTranslateZ(0.5 * getSize());
+    front.setRotationAxis(Rotate.Z_AXIS);
+    front.setRotate(-180);
+    front.getTransforms().add(new Rotate(180, front.getFitHeight() / 2, 0, 0, Rotate.X_AXIS));
+    front.setTranslateY(front.getTranslateY() - getSize());
+
+    up.setTranslateX(-0.5 * getSize());
+    up.setTranslateY(-1 * getSize());
+    up.setRotationAxis(Rotate.X_AXIS);
+    up.setRotate(-90);
+
+    down.setTranslateX(-0.5 * getSize());
+    down.setTranslateY(0);
+    down.setRotationAxis(Rotate.X_AXIS);
+    down.setRotate(90);
+
+    left.setTranslateX(-1 * getSize());
+    left.setTranslateY(-0.5 * getSize());
+    left.setRotationAxis(Rotate.Y_AXIS);
+    left.setRotate(90);
+
+    right.setTranslateX(0);
+    right.setTranslateY(-0.5 * getSize());
+    right.setRotationAxis(Rotate.Y_AXIS);
+    right.setRotate(-90);
+
+  }
+
+  /**
+   * for single image creates viewports and sets all views(image) to singleImg for multiple... sets images per view.
+   */
+  private void validateImageType() {
+    switch (imageType) {
+    case SINGLE:
+      loadSingleImageViewports();
+      break;
+    case MULTIPLE:
+      setMultipleImages();
+      break;
+    }
+  }
+
+  private void loadSingleImageViewports() {
+    layoutViews();
+    double width = singleImg.getWidth(), height = singleImg.getHeight();
+
+    // simple check to see if cells will be square
+    if (width / 4 != height / 3) {
+      throw new UnsupportedOperationException("Image does not comply with size constraints");
+    }
+    double cellSize = singleImg.getWidth() - singleImg.getHeight();
+
+    recalculateSize(cellSize);
+
+    double topx = cellSize, topy = 0,
+
+      botx = cellSize, boty = cellSize * 2,
+
+      leftx = 0, lefty = cellSize,
+
+      rightx = cellSize * 2, righty = cellSize,
+
+      fwdx = cellSize, fwdy = cellSize,
+
+      backx = cellSize * 3, backy = cellSize;
+
+    // add top padding x+, y+, width-, height
+    up.setViewport(new Rectangle2D(topx, topy, cellSize, cellSize));
+
+    // add left padding x, y+, width, height-
+    left.setViewport(new Rectangle2D(leftx, lefty, cellSize - 1, cellSize - 1));
+
+    // add front padding x+, y+, width-, height
+    front.setViewport(new Rectangle2D(fwdx, fwdy, cellSize, cellSize));
+
+    // add right padding x, y+, width, height-
+    right.setViewport(new Rectangle2D(rightx, righty, cellSize, cellSize));
+
+    // add back padding x, y+, width, height-
+    back.setViewport(new Rectangle2D(backx + 1, backy - 1, cellSize - 1, cellSize - 1));
+
+    // add bottom padding x+, y, width-, height-
+    down.setViewport(new Rectangle2D(botx, boty, cellSize, cellSize));
+
+    for (ImageView v : views) {
+      v.setImage(singleImg);
+    }
+  }
+
+  private void recalculateSize(double cell) {
+    double factor = Math.floor(getSize() / cell);
+    setSize(cell * factor);
+  }
+
+  public synchronized void setImage(BufferedImage img, int position) {
+    views[position].setImage(GraphicsUtils.convertBufferedImage2JavaFXImage(img));
+
+  }
+
+  private void setMultipleImages() {
+    GraphicsUtils.PlatformHelper.run(() -> {
+      layoutViews();
+      front.setImage(frontImg);
+      right.setImage(rightImg);
+      back.setImage(backImg);
+      left.setImage(leftImg);
+      up.setImage(upImg);
+      down.setImage(downImg);
+
+    });
+  }
+
+  public void startTimer() {
+    timer = new AnimationTimer() {
+      @Override
+      public void handle(long now) {
+        Transform ct = (camera != null) ? camera.getLocalToSceneTransform() : null;
+        if (ct != null) {
+          affine.setTx(ct.getTx());
+          affine.setTy(ct.getTy());
+          affine.setTz(ct.getTz());
+        }
+      }
     };
-
-	private Image
-		frontImg, rightImg, backImg, leftImg, upImg, downImg, singleImg;
-
-	//private WritableImage convertedImage;
-
-    private final PerspectiveCamera camera;
-    private AnimationTimer timer;
-    private final CubemapBoxImageType imageType;
-
-    public CubemapBox(Image singleImg, double size, PerspectiveCamera camera) {
-        super();
-        imageType = CubemapBoxImageType.SINGLE;
-
-        this.singleImg = singleImg;
-        this.size.set(size);
-        this.camera = camera;
-
-        getTransforms().add(affine);
-
-        loadImageViews();
-
-        getChildren().addAll(views);
-    }
-
-    // private constructor to prevent instantiation
-    public CubemapBox(double size, PerspectiveCamera camera) {
-        super();
-        imageType = CubemapBoxImageType.SINGLE;
-
-        this.size.set(size);
-        this.camera = camera;
-
-        getTransforms().add(affine);
-
-        loadImageViews();
-
-        getChildren().addAll(views);
-    }
-
-    public CubemapBox(Image frontImg, Image rightImg, Image backImg, Image leftImg, Image upImg, Image downImg, double size, PerspectiveCamera camera) {
-        super();
-        imageType = CubemapBoxImageType.MULTIPLE;
-
-        this.frontImg = frontImg;
-        this.rightImg = rightImg;
-        this.backImg = backImg;
-        this.leftImg = leftImg;
-        this.upImg = upImg;
-        this.downImg = downImg;
-        this.size.set(size);
-        this.camera = camera;
-
-        loadImageViews();
-
-        getTransforms().add(affine);
-
-        getChildren().addAll(views);
-
-        startTimer();
-    }
-
-    public void loadImageViews(){
-
-        for(ImageView iv : views){
-            iv.setSmooth(true);
-            iv.setPreserveRatio(true);
-        }
-
-        validateImageType();
-    }
-
-    private void layoutViews() {
-
-    	for(ImageView v : views){
-            v.setFitWidth(getSize());
-            v.setFitHeight(getSize());
-        }
-
-        back.setTranslateX(-0.5 * getSize());
-        back.setTranslateY(-0.5 * getSize());
-        back.setTranslateZ(-0.5 * getSize());
-
-        front.setTranslateX(-0.5 * getSize());
-        front.setTranslateY(-0.5 * getSize());
-        front.setTranslateZ(0.5 * getSize());
-        front.setRotationAxis(Rotate.Z_AXIS);
-        front.setRotate(-180);
-        front.getTransforms().add(new Rotate(180,front.getFitHeight() / 2, 0,0, Rotate.X_AXIS));
-        front.setTranslateY(front.getTranslateY() - getSize());
-
-        up.setTranslateX(-0.5 * getSize());
-        up.setTranslateY(-1 * getSize());
-        up.setRotationAxis(Rotate.X_AXIS);
-        up.setRotate(-90);
-
-        down.setTranslateX(-0.5 * getSize());
-        down.setTranslateY(0);
-        down.setRotationAxis(Rotate.X_AXIS);
-        down.setRotate(90);
-
-        left.setTranslateX(-1 * getSize());
-        left.setTranslateY(-0.5 * getSize());
-        left.setRotationAxis(Rotate.Y_AXIS);
-        left.setRotate(90);
-
-        right.setTranslateX(0);
-        right.setTranslateY(-0.5 * getSize());
-        right.setRotationAxis(Rotate.Y_AXIS);
-        right.setRotate(-90);
-
-    }
-    /**
-     *  for single image creates viewports and sets all views(image) to singleImg
-     *  for multiple... sets images per view.
-     */
-    private void validateImageType(){
-        switch(imageType){
-            case SINGLE:
-                loadSingleImageViewports();
-                break;
-            case MULTIPLE:
-                // TODO: implement single and double properly @rrh
-            	setMultipleImages();
-                break;
-        }
-    }
-    // TODO: change layout - Streetside cubemaps are structured as follows: @rrh
-    /**
-     * 01-front, 02-right, 03-back, 10-left, 11-up, 12-down
-     *
-     *         ____ ____ ____ ____ ____ ____
-     *        |fwd |rght|back|left|top |bot |
-     *        |____|____|____|____|____|____|
-     *
-     */
-
-    private void loadSingleImageViewports(){
+    timer.start();
+  }
+
+  /*
+   * Properties
+   */
+  private final DoubleProperty size = new SimpleDoubleProperty() {
+    @Override
+    protected void invalidated() {
+      switch (imageType) {
+      case SINGLE:
         layoutViews();
-        double width = singleImg.getWidth(),
-               height = singleImg.getHeight();
-
-        //simple check to see if cells will be square
-        if(width / 4 != height / 3){
-            throw new UnsupportedOperationException("Image does not comply with size constraints");
-        }
-        double cellSize = singleImg.getWidth() - singleImg.getHeight();
-
-        recalculateSize(cellSize);
-
-        double
-                topx = cellSize, topy = 0,
-
-                botx = cellSize, boty = cellSize * 2,
-
-                leftx = 0, lefty = cellSize,
-
-                rightx = cellSize * 2, righty = cellSize,
-
-                fwdx = cellSize, fwdy = cellSize,
-
-                backx = cellSize * 3, backy = cellSize;
-
-        //add top padding x+, y+, width-, height
-        up.setViewport(new Rectangle2D(topx , topy , cellSize, cellSize ));
-
-        //add left padding x, y+, width, height-
-        left.setViewport(new Rectangle2D(leftx , lefty , cellSize - 1, cellSize - 1));
-
-        //add front padding x+, y+, width-, height
-        front.setViewport(new Rectangle2D(fwdx , fwdy, cellSize , cellSize));
-
-        //add right padding x, y+, width, height-
-        right.setViewport(new Rectangle2D(rightx, righty , cellSize , cellSize ));
-
-        //add back padding x, y+, width, height-
-        back.setViewport(new Rectangle2D(backx + 1, backy - 1, cellSize - 1, cellSize - 1));
-
-        //add bottom padding x+, y, width-, height-
-        down.setViewport(new Rectangle2D(botx, boty, cellSize , cellSize));
-
-        for(ImageView v : views){
-            v.setImage(singleImg);
-        }
-    }
-
-
-
-    private void recalculateSize(double cell){
-        double factor = Math.floor(getSize() / cell);
-        setSize(cell * factor);
-    }
-
-	public synchronized void setImage(BufferedImage img, int position) {
-		views[position].setImage(GraphicsUtils.convertBufferedImage2JavaFXImage(img));
-
-	}
-
-
-    private void setMultipleImages() {
-		GraphicsUtils.PlatformHelper.run(() -> {
-			layoutViews();
-			front.setImage(frontImg);
-			right.setImage(rightImg);
-			back.setImage(backImg);
-			left.setImage(leftImg);
-			up.setImage(upImg);
-			down.setImage(downImg);
-
-		});
-	}
-
-    public void startTimer(){
-        timer = new AnimationTimer() {
-            @Override
-            public void handle(long now) {
-                Transform ct = (camera != null) ? camera.getLocalToSceneTransform() : null;
-                if(ct != null){
-                    affine.setTx(ct.getTx());
-                    affine.setTy(ct.getTy());
-                    affine.setTz(ct.getTz());
-                }
-            }
-        };
-        timer.start();
-    }
-
-    /*
-        Properties
-    */
-    private final DoubleProperty size = new SimpleDoubleProperty(){
-        @Override
-        protected void invalidated() {
-            switch(imageType){
-            case SINGLE:
-                layoutViews();
-                break;
-            case MULTIPLE:
-                break;
-            }
-
-        }
-    };
-
-    public final double getSize() {
-        return size.get();
-    }
-
-    public final void setSize(double value) {
-        size.set(value);
-    }
-
-    public DoubleProperty sizeProperty() {
-        return size;
-    }
-
-	public ImageView[] getViews() {
-		return views;
-	}
+        break;
+      case MULTIPLE:
+        break;
+      }
+
+    }
+  };
+
+  public final double getSize() {
+    return size.get();
+  }
+
+  public final void setSize(double value) {
+    size.set(value);
+  }
+
+  public DoubleProperty sizeProperty() {
+    return size;
+  }
+
+  public ImageView[] getViews() {
+    return views;
+  }
 }
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 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideURL.java	(revision 34399)
@@ -7,4 +7,5 @@
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
+import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -45,30 +46,7 @@
 		}
 
-		/*public static URL getUser(String key) {
-			return StreetsideURL.string2URL(APIv3.BASE_URL, "users/", key, StreetsideURL.queryString(null));
-		}
-
-		*//**
-		 * @return the URL where you can create, get and approve changesets
-		 *//*
-		public static URL submitChangeset() {
-			return StreetsideURL.string2URL(APIv3.BASE_URL, "changesets", APIv3.queryString(null));
-		}
-
-		public static URL searchDetections(Bounds bounds) {
-			return StreetsideURL.string2URL(APIv3.BASE_URL, "detections", APIv3.queryString(bounds));
-		}
-
-		public static URL searchImages(Bounds bounds) {
-			return StreetsideURL.string2URL(APIv3.BASE_URL, "images", APIv3.queryStreetsideString(bounds));
-		}*/
-
 		public static URL searchStreetsideImages(Bounds bounds) {
 			return StreetsideURL.string2URL(StreetsideURL.STREETSIDE_BASE_URL, APIv3.queryStreetsideString(bounds));
 		}
-
-		/*public static URL searchMapObjects(final Bounds bounds) {
-			return StreetsideURL.string2URL(APIv3.BASE_URL, "objects", APIv3.queryString(bounds));
-		}*/
 
 		public static URL searchStreetsideSequences(final Bounds bounds) {
@@ -147,5 +125,4 @@
 			StringBuilder modifiedId = new StringBuilder();
 
-			// TODO: make code more elegant
 			if (thumbnail) {
         // pad thumbnail imagery with leading zeros
@@ -175,5 +152,5 @@
 		  URL url = StreetsideURL.string2URL(VirtualEarth.BASE_URL_PREFIX + modifiedId.toString() + VirtualEarth.BASE_URL_SUFFIX);
 	    if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-		    logger.debug("Tile task URL " + url.toString() + " invoked.");
+		    logger.debug(MessageFormat.format("Tile task URL {0} invoked.", url.toString()));
 	    }
 			return url;
@@ -182,5 +159,4 @@
 
 	public static final class MainWebsite {
-		//private static final String BASE_URL = "https://www.mapillary.com/";
 
 		private MainWebsite() {
@@ -221,23 +197,4 @@
 		}
 
-		/**
-		 * Gives you the URL which the user should visit to initiate the OAuth authentication process
-		 * @param redirectURI the URI to which the user will be redirected when the authentication is finished.
-		 *        When this is <code>null</code>, it's omitted from the query string.
-		 * @return the URL that the user should visit to start the OAuth authentication
-		 */
-		/*public static URL connect(String redirectURI) {
-			final HashMap<String, String> parts = new HashMap<>();
-			if (redirectURI != null && redirectURI.length() >= 1) {
-				parts.put("redirect_uri", redirectURI);
-			}
-			parts.put("response_type", "token");
-			parts.put("scope", "user:read public:upload public:write");
-			return StreetsideURL.string2URL(MainWebsite.BASE_URL, "connect", StreetsideURL.queryString(parts));
-		}
-
-		public static URL mapObjectIcon(String key) {
-			return StreetsideURL.string2URL(MainWebsite.BASE_URL, "developer/api-documentation/images/traffic_sign/" + key + ".png");
-		}*/
 	}
 
@@ -270,4 +227,5 @@
 				}
 			});
+			break;
 
 		case 4:
@@ -292,11 +250,4 @@
 		return res.stream().toArray(URL[]::new);
 	}
-
-	/**
-	 * @return the URL where you'll find the upload secrets as JSON
-	 */
-	/*public static URL uploadSecretsURL() {
-		return StreetsideURL.string2URL(StreetsideURL.BASE_API_V2_URL, "me/uploads/secrets", StreetsideURL.queryString(null));
-	}*/
 
 	/**
@@ -321,5 +272,5 @@
 
 		if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-		  logger.debug("queryString result: " + ret.toString());
+		  logger.debug(MessageFormat.format("queryString result: {0}", ret.toString()));
 		}
 
@@ -348,5 +299,5 @@
 
 		if(StreetsideProperties.DEBUGING_ENABLED.get()) {
-		  logger.debug("queryStreetsideBoundsString result: " + ret.toString());
+		  logger.debug(MessageFormat.format("queryStreetsideBoundsString result: {0}", ret.toString()));
 		}
 
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonDecoder.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonDecoder.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonDecoder.java	(revision 34399)
@@ -17,5 +17,4 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.tools.I18n;
-import org.openstreetmap.josm.tools.Logging;
 
 public final class JsonDecoder {
Index: applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetectionDecoder.java
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetectionDecoder.java	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/api/JsonImageDetectionDecoder.java	(revision 34399)
@@ -26,5 +26,4 @@
   }
 
-  // TODO: Image detections? Keep? @rrh
   public static ImageDetection decodeImageDetection(final JsonObject json) {
     if (json == null || !"Feature".equals(json.getString("type", null))) {
Index: applications/editors/josm/plugins/MicrosoftStreetside/test/README
===================================================================
--- applications/editors/josm/plugins/MicrosoftStreetside/test/README	(revision 34398)
+++ applications/editors/josm/plugins/MicrosoftStreetside/test/README	(revision 34399)
@@ -1,4 +1,4 @@
 
-This directory includes the test resources for the streetside plugin.
+This directory includes the test resources for the Microsoft Streetside plugin.
 
 
