diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
index ff1d52f..45c2652 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
@@ -24,12 +24,13 @@
 
     var $log,
         wss,
+        Model,
         t2sr,
         t2ds,
         t2hs,
         t2ls;
 
-    var regions;
+    var region;
 
     function init() {
         regions = {};
@@ -37,25 +38,46 @@
 
     function addRegion(data) {
 
-        var region = {
-            subregions: t2sr.createSubRegionCollection(data.subregions),
-            devices: t2ds.createDeviceCollection(data.devices, data),
-            hosts: t2hs.createHostCollection(data.hosts),
-            links: t2ls.createLinkCollection(data.links),
-        };
+        region = new Model({
+            id: data.id,
+            layerOrder: data.layerOrder
+        });
+
+        region.set({
+            subregions: t2sr.createSubRegionCollection(data.subregions, region),
+            devices: t2ds.createDeviceCollection(data.devices, region),
+            hosts: t2hs.createHostCollection(data.hosts, region),
+            links: t2ls.createLinkCollection(data.links, region),
+        });
+
+        region.set('test', 2);
+
+        angular.forEach(region.get('links').models, function (link) {
+            link.createLink();
+        });
 
         $log.debug('Region: ', region);
     }
 
+    function regionNodes() {
+        return [].concat(region.get('devices').models, region.get('hosts').models);
+    }
+
+
+    function regionLinks() {
+        return region.get('links').models;
+    }
+
     angular.module('ovTopo2')
     .factory('Topo2RegionService',
-        ['$log', 'WebSocketService', 'Topo2SubRegionService', 'Topo2DeviceService',
+        ['$log', 'WebSocketService', 'Topo2Model', 'Topo2SubRegionService', 'Topo2DeviceService',
         'Topo2HostService', 'Topo2LinkService',
 
-        function (_$log_, _wss_, _t2sr_, _t2ds_, _t2hs_, _t2ls_) {
+        function (_$log_, _wss_, _Model_, _t2sr_, _t2ds_, _t2hs_, _t2ls_) {
 
             $log = _$log_;
             wss = _wss_;
+            Model = _Model_
             t2sr = _t2sr_;
             t2ds = _t2ds_;
             t2hs = _t2hs_;
@@ -65,6 +87,9 @@
                 init: init,
 
                 addRegion: addRegion,
+                regionNodes: regionNodes,
+                regionLinks: regionLinks,
+
                 getSubRegions: t2sr.getSubRegions
             };
         }]);
