diff --git a/docs/FAQ.rst b/docs/FAQ.rst
new file mode 100644
index 0000000..6004e85
--- /dev/null
+++ b/docs/FAQ.rst
@@ -0,0 +1,231 @@
+FAQ
+===
+
+How to change default paths?
+----------------------------
+
+Paths to where NFD is installed can be configured during ``./waf
+configure``:
+
+- Installation prefix (default ``/usr/local``):
+
+    ::
+
+        ./waf configure --prefix=/usr
+
+- Location of NFD configuration file (default: ``${prefix}/etc``):
+
+    ::
+
+        ./waf configure --prefix=/usr --sysconfdir=/etc
+
+- Location of manpages (default: ``${prefix}/share/man``)
+
+    ::
+
+        ./waf configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man
+
+How to run NFD on Raspberry Pi?
+-------------------------------
+
+To run NFD on the Raspberry Pi, you need to either enable IPv6 support
+in Raspberry Pi or disable IPv6 support in NFD.
+
+To enable IPv6 in Raspberry Pi:
+
+::
+
+    sudo modprobe ipv6
+
+To disable IPv6 in NFD, replace ``enable_v6 yes`` with ``enable_v6 no``
+in ``tcp`` and ``udp`` sections of ``/usr/local/etc/ndn/nfd.conf``:
+
+::
+
+    ...
+    tcp
+    {
+      listen yes
+      port 6363
+      enable_v4 yes
+      enable_v6 no
+    }
+
+    udp
+    {
+      port 6363
+      enable_v4 yes
+      enable_v6 no
+      idle_timeout 600
+      keep_alive_interval 25
+
+      mcast yes
+      mcast_port 56363
+      mcast_group 224.0.23.170
+    }
+    ...
+
+
+How to run NFD as non-root user?
+--------------------------------
+
+
+How to enable Ethernet Face Support?
+++++++++++++++++++++++++++++++++++++
+
+The ``ether`` configuration file section contains settings for Ethernet faces and
+channels. These settings will **NOT** work without root or setting the appropriate
+permissions:
+
+::
+
+    sudo setcap cap_net_raw,cap_net_admin=eip /full/path/nfd
+
+You may need to install a package to use setcap:
+
+**Ubuntu:**
+
+::
+
+    sudo apt-get install libcap2-bin
+
+**Mac OS X:**
+
+::
+
+    curl https://bugs.wireshark.org/bugzilla/attachment.cgi?id=3373 -o ChmodBPF.tar.gz
+    tar zxvf ChmodBPF.tar.gz
+    open ChmodBPF/Install\ ChmodBPF.app
+
+or manually:
+
+::
+
+    sudo chgrp admin /dev/bpf*
+    sudo chmod g+rw /dev/bpf*
+
+How to enable UDP multicast support in multi-homed Linux machines
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+The UDP configuration file section contains settings for unicast and multicast UDP
+faces. If the Linux box is equipped with multiple network interfaces with multicast
+capabilities, the settings for multicast faces will **NOT** work without root
+or setting the appropriate permissions:
+
+::
+
+    sudo setcap cap_net_raw=eip /full/path/nfd
+
+.. _How to configure NFD security:
+
+How to configure NFD security?
+------------------------------
+
+.. note:: Sample configuration file of NFD allow any user to manage faces, FIB, RIB, and
+    StrategyChoice.  The following description can be used to restrict certain operations
+    to certain users.
+
+    More extensive documentation about NFD's security and options to configure trust model
+    for NFD is currently in preparation.
+
+Many NFD management protocols require signed commands to be processed
+(e.g. FIB modification, Face creation/destructions, etc.). You will need
+an NDN certificate to use any application that issues signed commands.
+
+If you do not already have NDN certificate, you can generate one with
+the following commands:
+
+**Generate and install a self-signed identity certificate**:
+
+::
+
+    ndnsec-keygen /`whoami` | ndnsec-install-cert -
+
+Note that the argument to ndnsec-key will be the identity name of the
+new key (in this case, ``/your-username``). Identity names are
+hierarchical NDN names and may have multiple components (e.g.
+``/ndn/ucla/edu/alice``). You may create additional keys and identities
+as you see fit.
+
+**Dump the NDN certificate to a file**:
+
+The following commands assume that you have not modified ``PREFIX`` or
+``SYSCONFDIR`` If you have, please substitute ``/usr/local/etc`` for the
+appropriate value (the overriden ``SYSCONFDIR`` or ``PREFIX/etc`` if you
+changed ``PREFIX``).
+
+::
+
+    sudo mkdir -p /usr/local/etc/ndn/keys
+    ndnsec-cert-dump -i /`whoami` > default.ndncert
+    sudo mv default.ndncert /usr/local/etc/ndn/keys/default.ndncert
+
+.. _How to start using NDN MacPorts repository on OSX:
+
+How to start using NDN MacPorts repository on OSX?
+--------------------------------------------------
+
+OSX users have an opportunity to seamlessly install and run NFD and other related
+applications via `MacPorts <https://www.macports.org/>`_. If you are not using MacPorts
+yet, go to `MacPorts website <https://www.macports.org/install.php>`_ and download and
+install the MacPorts package.
+
+NFD and related ports are not part of the official MacPorts repository and in order to use
+it, you need to add NDN MacPorts repository to the local configuration.  In particular,
+you will need to modify the list of source URLs for MacPorts.  For example, if your
+MacPorts are installed in ``/opt/local``, add the following line
+`/opt/local/etc/macports/sources.conf` before or after the default port repository:
+
+::
+
+    rsync://macports.named-data.net/macports/
+
+After this step, you can use ``sudo port selfupdate`` to fetch updated port definitions.
+
+The following command will install NFD using MacPorts:
+
+::
+
+    sudo port install nfd
+
+.. note::
+    You have to have XCode installed on your machine.  For latest versions of OSX (Lion or
+    Mountain Lion) you can install it from AppStore for free, for older versions you have to
+    go to developer.apple.com and download old version of XCode that is appropriate for your
+    system.
+
+
+One of the advantages of using MacPorts is that you can easily upgrade NFD and other
+packages to the most recent version available.  The following commands will do this job:
+
+::
+
+    sudo port selfupdate
+    sudo port upgrade nfd
+
+.. _How to start using NDN PPA repository on Ubuntu Linux:
+
+How to start using NDN PPA repository on Ubuntu Linux?
+------------------------------------------------------
+
+NFD binaries and related tools for Ubuntu 12.04, 13.10, and 14.04 can be installed using
+PPA packages from named-data repository.  First, you will need to add ``named-data/ppa``
+repository to binary package sources and update list of available packages:
+
+::
+
+    sudo add-apt-repository ppa:named-data/ppa
+
+    # if you do not have add-apt-repository command installed:
+    sudo apt-get install python-software-properties
+    sudo apt-get update
+
+After that, NFD can be easily installed in a standard way, i.e., either using ``apt-get`` as shown
+below or using any other package manager (e.g., Synaptic Package Manager):
+
+::
+
+    sudo apt-get install nfd
+
+For the list of available packages, refer to `NDN PPA repository
+<https://launchpad.net/~named-data/+archive/ppa>`_.
diff --git a/docs/INSTALL.rst b/docs/INSTALL.rst
index b5a442c..dd38f18 100644
--- a/docs/INSTALL.rst
+++ b/docs/INSTALL.rst
@@ -59,8 +59,8 @@
     ./waf
     sudo ./waf install
 
-Refer to :ref:`NFD Configuration Tips` (``README.rst``) for more options that can be used
-during ``configure`` stage and how to properly configure and run NFD.
+Refer to ``./waf --help`` for more options that can be used during ``configure`` stage and
+how to properly configure and run NFD.
 
 In some configurations, configuration step may require small modification. For example, on
 OSX that uses macports (correct the path if macports was not installed in the default path
@@ -82,6 +82,22 @@
     ./waf
     sudo ./waf install
 
+Debug symbols
++++++++++++++
+
+The default compiler flags enable debug symbols to be included in binaries.  This
+potentially allows more meaningful debugging if NFD or other tools happen to crash.
+
+If it is undesirable, default flags can be easily overridden.  The following example shows
+how to completely disable debug symbols and configure NFD to be installed into ``/usr``
+with configuration in ``/etc`` folder.
+
+::
+
+    CXXFLAGS="-O2" ./waf configure --prefix=/usr --sysconfdir=/etc
+    ./waf
+    sudo ./waf install
+
 Building documentation
 ----------------------
 
diff --git a/docs/README.rst b/docs/README.rst
index 7788bb5..d35e397 100644
--- a/docs/README.rst
+++ b/docs/README.rst
@@ -1,124 +1,86 @@
-.. _NFD Configuration Tips:
+NFD Overview
+============
 
-NFD - Named Data Networking Forwarding Daemon
-=============================================
+.. toctree::
+   :maxdepth: 2
 
-Default Paths
--------------
+   RELEASE_NOTES
 
-This document uses ``SYSCONFDIR`` when referring to the default locations
-of various NFD configuration files. By default, ``SYSCONFDIR`` is set to
-``/usr/local/etc``. If you override ``PREFIX``, then ``SYSCONFDIR`` will
-default to ``PREFIX/etc``.
+NDN Forwarding Daemon (NFD) is a network forwarder that implements and evolves together
+with the Named Data Networking (NDN) `protocol
+<http://named-data.net/doc/ndn-tlv/>`__. After the initial release, NFD will become a core
+component of the `NDN Platform <http://named-data.net/codebase/platform/>`__ and will
+follow the same release cycle.
 
-You may override ``SYSCONFDIR`` and ``PREFIX`` by specifying their
-corresponding options during installation:
+NFD is developed by a community effort. Although the first release was mostly done by the
+members of `NSF-sponsored NDN project team
+<http://named-data.net/project/participants/>`__, it already contains significant
+contributions from people outside the project team (for more details, refer to `AUTHORS.md
+<https://github.com/named-data/NFD/blob/master/AUTHORS.md>`__).  We strongly encourage
+participation from all interested parties, since broader community support is key for NDN
+to succeed as a new Internet architecture. Bug reports and feedback are highly
+appreciated and can be made through `Redmine site
+<http://redmine.named-data.net/projects/nfd>`__ and the `ndn-interest mailing list
+<http://www.lists.cs.ucla.edu/mailman/listinfo/ndn-interest>`__.
 
-::
+The main design goal of NFD is to support diverse experimentation of NDN technology. The
+design emphasizes *modularity* and *extensibility* to allow easy experiments with new
+protocol features, algorithms, and applications. We have not fully optimized the code for
+performance.  The intention is that performance optimizations are one type of experiments
+that developers can conduct by trying out different data structures and different
+algorithms; over time, better implementations may emerge within the same design framework.
 
-    ./waf configure --prefix <path/for/prefix> --sysconfdir <some/other/path>
+NFD will keep evolving in three aspects: improvement of the modularity framework, keeping
+up with the NDN protocol spec, and addition of other new features. We hope to keep the
+modular framework stable and lean, allowing researchers to implement and experiment
+with various features, some of which may eventually work into the protocol spec.
 
-Refer to :ref:`NFD Installation Instructions` for more detailed instructions on how to compile
-and install NFD.
+The design and development of NFD benefited from our earlier experience with `CCNx
+<http://www.ccnx.org>`__ software package. However, NFD is not in any part derived from
+CCNx codebase and does not maintain compatibility with CCNx.
 
-Running and Configuring NFD
----------------------------
 
-NFD's runtime settings may be modified via configuration file. After
-installation, a working sample configuration is provided at
-``SYSCONFDIR/ndn/nfd.conf.sample``. At startup, NFD will attempt to read
-the default configuration file location: ``SYSCONFDIR/ndn/nfd.conf``.
+Major Modules of NFD
+--------------------
 
-You may also specify an alternative configuration file location by
-running NFD with:
+NFD has the following major modules:
 
-::
+- Core
+    Provides various common services shared between different NFD modules. These include
+    hash computation routines, DNS resolver, config file, face monitoring, and
+    several other modules.
 
-    nfd --config </path/to/nfd.conf>
+- Faces
+    Implements the NDN face abstraction on top of different lower level transport
+    mechanisms.
 
-Once again, note that you may simply copy or rename the provided sample
-configuration and have an **almost** fully configured NFD. However, this
-NFD will be unable to add FIB entries or perform other typical operation
-tasks until you authorize an NDN certificate with the appropriate
-privileges.
+- Tables
+    Implements the Content Store (CS), the Pending Interest Table (PIT), the Forwarding
+    Information Base (FIB), and other data structures to support forwarding of NDN Data
+    and Interest packets.
 
-Installing an NDN Certificate for Command Authentication
---------------------------------------------------------
+- Forwarding
+    Implements basic packet processing pathways, which interact with Faces, Tables,
+    and Strategies.
 
-Many NFD management protocols require signed commands to be processed
-(e.g. FIB modification, Face creation/destructions, etc.). You will need
-an NDN certificate to use any application that issues signed commands.
+  + **Strategy Support**, a major part of the forwarding module
+      Implements a framework to support different forwarding strategies. It includes
+      StrategyChoice, Measurements, Strategies, and hooks in the forwarding pipelines. The
+      StrategyChoice records the choice of the strategy for a namespace, and Measurement
+      records are used by strategies to store past performance results for namespaces.
 
-If you do not already have NDN certificate, you can generate one with
-the following commands:
+- Management
+    Implements the `NFD Management Protocol
+    <http://redmine.named-data.net/projects/nfd/wiki/Management>`_, which allows
+    applications to configure NFD and set/query NFD's internal states.  Protocol interaction
+    is done via NDN's Interest/Data exchange between applications and NFD.
 
-**Generate and install a self-signed identity certificate**:
-
-::
-
-    ndnsec-keygen /`whoami` | ndnsec-install-cert -
-
-Note that the argument to ndnsec-key will be the identity name of the
-new key (in this case, ``/your-username``). Identity names are
-hierarchical NDN names and may have multiple components (e.g.
-``/ndn/ucla/edu/alice``). You may create additional keys and identities
-as you see fit.
-
-**Dump the NDN certificate to a file**:
-
-The following commands assume that you have not modified ``PREFIX`` or
-``SYSCONFDIR`` If you have, please substitute ``/usr/local/etc`` for the
-appropriate value (the overriden ``SYSCONFDIR`` or ``PREFIX/etc`` if you
-changed ``PREFIX``).
-
-::
-
-    sudo mkdir -p /usr/local/etc/ndn/keys
-    ndnsec-cert-dump -i /`whoami` > default.ndncert
-    sudo mv default.ndncert /usr/local/etc/ndn/keys/default.ndncert
-
-Running NFD with Ethernet Face Support
---------------------------------------
-
-The ether configuration file section contains settings for Ethernet
-faces and channels. These settings will **NOT** work without root or
-setting the appropriate permissions:
-
-::
-
-    sudo setcap cap_net_raw,cap_net_admin=eip /full/path/nfd
-
-You may need to install a package to use setcap:
-
-**Ubuntu:**
-
-::
-
-    sudo apt-get install libcap2-bin
-
-**Mac OS X:**
-
-::
-
-    curl https://bugs.wireshark.org/bugzilla/attachment.cgi?id=3373 -o ChmodBPF.tar.gz
-    tar zxvf ChmodBPF.tar.gz
-    open ChmodBPF/Install\ ChmodBPF.app
-
-or manually:
-
-::
-
-    sudo chgrp admin /dev/bpf*
-    sudo chmod g+rw /dev/bpf*
-
-UDP multicast support in multi-homed Linux machines
----------------------------------------------------
-
-The UDP configuration file section contains settings for unicast and multicast UDP
-faces. If the Linux box is equipped with multiple network interfaces with multicast
-capabilities, the settings for multicast faces will **NOT** work without root
-or setting the appropriate permissions:
-
-::
-
-    sudo setcap cap_net_raw=eip /full/path/nfd
+- RIB Management
+    Manages the routing information base (RIB).  The RIB may be updated by different parties
+    in different ways, including various routing protocols, application's prefix
+    registrations, and command-line manipulation by sysadmins.  The RIB management module
+    processes all these requests to generate a consistent forwarding table, and then syncs
+    it up with the NFD's FIB, which contains only the minimal information needed for
+    forwarding decisions. Strictly speaking RIB management is part of the NFD management
+    module. However, due to its importance to the overall operations and its more complex
+    processing, we make it a separate module.
diff --git a/docs/RELEASE_NOTES.rst b/docs/RELEASE_NOTES.rst
index 1f3f282..92e2a0b 100644
--- a/docs/RELEASE_NOTES.rst
+++ b/docs/RELEASE_NOTES.rst
@@ -3,62 +3,17 @@
 NFD v0.1.0 Release Notes
 ========================
 
-Major Modules of NFD
---------------------
-
-NFD has the following major modules:
-
-- Core
-    Provides various common services shared between different NFD modules. These include
-    hash computation routines, DNS resolver, config file, face monitoring, and
-    several other modules.
-
-- Faces
-    Implements the NDN face abstraction on top of different lower level transport
-    mechanisms.
-
-- Tables
-    Implements the Content Store (CS), the Pending Interest Table (PIT), the Forwarding
-    Information Base (FIB), and other data structures to support forwarding of NDN Data
-    and Interest packets.
-
-- Forwarding
-    Implements basic packet processing pathways, which interact with Faces, Tables,
-    and Strategies.
-
-  + **Strategy Support**, a major part of the forwarding module
-      Implements a framework to support different forwarding strategies. It includes
-      StrategyChoice, Measurements, Strategies, and hooks in the forwarding pipelines. The
-      StrategyChoice records the choice of the strategy for a namespace, and Measurement
-      records are used by strategies to store past performance results for namespaces.
-
-- Management
-    Implements the `NFD Management Protocol
-    <http://redmine.named-data.net/projects/nfd/wiki/Management>`_, which allows
-    applications to configure NFD and set/query NFD's internal states.  Protocol interaction
-    is done via NDN's Interest/Data exchange between applications and NFD.
-
-- RIB Management
-    Manages the routing information base (RIB).  The RIB may be updated by different parties
-    in different ways, including various routing protocols, application's prefix
-    registrations, and command-line manipulation by sysadmins.  The RIB management module
-    processes all these requests to generate a consistent forwarding table, and then syncs
-    it up with the NFD's FIB, which contains only the minimal information needed for
-    forwarding decisions. Strictly speaking RIB management is part of the NFD management
-    module. However, due to its importance to the overall operations and its more complex
-    processing, we make it a separate module.
-
 Features in Version 0.1.0
 -------------------------
 
 This is an incomplete list of features that are implemented in NFD version 0.1.0.
 
-- Packet Format
+- **Packet Format**
 
   + `NDN-TLV <http://named-data.net/doc/ndn-tlv/>`_
   + LocalControlHeader, to allow apps to set outgoing face and learn incoming face.
 
-- Faces
+- **Faces**
 
   + Unix stream socket
   + UDP unicast
@@ -72,7 +27,7 @@
          Refer to `Issue 1551 <http://redmine.named-data.net/issues/1511>`_ for more
          detail and implementation progress.
 
-- Management
+- **Management**
 
   + Use of signed Interests as commands, with authentication and authorization.
   + Face management
@@ -81,20 +36,20 @@
   + NFD status publishing
   + Notification to authorized apps of internal events, including Face creation and destruction.
 
-- Tables and forwarding pipelines support most Interest/Data processing, including
+- **Tables and forwarding pipelines** support most Interest/Data processing, including
   selectors.
 
-- RIB Management that runs as a separate process, ``nrd``.  It supports basic prefix
+- **RIB Management** that runs as a separate process, ``nrd``.  It supports basic prefix
   registration by applications, but no flags yet.
 
-- Strategies
+- **Strategies**
 
   + ``broadcast``
   + ``best-route``
   + ``ncc``: based on ccnx 0.7 for experimentation
   + ``client-control``: authorized application can directly control Interest forwarding
 
-- Name-based scoping
+- **Name-based scoping**
 
   + ``/localhost``: communication only within localhost using "local" Faces
     (UnixStreamFace, LocalTcpFace).  NFD will strictly enforce this scope for Interests
@@ -102,9 +57,9 @@
   + ``/localhop``: one-hop communication (e.g., if at least one incoming or outgoing Face
     in PIT entry is non-local, the Interest cannot be forwarded to any non-local Face)
 
-- Support configuration file, which is in the Boost INFO format.
+- **Support configuration file**, which is in the Boost INFO format.
 
-- Applications
+- **Applications**
 
   + Tools to discover hubs on NDN testbed.
   + peek/poke and traffic generators for testing and debugging.
@@ -124,7 +79,8 @@
     Additional strategies, including self-learning that populates the FIB by observing
     Interest and Data exchange.
 
-- Hop-by-hop Interest limit mechanism for congestion control.
+- Hop-by-hop Interest limit mechanism
+    For congestion control
 
 - Face enhancements
     Add fragmentation support for Ethernet face, may add support for new types such as
@@ -140,5 +96,4 @@
     For hub nodes to authenticate incoming tunnel requests and maintain the tunnels.
 
 - Extensible name-based scoping
-
-  + configurable organization-based scoping
+    Configurable organization-based scoping
diff --git a/docs/getting-started.rst b/docs/getting-started.rst
new file mode 100644
index 0000000..42e698a
--- /dev/null
+++ b/docs/getting-started.rst
@@ -0,0 +1,169 @@
+Getting Started with NFD
+========================
+
+A more recent version of this document may be available on `NFD Wiki
+<http://redmine.named-data.net/projects/nfd/wiki/Getting_Started>`_.
+
+.. toctree::
+   :maxdepth: 2
+
+   INSTALL
+
+Installing
+----------
+
+From source
+~~~~~~~~~~~
+
+To install NFD 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 :doc:`these
+   instructions <INSTALL>`
+
+If downloading code using git, don't forget to checkout the correct
+branch for both ``ndn-cxx`` and ``NFD``
+
+::
+
+    git clone https://github.com/named-data/ndn-cxx
+    cd ndn-cxx
+    git checkout ndn-cxx-0.1.0
+    ...
+    # continue with ndn-cxx installation instructions
+
+    git clone https://github.com/named-data/NFD
+    cd NFD
+    git checkout NFD-0.1.0
+    ...
+    # continue with NFD installation instructions
+
+From binaries
+~~~~~~~~~~~~~
+
+On OSX, NFD can be installed with MacPorts.  Refer to :ref:`How to start using NDN
+MacPorts repository on OSX` FAQ question for more details.
+
+On Ubuntu 12.04, 13.10, or 14.04, NFD can be installed from NDN PPA repository.  Refer to
+:ref:`How to start using NDN PPA repository on Ubuntu Linux` FAQ question.
+
+
+Initial configuration
+---------------------
+
+.. note::
+    If you have installed NFD from binary packages, the package manager has already
+    installed initial configuration and you can safely skip this section.
+
+General
+~~~~~~~
+
+After installing NFD from source, you need to create a proper config file.  If default
+location for ``./waf configure`` was used, this can be accomplished by simply copying the
+sample configuration file:
+
+::
+
+    sudo cp /usr/local/etc/ndn/nfd.conf.sample /usr/local/etc/ndn/nfd.conf
+
+NFD Security
+~~~~~~~~~~~~
+
+NFD provides mechanisms to enable strict authorization for all management commands. In
+particular, one can authorize only specific public keys to create new Faces or change the
+forwarding strategy for specific namespaces. For more information about how to generate
+private/public key pair, generate self-signed certificate, and use this self-signed
+certificate to authorize NFD management commands refer to :ref:`How to configure NFD
+security` FAQ question.
+
+In the sample configuration file, all authorizations are disabled, effectively allowing
+anybody on the local machine to issue NFD management commands. **The sample file is
+intended only for demo purposes and MUST NOT be used in a production environment.**
+
+Running
+-------
+
+**You should not run ndnd or ndnd-tlv, otherwise NFD will not work
+correctly**
+
+Starting
+~~~~~~~~
+
+In order to use NFD, you need to start two separate daemons: ``nfd`` (the forwarder
+itself) and ``nrd`` (RIB manager that will manage all prefix registrations).  The
+recommended way is to use `nfd-start` script:
+
+::
+
+    nfd-start
+
+On OS X it may ask for your keychain password or ask ``nfd/nrd wants to sign using key in
+your keychain.`` Enter your keychain password and click Always Allow.
+
+Later, you can stop NFD with ``nfd-stop`` or by simply killing the ``nfd`` process.
+
+
+
+Connecting to remote NFDs
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To create a UDP or TCP tunnel to remote NFD and create route toward it,
+use the following command in terminal:
+
+::
+
+    nfdc register /ndn udp://<other host>
+
+where ``<other host>`` is the name or IP address of the other host
+(e.g., ``udp://spurs.cs.ucla.edu``). This outputs:
+
+::
+
+    Successful in name registration: ControlParameters(Name: /ndn, FaceId: 10, Origin: 0, Cost: 0, Flags: 1, ExpirationPeriod: 3600000 milliseconds, )
+
+The ``/ndn`` means that NFD will forward all Interests that start with ``/ndn`` through
+the face to the other host.  If you only want to forward Interests with a certain prefix,
+use it instead of ``/ndn``.  This only forwards Interests to the other host, but there is
+no "back route" for the other host to forward Interests to you.  For that, you must go to
+the other host and use ``nfdc`` to add the route.
+
+The "back route" can also be automatically configured with ``nfd-autoreg``. For more
+information refer to `nfd-autoreg manpage
+<http://named-data.net/doc/NFD/current/manpages/nfd-autoreg.html>`_.
+
+Playing with NFD
+----------------
+
+After you installed, configured, and started NFD, you can try to install
+and play with the following:
+
+Sample applications:
+
+-  `Simple examples in ndn-cxx
+   library <http://named-data.net/doc/ndn-cxx/0.1.0/examples.html>`__.
+   If you have installed ndn-cxx from source, you already have compiled
+   these:
+
+   +  examples/producer
+   +  examples/consumer
+   +  examples/consumer-with-timer
+
+   +  tools/ndncatchunks3
+   +  tools/ndnputchunks3
+
+-  `Introductory examples of
+   NDN-CCL <http://redmine.named-data.net/projects/nfd/wiki/Getting_Started_-_Common_Client_Libraries#Install-the-Common-Client-Library>`__
+
+Real applications and libraries:
+
+   +  `ndn-tlv-ping - Ping Application For
+      NDN <https://github.com/named-data/ndn-tlv-ping>`__
+   +  `ndn-traffic-generator - Traffic Generator For
+      NDN <https://github.com/named-data/ndn-traffic-generator>`__
+   +  `repo-ng - Next generation of NDN
+      repository <https://github.com/named-data/repo-ng>`__
+   +  `ChronoChat - Multi-user NDN chat
+      application <https://github.com/named-data/ChronoChat>`__
+   +  `ChronoSync - Sync library for multiuser realtime applications for
+      NDN <https://github.com/named-data/ChronoSync>`__
diff --git a/docs/index.rst b/docs/index.rst
index 0f76bcb..88f0b60 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -6,62 +6,30 @@
 release, NFD will become a core component of the `NDN Platform
 <http://named-data.net/codebase/platform/>`__ and will follow the same release cycle.
 
-NFD is developed by a community effort. Although the first release was mostly done by the
-members of `NSF-sponsored NDN project team
-<http://named-data.net/project/participants/>`__, it already contains significant
-contributions from people outside the project team (for more details, refer to `AUTHORS.md
-<https://github.com/named-data/NFD/blob/master/AUTHORS.md>`__).  We strongly encourage
-participation from all interested parties, since broader community support is key for NDN
-to succeed as a new Internet architecture. Bug reports and feedback are highly
-appreciated and can be made through `Redmine site
-<http://redmine.named-data.net/projects/nfd>`__ and the `ndn-interest mailing list
-<http://www.lists.cs.ucla.edu/mailman/listinfo/ndn-interest>`__.
-
-The main design goal of NFD is to support diverse experimentation of NDN technology. The
-design emphasizes *modularity* and *extensibility* to allow easy experiments with new
-protocol features, algorithms, and applications. We have not fully optimized the code for
-performance.  The intention is that performance optimizations are one type of experiments
-that developers can conduct by trying out different data structures and different
-algorithms; over time, better implementations may emerge within the same design framework.
-
-NFD will keep evolving in three aspects: improvement of the modularity framework, keeping
-up with the NDN protocol spec, and addition of other new features. We hope to keep the
-modular framework stable and lean, allowing researchers to implement and experiment
-with various features, some of which may eventually work into the protocol spec.
-
-The design and development of NFD benefited from our earlier experience with `CCNx
-<http://www.ccnx.org>`__ software package. However, NFD is not in any part derived from
-CCNx codebase and does not maintain compatibility with CCNx.
-
-Downloading
------------
-
-NFD code can be downloaded from `GitHub git repository <https://github.com/named-data/NFD>`_.
-
-Refer to :ref:`NFD Installation Instructions` for detailed guide on how to install NFD
-from source.
-
 NFD Documentation
 -----------------
 
 .. toctree::
    :hidden:
-   :maxdepth: 2
+   :maxdepth: 3
 
-   RELEASE_NOTES
-   Installation Instruction <INSTALL>
-   NFD Configuration Tips <README>
+   README
+   getting-started
+   FAQ
    manpages
 
+..
+   INSTALL
 
+* :doc:`README`
 
-* :ref:`NFD v0.1.0 Release Notes`
+* :doc:`getting-started`
 
-* :ref:`NFD Installation Instructions`
+* :doc:`FAQ`
 
-* :ref:`NFD Configuration Tips`
+* :doc:`manpages`
 
-* :ref:`Manpages`
+**Additional documentation**
 
 * `NFD Wiki <http://redmine.named-data.net/projects/nfd/wiki>`_
 
@@ -70,6 +38,14 @@
 
 * `API documentation (doxygen) <doxygen/annotated.html>`_
 
+Downloading
+-----------
+
+* `Source code GitHub git repository <https://github.com/named-data/NFD>`_.
+
+* :ref:`MacPorts NDN repository <How to start using NDN MacPorts repository on OSX>`
+
+* :ref:`Ubuntu NDN PPA repository <How to start using NDN PPA repository on Ubuntu Linux>`
 
 License
 -------
diff --git a/docs/named_data_theme/static/named_data_style.css_t b/docs/named_data_theme/static/named_data_style.css_t
index c1f02f9..3edfb72 100644
--- a/docs/named_data_theme/static/named_data_style.css_t
+++ b/docs/named_data_theme/static/named_data_style.css_t
@@ -38,10 +38,10 @@
     margin-bottom: 18px;
 }
 
-h1 { font-weight: normal; font-size: 24px; }
-h2 { font-weight: normal; font-size: 18px; }
-h3 { font-weight: bold;   font-size: 18px; }
-h4 { font-weight: normal; font-size: 18px; }
+h1 { font-weight: bold; font-size: 24px; }
+h2 { font-weight: bold; font-size: 18px; }
+h3 { font-weight: bold; font-size: 16px; }
+h4 { font-weight: bold; font-size: 14px; }
 
 hr {
     background-color: #c6c6c6;
diff --git a/wscript b/wscript
index 2ba2dda..4e8622b 100644
--- a/wscript
+++ b/wscript
@@ -237,6 +237,9 @@
             VERSION=VERSION_BASE)
 
 def version(ctx):
+    if getattr(Context.g_module, 'VERSION_BASE', None):
+        return
+
     Context.g_module.VERSION_BASE = Context.g_module.VERSION
     Context.g_module.VERSION_SPLIT = [v for v in VERSION_BASE.split('.')]
 
