diff --git a/gui/ngXosViews/serviceTopology/src/js/services.js b/gui/ngXosViews/serviceTopology/src/js/services.js
index a39a1a6..d6d2fa8 100644
--- a/gui/ngXosViews/serviceTopology/src/js/services.js
+++ b/gui/ngXosViews/serviceTopology/src/js/services.js
@@ -14,6 +14,9 @@
   .service('Instances', function($resource){
     return $resource('/xos/instances', {id: '@id'});
   })
+  .service('Subscribers', function($resource){
+    return $resource('/xos/subscribers', {id: '@id'});
+  })
   .service('ServiceRelation', function($q, _, lodash, Services, Tenant){
 
     // find all the relation defined for a given root
@@ -35,8 +38,6 @@
 
     const buildLevel = (tenants, services, rootService, parentName = null) => {
 
-      console.log(rootService);
-
       const tree = {
         name: rootService.humanReadableName,
         parent: parentName,
@@ -64,20 +65,26 @@
       return tree;
     };
 
-    const buildServiceTree = (services, tenants) => {
+    const buildServiceTree = (services, tenants, subscriber = {id:1, name: 'fakeSubs'}) => {
 
       // find the root service
       // it is the one attached to subsriber_root
       // as now we have only one root so this can work
-      const rootServiceId = lodash.find(tenants, {subscriber_root: 1}).provider_service;
+      const rootServiceId = lodash.find(tenants, {subscriber_root: subscriber.id}).provider_service;
       const rootService = lodash.find(services, {id: rootServiceId});
 
       const serviceTree = buildLevel(tenants, services, rootService);
 
-      return serviceTree;
+      return {
+        name: subscriber.name,
+        parent: null,
+        children: [serviceTree]
+      };
+
+      //return serviceTree;
     };
 
-    this.get = () => {
+    const get = (subscriber) => {
       var deferred = $q.defer();
       var services, tenants;
       Services.query().$promise
@@ -87,7 +94,7 @@
       })
       .then((res) => {
         tenants = res;
-        deferred.resolve(buildServiceTree(services, tenants));
+        deferred.resolve(buildServiceTree(services, tenants, subscriber));
       })
       .catch((e) => {
         throw new Error(e);
@@ -95,6 +102,12 @@
 
       return deferred.promise;
     }
+
+    this.get = get;
+    this.buildLevel = buildLevel;
+    this.buildServiceTree = buildServiceTree;
+    this.findLevelRelation = findLevelRelation;
+    this.findLevelServices = findLevelServices;
   });
 
 }());
\ No newline at end of file
diff --git a/gui/ngXosViews/serviceTopology/src/js/topologyCanvas.js b/gui/ngXosViews/serviceTopology/src/js/topologyCanvas.js
index 0df7bd6..a333adf 100644
--- a/gui/ngXosViews/serviceTopology/src/js/topologyCanvas.js
+++ b/gui/ngXosViews/serviceTopology/src/js/topologyCanvas.js
@@ -9,7 +9,7 @@
       bindToController: true,
       controllerAs: 'vm',
       templateUrl: 'templates/topology_canvas.tpl.html',
-      controller: function($element, $window, d3, serviceTopologyConfig, ServiceRelation, Slice, Instances){
+      controller: function($element, $window, d3, serviceTopologyConfig, ServiceRelation, Slice, Instances, Subscribers){
 
         this.instances = [];
         this.slices = [];
@@ -200,6 +200,10 @@
             .duration(duration)
             .attr('r', 30);
 
+          if(!d.service){
+            return;
+          }
+
           _this.selectedService = {
             id: d.id,
             name: d.name
@@ -248,7 +252,11 @@
           })
         };
 
-        ServiceRelation.get()
+        Subscribers.query().$promise
+        .then((subscribers) => {
+          this.subscribers = subscribers;
+          return ServiceRelation.get(subscribers[0])
+        })
         .then((tree) => {
           draw(tree);
         });
diff --git a/gui/ngXosViews/serviceTopology/src/templates/users-list.tpl.html b/gui/ngXosViews/serviceTopology/src/templates/users-list.tpl.html
deleted file mode 100644
index 2983ad0..0000000
--- a/gui/ngXosViews/serviceTopology/src/templates/users-list.tpl.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<div class="row">
-  <h1>Users List</h1>
-  <p>This is only an example view.</p>
-</div>
-<div class="row">
-  <div class="span4">Email</div>
-  <div class="span4">First Name</div>
-  <div class="span4">Last Name</div>
-</div>  
-<div class="row" ng-repeat="user in vm.users">
-  <div class="span4">{{user.email}}</div>
-  <div class="span4">{{user.firstname}}</div>
-  <div class="span4">{{user.lastname}}</div>
-</div>  
\ No newline at end of file
