diff --git a/minindn/helpers/ndn_routing_helper.py b/minindn/helpers/ndn_routing_helper.py
index c2d1013..93b196f 100644
--- a/minindn/helpers/ndn_routing_helper.py
+++ b/minindn/helpers/ndn_routing_helper.py
@@ -33,7 +33,6 @@
 import json
 import operator
 from collections import defaultdict
-from tqdm import tqdm
 from joblib import Parallel, delayed
 
 from mininet.log import info, debug, error, warn
@@ -298,7 +297,7 @@
         info('Creating faces and adding routes to FIB\n')
 
         res = Parallel(n_jobs=-1, require='sharedmem',
-                       prefer="threads")(delayed(self.addNodeRoutes)(host) for host in tqdm(self.net.hosts))
+                       prefer="threads", verbose=1)(delayed(self.addNodeRoutes)(host) for host in self.net.hosts)
 
         info('Processed all the routes to NFD\n')
 
@@ -309,8 +308,8 @@
         :param Node node: Node from net object
         """
         neighborIPs = self.getNeighbor(node)
-        self.createFaces(node, neighborIPs)
-        self.routeAdd(node, neighborIPs)
+        neighborFaces = self.createFaces(node, neighborIPs)
+        self.routeAdd(node, neighborFaces)
 
     def addOrigin(self, nodes, prefix):
         """
@@ -348,10 +347,15 @@
         self.calculateNPossibleRoutes(nFaces=1)
 
     def createFaces(self, node, neighborIPs):
-        for ip in neighborIPs.values():
-            nfdc.createFace(node, ip, self.faceType)
+        neighborFaces = {}
+        for k, ip in neighborIPs.items():
+            faceID = nfdc.createFace(node, ip, self.faceType)
+            if not isinstance(faceID, str): raise ValueError(faceID)
+            neighborFaces[k] = faceID
+        return neighborFaces
 
-    def routeAdd(self, node, neighborIPs):
+
+    def routeAdd(self, node, neighborFaces):
         """
         Add route from a node to its neighbors for each prefix/s  advertised by destination node
 
@@ -367,8 +371,7 @@
             prefixes = [defaultPrefix] + self.namePrefixes[destination]
             for prefix in prefixes:
                 # Register routes to all the available destination name prefix/s
-                faceID = nfdc.createFace(node, neighborIPs[nextHop])
-                nfdc.registerRoute(node, prefix, faceID, cost=cost)
+                nfdc.registerRoute(node, prefix, neighborFaces[nextHop], cost=cost)
     @staticmethod
     def getNeighbor(node):
         # Nodes to IP mapping
