diff --git a/src/backends/base.js b/src/backends/base.js
new file mode 100644
index 0000000000000000000000000000000000000000..61d3166ff0c74f294edd483fbe315c6fcec21481
--- /dev/null
+++ b/src/backends/base.js
@@ -0,0 +1,4 @@
+class BaseBackend() {
+}
+
+export default BaseBackend;
diff --git a/src/backends/widget.js b/src/backends/widget.js
index 6539b46cd4547a29e58e55b00b807174b7aa3018..69f883f51fd30312a0f6a12567777e6df3cd0a73 100644
--- a/src/backends/widget.js
+++ b/src/backends/widget.js
@@ -1,6 +1,29 @@
+import BaseBackend from './base';
 import WidgetApi from 'matrix-widget-api';
 
-class WidgetBackend {
+const eventNamespace = 'team.auglement.augmentile';
+const EventTypes = {
+  map: eventNamespace + '.map',
+  player: eventNamepsace + '.player'
+}
+
+class WidgetBackend extends BaseBackend {
+  constructor(widgetId, userId) {
+    this.api = new WidgetApi(widgetId);
+    this.requestCapabilities();
+    this.api.star();
+  }
+
+  requestCapabilities() {
+    this.api.requestCapabilityToReceiveState(EventTypes.map);
+    this.api.requestCapabilityToReceiveState(EventTypes.player);
+
+    this.api.requestCapabilityToSendState(EventTypes.player);
+  }
+
+  set game(value) {
+    this.api.setContentLoaded();
+  }
 }
 
 export default WidgetBackend;
diff --git a/src/frontend/game.js b/src/frontend/game.js
index ca28013c5226d91fa4ddc54190f0471fc8faea93..74e765092d1b02605c12a5d8c81cea42761c226d 100644
--- a/src/frontend/game.js
+++ b/src/frontend/game.js
@@ -2,7 +2,7 @@ import Phaser from 'phaser';
 import TestScene from './scenes/test';
 
 class Game {
-  constructor(width, height) {
+  constructor(width, height, backend) {
     this.config = {
       type: Phaser.AUTO,
       width: width,
@@ -11,6 +11,9 @@ class Game {
     };
 
     this.game = new Phaser.Game(this.config);
+
+    this.backend = backend;
+    this.backend.game = this;
   }
 }
 
diff --git a/src/widget.js b/src/widget.js
index 823f6d4ee133db67f49936e4bddcb04be94df4b2..d96e46c643b37bbfefe6f12dff40116a037e6e70 100644
--- a/src/widget.js
+++ b/src/widget.js
@@ -1,7 +1,12 @@
 import WidgetBackend from './backends/widget';
 import Game from './frontend/game';
 
+const urlParams = new URLSearchParams(window.location.search);
+const widgetId = urlParams.get('widgetId');
+const userId = urlParams.get('userId');
+
 const width = 800;
 const height = 600;
 
-let game = new Game(width, height);
+let backend = new WidgetBackend(widgetId, userId);
+let game = new Game(width, height, backend);