diff --git a/.gitignore b/.gitignore
index ce2d0ba..45f9e2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,16 +1,18 @@
-Mini_NDN.egg-info
 build
+crypto
+ChronoSync
 dist
 doc/html
 doc/latex
+.DS_Store
+examples
+infoedit
+Mini_NDN.egg-info
+mininet
 NFD
 NLSR
-crypto
-mininet
 ndn-cxx
 ndn-tools
 openflow
-examples
 util
-.DS_Store
 .vagrant
diff --git a/INSTALL.md b/INSTALL.md
index 1792aa2..b8348ed 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -16,7 +16,7 @@
 
 else if you don't have the dependencies, the following command will install them along with Mini-NDN:
 
-    sudo ./install.sh -mrfti
+    sudo ./install.sh -emrfti
 
 else if you want to install the dependencies manually, follow the instructions below:
 
@@ -56,6 +56,13 @@
 for `Results:` two-thirds of the way down where it will indicate the percentage of dropped packets.
 Your results should show "0% dropped (2/2 received)".
 
+### Installing Infoedit
+
+Infoedit is used to edit configuration files such as NFD configuration file.
+
+To install infoedit:
+https://github.com/NDN-Routing/infoedit
+
 ### Verification
 
 You can use these steps to verify your installation:
diff --git a/bin/minindn b/bin/minindn
index b4ad0c2..930314f 100755
--- a/bin/minindn
+++ b/bin/minindn
@@ -343,18 +343,6 @@
             print("Placement list sum is not equal to number of nodes!")
             sys.exit(1)
 
-    # Use nfd.conf as default configuration for NFD, else use the sample
-
-    nfdConfFile = "%s/nfd.conf" % INSTALL_DIR
-    if os.path.isfile("/usr/local/etc/ndn/nfd.conf") == True:
-        shutil.copy2("/usr/local/etc/ndn/nfd.conf", nfdConfFile)
-    elif os.path.isfile("/usr/local/etc/ndn/nfd.conf.sample") == True:
-        shutil.copy2("/usr/local/etc/ndn/nfd.conf.sample", nfdConfFile)
-    else:
-        sys.exit("nfd.conf or nfd.conf.sample cannot be found in the expected directory. Exit.")
-
-    call(["sudo", "sed", "-i", 's|default_level [A-Z]*$|default_level $LOG_LEVEL|g', nfdConfFile])
-
     # Copy nfd.conf to remote hosts - this assumes that NDN versions across
     # the cluster are at least compatible if not the same
     if options.cluster is not None:
diff --git a/install.sh b/install.sh
index f47f0d6..c9a4b3c 100755
--- a/install.sh
+++ b/install.sh
@@ -205,6 +205,13 @@
     cd ../
 }
 
+function infoedit {
+    git clone --depth 1 https://github.com/NDN-Routing/infoedit.git
+    cd infoedit
+    sudo make install
+    cd ../
+}
+
 function minindn {
     if [[ updated != true ]]; then
         if [ ! -d "build" ]; then
@@ -220,7 +227,6 @@
     install_dir="/usr/local/etc/mini-ndn/"
 
     sudo mkdir -p "$install_dir"
-    sudo cp ndn_utils/client.conf.sample "$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"
@@ -228,11 +234,11 @@
     sudo python setup.py clean --all install
 }
 
-
 function usage {
     printf '\nUsage: %s [-mfrti]\n\n' $(basename $0) >&2
 
     printf 'options:\n' >&2
+    printf -- ' -e: install infoedit\n' >&2
     printf -- ' -f: install NFD\n' >&2
     printf -- ' -i: install mini-ndn\n' >&2
     printf -- ' -m: install mininet and dependencies\n' >&2
@@ -244,9 +250,10 @@
 if [[ $# -eq 0 ]]; then
     usage
 else
-    while getopts 'mfrti' OPTION
+    while getopts 'emfrti' OPTION
     do
         case $OPTION in
+        e)    infoedit;;
         f)    forwarder;;
         i)    minindn;;
         m)    mininet;;
diff --git a/ndn/nfd.py b/ndn/nfd.py
index 3e3e9da..0e10ef1 100644
--- a/ndn/nfd.py
+++ b/ndn/nfd.py
@@ -21,9 +21,10 @@
 # along with Mini-NDN, e.g., in COPYING.md file.
 # If not, see <http://www.gnu.org/licenses/>.
 
-import time
+import time, sys, os
 from ndn.ndn_application import NdnApplication
 
+
 class Nfd(NdnApplication):
     STRATEGY_BEST_ROUTE = "best-route"
     STRATEGY_NCC = "ncc"
@@ -33,35 +34,42 @@
 
         self.logLevel = node.params["params"].get("nfd-log-level", "NONE")
 
-        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" % node.homeFolder
-        self.clientConf = "%s/client.conf" % self.ndnFolder
+        self.confFile = "{}/{}.conf".format(node.homeFolder, node.name)
+        self.logFile = "{}/{}.log".format(node.homeFolder, node.name)
+        self.sockFile = "/var/run/{}.sock".format(node.name)
+        self.ndnFolder = "{}/.ndn".format(node.homeFolder)
+        self.clientConf = "{}/client.conf".format(self.ndnFolder)
 
-        # Copy nfd.conf file from /usr/local/etc/mini-ndn to the node's home
-        node.cmd("sudo cp /usr/local/etc/mini-ndn/nfd.conf %s" % self.confFile)
+        # Copy nfd.conf file from /usr/local/etc/ndn to the node's home
+
+        # Use nfd.conf as default configuration for NFD, else use the sample
+        if os.path.isfile("/usr/local/etc/ndn/nfd.conf") == True:
+            node.cmd("sudo cp /usr/local/etc/ndn/nfd.conf {}".format(self.confFile))
+        elif os.path.isfile("/usr/local/etc/ndn/nfd.conf.sample") == True:
+            node.cmd("sudo cp /usr/local/etc/ndn/nfd.conf.sample {}".format(self.confFile))
+        else:
+            sys.exit("nfd.conf or nfd.conf.sample cannot be found in the expected directory. Exit.")
 
         # Set log level
-        node.cmd("sudo sed -i \'s|$LOG_LEVEL|%s|g\' %s" % (self.logLevel, self.confFile))
-
+        node.cmd("infoedit -f {} -s log.default_level -v {}".format(self.confFile, self.logLevel))
         # Open the conf file and change socket file name
-        node.cmd("sudo sed -i 's|nfd.sock|%s.sock|g' %s" % (node.name, self.confFile))
+        node.cmd("infoedit -f {} -s face_system.unix.path -v /var/run/{}.sock".format(self.confFile, node.name))
 
         # Make NDN folder
-        node.cmd("sudo mkdir %s" % self.ndnFolder)
+        node.cmd("sudo mkdir {}".format(self.ndnFolder))
 
         # Copy the client.conf file and change the unix socket
-        node.cmd("sudo cp /usr/local/etc/mini-ndn/client.conf.sample %s" % self.clientConf)
-        node.cmd("sudo sed -i 's|nfd.sock|%s.sock|g' %s" % (node.name, self.clientConf))
+        node.cmd("sudo cp /usr/local/etc/ndn/client.conf.sample {}".format(self.clientConf))
+
+        node.cmd("sudo sed -i 's|nfd.sock|{}.sock|g' {}".format(node.name, self.clientConf))
 
         # Change home folder
-        node.cmd("export HOME=%s" % node.homeFolder)
+        node.cmd("export HOME={}".format(node.homeFolder))
 
     def start(self):
-        NdnApplication.start(self, "setsid nfd --config %s >> %s 2>&1 &" % (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):
-        self.node.cmd("nfdc set-strategy %s ndn:/localhost/nfd/strategy/%s" % (name, strategy))
+        self.node.cmd("nfdc strategy set {} ndn:/localhost/nfd/strategy/{}".format(name, strategy))
         time.sleep(0.5)
diff --git a/ndn_utils/client.conf.sample b/ndn_utils/client.conf.sample
deleted file mode 100644
index d911623..0000000
--- a/ndn_utils/client.conf.sample
+++ /dev/null
@@ -1,33 +0,0 @@
-; "transport" specifies Face's default transport connection.
-; The value is a unix or tcp4 scheme Face URI.
-;
-; For example:
-;
-;   unix:///var/run/nfd.sock
-;   tcp://192.0.2.1
-;   tcp4://example.com:6363
-
-transport=unix:///var/run/nfd.sock
-
-; "protocol" determines the protocol for prefix registration
-; it has a value of:
-;   nfd-0.1
-;   nrd-0.1
-;   ndnd-tlv-0.7
-;   ndnx-0.7
-protocol=nrd-0.1
-
-; "pib" determines which Public Info Base (PIB) should used by default in applications.
-; If "pib" is not specified, the default PIB will be used.
-; Note that default PIB could be different on different system.
-; If "pib" is specified, it may have a value of:
-;   sqlite3
-; pib=sqlite3
-
-; "tpm" determines which Trusted Platform Module (TPM) should used by default in applications.
-; If "tpm" is not specified, the default TPM will be used.
-; Note that default TPM could be different on different system.
-; If "tpm" is specified, it may have a value of:
-;   file
-;   osx-keychain
-; tpm=file
\ No newline at end of file
