diff --git a/bin/minindn b/bin/minindn
index e1d241d..bf5a525 100755
--- a/bin/minindn
+++ b/bin/minindn
@@ -104,6 +104,7 @@
         self.isCliEnabled = True
         self.nPings = 300
         self.testbed = False
+        self.workDir = "/tmp"
 
 def parse_args():
     usage = """Usage: minindn [template_file] [ -t | --testbed ]
@@ -138,6 +139,9 @@
     parser.add_option("-t", "--testbed", action="store_true", dest="testbed", default=False,
     help="instantiates NDN Testbed")
 
+    parser.add_option("--work-dir", action="store", dest="workDir", default="/tmp",
+    help="Specify the working directory; default is /tmp")
+
     parser.add_option('--version', '-V', action='callback', callback=printVersion,
     help='Displays version information')
 
@@ -151,6 +155,7 @@
     options.isCliEnabled = args.isCliEnabled
     options.nPings = args.nPings
     options.testbed = args.testbed
+    options.workDir = args.workDir
 
     if options.experimentName is not None and options.experimentName not in ExperimentManager.getExperimentNames():
         print("No experiment named %s" % options.experimentName)
@@ -164,7 +169,7 @@
     return options
 
 class NdnTopo(Topo):
-    def __init__(self, conf_arq, **opts):
+    def __init__(self, conf_arq, workDir, **opts):
         Topo.__init__(self, **opts)
 
         global hosts_conf
@@ -178,7 +183,7 @@
         for host in hosts_conf:
             if host.cpu != None and self.isLimited != True:
                 self.isLimited = True
-            self.addHost(host.name, app=host.app, params=host.uri_tuples, cpu=host.cpu,cores=host.cores,cache=host.cache)
+            self.addHost(host.name, app=host.app, params=host.uri_tuples, cpu=host.cpu,cores=host.cores,cache=host.cache, workdir=workDir)
 
         for link in links_conf:
             if len(link.linkDict) == 0:
@@ -210,7 +215,7 @@
     os.system("sudo cp /usr/local/etc/ndn/nfd.conf.sample %s" % nfdConfFile)
     os.system("sudo sed -i \'s|default_level [A-Z]*$|default_level $LOG_LEVEL|g\' %s" % nfdConfFile)
 
-    topo = NdnTopo(template_file)
+    topo = NdnTopo(template_file, options.workDir)
 
     t = datetime.datetime.now()
 
diff --git a/ndn/ndn_host.py b/ndn/ndn_host.py
index bc820c2..0bed247 100644
--- a/ndn/ndn_host.py
+++ b/ndn/ndn_host.py
@@ -93,6 +93,11 @@
         if not NdnHost.inited:
             NdnHostCommon.init()
 
+        # Create home directory for a node
+        self.homeFolder = "%s/%s" % (self.params['workdir'], self.name)
+        self.cmd("mkdir -p %s" % self.homeFolder)
+        self.cmd("cd %s" % self.homeFolder)
+
         self.nfd = Nfd(self)
         self.nfd.start()
 
@@ -123,6 +128,11 @@
         if not NdnHost.inited:
             NdnHostCommon.init()
 
+        # Create home directory for a node
+        self.homeFolder = "%s/%s" % (self.params['workdir'], self.name)
+        self.cmd("mkdir -p %s" % self.homeFolder)
+        self.cmd("cd %s" % self.homeFolder)
+
         self.nfd = Nfd(self)
         self.nfd.start()
 
diff --git a/ndn/nfd.py b/ndn/nfd.py
index a56115b..36dcf96 100644
--- a/ndn/nfd.py
+++ b/ndn/nfd.py
@@ -33,15 +33,10 @@
 
         self.logLevel = node.params["params"].get("nfd-log-level", "NONE")
 
-        # Create home directory for a node
-        node.cmd("cd /tmp && mkdir %s" % node.name)
-        node.cmd("cd %s" % node.name)
-
-        self.homeFolder = "/tmp/%s" % node.name
-        self.confFile = "%s/%s.conf" % (self.homeFolder, node.name)
-        self.logFile = "%s/%s.log" % (self.homeFolder, node.name)
+        self.confFile = "%s/%s.conf" % (node.homeFolder, node.name)
+        self.logFile = "%s/%s.log" % (node.homeFolder, node.name)
         self.sockFile = "/var/run/%s.sock" % node.name
-        self.ndnFolder = "%s/.ndn" % self.homeFolder
+        self.ndnFolder = "%s/.ndn" % node.homeFolder
         self.clientConf = "%s/client.conf" % self.ndnFolder
 
         # Copy nfd.conf file from /usr/local/etc/mini-ndn to the node's home
@@ -61,7 +56,7 @@
         node.cmd("sudo sed -i 's|nfd.sock|%s.sock|g' %s" % (node.name, self.clientConf))
 
         # Change home folder
-        node.cmd("export HOME=%s" % self.homeFolder)
+        node.cmd("export HOME=%s" % node.homeFolder)
 
     def start(self):
         NdnApplication.start(self, "sudo nfd --config %s 2>> %s &" % (self.confFile, self.logFile))
diff --git a/ndn/nlsr.py b/ndn/nlsr.py
index 4a90e30..2da0894 100644
--- a/ndn/nlsr.py
+++ b/ndn/nlsr.py
@@ -27,10 +27,10 @@
     def __init__(self, node):
         NdnApplication.__init__(self, node)
         self.routerName = "/%sC1.Router/cs/%s" % ('%', node.name)
-        self.confFile = "/tmp/%s/nlsr.conf" % node.name
+        self.confFile = "%s/nlsr.conf" % node.homeFolder
 
         # Make directory for log file
-        self.logDir = "/tmp/%s/log" % node.name
+        self.logDir = "%s/log" % node.homeFolder
         node.cmd("mkdir %s" % self.logDir)
 
         # Configure basic router information in nlsr.conf based on host name
@@ -61,7 +61,7 @@
 
     def createConfigFile(self):
 
-        filePath = "/tmp/%s/nlsr.conf" % self.node.name
+        filePath = "%s/nlsr.conf" % self.node.homeFolder
 
         configFile = open(filePath, 'r')
         oldContent = configFile.read()
@@ -96,8 +96,8 @@
         general += "  site /edu\n"
         general += "  router /%C1.Router/cs/" + self.node.name + "\n"
         general += "  log-level " + self.logLevel + "\n"
-        general += "  log-dir /tmp/" + self.node.name + "/log\n"
-        general += "  seq-dir /tmp/" + self.node.name + "/log\n"
+        general += "  log-dir " + self.node.homeFolder + "/log\n"
+        general += "  seq-dir " + self.node.homeFolder + "/log\n"
         general += "}\n"
 
         return general
