diff --git a/views/ngXosViews/diagnostic/spec/logicTopologyHelper.test.js b/views/ngXosViews/diagnostic/spec/logicTopologyHelper.test.js
index d9a987d..94307f5 100644
--- a/views/ngXosViews/diagnostic/spec/logicTopologyHelper.test.js
+++ b/views/ngXosViews/diagnostic/spec/logicTopologyHelper.test.js
@@ -3,14 +3,29 @@
 
   describe('The Logic Topology Helper Service', () => {
     
-    var Service;
+    var Service, Config;
+
+    var x0, x1, x2, x3, x4;
+
+    var svgWidth = 900;
 
     beforeEach(module('xos.serviceTopology'));
 
     // inject the rackHelper service
-    beforeEach(inject(function (_LogicTopologyHelper_) {
+    beforeEach(inject(function (_LogicTopologyHelper_, _serviceTopologyConfig_) {
       // The injector unwraps the underscores (_) from around the parameter names when matching
       Service = _LogicTopologyHelper_;
+      Config = _serviceTopologyConfig_;
+
+      // result
+      let totalElWidth = Config.elWidths.reduce((el, val) => val + el, 0);
+      let remainingSpace = svgWidth - totalElWidth - (Config.widthMargin * 2);
+      let step = remainingSpace / (Config.elWidths.length - 1);
+      x0 = Config.widthMargin;
+      x1 = x0 + Config.elWidths[0] + step;
+      x2 = x1 + Config.elWidths[1] + step;
+      x3 = x2 + Config.elWidths[2] + step;
+      x4 = x3 + Config.elWidths[3] + step;
     }));
 
     var customMatchers = {
@@ -34,14 +49,13 @@
     });
 
     it('should calculate horizontal position for each element', () => {
-      let [el0x, el1x, el2x, el3x, el4x, el5x] = Service.computeElementPosition(900);
-
-      expect(el0x).toBeSimilar(870);
-      expect(el1x).toBeSimilar(736.6);
-      expect(el2x).toBeSimilar(560.7);
-      expect(el3x).toBeSimilar(384.8);
-      expect(el4x).toBeSimilar(251.4);
-      expect(el5x).toBeSimilar(95);
+      let [el0x, el1x, el2x, el3x, el4x] = Service.computeElementPosition(svgWidth);
+      console.log(x1, el1x);
+      expect(el0x).toBeSimilar(svgWidth - (x0 + (Config.elWidths[0] / 2)));
+      expect(el1x).toBeSimilar(svgWidth - (x1 + (Config.elWidths[1] / 2)));
+      expect(el2x).toBeSimilar(svgWidth - (x2 + (Config.elWidths[2] / 2)));
+      expect(el3x).toBeSimilar(svgWidth - (x3 + (Config.elWidths[3] / 2)));
+      expect(el4x).toBeSimilar(svgWidth - (x4 + (Config.elWidths[4] / 2)));
     });
   });
 
diff --git a/views/ngXosViews/diagnostic/src/js/config.js b/views/ngXosViews/diagnostic/src/js/config.js
index fec991a..6b029d7 100644
--- a/views/ngXosViews/diagnostic/src/js/config.js
+++ b/views/ngXosViews/diagnostic/src/js/config.js
@@ -6,7 +6,7 @@
     widthMargin: 20,
     heightMargin: 30,
     duration: 750,
-    elWidths: [20, 104, 105, 104, 20, 150], //this is not true
+    elWidths: [20, 104, 105, 104, 20], //this is not true
     circle: {
       radius: 10,
       r: 10,
diff --git a/views/ngXosViews/diagnostic/src/js/logicTopology.js b/views/ngXosViews/diagnostic/src/js/logicTopology.js
index ed1fcbb..c126053 100644
--- a/views/ngXosViews/diagnostic/src/js/logicTopology.js
+++ b/views/ngXosViews/diagnostic/src/js/logicTopology.js
@@ -28,7 +28,7 @@
         $scope.$watch(() => this.subscribers, (subscribers) => {
           if(subscribers){
 
-            LogicTopologyHelper.addSubscribers(angular.copy(subscribers));
+            // LogicTopologyHelper.addSubscribers(angular.copy(subscribers));
 
             Node.queryWithInstances().$promise
             .then((computeNodes) => {
diff --git a/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js b/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js
index 8ba9c71..f87e397 100644
--- a/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js
+++ b/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js
@@ -22,7 +22,10 @@
                 {
                   name: 'LAN',
                   type: 'network',
-                  children: [] //subscribers goes here
+                  children: [{
+                    name: 'Subscriber',
+                    type: 'subscriber'
+                  }] //subscribers goes here
                 }
               ]
             }
@@ -63,7 +66,7 @@
           + (step * i) // space between elements
           + (el / 2) // this el width
           + previousElWidth; // previous elements width
-
+          console.log(`${i} elPos: ${previousElWidth}`);
         xPos.push(svgWidth - elPos);
       })
 
diff --git a/views/ngXosViews/diagnostic/src/js/nodeDrawer.js b/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
index 1a45f03..2548812 100644
--- a/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
+++ b/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
@@ -161,10 +161,7 @@
       instanceContainer
       .attr({
         transform: `translate(${width / 2}, ${ height / 2})`,
-        class: d => {
-          console.log(d.name, d.selected);
-          return `instance ${d.selected ? 'active' : ''}`
-        },
+        class: d => `instance ${d.selected ? 'active' : ''}`,
       })
       .transition()
       .duration(serviceTopologyConfig.duration)
diff --git a/views/ngXosViews/diagnostic/src/js/rest_services.js b/views/ngXosViews/diagnostic/src/js/rest_services.js
index 93a9b90..396439c 100644
--- a/views/ngXosViews/diagnostic/src/js/rest_services.js
+++ b/views/ngXosViews/diagnostic/src/js/rest_services.js
@@ -70,6 +70,9 @@
 
             $q.all(requests)
             .then((list) => {
+
+              // adding devices
+
               res.data.map((subscriber, i) => {
                 subscriber.devices = list[i];
                 subscriber.type = 'subscriber';
