diff --git a/src/app/core/services/navigation.ts b/src/app/core/services/navigation.ts
index e41333c..6fb6883 100644
--- a/src/app/core/services/navigation.ts
+++ b/src/app/core/services/navigation.ts
@@ -58,10 +58,14 @@
       throw new Error('[XosNavigation] You can\'t provide both state and url');
     }
 
+    // NOTE factor this out in a separate method an eventually use recursion since we can nest more routes
     const routeExist = _.findIndex(this.routes, (r: IXosNavigationRoute) => {
       if (r.label === route.label && r.state === route.state && r.parent === route.parent) {
         return true;
       }
+      else if (_.findIndex(r.children, route) > -1) {
+        return true;
+      }
       return false;
     }) > -1;
 
diff --git a/src/app/service-graph/components/coarse/coarse.component.ts b/src/app/service-graph/components/coarse/coarse.component.ts
index fb04e2d..ed5d100 100644
--- a/src/app/service-graph/components/coarse/coarse.component.ts
+++ b/src/app/service-graph/components/coarse/coarse.component.ts
@@ -46,7 +46,7 @@
           this.$log.debug(`[XosCoarseTenancyGraph] Coarse Event and render`, res);
 
           // id there are no data, do nothing
-          if (!res.nodes || res.nodes.length === 0 || !res.links || res.links.length === 0) {
+          if (!res) {
             return;
           }
           this.graph = res;
@@ -138,9 +138,6 @@
   }
 
   private addNodeLinksToForceLayout(data: IXosServiceGraph) {
-    if (!data.nodes || !data.links) {
-      return;
-    }
     this.forceLayout
       .nodes(data.nodes)
       .links(data.links)
diff --git a/src/app/service-graph/components/fine-grained/fine-grained.component.ts b/src/app/service-graph/components/fine-grained/fine-grained.component.ts
index 5647c75..7f69387 100644
--- a/src/app/service-graph/components/fine-grained/fine-grained.component.ts
+++ b/src/app/service-graph/components/fine-grained/fine-grained.component.ts
@@ -55,7 +55,7 @@
         (graph) => {
           this.$log.debug(`[XosFineGrainedTenancyGraphCtrl] Fine-Grained Event and render`, graph);
 
-          if (!graph.nodes || graph.nodes.length === 0 || !graph.links || graph.links.length === 0) {
+          if (!graph || !graph.nodes || !graph.links) {
             return;
           }
 
diff --git a/src/app/service-graph/services/graph.store.ts b/src/app/service-graph/services/graph.store.ts
index 9ab1a5d..2266329 100644
--- a/src/app/service-graph/services/graph.store.ts
+++ b/src/app/service-graph/services/graph.store.ts
@@ -28,9 +28,14 @@
     subscribers: []
   });
 
+  private emptyGraph: IXosServiceGraph = {
+    nodes: [],
+    links: []
+  };
+
   // representation of the graph as D3 requires
-  private d3CoarseGraph = new BehaviorSubject({});
-  private d3FineGrainedGraph = new BehaviorSubject({});
+  private d3CoarseGraph = new BehaviorSubject(this.emptyGraph);
+  private d3FineGrainedGraph = new BehaviorSubject(this.emptyGraph);
 
   // storing locally reference to the data model
   private services;
@@ -240,7 +245,6 @@
   }
 
   private graphDataToFineGrainedGraph(data: IXosFineGrainedGraphData) {
-
     try {
       data = this.removeUnwantedFineGrainedData(data);
 
@@ -292,7 +296,7 @@
         return links;
       }, []);
 
-      if (nodes.length === 0 || links.length === 0) {
+      if (nodes.length === 0 && links.length === 0) {
         return;
       }
 
@@ -304,11 +308,9 @@
       _.forEach(this.XosServiceGraphExtender.getFinegrained(), (r: IXosServiceGraphReducer) => {
         graph = r.reducer(graph);
       });
-
       this.d3FineGrainedGraph.next(graph);
     } catch (e) {
      this.d3FineGrainedGraph.error(e);
     }
   }
-
 }
