diff --git a/README.md b/README.md
index 37f1412..455be28 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,8 @@
 NFD - Named Data Networking Forwarding Daemon
 =============================================
 
-NFD overview, release notes for the released versions, getting started tutorial, and other
-additional documentation are available online on
-[NFD's homepage](http://named-data.net/doc/NFD/).
+For complete documentation, including step-by-step installation instructions and
+tutorials, please visit the [NFD homepage](http://named-data.net/doc/NFD/).
 
 ## Overview
 
@@ -22,10 +21,11 @@
 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
+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).
 
@@ -38,51 +38,5 @@
 
 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.
-
-Binary release
---------------
-
-As of release 0.1.0, we are providing NFD binaries for the supported platforms, which are
-the preferred installation method of NFD:
-
-- [Ubuntu 12.04, 13.10, and 14.04](http://named-data.net/doc/NFD/current/FAQ.html#how-to-start-using-ndn-ppa-repository-on-ubuntu-linux)
-
-- [OSX 10.8, 10.9 with MacPorts](http://named-data.net/doc/NFD/current/FAQ.html#how-to-start-using-ndn-macports-repository-on-osx)
-
-Next releases would include support for other platforms.  Please send us feedback on the
-platforms you're using, so we can prioritize our goals.  We would also appreciate if
-someone can provide help with packaging the current NFD release for other platforms.
-
-Besides simplicity of installation, the binary release includes automatic initial
-configuration and platform-specific tools to automatically start NFD and related daemons.
-In particular, on OSX NFD is controlled using
-[launchd](https://github.com/named-data/NFD/tree/master/contrib/osx-launchd) and on Ubuntu
-using [upstart](https://github.com/named-data/NFD/tree/master/contrib/upstart) mechanisms.
-In both cases, `nfd-start` and `nfd-stop` scripts are convenience wrappers for launchd and
-upstart.
-
-Source releases
----------------
-
-The source code and source-code installation instructions are always available on NFD's homepage:
-
-- [Getting Started with NFD](http://named-data.net/doc/NFD/current/getting-started.html)
-- [Github NFD repository](https://github.com/named-data/NFD)
-
-Additional information
-----------------------
-
-- [NFD Wiki](http://redmine.named-data.net/projects/nfd/wiki/)
-- Feature requests and bug reports are welcome on our
-  [NDN Redmine](http://redmine.named-data.net/projects/nfd)
-
-Besides officially supported platforms, NFD is known to work on: Fedora 20, CentOS 6,
-Raspberry Pi, OpenWRT, FreeBSD 10.0, and several other platforms.  We are soliciting help
-with documenting common problems / pitfalls in installing/using NFD on different platforms
-on [NFD WiKi](http://redmine.named-data.net/projects/nfd/wiki/Wiki#Installation-experiences-for-selected-platforms).
+modular framework stable and lean, allowing researchers to implement and experiment with
+various features, some of which may eventually work into the protocol spec.
diff --git a/docs/FAQ.rst b/docs/FAQ.rst
index 146cbdc..0709ef8 100644
--- a/docs/FAQ.rst
+++ b/docs/FAQ.rst
@@ -191,97 +191,14 @@
 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
+Please see :ref:`Install NFD Using the NDN MacPorts Repository on OS X`.
 
 .. _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.
-
-Preliminary steps if you haven't used PPA packages before
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-To simplify adding new PPA repositories, Ubuntu provides ``add-apt-repository`` tool, which
-is not installed by default on some platforms.
-
-On Ubuntu **12.04**:
-
-::
-
-    sudo apt-get install python-software-properties
-
-On Ubuntu **13.10** and **14.04**:
-
-::
-
-    sudo apt-get install software-properties-common
-
-
-Adding NDN PPA
-++++++++++++++
-
-After installing ``add-apt-repository``, run the following command to add `NDN PPA repository`_.
-
-::
-
-    sudo add-apt-repository ppa:named-data/ppa
-    sudo apt-get update
-
-Installing NFD and other NDN packages
-+++++++++++++++++++++++++++++++++++++
-
-After you have added `NDN PPA repository`_, NFD and other NDN packages can be easily
-installed in a standard way, i.e., either using ``apt-get`` as shown below or using any
-other package manager, such as Synaptic Package Manager:
-
-::
-
-    sudo apt-get install nfd
-
-For the list of available packages, refer to `NDN PPA repository`_ homepage.
-
-.. _NDN PPA repository: https://launchpad.net/~named-data/+archive/ppa
-
+Please see :ref:`Install NFD Using the NDN PPA Repository on Ubuntu Linux`.
 
 .. _How to start using NDN Overlay on Gentoo Linux:
 
diff --git a/docs/INSTALL.rst b/docs/INSTALL.rst
index dd38f18..e28d227 100644
--- a/docs/INSTALL.rst
+++ b/docs/INSTALL.rst
@@ -1,27 +1,161 @@
-.. _NFD Installation Instructions:
+Getting Started with NFD
+========================
 
-NFD Installation Instructions
-=============================
+Installing NFD from Binaries
+----------------------------
+
+We provide NFD binaries for the supported platforms, which are the preferred installation
+method. In addition to simplifying installation, the binary release also includes
+automatic initial configuration and platform-specific tools to automatically start NFD and
+related daemons.  In particular, on OS X NFD is controlled using `launchd
+<https://github.com/named-data/NFD/tree/master/contrib/osx-launchd>`__ and on Ubuntu using
+`upstart <https://github.com/named-data/NFD/tree/master/contrib/upstart>`__ mechanisms.
+In both cases, `nfd-start` and `nfd-stop` scripts are convenience wrappers for launchd and
+upstart.
+
+On OS X, NFD can be installed with MacPorts.  Refer to :ref:`Install NFD Using the NDN
+MacPorts Repository on OS X` for more details.
+
+On Ubuntu 12.04, 13.10, or 14.04, NFD can be installed from NDN PPA repository.  Refer to
+:ref:`Install NFD Using the NDN PPA Repository on Ubuntu Linux`.
+
+Future releases could include support for other platforms.  Please send us feedback on the
+platforms you're using, so we can prioritize our goals.  We would also appreciate help
+packaging the current NFD release for other platforms.
+
+
+.. _Install NFD Using the NDN MacPorts Repository on OS X:
+
+Install NFD Using the NDN MacPorts Repository on OS X
+-----------------------------------------------------
+
+OS X users have the opportunity to seamlessly install and run NFD as well as other related
+applications via `MacPorts <https://www.macports.org/>`_.  If you are not using MacPorts
+yet, go to the `MacPorts website <https://www.macports.org/install.php>`_ and install the
+MacPorts package.
+
+NFD and related ports are not part of the official MacPorts repository. In order to use
+these ports, you will need to add the NDN MacPorts repository to your 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 to
+`/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. This can be installed from the
+    AppStore (free) on OS X 10.7 or later. Older editions of OS X can download an
+    appropriate version of XCode from http://developer.apple.com.
+
+
+One advantage of using MacPorts is that you can easily upgrade NFD and other packages to
+the latest version.  The following commands will do this job:
+
+::
+
+    sudo port selfupdate
+    sudo port upgrade nfd
+
+.. _Install NFD Using the NDN PPA Repository on Ubuntu Linux:
+
+Install NFD Using the NDN PPA Repository on Ubuntu Linux
+--------------------------------------------------------
+
+NFD binaries and related tools for Ubuntu 12.04 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.
+
+Preliminary steps if you haven't used PPA packages before
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To simplify adding new PPA repositories, Ubuntu provides ``add-apt-repository`` tool,
+which is not installed by default on some platforms.
+
+On Ubuntu **12.04**:
+
+::
+
+    sudo apt-get install python-software-properties
+
+On Ubuntu **14.04**:
+
+::
+
+    sudo apt-get install software-properties-common
+
+
+Adding NDN PPA
+~~~~~~~~~~~~~~
+
+After installing ``add-apt-repository``, run the following command to add `NDN PPA
+repository`_.
+
+::
+
+    sudo add-apt-repository ppa:named-data/ppa
+    sudo apt-get update
+
+Installing NFD and other NDN packages
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+After you have added `NDN PPA repository`_, NFD and other NDN packages can be easily
+installed in a standard way, i.e., either using ``apt-get`` as shown below or using any
+other package manager, such as Synaptic Package Manager:
+
+::
+
+    sudo apt-get install nfd
+
+For the list of available packages, refer to `NDN PPA repository`_ homepage.
+
+.. _NDN PPA repository: https://launchpad.net/~named-data/+archive/ppa
+
+Building from Source
+--------------------
+
+Downloading from Git
+~~~~~~~~~~~~~~~~~~~~
+
+The first step is to obtain the source code for ``NFD`` and, its main dependency, the
+``ndn-cxx`` library.  If you are not planning to work with the bleeding edge code, make
+sure you checkout the correct release tag (e.g., ``*-0.2.0``) for both repositories:
+
+::
+
+    # Download ndn-cxx
+
+    git clone https://github.com/named-data/ndn-cxx
+    cd ndn-cxx
+    git checkout ndn-cxx-0.2.0
+
+    cd ..
+
+    # Download NFD
+
+    git clone --recursive https://github.com/named-data/NFD
+    cd NFD
+    git checkout NFD-0.2.0
 
 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.
+-  Install the `ndn-cxx library <http://named-data.net/doc/ndn-cxx/current/INSTALL.html>`_
+   and its requirements
 
 -  ``libpcap``
 
-   Comes with base on OS X 10.8 and 10.9:
+   Comes with the base system on OS X 10.8 and 10.9.
 
    On Ubuntu >= 12.04:
 
@@ -35,7 +169,7 @@
 -  ``graphviz``
 -  ``python-sphinx``
 
-   On OS X 10.8 and 10.9 with macports:
+   On OS X 10.8 and 10.9 with MacPorts:
 
    ::
 
@@ -48,10 +182,18 @@
 
        sudo apt-get install doxygen graphviz python-sphinx
 
-Build
------
 
-The following commands should be used to build NFD:
+Besides officially supported platforms, NFD is known to work on: Fedora 20, CentOS 6, Gentoo Linux,
+Raspberry Pi, OpenWRT, FreeBSD 10.0, and several other platforms.  We are soliciting help
+with documenting common problems / pitfalls in installing/using NFD on different platforms
+on `NFD Wiki
+<http://redmine.named-data.net/projects/nfd/wiki/Wiki#Installation-experiences-for-selected-platforms>`__.
+
+
+Build
+~~~~~
+
+The following basic commands should be used to build NFD on Ubuntu:
 
 ::
 
@@ -59,12 +201,10 @@
     ./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 NFD.
+Some platforms, such as OS X with MacPorts and certain Linux distributions (e.g., Fedora)
+require setting the ``PKG_CONFIG_PATH`` before running configure.
 
-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
-``/opt/local``):
+For example, on OS X with MacPorts (assuming the default ``/opt/local`` MacPorts path):
 
 ::
 
@@ -73,7 +213,7 @@
     ./waf
     sudo ./waf install
 
-On some Linux distributions (e.g., Fedora 20):
+or some Linux distributions:
 
 ::
 
@@ -82,8 +222,12 @@
     ./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 NFD.
+
 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.
@@ -99,7 +243,7 @@
     sudo ./waf install
 
 Building documentation
-----------------------
+~~~~~~~~~~~~~~~~~~~~~~
 
 NFD tutorials and API documentation can be built using the following commands:
 
@@ -115,11 +259,128 @@
     ./waf doxgyen
 
 
-Manpages are automatically created and installed during the normal build process
-(e.g., during ``./waf`` and ``./waf install``), if ``python-sphinx`` module is detected
-during ``./waf configure`` stage.  By default, manpages are installed into
+Manpages are automatically created and installed during the normal build process (e.g.,
+during ``./waf`` and ``./waf install``), if ``python-sphinx`` module is detected during
+``./waf configure`` stage.  By default, manpages are installed into
 ``${PREFIX}/share/man`` (where default value for ``PREFIX`` is ``/usr/local``). This
 location can be changed during ``./waf configure`` stage using ``--prefix``,
 ``--datarootdir``, or ``--mandir`` options.
 
 For more details, refer to ``./waf --help``.
+
+
+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: 260, Origin: 255, Cost: 0, Flags: 1, )
+
+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 :doc:`manpages/nfd-autoreg`.
+
+Playing with NFD
+----------------
+
+After you haved 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.2.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 - Reachability Testing Tool 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/getting-started.rst b/docs/getting-started.rst
deleted file mode 100644
index 57d0d57..0000000
--- a/docs/getting-started.rst
+++ /dev/null
@@ -1,169 +0,0 @@
-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.2.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.2.0
-    ...
-    # continue with ndn-cxx installation instructions
-
-    git clone --recursive https://github.com/named-data/NFD
-    cd NFD
-    git checkout NFD-0.2.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.2.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 45f126a..74f568d 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -13,41 +13,43 @@
    :hidden:
    :maxdepth: 3
 
-   README
-   getting-started
+   overview
+   INSTALL
    FAQ
    manpages
 
-..
-   INSTALL
+* :doc:`overview`
 
-* :doc:`README`
+  A brief overview of NFD and its major modules.
 
-* :doc:`getting-started`
+* :doc:`INSTALL`
+
+  Instructions for obtaining, installing, and running NFD.
 
 * :doc:`FAQ`
 
+  Suggestions for configuring and running non-standard NFD setups.
+
 * :doc:`manpages`
 
 **Additional documentation**
 
 * `NFD Developer's Guide <http://named-data.net/wp-content/uploads/2014/07/NFD-developer-guide.pdf>`_
 
+  A comprehensive guide to the design and implementation of NFD. The developer's guide also contains
+  suggestions and hints for anyone wanting to modify or extend NFD.
+
 * `NFD Wiki <http://redmine.named-data.net/projects/nfd/wiki>`_
 
   + `NFD Management protocol <http://redmine.named-data.net/projects/nfd/wiki/Management>`_
   + `NFD Configuration file format <http://redmine.named-data.net/projects/nfd/wiki/ConfigFileFormat>`_
 
-* `API documentation (doxygen) <doxygen/annotated.html>`_
+  The NFD Wiki contains detailed protocol specifications and
+  information for building on unsupported platforms.
 
-Downloading
------------
+* `API Documentation (doxygen) <doxygen/annotated.html>`_
 
-* `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>`
+* `Release Notes <RELEASE_NOTES.html>`_
 
 License
 -------
diff --git a/docs/README.rst b/docs/overview.rst
similarity index 100%
rename from docs/README.rst
rename to docs/overview.rst
