diff --git a/views/ngXosViews/mcordTopology/src/css/mcord.css b/views/ngXosViews/mcordTopology/src/css/mcord.css
index 7d3db3d..567318f 100644
--- a/views/ngXosViews/mcordTopology/src/css/mcord.css
+++ b/views/ngXosViews/mcordTopology/src/css/mcord.css
@@ -6,10 +6,14 @@
 }
 
 line {
-  stroke: red;
+  stroke: blue;
   stroke-width: 1;
 }
 
+line.big{
+  stroke-width: 2;
+}
+
 circle,
 rect {
   fill: #fff;
@@ -17,30 +21,42 @@
 }
 
 .fabric {
-  stroke: green;
+  stroke: #000;
+  fill: #1F77B4;
+}
+
+.fabric-container {
+  fill: #fff;
+  stroke: #000;
+  stroke-width: 1;
 }
 
 .bbu {
-  stroke: blue;
+  stroke: black;
+  fill: #FF7F0E;
 }
 
 .bbu text {
-  font-size: 9px;
+  font-size: 10px;
+  stroke: #000;
 }
 
 .rru {
-  stroke: blue;
-  fill: blue;
+  stroke: #000;
+  fill: #FFBB78;
 }
 
 .rru-shadow {
-  fill: lightblue;
+  fill: #FFBB78;
+  opacity: .4
 }
 
 .MME, .SGW, .PGW {
-  stroke: purple;
+  fill: purple;
+  stroke: #000;
 }
 
 .MME text, .SGW text, .PGW text {
   font-size: 10px;
+  stroke: #000;
 }
\ No newline at end of file
diff --git a/views/ngXosViews/mcordTopology/src/js/bbu.js b/views/ngXosViews/mcordTopology/src/js/bbu.js
index 07ad474..cdea2c6 100644
--- a/views/ngXosViews/mcordTopology/src/js/bbu.js
+++ b/views/ngXosViews/mcordTopology/src/js/bbu.js
@@ -5,6 +5,28 @@
 
   const duration = 500;
 
+  this.drawFabricBox = (svg, hStep, vStep) => {
+    let fabric = svg.append('g')
+    .attr({
+      transform: `translate(${hStep - 25}, ${vStep - 25})`
+    });
+
+    fabric.append('rect')
+      .attr({
+        width: hStep + 50,
+        height: vStep + 50,
+        class: 'fabric-container'
+      });
+
+    fabric.append('text')
+    .text('Fabric')
+    .attr({
+      'text-anchor': 'middle',
+      x: ((hStep + 50) / 2),
+      y: -10
+    });
+  };
+
   this.drawBbus = (nodes) => {
 
     nodes.append('circle')
@@ -23,8 +45,9 @@
 
     nodes.append('text')
     .attr({
-      'text-anchor': 'middle',
-      y: 4,
+      'text-anchor': 'start',
+      y: 17,
+      x: 17,
       opacity: 0
     })
     .text(d => `BBU ${d.name.substr(d.name.length - 1, 1)}`)
@@ -72,16 +95,16 @@
         class: d => d.type,
         width: 0,
         height: 0,
-        x: -10,
-        y: -10,
+        x: -15,
+        y: -15,
         opacity: 0
       })
       .transition()
       .duration(duration)
       // .delay((d, i) => i * (duration / 2))
       .attr({
-        width: 20,
-        height: 20,
+        width: 30,
+        height: 30,
         opacity: 1
       });
   };
@@ -103,8 +126,9 @@
 
     nodes.append('text')
     .attr({
-      'text-anchor': 'middle',
-      y: 4,
+      'text-anchor': 'start',
+      y: 17,
+      x: 17,
       opacity: 0
     })
     .text(d => d.type)
@@ -115,7 +139,7 @@
     });
 
   };
-  
+
   this.removeElements = (nodes) => {
     nodes
     .transition()
diff --git a/views/ngXosViews/mcordTopology/src/js/main.js b/views/ngXosViews/mcordTopology/src/js/main.js
index 82836a6..613f758 100644
--- a/views/ngXosViews/mcordTopology/src/js/main.js
+++ b/views/ngXosViews/mcordTopology/src/js/main.js
@@ -48,8 +48,6 @@
 
         nodes = TopologyElements.nodes;
         links = TopologyElements.links;
-        console.log('-----------------------------');
-        console.log(`Fabric Links: ${links.length}`);
 
         XosApi.Instance_List_GET()
         .then((instances) => {
@@ -72,20 +70,22 @@
         .style('height', `${el.clientHeight}px`);
 
 
-      let hStep = el.clientWidth / 3;
-      let vStep = el.clientHeight / 5;
 
       // replace human readable ids with d3 ids
+      // NOTE now ids are not manatined on update...
       const buildLinks = (links, nodes) => {
-        console.log(`links: ${links.length}`);
-        return links.map((l, i) => {
+        return links.map((l) => {
+
+
           let source = lodash.findIndex(nodes, {id: l.source});
           let target = lodash.findIndex(nodes, {id: l.target});
+          // console.log(`link-${source}-${target}`, source, target);
           return {
             source: source,
             target: target,
             value: 1,
-            id: `link-${i++}`
+            id: `link-${source}-${target}`,
+            type: l.source.indexOf('fabric') >= 0 ? 'big':'small'
           };
 
         });
@@ -149,7 +149,6 @@
 
         nodes = nodes.concat(bbuNodes);
 
-        console.log(`bbuLinks: ${bbuLinks.length}`);
 
         links = links.concat(bbuLinks);
       };
@@ -178,19 +177,27 @@
           };
         });
 
-        console.log(`otherLinks: ${otherLinks.length}`);
 
         nodes = nodes.concat(otherNodes);
         links = links.concat(otherLinks);
       }
 
-      // NOTE links get duplicated
+      let hStep, vStep;
+
+      hStep = el.clientWidth / 3;
+      vStep = el.clientHeight / 5;
+
       const draw = (svg, nodes, links) => {
 
+        hStep = el.clientWidth / 3;
+        vStep = el.clientHeight / 5;
+
         links = buildLinks(links, nodes);
 
         nodes = positionFabricNodes(nodes);
 
+        NodeDrawer.drawFabricBox(svg, hStep, vStep);
+
         // start force layout
         force
           .nodes(nodes)
@@ -208,9 +215,10 @@
         
         link.enter().append('line')
           .attr({
-            class: 'link',
+            // class: 'link',
             id: d => d.id,
-            opacity: 0
+            opacity: 0,
+            class: d => `link ${d.type}`
           })
           .transition()
           .duration(1000)
