Index: /applications/editors/josm/plugins/MicrosoftStreetside/.classpath
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/.classpath	(revision 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/.classpath	(revision 34385)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry including="data/**|images/**|LICENSE|LICENSE_*" kind="src" output="bin/main" path="">
+	<classpathentry excluding="config/" including="data/**|images/**|LICENSE|LICENSE_*" kind="src" output="bin/main" path="">
 		<attributes>
 			<attribute name="gradle_scope" value="main"/>
@@ -7,4 +7,5 @@
 		</attributes>
 	</classpathentry>
+	<classpathentry kind="src" path="config"/>
 	<classpathentry kind="src" output="bin/minJosmVersion" path="src">
 		<attributes>
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideAbstractImage.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideAbstractImage.java	(revision 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideAbstractImage.java	(revision 34385)
@@ -11,8 +11,9 @@
 
 /**
- * Abstract superclass for all image objects. At the moment there are just 2,
- * {@link StreetsideImportedImage} and {@link StreetsideImage}.
+ * Abstract superclass for all image objects. At the moment there are 3,
+ * {@link StreetsideImportedImage}, {@link StreetsideImage}, & {@link StreetsideCubemap}.
  *
  * @author nokutu
+ * @author renerr18
  *
  */
@@ -370,4 +371,3 @@
   }
 
-
 }
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 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/StreetsideCubemap.java	(revision 34385)
@@ -2,14 +2,6 @@
 package org.openstreetmap.josm.plugins.streetside;
 
-import java.awt.image.BufferedImage;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
 import org.openstreetmap.josm.data.coor.LatLon;
-import org.openstreetmap.josm.plugins.streetside.cubemap.CubemapUtils;
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
-
-import org.openstreetmap.josm.plugins.streetside.cubemap.CubemapUtils.CubemapFaces;
 
 /**
@@ -18,5 +10,5 @@
  *
  */
-public class StreetsideCubemap extends StreetsideAbstractImage implements Comparable<StreetsideAbstractImage>{
+public class StreetsideCubemap extends StreetsideAbstractImage /*implements Comparable<StreetsideAbstractImage>*/{
 
 	//private static Map<String,Map<String,BufferedImage>> face2TilesMap = new HashMap<String,Map<String,BufferedImage>>();
@@ -40,30 +32,8 @@
 	 *            direction is not yet supported in the Streetside plugin).
 	 */
-    @SuppressWarnings({ "unchecked", "rawtypes" })
-	public StreetsideCubemap(String quadId, LatLon latLon, double he) {
-		super(quadId, latLon, he);
-		/*face2TilesMap = new HashMap();
+   public StreetsideCubemap(String quadId, LatLon latLon, double he) {
+	   super(quadId, latLon, he);
+	 }
 
-		EnumSet.allOf(CubemapUtils.CubemapFaces.class).forEach(face -> {
-			face2TilesMap.put(face.getValue(), new HashMap<String, BufferedImage>());
-		});*/
-
-	}
-
-	/**
-	* Returns a Map object containing a keyset of cubemap face numbers
-	*
-	* {@link CubemapFaces}
-	*
-	* for each cubeface number corresponding map if cubemap tile ids and buffered
-	* cubemap tile imagery is stored until assembly by the CubemapBuilder
-	* @see org.openstreetmap.josm.plugins.streetside.cubemap.CubemapBuilder
- 	*
- 	* @return the face2TilesMap
- 	*/
-	/*public Map<String, Map<String,BufferedImage>> getFace2TilesMap() {
-		return face2TilesMap;
-	}
-*/
 	/**
 	 * Comparison method for the StreetsideCubemap object.
@@ -129,13 +99,3 @@
 	}
 
-	/**
-	 * resets the faces2TilesMap, emptying it for a new set of cubemap imagery
-	 */
-	/*public void resetFaces2TileMap() {
-		face2TilesMap = new HashMap<>();
-
-		EnumSet.allOf(CubemapUtils.CubemapFaces.class).forEach(face -> {
-			face2TilesMap.put(face.getValue(), new HashMap<String, BufferedImage>());
-		});
-	}*/
 }
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 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapBuilder.java	(revision 34385)
@@ -32,6 +32,4 @@
 
 	private static CubemapBuilder instance;
-	// TODO: Help Pop-up
-	private StreetsideViewerHelpPopup streetsideViewerHelp;
 	private StreetsideCubemap cubemap;
 	protected boolean cancelled;
@@ -53,18 +51,4 @@
   }
 
-  /**
-   * @return the tileImages
-   */
-  /*public Map<String, BufferedImage> getTileImages() {
-    return tileImages;
-  }
-
-  *//**
-   * @param tileImages the tileImages to set
-   *//*
-  public void setTileImages(Map<String, BufferedImage> tileImages) {
-    this.tileImages = tileImages;
-  }*/
-
   private CubemapBuilder() {
 		// private constructor to avoid instantiation
@@ -98,6 +82,5 @@
 		if (cubemap != null && imageId.equals(cubemap.getId())) {
 			tileImages = new HashMap<String,BufferedImage>();
-		  //CubemapBuilder.getInstance().getCubemap().resetFaces2TileMap();
-			downloadCubemapImages(imageId);
+		  downloadCubemapImages(imageId);
 		}
 	}
@@ -189,16 +172,9 @@
 	@Override
 	public void tileAdded(String tileId) {
-		// determine whether four tiles have been set for each of the
+		// determine whether all tiles have been set for each of the
 		// six cubemap faces. If so, build the images for the faces
 		// and set the views in the cubemap box.
 
 		int tileCount = 0;
-
-		/*for (int i = 0; i < CubemapUtils.NUM_SIDES; i++) {
-			String faceNumber = CubemapUtils.getFaceNumberForCount(i);
-			Map<String, BufferedImage> faceTileImages = CubemapBuilder.getInstance().getCubemap().getFace2TilesMap()
-					.get(faceNumber);
-			tileCount += faceTileImages.values().size();
-		}*/
 
 		tileCount = CubemapBuilder.getInstance().getTileImages().keySet().size();
@@ -235,8 +211,5 @@
 			for (int i = 0; i < CubemapUtils.NUM_SIDES; i++) {
 
-				/*Map<String, BufferedImage> tileImages = CubemapBuilder.getInstance().getCubemap().getFace2TilesMap()
-						.get(CubemapUtils.getFaceNumberForCount(i));*/
-
-			  BufferedImage[] faceTileImages = new BufferedImage[maxCols * maxRows];
+				BufferedImage[] faceTileImages = new BufferedImage[maxCols * maxRows];
 
 				for (int j = 0; j < (maxCols * maxRows); j++) {
@@ -266,7 +239,4 @@
 				int tileCount = 0;
 
-				/*Map<String, Map<String, BufferedImage>> face2TilesMap = CubemapBuilder.getInstance().getCubemap()
-						.getFace2TilesMap();*/
-				//Map<String, BufferedImage> tileImages = face2TilesMap.get(CubemapUtils.getFaceNumberForCount(i));
 				BufferedImage[] faceTileImages = new BufferedImage[StreetsideProperties.SHOW_HIGH_RES_STREETSIDE_IMAGERY
 						.get() ? 16 : 4];
@@ -297,24 +267,6 @@
     StreetsideViewerDialog.getInstance().getStreetsideViewerPanel().repaint();
 
-    /*if (!Platform.isFxApplicationThread()) {
-      Platform.runLater(new Runnable() {
-        @Override
-        public void run() {*/
-
-           //try {
-             /* GraphicsUtils.PlatformHelper.run(() -> {
-                StreetsideViewerPanel.getThreeSixtyDegreeViewerPanel().initialize();
-            });*/
-             //StreetsideViewerPanel.getThreeSixtyDegreeViewerPanel().initialize();
-             StreetsideViewerPanel.getThreeSixtyDegreeViewerPanel()
+    StreetsideViewerPanel.getThreeSixtyDegreeViewerPanel()
                 .setScene(StreetsideViewerPanel.getThreeSixtyDegreeViewerPanel().getCubemapScene());
-            /*} catch (NonInvertibleTransformException nite) {
-              if (StreetsideProperties.DEBUGING_ENABLED.get()) {
-                logger.debug(I18n.tr("Error setting scene in 360 viewer panel {0}", nite.getMessage()));
-              }
-            }*/
-        /*}
-      });
-    }*/
 
     StreetsideViewerPanel.getThreeSixtyDegreeViewerPanel().revalidate();
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 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/cubemap/CubemapUtils.java	(revision 34385)
@@ -9,5 +9,4 @@
 import org.openstreetmap.josm.plugins.streetside.utils.StreetsideProperties;
 import org.openstreetmap.josm.tools.I18n;
-import org.openstreetmap.josm.tools.Logging;
 
 public class CubemapUtils {
@@ -35,5 +34,5 @@
 
 		    public static CubefaceType valueOf(int cubefaceType) {
-		        return (CubefaceType) map.get(cubefaceType);
+		        return map.get(cubefaceType);
 		    }
 
@@ -122,25 +121,35 @@
 
 	public static String convertQuaternary2Decimal(String inputNum) {
-		int len = inputNum.length();
-		int power = 1; // Initialize power of base
-		int num = 0; // Initialize result
-		int base = 4; // This could be used for any base, not just quad
-
-		// Decimal equivalent is str[len-1]*1 +
-		// str[len-1]*base + str[len-1]*(base^2) + ...
-		for (int i = len - 1; i >= 0; i--) {
-			// A digit in input number must be
-			// less than number's base
-			int current = Integer.valueOf(String.valueOf(inputNum.substring(i,i+1)));
-			if ( current >= 4) {
-				logger.error(I18n.tr("Invalid bubbleId {0}", inputNum));
-				return "-1";
-			}
-
-			num += Integer.valueOf(inputNum.charAt(i)).intValue() * power;
-			power = power * base;
-		}
-
-		return Integer.toString(num);
+
+	  final String res;
+
+	  if (StreetsideProperties.DEBUGING_ENABLED.get()) {
+      logger.debug(I18n.tr("convertQuaternary2Decimal input: {0}", inputNum));
+    }
+
+	  int len = inputNum.length();
+    int power = 1;
+    int num = 0;
+    int i;
+
+    for (i = len - 1; i >= 0; i--)
+    {
+        if (Integer.parseInt(inputNum.substring(i,i+1)) >= CubemapUtils.NUM_BASE)
+        {
+           logger.error(I18n.tr("Error converting quadkey {0} to decimal.", inputNum));
+           return "000000000";
+        }
+
+        num += Integer.parseInt(inputNum.substring(i,i+1)) * power;
+        power = power * CubemapUtils.NUM_BASE;
+    }
+
+		res = Integer.toString(num);
+
+		if (StreetsideProperties.DEBUGING_ENABLED.get()) {
+      logger.debug(I18n.tr("convertQuaternary2Decimal output: {0}", res));
+    }
+
+		return res;
 	}
 
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 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/ImageInfoPanel.java	(revision 34385)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.plugins.streetside.gui.imageinfo;
 
+import java.awt.Font;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -37,7 +38,8 @@
   private static final ImageIcon EMPTY_USER_AVATAR = new ImageIcon(new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB));
 
-  //private final JLabel numDetectionsLabel;
+  private final JLabel numDetectionsLabel;
   //private final JCheckBox showDetectionsCheck;
-  //private final JLabel usernameLabel;
+  private final JLabel placeholder1Label;
+  private final JLabel usernameLabel;
   private final JTextPane imgKeyValue;
   private final WebLinkAction imgLinkAction;
@@ -58,6 +60,8 @@
     SelectionEventManager.getInstance().addSelectionListener(this);
 
-    //numDetectionsLabel = new JLabel();
-    //numDetectionsLabel.setFont(numDetectionsLabel.getFont().deriveFont(Font.PLAIN));
+    numDetectionsLabel = new JLabel();
+    numDetectionsLabel.setFont(numDetectionsLabel.getFont().deriveFont(Font.PLAIN));
+
+    placeholder1Label = new JLabel();
 
     //showDetectionsCheck = new JCheckBox(I18n.tr("Show detections on top of image"));
@@ -70,6 +74,6 @@
     );*/
 
-    //usernameLabel = new JLabel();
-    //usernameLabel.setFont(usernameLabel.getFont().deriveFont(Font.PLAIN));
+    usernameLabel = new JLabel();
+    usernameLabel.setFont(usernameLabel.getFont().deriveFont(Font.PLAIN));
 
     imgKeyValue = new SelectableLabel();
@@ -101,11 +105,11 @@
     gbc.gridwidth = 1;
     gbc.gridheight = 2;
-    //root.add(new JLabel(I18n.tr("Image detections")), gbc);
-    //gbc.gridy += 2;
-    //gbc.gridheight = 1;
-    //root.add(new JLabel(I18n.tr("User")), gbc);
-    //gbc.gridy++;
-    //root.add(new JLabel(I18n.tr("Image actions")), gbc);
-    //gbc.gridy++;
+    root.add(new JLabel(I18n.tr("Placeholder2 label")), gbc);
+    gbc.gridy += 2;
+    gbc.gridheight = 1;
+    root.add(new JLabel(I18n.tr("Blah")), gbc);
+    gbc.gridy++;
+    root.add(new JLabel(I18n.tr("Blee")), gbc);
+    gbc.gridy++;
     root.add(new JLabel(I18n.tr("Image key")), gbc);
     gbc.gridy++;
@@ -117,10 +121,12 @@
     gbc.gridy = 0;
     gbc.anchor = GridBagConstraints.LINE_START;
-    //root.add(numDetectionsLabel, gbc);
-    //gbc.gridy++;
+    root.add(numDetectionsLabel, gbc);
+    gbc.gridy++;
     //root.add(showDetectionsCheck, gbc);
     //gbc.gridy++;
-    //root.add(usernameLabel, gbc);
-    //gbc.gridy++;
+    root.add(placeholder1Label, gbc);
+     gbc.gridy++;
+    root.add(usernameLabel, gbc);
+    gbc.gridy++;
     root.add(imgButtons, gbc);
     gbc.gridy++;
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 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerHelpPopup.java	(revision 34385)
@@ -44,8 +44,8 @@
 		mainText.setFont(SelectableLabel.DEFAULT_FONT);
 		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).")
+				"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(
-						"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.")
+						"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/StreetsideViewerPanel.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerPanel.java	(revision 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/imageinfo/StreetsideViewerPanel.java	(revision 34385)
@@ -143,6 +143,4 @@
 		      imageLinkChangeListener.valueChanged(null);
 		      StreetsideProperties.CUBEMAP_LINK_TO_BLUR_EDITOR.addListener(imageLinkChangeListener);
-
-
 		    } else {
 		      if (imageLinkChangeListener != null) {
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideProperties.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideProperties.java	(revision 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideProperties.java	(revision 34385)
@@ -24,5 +24,5 @@
   public static final IntegerProperty TILE_DOWNLOAD_THREAD_PAUSE_LEN_SEC = new IntegerProperty("streetside.tile-download-thread-pause-len-sec", 60);
   public static final BooleanProperty PREDOWNLOAD_CUBEMAPS = new BooleanProperty("streetside.predownload-cubemaps", false);
-  public static final BooleanProperty DEBUGING_ENABLED = new BooleanProperty("streetside.debugging-enabled", true);
+  public static final BooleanProperty DEBUGING_ENABLED = new BooleanProperty("streetside.debugging-enabled", false);
   /**
    * If false, all sequences that cross the download bounds are put completely into the StreetsideData object.
Index: /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideUtils.java
===================================================================
--- /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideUtils.java	(revision 34384)
+++ /applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/utils/StreetsideUtils.java	(revision 34385)
@@ -290,4 +290,5 @@
     if (images != null && images.size() > 0) {
       res.add(images.get(0));
+      try {
       images.remove(0);
       String nextImageId = Long.toString(images.get(0).getNe());
@@ -302,4 +303,7 @@
         }
       }
+      } catch (java.lang.UnsupportedOperationException uoe) {
+        // ignore
+      }
     }
 
