diff --git a/INSTALL.md b/INSTALL.md
index 0340113..2f3c94a 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -8,11 +8,21 @@
 Also, note that you'll need administrative privileges in order to download and install
 extra packages and also to execute **Mini-NDN**.
 
+### Installing **Mini-NDN**
+
+If you have all the dependencies (see sections below) installed simply clone this repository and run:
+
+    sudo ./install.sh -i
+
+else if you don't have the dependencies, the following command will install them along with Mini-NDN:
+
+    sudo ./install.sh -mrfti
+
 ### Installing NDN
 
 Each node in **Mini-NDN** will run the official implementation of NDN. The following dependencies are needed:
 
-Mini-NDN uses NFD, NLSR, and ndn-tlv-ping.
+Mini-NDN uses NFD, NLSR, and ndn-tools.
 
 To install NFD:
 http://named-data.net/doc/NFD/current/INSTALL.html
@@ -26,23 +36,13 @@
 ### Installing Mininet
 
 **Mini-NDN** is based on Mininet. To install Mininet:
-https://github.com/mininet/mininet/INSTALL
-
-### Installing **Mini-NDN**
-
-If you have all the dependencies installed simply clone this repository and run:
-
-    sudo ./install.sh -i
-
-else if you don't have the dependencies:
-
-    sudo ./install.sh -mrfti
+https://github.com/mininet/mininet/blob/master/INSTALL
 
 ### Verification
 
 You can use these steps to verify your installation:
 
 1. Issue the command: `sudo minindn --experiment=pingall --nPings=50`
-2. When the `mininet>` CLI prompt appears, the experiment has finished. On the Mini-NDN CLI, issue the command `exit` to exit the experiment.
+2. When the `mini-ndn>` CLI prompt appears, the experiment has finished. On the Mini-NDN CLI, issue the command `exit` to exit the experiment.
 3. Issue the command: `grep -c content /tmp/*/ping-data/*.txt`. Each file should report a count of 50.
 4. Issue the command: `grep -c timeout /tmp/*/ping-data/*.txt`. Each file should report a count of 0.
diff --git a/bin/minindn b/bin/minindn
index 950dc05..13ee300 100755
--- a/bin/minindn
+++ b/bin/minindn
@@ -61,7 +61,6 @@
 from mininet.topo import Topo
 from mininet.net import Mininet
 from mininet.log import setLogLevel, output, info
-from mininet.cli import CLI
 from mininet.link import TCLink
 from mininet.util import ipStr, ipParse
 
@@ -73,7 +72,7 @@
 from ndn.conf_parser import parse_hosts, parse_switches, parse_links
 from ndn.remote_ndn_link import RemoteNdnLink, RemoteGRENdnLink
 from ndn.placer import GuidedPlacer, PopulatePlacement
-from ndn.util import ssh, scp
+from ndn.util import ssh, scp, MiniNDNCLI
 
 import os.path, time
 import shutil
@@ -446,7 +445,7 @@
             return
 
     if options.isCliEnabled is True:
-        CLI(net)
+        MiniNDNCLI(net)
 
     net.stop()
 
diff --git a/docs/CONNECT-TO-OUTSIDE.md b/docs/CONNECT-TO-OUTSIDE.md
index 438e4db..eb3f5b6 100644
--- a/docs/CONNECT-TO-OUTSIDE.md
+++ b/docs/CONNECT-TO-OUTSIDE.md
@@ -54,18 +54,18 @@
 
 After rebooting, run Mini-NDN and issue the following command:
 
-    mininet>net
+    mini-ndn>net
     a a-eth0:b-eth0 a-eth1:c-eth0 a-eth2:root-eth0
 
 Node "a" is connected to "root-eth0". Now issue "ifconfig a-eth2" on node "a":
 
-    mininet>a ifconfig a-eth2
+    mini-ndn>a ifconfig a-eth2
     a-eth2    Link encap:Ethernet  HWaddr fa:76:d4:86:d3:ba
               inet addr:1.0.0.10  Bcast:1.0.0.11  Mask:255.255.255.252
 
 As learned from the previous step, the IP address of root-eth0 is 1.0.0.9.
 
-    mininet>a ping 1.0.0.9
+    mini-ndn>a ping 1.0.0.9
     PING 1.0.0.9 (1.0.0.9) 56(84) bytes of data.
     64 bytes from 1.0.0.9: icmp_seq=1 ttl=64 time=0.137 ms
     64 bytes from 1.0.0.9: icmp_seq=2 ttl=64 time=0.123 ms
diff --git a/docs/GETTING-STARTED.md b/docs/GETTING-STARTED.md
index ccc6f18..205d2eb 100644
--- a/docs/GETTING-STARTED.md
+++ b/docs/GETTING-STARTED.md
@@ -25,24 +25,24 @@
 
 After set up, the command-line interface (CLI) will display a prompt.
 
-    mininet>
+    mini-ndn>
 
 To interact with a node, first type the node's name and then the command to be executed:
 
-    mininet> a echo "Hello, world!"
+    mini-ndn> a echo "Hello, world!"
     Hello, world!
 
 To see the status of the forwarder on the node:
 
-    mininet> a nfdc status report
+    mini-ndn> a nfdc status report
 
 To see the status of routing on the node:
 
-    mininet> a nlsrc status
+    mini-ndn> a nlsrc status
 
 To exit Mini-NDN, type `quit` in the CLI:
 
-    mininet> quit
+    mini-ndn> quit
 
 For a more in depth explanation of the CLI, please see the
 [Mininet Walkthrough](http://mininet.org/walkthrough/).
diff --git a/install.sh b/install.sh
index e132e62..b7d6daa 100755
--- a/install.sh
+++ b/install.sh
@@ -136,12 +136,11 @@
     fi
 
     if [[ $DIST == Ubuntu || $DIST == Debian ]]; then
-        $install git libsqlite3-dev libboost-all-dev make g++
-        crypto
+        $install git libsqlite3-dev libboost-all-dev make g++ libssl-dev libcrypto++-dev
     fi
 
     if [[ $DIST == Fedora ]]; then
-        $install gcc-c++ sqlite-devel boost-devel
+        $install gcc-c++ sqlite-devel boost-devel openssl-devel cryptopp-devel
     fi
 
     git clone --depth 1 https://github.com/named-data/ndn-cxx
@@ -153,21 +152,6 @@
     cd ../
 }
 
-function crypto {
-    mkdir crypto
-    cd crypto
-    $install unzip
-    wget http://www.cryptopp.com/cryptopp562.zip
-    unzip cryptopp562.zip
-
-    # Uncomments flags to build shared object
-    sed -i '/^# CXXFLAGS += -fPIC/s/^# //' GNUmakefile
-
-    make static dynamic
-    sudo make install
-    cd ../
-}
-
 function tools {
     if [[ $cxx != true ]]; then
         ndncxx
@@ -218,7 +202,7 @@
     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 python setup.py install
+    sudo python setup.py clean --all install
 }
 
 
diff --git a/ndn/util.py b/ndn/util.py
index 19a5356..7ccf5d0 100644
--- a/ndn/util.py
+++ b/ndn/util.py
@@ -22,6 +22,8 @@
 # If not, see <http://www.gnu.org/licenses/>.
 
 from subprocess import call
+from mininet.cli import CLI
+import sys
 
 sshbase = [ 'ssh', '-q', '-t', '-i/home/mininet/.ssh/id_rsa' ]
 scpbase = [ 'scp', '-i', '/home/mininet/.ssh/id_rsa' ]
@@ -37,3 +39,8 @@
         tmp.append(arg)
     rcmd = scpbase + tmp
     call(rcmd, stdout=devnull, stderr=devnull)
+
+class MiniNDNCLI(CLI):
+    prompt = 'mini-ndn> '
+    def __init__(self, mininet, stdin=sys.stdin, script=None):
+        CLI.__init__(self, mininet, stdin=sys.stdin, script=None)
