diff --git a/web/gui/src/main/webapp/app/fw/svg/map.js b/web/gui/src/main/webapp/app/fw/svg/map.js
index 3a89f81..78a33d1 100644
--- a/web/gui/src/main/webapp/app/fw/svg/map.js
+++ b/web/gui/src/main/webapp/app/fw/svg/map.js
@@ -42,16 +42,24 @@
     //       mapping to ~/data/map/continental_us.topojson contains
     //       exactly the paths for the continental US.
 
-    function loadMapInto(mapLayer, id, opts) {
-        var promise = gds.fetchTopoData(id),
+    function loadMapInto(mapLayer, mapPath, id, opts) {
+        var promise = gds.fetchTopoData(mapPath),
             deferredProjection = $q.defer();
 
         if (!promise) {
-            $log.warn('Failed to load map: ' + id);
+            $log.warn('Failed to load map: ' + mapPath);
             return false;
         }
 
         promise.then(function () {
+
+            // NOTE: This finds the topo object within the topojson file
+            var topoObjects = promise.topodata.objects;
+
+                if (topoObjects.hasOwnProperty(id)) {
+                    opts.objectTag = id;
+                }
+
             var gen = gds.createPathGenerator(promise.topodata, opts);
 
             deferredProjection.resolve(gen.settings.projection);
diff --git a/web/gui/src/main/webapp/app/view/topo/topo.js b/web/gui/src/main/webapp/app/view/topo/topo.js
index e37e987..1b6859c 100644
--- a/web/gui/src/main/webapp/app/view/topo/topo.js
+++ b/web/gui/src/main/webapp/app/view/topo/topo.js
@@ -376,7 +376,12 @@
     function currentMap() {
         return ps.getPrefs(
             'topo_mapid',
-            { mapid: 'usa', mapscale: 1, tint: 'off'},
+            {
+                mapid: 'usa',
+                mapscale: 1,
+                mapfilepath: '*continental_us',
+                tint: 'off'
+            },
             $loc.search()
         );
     }
@@ -384,6 +389,7 @@
     function setUpMap() {
         var prefs = currentMap(),
             mapId = prefs.mapid,
+            mapFilePath = prefs.mapfilepath,
             mapScale = prefs.mapscale,
             tint = prefs.tint,
             promise,
@@ -402,35 +408,24 @@
                 d3.selectAll(this.childNodes).remove();
             });
         }
-        if (mapId === 'usa') {
-            shadeFlip = 0;
-            promise = ms.loadMapInto(mapG, '*continental_us', {
-                adjustScale: mapScale,
-                shading: shading()
-            });
-        } else if (mapId === 'bayarea') {
-            shadeFlip = 1;
-            promise = ms.loadMapInto(mapG, '*bayarea', {
-                objectTag: 'bayareaGEO',
-                adjustScale: mapScale,
-                shading: shading()
-            });
-        } else if (mapId === 'taiwan') {
-            shadeFlip = 0;
-            promise = ms.loadMapInto(mapG, '*taiwan', {
-                objectTag: 'taiwan',
-                adjustScale: mapScale,
-                shading: shading()
-            })
-        } else {
-            shadeFlip = 0;
+
+        if (mapFilePath === '*countries') {
+
             cfilter = countryFilters[mapId] || countryFilters.uk;
+
             promise = ms.loadMapRegionInto(mapG, {
                 countryFilter: cfilter,
                 adjustScale: mapScale,
                 shading: shading()
             });
+        } else {
+
+            promise = ms.loadMapInto(mapG, mapFilePath, mapId, {
+                adjustScale: mapScale,
+                shading: shading()
+            });
         }
+
         ps.setPrefs('topo_mapid', prefs);
         return promise;
     }
diff --git a/web/gui/src/main/webapp/app/view/topo/topoMap.js b/web/gui/src/main/webapp/app/view/topo/topoMap.js
index 6a94050..2c952b8 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoMap.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoMap.js
@@ -59,6 +59,7 @@
         var p = {
             mapid: map.id,
             mapscale: map.scale,
+            mapfilepath: map.filePath,
             tint: tintCheck.property('checked') ? 'on' : 'off'
         };
         setMap(p);
