diff --git a/views/ngXosViews/mcordTopology/gulp/server.js b/views/ngXosViews/mcordTopology/gulp/server.js
index 7605294..162bc97 100644
--- a/views/ngXosViews/mcordTopology/gulp/server.js
+++ b/views/ngXosViews/mcordTopology/gulp/server.js
@@ -23,6 +23,10 @@
   target: conf.host || 'http://0.0.0.0:9999'
 });
 
+var traffic = httpProxy.createProxyServer({
+  target: 'http://10.128.13.3'
+});
+
 
 proxy.on('error', function(error, req, res) {
   res.writeHead(500, {
@@ -64,6 +68,10 @@
             }
             proxy.web(req, res);
           }
+          else if(req.url.indexOf('videoLocal') !== -1){
+            console.log('traffic: ', req.url);
+            traffic.web(req, res);
+          }
           else{
             next();
           }
diff --git a/views/ngXosViews/mcordTopology/src/css/mcord.css b/views/ngXosViews/mcordTopology/src/css/mcord.css
index 7ef1d47..8fb7540 100644
--- a/views/ngXosViews/mcordTopology/src/css/mcord.css
+++ b/views/ngXosViews/mcordTopology/src/css/mcord.css
@@ -11,7 +11,7 @@
 
 line {
   stroke: blue;
-  stroke-width: 1;
+  /*stroke-width: 1;*/
 }
 
 line.big{
diff --git a/views/ngXosViews/mcordTopology/src/js/main.js b/views/ngXosViews/mcordTopology/src/js/main.js
index 544482e..4b66991 100644
--- a/views/ngXosViews/mcordTopology/src/js/main.js
+++ b/views/ngXosViews/mcordTopology/src/js/main.js
@@ -17,6 +17,16 @@
 .config(function($httpProvider){
   $httpProvider.interceptors.push('NoHyperlinks');
 })
+.service('Traffic', function($http, $q){
+  this.get = () => {
+    var deferred = $q.defer();
+    $http.get('videoLocal.txt')
+    .then(res => {
+      deferred.resolve(res.data);
+    });
+    return deferred.promise;
+  }
+})
 .directive('mCordTopology', function(){
   return {
     restrict: 'E',
@@ -24,12 +34,14 @@
     bindToController: true,
     controllerAs: 'vm',
     template: '',
-    controller: function($element, $interval, XosApi, lodash, TopologyElements, NodeDrawer){
+    controller: function($element, $interval, $rootScope, XosApi, lodash, TopologyElements, NodeDrawer, Traffic){
 
       const el = $element[0];
 
       let nodes = [];
       let links = [];
+      let traffic = 0;
+      let linkWidth = 1;
 
       const filterBBU = (instances) => {
         return lodash.filter(instances, i => i.name.indexOf('BBU') >= 0);
@@ -49,7 +61,19 @@
         nodes = TopologyElements.nodes;
         links = TopologyElements.links;
 
-        XosApi.Instance_List_GET()
+        Traffic.get()
+        .then((_traffic) => {
+          let delta = (_traffic - traffic);
+          traffic = _traffic
+          linkWidth = _traffic / (delta || traffic);
+
+          if(linkWidth < 1){
+            linkWidth = 1;
+          }
+
+          console.log(`traffic: ${_traffic}`, `linkWidth: ${linkWidth}`);
+          return XosApi.Instance_List_GET()
+        })
         .then((instances) => {
           addBbuNodes(filterBBU(instances));
           addOtherNodes(filterOthers(instances));
@@ -228,18 +252,25 @@
         
         link.enter().append('line')
           .attr({
-            // class: 'link',
+            class: d => `link ${d.type}`,
+            'stroke-width': linkWidth,
             id: d => d.id,
-            opacity: 0,
-            class: d => `link ${d.type}`
+            opacity: 0
           })
           .transition()
           .duration(1000)
-          // .delay((d, i) => 50 * i)
           .attr({
             opacity: 1
           });
 
+        link
+          .transition()
+          .duration(1000)
+          .attr({
+            'stroke-width': linkWidth,
+            opacity: 1
+          });
+
         link.exit()
         .remove();
 
@@ -289,7 +320,7 @@
       
       $interval(() => {
         getData();
-      }, 5000);
+      }, 3000);
       getData();
 
       
diff --git a/xos/core/xoslib/static/css/xosMcordTopology.css b/xos/core/xoslib/static/css/xosMcordTopology.css
index 62c259b..55da618 100644
--- a/xos/core/xoslib/static/css/xosMcordTopology.css
+++ b/xos/core/xoslib/static/css/xosMcordTopology.css
@@ -1 +1 @@
-#xosMcordTopology{height:700px}[ui-view],m-cord-topology{width:100%;height:100%;display:block}line{stroke:blue;stroke-width:1}line.big{stroke-width:2}circle,rect{fill:#fff;stroke-width:1}.fabric{stroke:none;fill:#123456;fill-rule:evenodd}.fabric-container{fill:transparent;stroke:#000;stroke-width:1}.bbu{stroke:black;fill:#ff7f0e}.rru{stroke:#000;fill:#ffbb78}.rru.antenna{stroke:#000;fill:brown}.rru-shadow{fill:#ffbb78;opacity:.4}.MME,.SGW,.PGW{fill:purple;stroke:#000}rect.MME,rect.SGW,rect.PGW,rect.bbu{fill:#fff;stroke:#fff}.bbu text,.MME text,.SGW text,.PGW text{font-size:10px;stroke-width:0;fill:#000}
\ No newline at end of file
+#xosMcordTopology{height:700px}[ui-view],m-cord-topology{width:100%;height:100%;display:block}line{stroke:blue}line.big{stroke-width:2}circle,rect{fill:#fff;stroke-width:1}.fabric{stroke:none;fill:#123456;fill-rule:evenodd}.fabric-container{fill:transparent;stroke:#000;stroke-width:1}.bbu{stroke:black;fill:#ff7f0e}.rru{stroke:#000;fill:#ffbb78}.rru.antenna{stroke:#000;fill:brown}.rru-shadow{fill:#ffbb78;opacity:.4}.MME,.SGW,.PGW,.Vid{fill:purple;stroke:#000}rect.MME,rect.SGW,rect.PGW,rect.bbu,rect.Vid{fill:#fff;stroke:#fff}.bbu text,.MME text,.SGW text,.PGW text,.Vid text{font-size:10px;stroke-width:0;fill:#000}
\ No newline at end of file
diff --git a/xos/core/xoslib/static/js/xosMcordTopology.js b/xos/core/xoslib/static/js/xosMcordTopology.js
index 26cf44c..d6b2afc 100644
--- a/xos/core/xoslib/static/js/xosMcordTopology.js
+++ b/xos/core/xoslib/static/js/xosMcordTopology.js
@@ -8,6 +8,14 @@
   });
 }]).config(["$httpProvider", function ($httpProvider) {
   $httpProvider.interceptors.push('NoHyperlinks');
+}]).service('Traffic', ["$http", "$q", function ($http, $q) {
+  this.get = function () {
+    var deferred = $q.defer();
+    $http.get('videoLocal.txt').then(function (res) {
+      deferred.resolve(res.data);
+    });
+    return deferred.promise;
+  };
 }]).directive('mCordTopology', function () {
   return {
     restrict: 'E',
@@ -15,12 +23,14 @@
     bindToController: true,
     controllerAs: 'vm',
     template: '',
-    controller: ["$element", "$interval", "XosApi", "lodash", "TopologyElements", "NodeDrawer", function controller($element, $interval, XosApi, lodash, TopologyElements, NodeDrawer) {
+    controller: ["$element", "$interval", "$rootScope", "XosApi", "lodash", "TopologyElements", "NodeDrawer", "Traffic", function controller($element, $interval, $rootScope, XosApi, lodash, TopologyElements, NodeDrawer, Traffic) {
 
       var el = $element[0];
 
       var nodes = [];
       var links = [];
+      var traffic = 0;
+      var linkWidth = 1;
 
       var filterBBU = function filterBBU(instances) {
         return lodash.filter(instances, function (i) {
@@ -29,9 +39,7 @@
       };
 
       var filterOthers = function filterOthers(instances) {
-        return lodash.filter(instances, function (i) {
-          return i.name.indexOf('MME') >= 0 || i.name.indexOf('SGW') >= 0 || i.name.indexOf('PGW') >= 0;
-        });
+        return TopologyElements.fakedInstance;
       };
 
       // retrieving instances list
@@ -42,7 +50,18 @@
         nodes = TopologyElements.nodes;
         links = TopologyElements.links;
 
-        XosApi.Instance_List_GET().then(function (instances) {
+        Traffic.get().then(function (_traffic) {
+          var delta = _traffic - traffic;
+          traffic = _traffic;
+          linkWidth = _traffic / (delta || traffic);
+
+          if (linkWidth < 1) {
+            linkWidth = 1;
+          }
+
+          console.log('traffic: ' + _traffic, 'linkWidth: ' + linkWidth);
+          return XosApi.Instance_List_GET();
+        }).then(function (instances) {
           addBbuNodes(filterBBU(instances));
           addOtherNodes(filterOthers(instances));
 
@@ -201,17 +220,20 @@
         });
 
         link.enter().append('line').attr({
-          // class: 'link',
+          'class': function _class(d) {
+            return 'link ' + d.type;
+          },
+          'stroke-width': linkWidth,
           id: function id(d) {
             return d.id;
           },
-          opacity: 0,
-          'class': function _class(d) {
-            return 'link ' + d.type;
-          }
-        }).transition().duration(1000)
-        // .delay((d, i) => 50 * i)
-        .attr({
+          opacity: 0
+        }).transition().duration(1000).attr({
+          opacity: 1
+        });
+
+        link.transition().duration(1000).attr({
+          'stroke-width': linkWidth,
           opacity: 1
         });
 
@@ -239,7 +261,8 @@
         NodeDrawer.drawRrus(enter.filter('.rru'));
         NodeDrawer.drawFabric(enter.filter('.fabric'));
         NodeDrawer.drawOthers(enter.filter(function (d) {
-          return d.type === 'MME' || d.type === 'SGW' || d.type === 'PGW';
+          console.log(d.type);
+          return d.type === 'MME' || d.type === 'SGW' || d.type === 'PGW' || d.type === 'Vid';
         }));
 
         // remove nodes
@@ -266,7 +289,7 @@
 
       $interval(function () {
         getData();
-      }, 5000);
+      }, 3000);
       getData();
     }]
   };
@@ -316,6 +339,19 @@
     source: 'fabric3',
     target: 'fabric2'
   }],
+  fakedInstance: [{
+    humanReadableName: 'MME',
+    name: 'MME'
+  }, {
+    humanReadableName: 'PGW',
+    name: 'PGW'
+  }, {
+    humanReadableName: 'SGW',
+    name: 'SGW'
+  }, {
+    humanReadableName: 'Video Server',
+    name: 'Video Server'
+  }],
   icons: {
     bbu: 'M11.08,4.66H24.76l6.81,6.82H4.23Z M4.24,18.34V13.21H31.6v5.13H4.24Zm25.64-1.72V14.94H28.19v1.69h1.68Zm-13.65-1.7v1.69h1.69V14.93H16.22Zm-3.42,0v1.69h1.68V14.93H12.8Zm-3.42,0v1.69h1.68V14.93H9.38ZM6,14.93v1.69H7.64V14.93H6Z M32.8,33.23H3V11.42l0,0c1.17-1.16,2.54-2.5,3.87-3.8S9.59,5,10.72,3.87l0,0H25.08l0,0C26.25,5,27.6,6.32,28.9,7.61s2.68,2.63,3.83,3.78l0,0v0.06ZM3.3,33H32.53l0-21.43C31.36,10.39,30,9.07,28.71,7.8S26.09,5.22,25,4.1H10.86C9.75,5.21,8.41,6.52,7.12,7.77s-2.67,2.61-3.83,3.76V33Z M4.24,25.18V20.05H31.6v5.13H4.24Zm24-1.73h1.68V21.78H28.19v1.67Zm-12,0H17.9V21.78H16.21v1.68Zm-1.73-1.68H12.81v1.67h1.68V21.78Zm-3.43,1.68V21.78H9.38v1.69h1.68ZM6,23.46H7.64V21.78H6v1.68Z M31.6,26.89V32H4.24V26.89H31.6Zm-3.4,1.72V30.3h1.68V28.61H28.19Zm-10.28,0H16.22V30.3h1.68V28.62Zm-3.43,1.69V28.62H12.8v1.69h1.68Zm-3.42,0V28.62H9.38v1.69h1.68ZM7.65,28.62H6v1.67H7.65V28.62Z',
     // bbu: `M15,100a5,5,0,0,1-5-5v-65a5,5,0,0,1,5-5h80a5,5,0,0,1,5,5v65a5,5,0,0,1-5,5zM14,22.5l11-11a10,3,0,0,1,10-2h40a10,3,0,0,1,10,2l11,11zM16,35a5,5,0,0,1,10,0a5,5,0,0,1-10,0z`,
@@ -499,7 +535,7 @@
       x: -12,
       opacity: 0
     }).text(function (d) {
-      return d.type;
+      return d.name.toUpperCase();
     }).transition().duration(duration * 2).attr({
       opacity: 1
     });
