updated diagnostic dashboard
diff --git a/views/ngXosViews/diagnostic/bower.json b/views/ngXosViews/diagnostic/bower.json
index edf419d..afb3524 100644
--- a/views/ngXosViews/diagnostic/bower.json
+++ b/views/ngXosViews/diagnostic/bower.json
@@ -26,7 +26,6 @@
     "angular-ui-router": "~0.2.15",
     "angular-cookies": "~1.4.7",
     "angular-resource": "~1.4.7",
-    "ng-lodash": "~0.3.0",
     "bootstrap-css": "~3.3.6"
   }
 }
diff --git a/views/ngXosViews/diagnostic/src/js/chart_data_service.js b/views/ngXosViews/diagnostic/src/js/chart_data_service.js
index ff2d31b..63923e8 100644
--- a/views/ngXosViews/diagnostic/src/js/chart_data_service.js
+++ b/views/ngXosViews/diagnostic/src/js/chart_data_service.js
@@ -2,7 +2,7 @@
   'use strict';
 
   angular.module('xos.diagnostic')
-  .service('ChartData', function($rootScope, $q, lodash, Tenant, Node, serviceTopologyConfig, Ceilometer, Instances) {
+  .service('ChartData', function($rootScope, $q, _, Tenant, Node, serviceTopologyConfig, Ceilometer, Instances) {
     this.currentSubscriber = null;
     this.currentServiceChain = null;
 
@@ -133,7 +133,7 @@
         });
       });
 
-      lodash.forEach(instances, (instance) => {
+      _.forEach(instances, (instance) => {
         computeNodes.map((node) => {
           node.instances.map((d3instance) => {
             if(d3instance.id === instance.id){
@@ -207,7 +207,7 @@
 
         p = Tenant.queryVsgInstances(param[service.name]).$promise
         .then((instances) => {
-          return Ceilometer.getInstancesStats(lodash.uniq(instances));
+          return Ceilometer.getInstancesStats(_.uniq(instances));
         });
       }
 
diff --git a/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js b/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js
index 51ac0f7..6c85cdf 100644
--- a/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js
+++ b/views/ngXosViews/diagnostic/src/js/logicTopologyHelper.js
@@ -2,7 +2,7 @@
   'use strict';
 
   angular.module('xos.diagnostic')
-  .service('LogicTopologyHelper', function($window, $log, $rootScope, lodash, serviceTopologyConfig, NodeDrawer, ChartData){
+  .service('LogicTopologyHelper', function($window, $log, $rootScope, _, serviceTopologyConfig, NodeDrawer, ChartData){
 
     var diagonal, nodes, links, i = 0, svgWidth, svgHeight, layout;
 
@@ -21,18 +21,18 @@
 
       let xPos = [];
 
-      let totalElWidth = lodash.reduce(serviceTopologyConfig.elWidths, (el, val) => val + el, 0);
+      let totalElWidth = _.reduce(serviceTopologyConfig.elWidths, (el, val) => val + el, 0);
 
       let remainingSpace = svgWidth - totalElWidth - (serviceTopologyConfig.widthMargin * 2);
 
       let step = remainingSpace / (serviceTopologyConfig.elWidths.length - 1);
 
-      lodash.forEach(serviceTopologyConfig.elWidths, (el, i) => {
+      _.forEach(serviceTopologyConfig.elWidths, (el, i) => {
 
         // get half of the previous elements width
         let previousElWidth = 0;
         if(i !== 0){
-          previousElWidth = lodash.reduce(serviceTopologyConfig.elWidths.slice(0, i), (el, val) => val + el, 0);
+          previousElWidth = _.reduce(serviceTopologyConfig.elWidths.slice(0, i), (el, val) => val + el, 0);
         }
 
         let elPos =
diff --git a/views/ngXosViews/diagnostic/src/js/main.js b/views/ngXosViews/diagnostic/src/js/main.js
index 73cd3d9..210606a 100644
--- a/views/ngXosViews/diagnostic/src/js/main.js
+++ b/views/ngXosViews/diagnostic/src/js/main.js
@@ -4,7 +4,6 @@
   angular.module('xos.diagnostic', [
     'ngResource',
     'ngCookies',
-    'ngLodash',
     'ngAnimate',
     'ui.router',
     'xos.helpers'
diff --git a/views/ngXosViews/diagnostic/src/js/nodeDrawer.js b/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
index 514f114..a24483f 100644
--- a/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
+++ b/views/ngXosViews/diagnostic/src/js/nodeDrawer.js
@@ -9,7 +9,7 @@
   var instanceId = 0;
 
   angular.module('xos.diagnostic')
-  .service('NodeDrawer', function(d3, serviceTopologyConfig, RackHelper, lodash){
+  .service('NodeDrawer', function(d3, serviceTopologyConfig, RackHelper, _){
 
     var _this = this;
 
@@ -245,7 +245,7 @@
       const interestingMeters = ['memory', 'memory.usage', 'cpu_util'];
 
       interestingMeters.forEach((m, i) => {
-        const meter = lodash.find(docker.stats, {meter: m});
+        const meter = _.find(docker.stats, {meter: m});
         // if there is no meter stats skip rendering
         if(!angular.isDefined(meter)){
           return;
@@ -294,7 +294,7 @@
 
         interestingPortMeters.forEach((m, i) => {
 
-          const meter = lodash.find(docker.port[p], {meter: m.meter});
+          const meter = _.find(docker.port[p], {meter: m.meter});
           // if there is no meter stats skip rendering
           if(!angular.isDefined(meter)){
             return;
@@ -441,7 +441,7 @@
       const interestingMeters = ['memory', 'memory.usage', 'cpu', 'cpu_util'];
 
       interestingMeters.forEach((m, i) => {
-        const meter = lodash.find(instance.stats, {meter: m});
+        const meter = _.find(instance.stats, {meter: m});
 
         if(meter){
           
diff --git a/views/ngXosViews/diagnostic/src/js/rackHelper.js b/views/ngXosViews/diagnostic/src/js/rackHelper.js
index 17eb0db..af3eb30 100644
--- a/views/ngXosViews/diagnostic/src/js/rackHelper.js
+++ b/views/ngXosViews/diagnostic/src/js/rackHelper.js
@@ -1,6 +1,6 @@
 (function () {
   angular.module('xos.diagnostic')
-  .service('RackHelper', function(serviceTopologyConfig, lodash){
+  .service('RackHelper', function(serviceTopologyConfig, _){
 
     this.getComputeNodeLabelSize = () => {
       return serviceTopologyConfig.computeNode.labelHeight + (serviceTopologyConfig.instance.margin * 2)
@@ -11,7 +11,7 @@
     * They are placed in rows of 2 with 5px margin on each side.
     */
    
-    this.getComputeNodeSize = lodash.memoize((instances) => {
+    this.getComputeNodeSize = _.memoize((instances) => {
       const width = (serviceTopologyConfig.instance.margin * 3) + (serviceTopologyConfig.instance.width *2);
 
       const rows = Math.round(instances.length / 2);
@@ -32,7 +32,7 @@
       let width = 0;
       let height = serviceTopologyConfig.computeNode.margin;
 
-      lodash.forEach(nodes, (node) => {
+      _.forEach(nodes, (node) => {
         let [nodeWidth, nodeHeight] = this.getComputeNodeSize(node.instances);
 
         width = nodeWidth + (serviceTopologyConfig.computeNode.margin * 2);
@@ -69,7 +69,7 @@
 
       const x = serviceTopologyConfig.computeNode.margin;
 
-      let previousElEight = lodash.reduce(nodes.slice(0, position), (val, node) => {
+      let previousElEight = _.reduce(nodes.slice(0, position), (val, node) => {
         return val + this.getComputeNodeSize(node.instances)[1]
       }, 0);
 
diff --git a/views/ngXosViews/diagnostic/src/js/rest_services.js b/views/ngXosViews/diagnostic/src/js/rest_services.js
index 8f3992f..d8dfaf3 100644
--- a/views/ngXosViews/diagnostic/src/js/rest_services.js
+++ b/views/ngXosViews/diagnostic/src/js/rest_services.js
@@ -238,7 +238,7 @@
   .service('SubscriberDevice', function($resource){
     return $resource('/xoslib/rs/subscriber/:id/users/', {id: '@id'});
   })
-  .service('ServiceRelation', function($q, lodash, Services, Tenant, Slice, Instances){
+  .service('ServiceRelation', function($q, _, Services, Tenant, Slice, Instances){
 
     // count the mas depth of an object
     const depthOf = (obj) => {
@@ -256,13 +256,13 @@
 
     // find all the relation defined for a given root
     const findLevelRelation = (tenants, rootId) => {
-      return lodash.filter(tenants, service => {
+      return _.filter(tenants, service => {
         return service.subscriber_service === rootId;
       });
     };
 
     const findSpecificInformation = (tenants, rootId) => {
-      var tenants = lodash.filter(tenants, service => {
+      var tenants = _.filter(tenants, service => {
         return service.provider_service === rootId && service.subscriber_tenant;
       });
 
@@ -280,8 +280,8 @@
     // find all the service defined by a given array of relations
     const findLevelServices = (relations, services) => {
       const levelServices = [];
-      lodash.forEach(relations, (tenant) => {
-        var service = lodash.find(services, {id: tenant.provider_service});
+      _.forEach(relations, (tenant) => {
+        var service = _.find(services, {id: tenant.provider_service});
         levelServices.push(service);
       });
       return levelServices;
@@ -291,7 +291,7 @@
 
       // build an array of unlinked services
       // these are the services that should still placed in the tree
-      var unlinkedServices = lodash.difference(services, [rootService]);
+      var unlinkedServices = _.difference(services, [rootService]);
 
       // find all relations relative to this rootElement
       const levelRelation = findLevelRelation(tenants, rootService.id);
@@ -299,7 +299,7 @@
       const levelServices = findLevelServices(levelRelation, services);
 
       // remove this item from the list (performance
-      unlinkedServices = lodash.difference(unlinkedServices, levelServices);
+      unlinkedServices = _.difference(unlinkedServices, levelServices);
 
       rootService.service_specific_attribute = findSpecificInformation(tenants, rootService.id);
 
@@ -316,12 +316,12 @@
         children: []
       };
 
-      lodash.forEach(levelServices, (service) => {
+      _.forEach(levelServices, (service) => {
         if(service.humanReadableName === 'service_ONOS_vBNG' || service.humanReadableName === 'service_ONOS_vOLT'){
           // remove ONOSes from service chart
           return;
         }
-        let tenant = lodash.find(tenants, {subscriber_tenant: rootTenant.id, provider_service: service.id});
+        let tenant = _.find(tenants, {subscriber_tenant: rootTenant.id, provider_service: service.id});
         tree.children.push(buildLevel(tenants, unlinkedServices, service, tenant, rootService.humanReadableName));
       });
 
@@ -342,8 +342,8 @@
       // find the root service
       // it is the one attached to subsriber_root
       // as now we have only one root so this can work
-      const rootTenant = lodash.find(tenants, {subscriber_root: subscriber.id});
-      const rootService = lodash.find(services, {id: rootTenant.provider_service});
+      const rootTenant = _.find(tenants, {subscriber_root: subscriber.id});
+      const rootService = _.find(services, {id: rootTenant.provider_service});
 
       const serviceTree = buildLevel(tenants, services, rootService, rootTenant);
 
@@ -372,9 +372,9 @@
           service: currentService
         };
 
-        let tenant = lodash.find(tenants, {subscriber_service: currentService.id});
+        let tenant = _.find(tenants, {subscriber_service: currentService.id});
         if(tenant){
-          let next = lodash.find(services, {id: tenant.provider_service});
+          let next = _.find(services, {id: tenant.provider_service});
           response.children = [buildChild(services, tenants, next)];
         }
         else {
@@ -390,7 +390,7 @@
         return response;
       }
 
-      let baseService = lodash.find(services, {id: 3});
+      let baseService = _.find(services, {id: 3});
       
       if(!angular.isDefined(baseService)){
         console.error('Missing Base service!');
diff --git a/views/ngXosViews/diagnostic/src/js/serviceTopologyHelper.js b/views/ngXosViews/diagnostic/src/js/serviceTopologyHelper.js
index bb7ba5d..c903b3b 100644
--- a/views/ngXosViews/diagnostic/src/js/serviceTopologyHelper.js
+++ b/views/ngXosViews/diagnostic/src/js/serviceTopologyHelper.js
@@ -2,7 +2,7 @@
   'use strict';
 
   angular.module('xos.diagnostic')
-  .service('ServiceTopologyHelper', function($rootScope, $window, $log, lodash, ServiceRelation, serviceTopologyConfig, d3){
+  .service('ServiceTopologyHelper', function($rootScope, $window, $log, _, ServiceRelation, serviceTopologyConfig, d3){
 
     var _svg, _layout, _source, _el;