diff --git a/syweb/webclient/app-controller.js b/syweb/webclient/app-controller.js
index 582c075e3db99a7b51a284873b1669b9bbb7b870..46890c22877d0b62ef5a17b91658275339f4c00c 100644
--- a/syweb/webclient/app-controller.js
+++ b/syweb/webclient/app-controller.js
@@ -85,6 +85,7 @@ angular.module('MatrixWebClientController', ['matrixService', 'mPresence', 'even
         matrixService.saveConfig();
 
         // Reset cached data
+        modelService.clearRooms();
         eventHandlerService.reset();
 
         // And go to the login page
diff --git a/syweb/webclient/components/matrix/event-handler-service.js b/syweb/webclient/components/matrix/event-handler-service.js
index 20ed89f161190c8e5b675946e1daa603da37ea1c..2d8f25f0b43d6c2ea2dccfca87355700702496cd 100644
--- a/syweb/webclient/components/matrix/event-handler-service.js
+++ b/syweb/webclient/components/matrix/event-handler-service.js
@@ -47,7 +47,6 @@ function(matrixService, $rootScope, $q, $timeout, $filter, mPresence, notificati
 
     var reset = function() {
         initialSyncDeferred = $q.defer();
-
         eventMap = {};
     };
     reset();
diff --git a/syweb/webclient/components/matrix/model-service.js b/syweb/webclient/components/matrix/model-service.js
index d34981a9ffa8940af6374b8cb3fb59840ea56977..0ec919b6370aa1f52a588bc885ec5194f4744572 100644
--- a/syweb/webclient/components/matrix/model-service.js
+++ b/syweb/webclient/components/matrix/model-service.js
@@ -29,18 +29,38 @@ angular.module('modelService', [])
 .factory('modelService', ['matrixService', function(matrixService) {
 
     // alias / id lookups
-    var roomIdToAlias = {};
-    var aliasToRoomId = {};
+    var roomIdToAlias, aliasToRoomId;
     var setRoomIdToAliasMapping = function(roomId, alias) {
         roomIdToAlias[roomId] = alias;
         aliasToRoomId[alias] = roomId;
     };
     
     // user > room member lookups
-    var userIdToRoomMember = {
-        // user_id: [RoomMember, RoomMember, ...]
+    var userIdToRoomMember;
+    
+    // main store
+    var rooms, users;
+    
+    var init = function() {
+        roomIdToAlias = {};
+        aliasToRoomId = {};
+        userIdToRoomMember = {
+            // user_id: [RoomMember, RoomMember, ...]
+        };
+        
+        // rooms are stored here when they come in.
+        rooms = {
+            // roomid: <Room>
+        };
+        
+        users = {
+            // user_id: <User>
+        };
+        console.log("Models inited.");
     };
     
+    init();
+    
     /***** Room Object *****/
     var Room = function Room(room_id) {
         this.room_id = room_id;
@@ -185,17 +205,6 @@ angular.module('modelService', [])
         this.last_updated = 0; // used with last_active_ago to work out last seen times
     };
     
-    // rooms are stored here when they come in.
-    var rooms = {
-        // roomid: <Room>
-    };
-    
-    var users = {
-        // user_id: <User>
-    };
-    
-    console.log("Models inited.");
-    
     return {
     
         getRoom: function(roomId) {
@@ -330,6 +339,10 @@ angular.module('modelService', [])
             }
 
             return lastMessage;
+        },
+        
+        clearRooms: function() {
+            init();
         }
     
     };