Index: applications/editors/josm/plugins/slippymap/.classpath
===================================================================
--- applications/editors/josm/plugins/slippymap/.classpath	(revision 24325)
+++ applications/editors/josm/plugins/slippymap/.classpath	(revision 24351)
@@ -2,5 +2,5 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JDK 5"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/JOSM"/>
 	<classpathentry kind="output" path="build"/>
Index: applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapPreferences.java
===================================================================
--- applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapPreferences.java	(revision 24325)
+++ applications/editors/josm/plugins/slippymap/src/org/openstreetmap/josm/plugins/slippymap/SlippyMapPreferences.java	(revision 24351)
@@ -296,4 +296,45 @@
     }
 
+    public static class BingMaps extends OsmTileSource.AbstractOsmTileSource {
+        public BingMaps() {
+            super("Bing Aerial Maps", "http://ecn.t2.tiles.virtualearth.net/tiles/");
+        }
+
+        @Override
+        public int getMaxZoom() {
+            return 22;
+        }
+        
+        @Override
+        public String getTileUrl(int zoom, int tilex, int tiley) {
+            String quadtree = computeQuadTree(zoom, tilex, tiley);
+            return "http://ecn.t2.tiles.virtualearth.net/tiles/a" + quadtree + ".jpeg?g=587&mkt=en-us&n=z";
+        }
+
+        public TileUpdate getTileUpdate() {
+            return TileUpdate.IfNoneMatch;
+        }
+    }
+
+    private static String computeQuadTree(int zoom, int tilex, int tiley) {
+        String k = "";
+        for(int i = zoom; i > 0; i--) {
+            int digit = 0;
+            int mask = 1 << (i - 1);
+            if ((tilex & mask) != 0) {
+                digit += 1;
+            }
+            if ((tiley & mask) != 0) {
+                digit += 2;
+            }
+            k += String.valueOf(digit);
+        }
+        return k;
+    }
+    
+    public static void main(String[] args) {
+        System.out.println("Expected: 021333011020221201");
+        System.out.println("Actual:   " + computeQuadTree(18, 62985, 94388));
+    }
 
     public static class HaitiImagery extends OsmTileSource.AbstractOsmTileSource {
@@ -404,4 +445,5 @@
         sources.add(new FreeMapySk());
         sources.add(new NearMap());
+        sources.add(new BingMaps());
         sources.add(new HaitiImagery());
         sources.addAll(getCustomSources());
