diff --git a/bin/minindn b/bin/minindn
index 930314f..116fcf5 100755
--- a/bin/minindn
+++ b/bin/minindn
@@ -130,6 +130,7 @@
         self.tunnelType = None
         self.faceType = "udp"
         self.arbArgs = {}
+        self.csSize = 65536
 
 def createResultsDir(resultDir, faces, rType):
     if faces == 0:
@@ -154,7 +155,7 @@
 
     # nargs='?' required here since optional argument
     parser.add_argument('tempfile', nargs='?', default=INSTALL_DIR + 'default-topology.conf',
-                        help="If no template_file is given, ndn_utils/default-topology.conf (given sample file) will be used.")
+                        help="If no template_file is given, topologies/default-topology.conf (given sample file) will be used.")
 
     parser.add_argument("--ctime", type=int, default=60,
                         help="Specify convergence time for the topology (Default: 60 seconds)")
@@ -215,6 +216,9 @@
 
     parser.add_argument("--face-type", dest='faceType', default='udp', choices=['udp', 'tcp'])
 
+    parser.add_argument("--cs-size", dest='csSize', type=int, default=65536,
+                        help="Set CS size in NFD's conf file")
+
     args, unknownArgs = parser.parse_known_args()
 
     unknownArgsList = []
@@ -245,6 +249,7 @@
     options.tunnelType = args.tunnelType
     options.placeList = args.placeList
     options.faceType = args.faceType
+    options.csSize = args.csSize
 
     for k in args.__dict__:
         if k in unknownArgsList:
@@ -402,6 +407,12 @@
                 node2.setIP(ipStr(ipParse(ndnNetBase) + 2) + '/30', intf=link.intf2)
                 ndnNetBase = ipStr(ipParse(ndnNetBase) + 4)
 
+    time.sleep(2)
+    info('Starting NFD on nodes\n')
+    for host in net.hosts:
+        host.nfd = Nfd(host, options.csSize)
+        host.nfd.start()
+
     if options.isNlsrEnabled is True:
 
         # NLSR Security
@@ -409,6 +420,7 @@
             Nlsr.createKeysAndCertificates(net, options.workDir)
 
         # NLSR initialization
+        info('Starting NLSR on nodes\n')
         for host in net.hosts:
             conf = next(x for x in hosts_conf if x.name == host.name)
             host.nlsrParameters = conf.nlsrParameters
diff --git a/install.sh b/install.sh
index 37eeeea..9a331a8 100755
--- a/install.sh
+++ b/install.sh
@@ -204,10 +204,10 @@
     install_dir="/usr/local/etc/mini-ndn/"
 
     sudo mkdir -p "$install_dir"
-    sudo cp ndn_utils/topologies/default-topology.conf "$install_dir"
-    sudo cp ndn_utils/topologies/minindn.caida.conf "$install_dir"
-    sudo cp ndn_utils/topologies/minindn.ucla.conf "$install_dir"
-    sudo cp ndn_utils/topologies/minindn.testbed.conf "$install_dir"
+    sudo cp topologies/default-topology.conf "$install_dir"
+    sudo cp topologies/minindn.caida.conf "$install_dir"
+    sudo cp topologies/minindn.ucla.conf "$install_dir"
+    sudo cp topologies/minindn.testbed.conf "$install_dir"
     sudo python setup.py clean --all install
 }
 
diff --git a/ndn/ndn_application.py b/ndn/ndn_application.py
index 7720734..dd9100e 100644
--- a/ndn/ndn_application.py
+++ b/ndn/ndn_application.py
@@ -43,7 +43,7 @@
             self.isRunning = True
 
     def stop(self):
-        if self.isRunning:
-            self.node.cmd("sudo kill %s" % self.processId)
+        if self.isRunning and self.processId != "":
+            self.node.cmd("sudo kill {}".format(self.processId))
 
             self.isRunning = False
diff --git a/ndn/ndn_host.py b/ndn/ndn_host.py
index 7c727ab..7596f5f 100644
--- a/ndn/ndn_host.py
+++ b/ndn/ndn_host.py
@@ -100,8 +100,7 @@
         self.cmd("mkdir -p %s" % self.homeFolder)
         self.cmd("cd %s" % self.homeFolder)
 
-        self.nfd = Nfd(self)
-        self.nfd.start()
+        self.nfd = None
 
         self.peerList = {}
 
@@ -116,7 +115,8 @@
 
     def terminate(self):
         "Stop node."
-        self.nfd.stop()
+        if self.nfd is not None:
+            self.nfd.stop()
         Host.terminate(self)
 
 class CpuLimitedNdnHost(CPULimitedHost, NdnHostCommon):
@@ -134,8 +134,7 @@
         self.cmd("mkdir -p %s" % self.homeFolder)
         self.cmd("cd %s" % self.homeFolder)
 
-        self.nfd = Nfd(self)
-        self.nfd.start()
+        self.nfd = None
 
         self.peerList = {}
 
@@ -150,8 +149,9 @@
 
     def terminate(self):
         "Stop node."
-        self.nfd.stop()
-        Host.terminate(self)
+        if self.nfd is not None:
+            self.nfd.stop()
+        CPULimitedHost.terminate(self)
 
 class RemoteNdnHost(RemoteMixin, NdnHost):
     "A node on a remote server"
diff --git a/ndn/nfd.py b/ndn/nfd.py
index 880d248..09e28d5 100644
--- a/ndn/nfd.py
+++ b/ndn/nfd.py
@@ -24,12 +24,11 @@
 import time, sys, os
 from ndn.ndn_application import NdnApplication
 
-
 class Nfd(NdnApplication):
     STRATEGY_BEST_ROUTE = "best-route"
     STRATEGY_NCC = "ncc"
 
-    def __init__(self, node):
+    def __init__(self, node, csSize):
         NdnApplication.__init__(self, node)
 
         self.logLevel = node.params["params"].get("nfd-log-level", "INFO")
@@ -55,6 +54,9 @@
         # Open the conf file and change socket file name
         node.cmd("infoedit -f {} -s face_system.unix.path -v /var/run/{}.sock".format(self.confFile, node.name))
 
+        # Set CS size
+        node.cmd("infoedit -f {} -s tables.cs_max_packets -v {}".format(self.confFile, csSize))
+
         # Make NDN folder
         node.cmd("sudo mkdir {}".format(self.ndnFolder))
 
@@ -68,7 +70,7 @@
         node.cmd("ndnsec-keygen /localhost/operator | ndnsec-install-cert -")
 
     def start(self):
-        NdnApplication.start(self, "setsid nfd --config {} >> {} 2>&1 &".format(self.confFile, self.logFile))
+        NdnApplication.start(self, "setsid nfd --config {} > {} 2>&1 &".format(self.confFile, self.logFile))
         time.sleep(2)
 
     def setStrategy(self, name, strategy):
diff --git a/ndn_utils/topologies/default-topology.conf b/topologies/default-topology.conf
similarity index 100%
rename from ndn_utils/topologies/default-topology.conf
rename to topologies/default-topology.conf
diff --git a/ndn_utils/topologies/minindn.caida.conf b/topologies/minindn.caida.conf
similarity index 100%
rename from ndn_utils/topologies/minindn.caida.conf
rename to topologies/minindn.caida.conf
diff --git a/ndn_utils/topologies/minindn.testbed.conf b/topologies/minindn.testbed.conf
similarity index 100%
rename from ndn_utils/topologies/minindn.testbed.conf
rename to topologies/minindn.testbed.conf
diff --git a/ndn_utils/topologies/minindn.ucla.conf b/topologies/minindn.ucla.conf
similarity index 100%
rename from ndn_utils/topologies/minindn.ucla.conf
rename to topologies/minindn.ucla.conf
