diff --git a/src/backends/base.js b/src/backends/base.js
index dab9c3d181a453a3d2aa78b4b1f101161b3e5918..78d36bca4e27cf920ac760d63a1f0ffd60f2718b 100644
--- a/src/backends/base.js
+++ b/src/backends/base.js
@@ -23,6 +23,33 @@ class BaseBackend {
   constructor(userId) {
     this.userId = userId;
   }
+
+  setMapData(mapData) {
+    this.game.loadMap(mapData);
+  }
+
+  setMapDataFromUrl(url) {
+    if (url.substr(0, 6) === 'mxc://') {
+      url = this.resolveMxcUrl(url);
+    }
+
+    fetch(url)
+        .then((response) => response.json())
+        .then(this.setMapData);
+  }
+
+  getMap(mapName) {
+    if (mapName.indexOf('://') > -1) {
+      this.setMapDataFromUrl(mapName);
+    } else {
+      const state = this.getState(EventTypes.map, mapName);
+      if (state.url !== undefined) {
+        this.setMapDataFromUrl(state.url);
+      } else {
+        this.setMapData(state);
+      }
+    }
+  }
 }
 
 export default BaseBackend;