diff --git a/AUTHORS.md b/AUTHORS.md
index 53b23a9..79e500d 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -1,7 +1,7 @@
 NLSR Authors
 ===========
 
-NLSR is an open source project includes contributions from the members of
+NLSR is an open source project includes contributions from the members of the
 [NDN project team](http://named-data.net/project/participants/).
 
 ## Project lead:
@@ -22,7 +22,7 @@
     * A K M Mahmudul Hoque <https://sites.google.com/site/akmhoque/home>
     * Ashlesh Gawande
     * Minsheng Zhang
-    * Syed Obaid Amin      <http://obaidamin.weebly.com/>
+    * Syed Obaid Amin     <http://obaidamin.weebly.com/>
 
 * University of California, Los Angeles
 
@@ -33,5 +33,5 @@
 ## Queries about NLSR
 
 Any general question related to NLSR should be directed to A K M Mahmudul Hoque
-(ahoque1@memphis.edu) and security related question should be directed to
-Yingdi Yu (yingdi@cs.ucla.edu).
+(ahoque1@memphis.edu) and security related question should be directed to Yingdi
+Yu (yingdi@cs.ucla.edu)
diff --git a/README.md b/README.md
index 54072c0..8bbb5f8 100644
--- a/README.md
+++ b/README.md
@@ -1,145 +1,40 @@
-NLSR0.0
-=======
+NLSR - Named Data Link State Routing Protocol
+=============================================
 
-Named Data Link State Routing
+## Overview
 
-Installation:
+NLSR is a routing protocol in NDN that populates NDN's Forwarding Information Base. NLSR
+will continue to evolve alongside the Named Data Networking [protocol](http://named-data.net/doc/ndn-tlv/).
 
-1: Getting NLSR: 
+NLSR is an open and free software package licensed under the GPL 3.0 license and free to all
+Internet users and developers.  For more information about the licensing details and
+limitations, refer to [COPYING.md](https://github.com/named-data/NLSR/blob/master/COPYING.md).
 
-git clone https://github.com/NDN-Routing/NLSR0.0
-git checkout nlsr-cpp
+NLSR is developed by the members of the [NSF-sponsored NDN project team](http://named-data.net/project/participants/).
+For more details, please refer to [AUTHORS.md](https://github.com/named-data/NLSR/blob/master/AUTHORS.md).
+Bug reports and feedback are highly appreciated and can be made through the
+[Redmine site](http://redmine.named-data.net/projects/nlsr).
 
-2: Compiling NLSR
-	a. Run ./configure
-	b. Run make
-	c. For installing run sudo make install
-	
- Prerequisites:
-   i. You must have ndnx install in your machine
-   
-   ii. For smooth compilation you will need need autoconf-2.69 which can 
-   be fethced from http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz
-   and automake-1.14 which can be fethed from 
-   http://gnu.mirrorcatalogs.com/automake/automake-1.14.tar.gz
-
-Running NLSR:
-
-1: Run ndnx daemon
-
-2: Add '/ndn/keys' route to your neighboring testbed nodes. 
-This can be done by adding routes in your ccnd.conf to all neigbors,
-e.g.
-	add /ndn/keys udp 10.0.XX.XX 
-	add /ndn/keys udp 10.0.YY.YY ...  
-	add	/ndn/keys udp 10.0.ZZ.ZZ
-
-3: Create your keys and publish them through repo. Please have
-	a look at https://github.com/named-data/ndn-testbed-key-suite for details. 
-
-4: create a nlsr configuration file, have a look at
-	macbook.conf and 'Configuration Parameters' section  for details 
-
-7: start nlsr. You can find help for running nlsr with "-h"
+The main design goal of NLSR is to provide a routing protocol to populate NDN's FIB.
+NLSR calculates the routing table using link-state or hyperbolic routing and produces
+multiple faces for each reachable name prefix in a single authoritative domain. NLSR
+will continue to evolve over time to include neighbor discovery and to become a full
+fledged inter-domain routing protocol for NDN.
 
 
-Configuration Parameter: 
+Source releases
+---------------
 
-1. router-name </name/prefix/of/the/router> 
-It is a required configuration parameter that is used to set the router name.
-Name prefix of the router must start with `/ndn' and followed by a strict
-hierarchical order of name components up to the hostname of the router. For
-e.g. if router has a hostname host.dept.org.edu pollux.cs.memphis.edu then the
-router name can be `/ndn/org.edu/dept/host..
+The source code and source-code installation instructions are always available at
+the following links:
 
-2. ccnneighbor </name/prefix/of/neighbor> [neighbor_ip_addrr] 
-This parameter is used to configure the neighboring router. Name prefix of a
-neighbor must start with `/ndn. and followed by a strict hierarchical order of
-name component as mentioned for router-name. If a router has a neighbor having
-hostname `neighbor.dept.org.edu' then configuration command would be
-`ccnneighbor /ndn/org.edu/dept/neighbor. The optional parameter,
-[neighbor_ip_addrr], can be provided for explicitly connecting to a given 
-IP. This is useful if there is no entry of the hostname in the DNS. 
+- [Installation](https://github.com/named-data/NLSR/blob/master/docs/INSTALL.md)
+- [Getting Started with NLSR](https://github.com/named-data/NLSR/blob/master/docs/GETTING-STARTED.md)
+- [Github NLSR repository](https://github.com/named-data/NLSR)
 
-3. ccnname </name/prefix/to/be/advertised> 
-ccnname is used to advertise the name prefix of the services hosted by the
-router. Name prefix must follow the ccnx naming convention.
+Additional information
+----------------------
 
-4. topo-prefix <name/prefix/of/repo/topo> 
-It is used to configure the topological prefix of the `sync. slice created for
-nlsr in a repo. Prefix must follow the ccnx naming convention. Default value
-for topo prefix is `/ndn/routing/nlsr'
-
-5. slice-prefix <name/prefix/of/repo/slice>
-This parameter is used to set the sync's slice prefix. All nlsr nodes `must'
-have the same slice prefix and must follow the ccnx naming convention. Default
-value for slice prefix is `/ndn/routing/nlsr/LSA'
-
-6. lsa-refresh-time <sec> 
-It is the time in seconds, after which router will refresh its LSAs. Default
-value = 1800 sec, Min = 240 sec
-
-7. router-dead-interval <sec> 
-It is the time after which router will consider its neighbor dead if it does
-not hear anything for that amount of time. If an LSA generated by neighbor has
-a lifetime greater than router-dead-interval then router will simply discard
-the LSA and update name prefix table, routing table and ccnd FIB accordingly.
-Default value = 3600 sec, Min = 360 sec.
-
-8. interest-retry <number> 
-interest-retry is maximum number of times a router will send same interest if
-the interest is timed out. Default = 3, Min =1 and Max = 10
-
-9. interest-resend-time <sec>
-When an interest is timed out, NLSR waits for `interest-resend-time. before
-sending another interest. The interest is retransmitted up to the value of
-`interest-retry.. If the interest doesn.t get satisfied during this time the
-neighbor will be considered as dead. Default value = 15 sec, Min = 1 sec, Max =
-60 sec 
-
-10. max-faces-per-prefix <number>
-By default NLSR calculates and add faces for all available faces to a prefix.
-Number of faces can be restricted with this parameter, if this is configured
-NLSR will add <number> or faces per prefixes in ccnd FIB.
-
-11. debug <on/off> 
-Enable nlsr debugging by printing out detail messages on the standard output.
-By default it is off. 
-
-12. logdir </directory/for/logging/> 
-NLSR will start writing log in logdir folder. If logdir is not configured NLSR
-will create a log directory name nlsrLog in user home directory and write log
-into that folder.
-
-13. tunnel-type <udp | tcp> 
-This is used to specify the tunnel type that NLSR should create for building an
-overlay network. By default NLSR creates udp tunnels.
-
-**Following Commands are only required for hyperbolic routing**
-
-14. hyperbolic-routing <on|dry_run> 
-This option enables hyperbolic routing. With option on, link state routing
-doesn't work while with dry_run option route is calculated by Link State 
-routing and hyperbolic routes are just recorded only in log file.Following 
-field is required if hyperbolic routing is on. 
-
-15. hyperbolic-cordinate <radius> <theta> 
-Polar coordinates of a node in a form of radius and theta. Currently, calculation 
-of the polar coordinates is an offline process and done by 
-the operator of a site. 
-
-** Hyperbolic Commands End here **
-
-16. keystore-path </path/to/keystore/file name(.ccnx_keystore)>
-Path to the keystore. The keystore folder is usually created  by
-ccninitkeystore. Keys in this folder will be used by NLSR to sign the packets. 
-
-17. root-key-prefix </key/prefix>   
-Name prefix of the root key; the site key should be signed by this key.  
-e.g. root-key-prefix /ndn/keys
-
-18. site-name </name/prefix/of/site> 
-Name of the site of which this router is a part. 
-
-19. network </name/of/network>
-Name of the networks router belongs to 
+- [NLSR Wiki](http://redmine.named-data.net/projects/nlsr/wiki/)
+- Feature requests and bug reports are welcome on our
+  [NLSR on NDN Redmine](http://redmine.named-data.net/projects/nlsr)
diff --git a/docs/GETTING-STARTED.md b/docs/GETTING-STARTED.md
new file mode 100644
index 0000000..e8315e1
--- /dev/null
+++ b/docs/GETTING-STARTED.md
@@ -0,0 +1,44 @@
+Getting Started with NLSR
+=============================================
+
+Getting Source
+--------------
+
+- [Github NLSR repository](https://github.com/named-data/NLSR)
+
+Installation instruction
+------------------------
+
+- [Installation](https://github.com/named-data/NLSR/blob/master/docs/INSTALL.md)
+
+Installing
+----------
+
+To install NLSR from source:
+
+- Install ndn-cxx according to [ndn-cxx installation instructions](http://named-data.net/doc/ndn-cxx/0.1.0/INSTALL.html)
+- Install nfd according to [nfd installation instructions](http://named-data.net/doc/NFD/current/INSTALL.html)
+- Install NLSR following [these instructions](https://github.com/named-data/NLSR/blob/master/docs/INSTALL.md)
+
+Configuration
+-------------
+
+After installing NLSR from source, you need to create a configuration file for
+NLSR. Please take a look at [nlsr.conf](https://github.com/named-data/NLSR/blob/master/nlsr.conf)
+for a sample configuration. For details on configuring a router, please refer to
+[build network topology](https://github.com/named-data/NLSR/blob/master/docs/TOPOLOGY.md)
+and for security configuration please refer to
+[NLSR's security configuration](https://github.com/named-data/NLSR/blob/master/docs/SECURITY.md)
+
+Running
+-------
+
+Run nlsr with the following command:
+
+    nlsr
+
+NLSR will look for the default configuration file, nlsr.conf, in the current directory.
+
+You can also run nlsr -f options as follows with the absolute path of the configuration file:
+
+    nlsr -f /nlsr/nlsr.conf
diff --git a/docs/INSTALL.md b/docs/INSTALL.md
new file mode 100644
index 0000000..1235e89
--- /dev/null
+++ b/docs/INSTALL.md
@@ -0,0 +1,61 @@
+NLSR Installation Instructions
+=============================
+
+Prerequisites
+-------------
+
+- [ndn-cxx library](https://github.com/named-data/ndn-cxx) and its requirements:
+
+         libcrypto
+         libsqlite3
+         libcrypto++
+         pkg-config
+         Boost libraries (>= 1.48)
+         OSX Security framework (on OSX platform only)
+
+   Refer to [Getting started with ndn-cxx](http://named-data.net/doc/ndn-cxx/current/INSTALL.html) -for detailed installation instructions of the library.
+
+
+- [NFD](https://github.com/named-data/nfd) and its requirements:
+
+   Refer to [Getting started with NFD ](http://named-data.net/doc/NFD/current/getting-started.html)-for detailed installation and running instruction.
+
+
+- log4cxx library
+
+       On linux variants
+
+           sudo apt-get install liblog4cxx10-dev
+
+       On Mac OSx
+
+           sudo port install log4cxx
+
+- protobuf
+
+      On Mac OSx
+
+           sudo port install protobuf-cpp
+
+      On linux variants
+
+           sudo apt-get install libprotobuf-dev
+
+
+Build
+-----
+
+The following commands should be used to build NLSR:
+
+    ./waf configure
+    ./waf
+    sudo ./waf install
+
+Refer to ./waf --help for more options that can be used during configure stage and
+how to properly configure and run NLSR.
+
+If your pkgconfig path is not set properly you can do following before running `./waf configure`
+
+    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
+    or
+    export PKG_CONFIG_PATH=/path/to/pkgconfig/in/your/machine
diff --git a/docs/SECURITY.md b/docs/SECURITY.md
new file mode 100644
index 0000000..c15dd60
--- /dev/null
+++ b/docs/SECURITY.md
@@ -0,0 +1,283 @@
+##Trust Model For NLSR
+
+The trust model of NLSR is semi-hierarchical.
+An example certificate signing hierarchy is:
+
+                                            root
+                                             |
+                              +--------------+---------------+
+                            site1                          site2
+                              |                              |
+                    +---------+---------+                    +
+                 operator1           operator2            operator3
+                    |                   |                    |
+              +-----+-----+        +----+-----+        +-----+-----+--------+
+           router1     router2  router3    router4  router5     router6  router7
+              |           |        |          |        |           |        |
+              +           +        +          +        +           +        +
+            NLSR        NSLR     NSLR       NSLR     NSLR        NSLR     NSLR
+
+Each entity's name and corresponding certificate name follow the convention below:
+
+    Entity   | Identity Name                                     | Example                         | Certificate Name Example
+    -------- | ------------------------------------------------- | ------------------------------- | -----------------------------------------------
+    root     | /\<network\>                                        | /ndn                            | /ndn/KEY/ksk-1/ID-CERT/%01
+    site     | /\<network\>/\<site\>                                 | /ndn/edu/ucla                   | /ndn/edu/ucla/KEY/ksk-2/ID-CERT/%01
+    operator | /\<network\>/\<site\>/%C1.Operator/\<operator-name\>          | /ndn/edu/ucla/%C1.Operator/op1      | /ndn/edu/ucla/%C1.Operator/op1/KEY/ksk-3/ID-CERT/%01
+    router   | /\<network\>/\<site\>/%C1.Router/\<router-name\>            | /ndn/edu/ucla/%C1.Router/rt1      | /ndn/edu/ucla/%C1.Router/rt1/KEY/ksk-4/ID-CERT/%01
+    NLSR     | /\<network\>/\<site\>/%C1.Router/\<router-name\>/NLSR       | /ndn/edu/ucla/%C1.Router/rt1/NLSR | /ndn/edu/ucla/%C1.Router/rt1/NLSR/KEY/ksk-5/ID-CERT/%01
+
+Users should create keys according to the naming and signing hierarchies above.
+
+## Certificate Publishing
+
+In a network, every router should have the root certificate configured as a trust anchor.
+For each site, at least one router should publish the site certificate, at least one router should publish the certificate of the site operator.
+Each router should publish its own certificate.
+All this information should be explicitly specified in nlsr.conf file.
+For example, the following configuration file indicates that NLSR should publish the site certificate and the router certificate:
+
+    ...
+    security
+    {
+      validator
+      {
+      ...
+      }
+      cert-to-publish "site.cert"   ; name of the file which contains the site certificate (optional).
+      cert-to-publish "router.cert" ; name of the file which contains the router certificate (required).
+    }
+
+Note that when a new NLSR instance is created, it will create a new key for the instance; generating the certificate for the new NLSR key is handled internally in NLSR.
+Therefore, user does not have to explcitly create keys and certificate for each NLSR instance.
+
+For key and certificate generation, please refer to the [ndnsec tool kit](http://named-data.net/doc/ndn-cxx/0.1.0/manpages/ndnsec.html).
+
+## Example
+
+Security Configuration: Every machine in network will have the same set of security rules to configure.
+However, different machine will have different configuration commands "cert-to-publish"
+depending on responsibility. Let us use the same topology used for example(https://github.com/named-data/NLSR/blob/master/docs/TOPOLOGY.md).
+
+ndnsec-key-gen generates a key
+
+Lets assume that `/ndn/memphis.edu/router1` is the router who is responsible as the memphis
+site router and also responsible as root which is the trust anchor of the network. So
+router in memphis will do the following key creation and signing.
+
+NOTE: The first two steps may not apply to everyone as the root certificate and the site certificate are usually present at a testbed outside the scope of NLSR. These steps will help if you are testing an isolated testbed.
+
+   1. Create root key and self signed certificate with prefis `/ndn`
+      $ndnsec-key-gen -n /ndn
+      $ndnsec-sign-req /ndn > root.cert
+      This root.cert will be configured by "cert-to-publish" commands in nlsr.conf
+
+   2. Generate key for site prefix `/ndn/edu/memphis` and sign it by root key
+      $ndnsec-key-gen -n /ndn/edu/memphis > unsigned_site.cert
+      $ndnsec-cert-gen -S 20140701000000 -E 20150701000000 -N "University of Memphis"
+      -s /ndn -p /ndn/edu/memphis -r unsigned_site.cert > site.cert
+
+   3. Generate key for operator and sign it by memphis site key. Lets assume that
+      operator name in Memphis site is ndnuser, so the prefix is `/ndn/edu/memphis/%C1.O.N./ndnuser`
+      $ndnsec-key-gen -n /ndn/edu/memphis/%C1.Operator/ndnuser > unsigned_operator.cert
+      $ndnsec-cert-gen -S 20140701000000 -E 20150701000000 -N "University of Memphis Operator"
+      -s /ndn/edu/memphis -p /ndn/edu/memphis/%C1.Operator/ndnuser
+      -r unsigned_operator.cert > operator.cert
+
+   4. Generate key for router and sign it with operator's key
+      $ndnsec-key-gen /ndn/edu/memphis/%C1.Router/router1 > unsigned_router.cert
+      $ndnsec-cert-gen -S 20140701000000 -E 20150701000000 -N "University of Memphis Router"
+     -s /ndn/edu/memphis/%C1.Operator/ndnuser -p /ndn/edu/memphis/%C1.Router/router1
+     -r unsigned_router.cert > router.cert
+
+
+Key creation and signing is done for `/ndn/memphis.edu/router1`. In nlsr.conf
+this router will have this lines
+
+    cert-to-publish "root.cert"
+    cert-to-publish "site.cert"
+    cert-to-publish "operator.cert"
+    cert-to-publish "router.cert"
+
+Here is the entire security configuraion of the router1 (As seen in nlsr.conf. Note that only the semi-colons before the certs have been removed, rest is same)
+
+    security
+    {
+      validator
+      {
+        rule
+        {
+          id "NSLR Hello Rule"
+          for data
+          filter
+          {
+            type name
+            regex ^[^<NLSR><INFO>]*<NLSR><INFO><><>$
+          }
+          checker
+          {
+            type customized
+            sig-type rsa-sha256
+            key-locator
+            {
+              type name
+              hyper-relation
+              {
+                k-regex ^([^<KEY><NLSR>]*)<NLSR><KEY><ksk-.*><ID-CERT>$
+                k-expand \\1
+                h-relation equal
+                p-regex ^([^<NLSR><INFO>]*)<NLSR><INFO><><>$
+                p-expand \\1
+              }
+            }
+          }
+        }
+
+        rule
+        {
+          id "NSLR LSA Rule"
+          for data
+          filter
+          {
+            type name
+            regex ^[^<NLSR><LSA>]*<NLSR><LSA>
+          }
+          checker
+          {
+            type customized
+            sig-type rsa-sha256
+            key-locator
+            {
+              type name
+              hyper-relation
+              {
+                k-regex ^([^<KEY><NLSR>]*)<NLSR><KEY><ksk-.*><ID-CERT>$
+                k-expand \\1
+                h-relation equal
+                p-regex ^([^<NLSR><LSA>]*)<NLSR><LSA>(<>*)<><><>$
+                p-expand \\1\\2
+              }
+            }
+          }
+        }
+
+        rule
+        {
+          id "NSLR Hierarchy Exception Rule"
+          for data
+          filter
+          {
+            type name
+            regex ^[^<KEY><%C1.Router>]*<%C1.Router>[^<KEY><NLSR>]*<KEY><ksk-.*><ID-CERT><>$
+          }
+          checker
+          {
+            type customized
+            sig-type rsa-sha256
+            key-locator
+            {
+              type name
+              hyper-relation
+              {
+	              k-regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><ksk-.*><ID-CERT>$
+                k-expand \\1
+                h-relation equal
+                p-regex ^([^<KEY><%C1.Router>]*)<%C1.Router>[^<KEY>]*<KEY><ksk-.*><ID-CERT><>$
+                p-expand \\1
+              }
+            }
+          }
+        }
+
+        rule
+        {
+          id "NSLR Hierarchical Rule"
+          for data
+          filter
+          {
+            type name
+            regex ^[^<KEY>]*<KEY><ksk-.*><ID-CERT><>$
+          }
+          checker
+          {
+            type hierarchical
+            sig-type rsa-sha256
+          }
+        }
+
+        trust-anchor
+        {
+          type file
+          file-name "root.cert"
+        }
+      }
+      cert-to-publish "root.cert" //optional, a file containing the root certificate. only the router
+                                  //that is designated to publish root cert needs to specify this
+      cert-to-publish "site.cert" //optional, a file containing the root certificate. only the router
+                                  //that is designated to publish site cert need to specify this
+      cert-to-publish "operator.cert" //optional, a file containing the root certificate. only the
+                                      //router that is designated to publish operator cert need to
+                                      //specify this
+      cert-to-publish "router.cert" //required, a file containing the router certificate.
+    }
+
+Now lets see how `/ndn/colostate.edu/router2` will create and sign keys. Let assume
+that this router is responsible for hosting site keys and operator keys of colorado
+site.
+
+   2. Generate key for site prefix `/ndn/edu/colorado`
+      $ndnsec-key-gen -n /ndn/edu/memphis > unsigned_site.cert
+
+      Send this cert to Memphis site ( as in example Memphis is the root) and get
+      it signed by root. After you get back the site please put it in your convenient
+      certificate directory.
+
+   3. Generate key for operator and sign it by colorado site key. Lets assume that
+      operator name in Colorado site is testop, so the prefix is `/ndn/edu/colorado/%C1.O.N./testop`
+      $ndnsec-key-gen -n /ndn/edu/colorado/%C1.Operator/testop > unsigned_operator.cert
+      $ndnsec-cert-gen -S 20140701000000 -E 20150701000000 -N "Colorado State University Operator"
+      -s /ndn/edu/colorado -p /ndn/edu/colorado/%C1.Operator/testop
+      -r unsigned_operator.cert > operator.cert
+
+   4. Generate key for router and sign it with operator's key
+      $ndnsec-key-gen /ndn/edu/colorado/%C1.Router/router2 > unsigned_router.cert
+      $ndnsec-cert-gen -S 20140701000000 -E 20150701000000 -N "Colorado State University Router"
+      -s /ndn/edu/colorado/%C1.Operator/testop -p /ndn/edu/colorado/%C1.Router/router2
+      -r unsigned_router.cert > router.cert
+
+
+Key creation and signing is done for `/ndn/edu/colorado/router2`. In nlsr.conf
+this router will have these lines
+
+    cert-to-publish "site.cert"
+    cert-to-publish "operator.cert"
+    cert-to-publish "router.cert"
+
+(The rest of the security configuration is same as the other router.)
+
+Colorado also need to bring the root.cert from Memphis and put it in the certificate
+directory as it is configured as trust anchor.
+
+Now both Memphis and Colorado router is ready to run with security configuration.
+Arizona router will follow the same step as Colorado to configure security for NLSR.
+
+
+# Disabling Security in NLSR
+
+To disable packet validation in NLSR, you need to change the configuration file
+in section: security.validator.trust-anchor
+
+    trust-anchor
+    {
+      type file
+      file-name "root.cert"
+    }
+
+change the previous section in security configuration to below
+
+    trust-anchor
+    {
+      type any
+    }
+
+With this change, packets are still signed, but validation will be skipped.
diff --git a/docs/TOPOLOGY.md b/docs/TOPOLOGY.md
new file mode 100644
index 0000000..c542de2
--- /dev/null
+++ b/docs/TOPOLOGY.md
@@ -0,0 +1,193 @@
+Example network and sample configuration:
+=========================================
+
+Lets assume that three routers in the same network but at three different sites (
+memphis.edu, arizona.edu, and colostate.edu) are connected to each other to
+construct the following topology:
+
+                        -------------------------------------
+                        | /ndn/edu/memphis/%C1.Router/router1 |
+                        -------------------------------------
+                            / 11                      12\
+                           /                             \
+          route-cost = 25 /                               \ route-cost = 30
+                         /                                 \
+                     17 /                                   \ 13
+    ------------------------------------- 7              10 --------------------------------------
+    |/ndn/edu/arizona/%C1.Router/router3|-------------------|/ndn/edu/colostate/%C1.Router/router2|
+    -------------------------------------   route-cost = 28 --------------------------------------
+
+                          Figure: Network Topology
+
+The number represents the connecting face id. For example, `/ndn/edu/memphis/%C1.Router/router1`
+is connected to `/ndn/edu/arizona/%C1.Router/router3` via face 11 and the route cost is 25.
+To reach `/ndn/edu/colostate/%C1.Router/router2` via face 12, the route cost is 30.
+
+We will walk through setting up the faces and creating the configuration file for
+`/ndn/edu/memphis/%C1.Router/router1`.
+
+Step 1. Ensure nfd is running :
+----------------
+Type the following in the terminal:
+
+    "nfd-status -f"
+
+
+if you see `ERROR: error while connecting to the forwarder (No such file or directory)`
+message that means nfd is not running. Follow the instructions in [Getting started with NFD ](http://named-data.net/doc/NFD/current/getting-started.html) to run nfd.
+
+Step 2. Determining FaceUri:
+--------------------
+Lets assume that `/ndn/edu/arizona/%C1.Router/router3` has hostname `router3.arizona.edu`
+and `/ndn/edu/colostate/%C1.Router/router2` has ip address `79.123.10.145`, and that all
+routers in the network had agreed to sync data in name prefix `/ndn/nlsr/sync`.
+`/ndn/edu/memphis/%C1.Router/router1` will consider face uri `udp4://router3.arizona.edu` for
+router `/ndn/edu/arizona/%C1.Router/router3` and face uri `udp4://79.123.10.145` for router
+`/ndn/edu/colostate/%C1.Router/router2`.
+
+Step 3: Creating configuration file:
+------------------------------------
+Now, lets assume that /ndn/memphis.edu/router1 wants to advertise three name
+prefixes that can be reached through it ( `/ndn/memphis/sports/basketball/grizzlies`,
+`/ndn/memphis/entertainment/blues`, `/ndn/news/memphis/politics/lutherking`). Now,
+the configuration file with minimum configuration commands will have the following
+commands
+
+    ; nlsr.conf starts here
+    ; the general section contains all the general settings for router
+
+    general
+    {
+        ; mandatory configuration command section network, site and router
+
+        network /ndn/         ; name of the network the router belongs to in ndn URI format
+        site /edu/memphis/    ; name of the site the router belongs to in ndn URI format
+        router /%C1.Router/router1    ; name of the network the router belongs to in ndn URI format
+
+        ; lsa-refresh-time is the time in seconds, after which router will refresh its LSAs
+
+        lsa-refresh-time 1800      ; default value 1800. Valid values 240-7200
+
+        ; log-level is to set the levels of log for NLSR
+
+        log-level  INFO       ; default value INFO, valid value DEBUG, INFO
+        log-dir /var/log/nlsr/
+        seq-dir /var/lib/nlsr/
+    }
+
+    ; the neighbors section contains the configuration for router's neighbors and hello's behavior
+
+    neighbors
+    {
+       ; in case hello interest timed out, router will try 'hello-retries' times at 'hello-time-out'
+       ; seconds interval before giving up for any neighbors (deciding link is down)
+
+       hello-retries 3                     ; interest retries number in integer. Default value 3
+                                           ; valid values 1-10
+
+       hello-timeout 1                    ; interest time out value in integer. Default value 1
+                                          ; Valid values 1-15
+
+       hello-interval  60                  ; interest sending interval in seconds. Default value 60
+                                           ; valid values 30-90
+       ; neighbor command is used to configure router's neighbor. Each neighbor will need
+       ; one block of neighbor command
+
+      neighbor
+      {
+          name /ndn/edu/arizona/%C1.Router/router3        ; name prefix of the neighbor router consists
+                                                          ; of network, site-name and router-name
+
+          face-uri  udp4://router3.arizona.edu  ; face uri of the face connected to the neighbor
+          link-cost 25                         ; cost of the connecting link to neighbor
+      }
+
+      neighbor
+      {
+          name /ndn/edu/colostate/%C1.Router/router2          ; name prefix of the neighbor router consists
+                                                   ; of network, site-name and router-name
+
+          face-uri  udp4://79.123.10.145     ; face uri of the face connected to the neighbor
+          link-cost 30                        ; cost of the connecting link to neighbor
+      }
+    }
+
+    ; the hyperbolic section contains the configuration settings of enabling a router to calculate
+    ; routing table using [hyperbolic routing table calculation](http://arxiv.org/abs/0805.1266) method
+
+    hyperbolic
+    {
+        ; commands in this section follows a strict order
+        ; the switch is used to set hyperbolic routing calculation in NLSR
+
+        state off             ; default value 'off', set value 'on' to enable hyperbolic routing table
+                              ; calculation which turns link state routing 'off'. set value to 'dry-run"
+                              ; to test hyperbolic routing and compare with link state routing.
+
+
+        radius   123.456       ; radius of the router in hyperbolic coordinate system
+        angle    1.45          ; angle of the router in hyperbolic coordinate system
+    }
+
+
+    ; the fib section is used to configure fib entry's type to ndn FIB updated by NLSR
+
+    fib
+    {
+        ; the max-faces-per-prefix is used to limit the number of faces for each name prefixes
+        ; by NLSR in ndn FIB
+
+        max-faces-per-prefix 3   ; default value 0. Valid value 0-60. By default (value 0) NLSR adds
+                                 ; all available faces for each reachable name prefixes in NDN FIB
+
+    }
+
+    ; the advertising section contains the configuration settings of the name prefixes
+    ; hosted by this router
+
+    advertising
+    {
+        ; the ndnname is used to advertised name from the router. To advertise each name prefix
+        ; configure one block of ndnname configuration command for every name prefix.
+
+        prefix /ndn/memphis/sports/basketball/grizzlies
+        prefix /ndn/memphis/entertainment/blues
+        prefix /ndn/news/memphis/politics/lutherking
+    }
+
+    ; security configuration is discussed
+    ;[NLSR's security configuration](https://github.com/named-data/NLSR/blob/master/docs/SECURITY.md)
+    ; which will be also part of this configuration file here
+    ;
+    ; nlsr.conf end here
+
+Step 4: Running NLSR in /ndn/memphis.edu/router1:
+-------------------------------------------------
+Assuming the configuration file is saved as nlsr.conf. Type the following to run
+nlsr
+
+    $ nlsr -f nlsr.conf
+
+NLSR will look for nlsr.conf in the current directory. If nlsr.conf is not in
+the corrent directory, please provide the absolute path with the file name as the
+value. If nlsr.conf resides in /home/ndnuser/configuration directory, type "nlsr
+-f /home/ndnuser/configuration/nlsr.conf" to run nlsr.
+
+The same process needs to be followed for router /ndn/arizona.edu/router3 and
+/ndn/colostate.edu/router2 to run NLSR on these routers.
+
+Expected Output:
+----------------
+Assuming that all three routers are configured correctly and converged, nfd-status
+in `/ndn/edu/colostate/%C1.Router/router2` will have the following entries for the
+name advertised by `/ndn/edu/memphis/%C1.Router/router1`. This output can be 
+seen by typing `nfd-status -f` in terminal
+
+FIB:
+
+    /ndn/memphis/sports/basketball/grizzlies nexthops={faceid=17 (cost=25), faceid=7 (cost=58)}
+    /ndn/memphis/entertainment/blues nexthops={faceid=17 (cost=25), faceid=7 (cost=58)}
+    /ndn/news/memphis/politics/lutherking nexthops={faceid=17 (cost=25), faceid=7 (cost=58)}
+
+Please refer to the network figure for face id. Numbers at the end of each link
+correspond to face ids.
diff --git a/nlsr.conf b/nlsr.conf
index d6f31bc..13d7b5b 100644
--- a/nlsr.conf
+++ b/nlsr.conf
@@ -6,7 +6,7 @@
 
     network /ndn/         ; name of the network the router belongs to in ndn URI format
     site /edu/memphis    ; name of the site the router belongs to in ndn URI format
-    router /%C1.O.R./cs/pollux    ; name of the router in ndn URI format
+    router /%C1.Router/cs/pollux    ; name of the router in ndn URI format
 
 ; lsa-refresh-time is the time in seconds, after which router will refresh its LSAs
 
@@ -39,19 +39,19 @@
 
    neighbor
    {
-       name /ndn/edu/memphis/%C1.O.R./cs/castor        ; name prefix of the neighbor router consists
+       name /ndn/edu/memphis/%C1.Router/cs/castor        ; name prefix of the neighbor router consists
                                               ; of network, site-name and router-name
 
-       face-uri  udp://castor.cs.memphis.edu  ; face id of the face connected to the neighbor
+       face-uri  udp://castor.cs.memphis.edu  ; face uri of the face connected to the neighbor
        link-cost 25                         ; cost of the connecting link to neighbor
    }
 
    neighbor
    {
-       name /ndn/edu/memphis/%C1.O.R./cs/mira          ; name prefix of the neighbor router consists
+       name /ndn/edu/memphis/%C1.Router/cs/mira          ; name prefix of the neighbor router consists
                                               ; of network, site-name and router-name
 
-       face-uri  udp://mira.cs.memphis.edu    ; face id of the face connected to the neighbor
+       face-uri  udp://mira.cs.memphis.edu    ; face uri of the face connected to the neighbor
        link-cost 30                        ; cost of the connecting link to neighbor
    }
 }
@@ -165,7 +165,7 @@
       filter
       {
         type name
-        regex ^[^<KEY><%C1.O.R.>]*<%C1.O.R.>[^<KEY><NLSR>]*<KEY><ksk-.*><ID-CERT><>$
+        regex ^[^<KEY><%C1.Router>]*<%C1.Router>[^<KEY><NLSR>]*<KEY><ksk-.*><ID-CERT><>$
       }
       checker
       {
@@ -176,10 +176,10 @@
           type name
           hyper-relation
           {
-	    k-regex ^([^<KEY><%C1.O.N.>]*)<%C1.O.N.>[^<KEY>]*<KEY><ksk-.*><ID-CERT>$
+	    k-regex ^([^<KEY><%C1.Operator>]*)<%C1.Operator>[^<KEY>]*<KEY><ksk-.*><ID-CERT>$
             k-expand \\1
             h-relation equal
-            p-regex ^([^<KEY><%C1.O.R.>]*)<%C1.O.R.>[^<KEY>]*<KEY><ksk-.*><ID-CERT><>$
+            p-regex ^([^<KEY><%C1.Router>]*)<%C1.Router>[^<KEY>]*<KEY><ksk-.*><ID-CERT><>$
             p-expand \\1
           }
         }
