diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst
index 9e657ae..5210b1d 120000
--- a/RELEASE_NOTES.rst
+++ b/RELEASE_NOTES.rst
@@ -1 +1 @@
-docs/RELEASE_NOTES.rst
\ No newline at end of file
+docs/release-notes/release-notes-0.4.0.rst
\ No newline at end of file
diff --git a/docs/RELEASE_NOTES.rst b/docs/RELEASE_NOTES.rst
index fb45902..0618e7b 100644
--- a/docs/RELEASE_NOTES.rst
+++ b/docs/RELEASE_NOTES.rst
@@ -1,736 +1,4 @@
-.. _NFD Release Notes:
-
 NFD Release Notes
 =================
 
-NFD version 0.3.4 (changes since version 0.3.3)
-+++++++++++++++++++++++++++++++++++++++++++++++
-
-Release date: August 31, 2015
-
-New features:
-^^^^^^^^^^^^^
-
-- Boolean Face property IsOnDemand has been replaced with multistate FacePersistency
-  property (:issue:`2989`, :issue:`3018`): persistent (Face exists as long as there are no
-  system or socket errors), on-demand (Face is removed after inactivity period), and
-  permanent (Face exists unless explicitly destroyed by the management).
-
-  Currently, only UDP faces are allowed to be permanent.  However, management interface to
-  create UDP permanent faces or switch UDP to permanent state will be available in the
-  next release (:issue:`2991`).
-
-- Least Recently Used policy for Content Store (:issue:`2219`)
-
-  Currently, changing the policy requires a minor change in NFD source code.
-  Configuration interface is coming in the next release (:issue:`3148`)
-
-
-Updates and bug fixes:
-^^^^^^^^^^^^^^^^^^^^^^
-
-- Update of NDN Essential Tools to version 0.2 `<https://github.com/named-data/ndn-tools>`__
-  with code improvements and the following new tools:
-
-  * PIB service to manage the public information of keys and publish certificates
-    (:issue:`3018`)
-  * A Wireshark dissector for NDN packets (:issue:`3092`)
-
-- RibManager constructor now accepts KeyChain as a parameter, preparing it for simplifying
-  implementation with the new ``ndn::Dispatcher`` class (:issue:`2390`)
-
-- Fix HTML rendering of nfd-status-http-server output in some browsers (:issue:`3019`)
-
-- Enable automatic re-creation of multicast faces when network connectivity changes
-  (:issue:`2460`)
-
-- Enhance exception throwing with Boost Exception library (:issue:`2541`)
-
-Deprecated:
-^^^^^^^^^^^
-
-- BroadcastStrategy (``/localhost/nfd/strategy/broadcast``) renamed as MulticastStrategy
-  (``/localhost/nfd/strategy/multicast``) (:issue:`3011`)
-
-Upcoming features (partially finished in development branches):
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- NDNLPv2 (http://redmine.named-data.net/projects/nfd/wiki/NDNLPv2, :issue:`2520`,
-  :issue:`2879`, :issue:`2763`, :issue:`2883`, :issue:`2841`, :issue:`2866`)
-
-- Refactored implementation of NFD management (:issue:`2200`, :issue:`2107`)
-
-****************************************************************************
-
-NFD version 0.3.3 (changes since version 0.3.2)
-+++++++++++++++++++++++++++++++++++++++++++++++
-
-Release date: July 1, 2015
-
-New features:
-^^^^^^^^^^^^^
-
-- Content Store replacement policy interface (:issue:`1207`)
-
-- Add unit file and instructions for systemd (:issue:`1586`)
-
-- NDN Essential Tools version 0.1 `<https://github.com/named-data/ndn-tools>`__ featuring:
-
-  * ``ndnpeek``, ``ndnpoke``: a pair of programs to request and make available for retrieval of
-    a single Data packet
-  * ``ndnping``, ``ndnpingserver``: reachability testing tools for Named Data Networking
-  * ``ndndump``: a traffic analysis tool that captures Interest and Data packets on the wire
-  * ``ndn-dissect``: an NDN packet format inspector. It reads zero or more NDN packets from
-    either an input file or the standard input, and displays the Type-Length-Value (TLV)
-    structure of those packets on the standard output.
-
-Updates and bug fixes:
-^^^^^^^^^^^^^^^^^^^^^^
-
-- Avoid loopback new Interest in AccessStrategy (:issue:`2831`)
-
-- Simplified implementation of ``nfd-status`` using SegmentFetcher utility class (:issue:`2456`)
-
-Deprecated:
-^^^^^^^^^^^
-
-- ``ndn-tlv-peek`` and ``ndn-tlv-poke`` command-line tools: use ``ndnpeek`` and ``ndnpoke``
-  programs from NDN Essential Tools repository `<https://github.com/named-data/ndn-tools>`__.
-
-Upcoming features:
-^^^^^^^^^^^^^^^^^^
-
-- NDNLPv2 (http://redmine.named-data.net/projects/nfd/wiki/NDNLPv2, :issue:`2520`,
-  :issue:`2879`, :issue:`2763`, :issue:`2883`, :issue:`2841`, :issue:`2866`)
-
-- Refactored implementation of NFD management (:issue:`2200`, :issue:`2107`)
-
-****************************************************************************
-
-NFD version 0.3.2 (changes since version 0.3.1)
-+++++++++++++++++++++++++++++++++++++++++++++++
-
-Release date: May 12, 2015
-
-New features:
-^^^^^^^^^^^^^
-
-- **Tables**
-
-  * Change lookup API to allow async implementations  of ContentStore (:issue:`2411`)
-
-- **Management**
-
-  * Perform FIB updates before modifying RIB (:issue:`1941`)
-
-Updates and bug fixes:
-^^^^^^^^^^^^^^^^^^^^^^
-
-- **Documentation**
-
-  * Update planned Features: face enhancements (:issue:`2617`)
-
-  * Updated NFD's developer guide to reflect new changes and adding a new section on
-    NFD/ndn-cxx unit testing
-
-- **Face**
-
-  * Refactor channel acceptors to avoid use of shared pointers (:issue:`2613`)
-
-  * Refactor code to avoid deprecated `Block::fromBuffer` overloads (:issue:`2553`)
-
-  * Refactor code to use move semantics for sockets where possible (:issue:`2613`)
-
-  * Switch to non-throwing version of websocketpp APIs (:issue:`2630`)
-
-- **Forwarding**
-
-  * Extend measurements lifetime in AccessStrategy (:issue:`2452`)
-
-- **Management**
-
-  * Stop removed namespace from inheriting ancestor route (:issue:`2757`)
-
-  * Fix TestFibUpdates/EraseFace on Ubuntu 14.04 32-bit (:issue:`2697`)
-
-- **Tools**
-
-  * Fix hanging of `nfdc` on wrong input (:issue:`2690`)
-
-- **Build**
-
-  * Make build scripts compatible with Python 3 (:issue:`2625`)
-
-  * Get rid of the last use of ndn::dns in NFD (:issue:`2422`)
-
-  * Update waf build system to version 1.8.9 (:issue:`2209`, :issue:`2657`, :issue:`2792`)
-
-  * Tweak default pkg-config search paths (:issue:`2711`)
-
-  * Use C version of snprintf (:issue:`2299`)
-
-  * Emulate `std::to_string` when it is missing (:issue:`2299`)
-
-  * Fix several "defined but not used" warnings with gcc-5 (:issue:`2767`)
-
-  * Disable precompiled headers on OS X with clang < 6.1.0 (:issue:`2804`)
-
-****************************************************************************
-
-NFD version 0.3.1 (changes since version 0.3.0)
------------------------------------------------
-
-Release date: March 3, 2015
-
-New features:
-^^^^^^^^^^^^^
-
-- ``nfd`` and ``nrd`` daemons are now merged into a single process using separate threads
-  (:issue:`2489`)
-
-- **Core**
-
-  - Extend ConfigFile to support passing a parsed ConfigSection (:issue:`2495`)
-
-  - Allow customization of Logger and LoggerFactory (:issue:`2433`)
-
-  - Make global io_service, scheduler, and global random generator thread-local, and logger
-    thread-safe (:issue:`2489`)
-
-- **Forwarding**
-
-  - Introduce exponential back-off interest retransmission suppression mechanism and enable
-    its use in the best-route strategy (:issue:`1913`)
-
-  - Strategies are now registered with a macro, making it simpler to introduce new strategies
-    to NFD codebase (:issue:`2410`)
-
-- **Tables**
-
-  - ContentStore now recognizes CachingPolicy-NoCache from LocalControlHeader (:issue:`2185`)
-
-Updates and bug fixes:
-^^^^^^^^^^^^^^^^^^^^^^
-
-- **Faces**
-
-  - Remove Tcp|UdpChannel::connect overloads that perform DNS resolution (:issue:`2422`)
-
-  - Properly handle error conditions in UdpChannel::newPeer (:issue:`2516`)
-
-  - Fix inconsistency of UDP face timeouts in sample `nfd.conf` and actual defaults
-    (:issue:`2473`)
-
-  - Introduce Face-specific logging macros (:issue:`2450`)
-
-  - Refactor handling of LinkType face trait and fix FaceStatus reporting: the link type was
-    not properly propagated (:issue:`2563`)
-
-  - Avoid exceptions in NDNLP PartialMessageStore (:issue:`2261`)
-
-  - Update websocketpp to version 0.5.1
-
-- **Tables**
-
-  - Reduce priority of DeadNonceList log messages from DEBUG to TRACE
-
-- **Management**
-
-  - Change register/unregister logging in RibManager to INFO level (:issue:`2547`)
-
-- **Tools**
-
-  - Change prefix for :ref:`the local hub prefix discovery <local-prefix-discovery>` to be
-    under ``/localhop/nfd`` (:issue:`2479`, :issue:`2512`)
-
-- **Tests**
-
-  - Change naming conventions for unit test files and test suite names (:issue:`2497`)
-
-  - Fix segfault in TableNameTree test suite when all test logs are enabled (:issue:`2564`)
-
-****************************************************************************
-
-NFD version 0.3.0 (changes since version 0.2.0)
------------------------------------------------
-
-Release date: February 2, 2015
-
-New features:
-^^^^^^^^^^^^^
-
-- **Build**
-
-  + The code now requires C++11.  The minimum supported gcc version is 4.6, as earlier versions
-    do not have proper support for C++11 features.
-
-- **Faces**
-
-  + Enable detection of WebSocket connection failures using ping/pong messages (:issue:`1903`)
-
-  + In EthernetFace:
-
-    * Avoid putting the NIC in promiscuous mode if possible (:issue:`1278`)
-
-    * Report packets dropped by the kernel if debug is enabled (:issue:`2441`)
-
-    * Integrate NDNLP fragmentation (:issue:`1209`)
-
-- **Forwarding**
-
-  + Strategy versioning (:issue:`1893`)
-
-  + New Dead Nonce List table to supplement PIT for loop detection (:issue:`1953`)
-
-  + Abstract retransmission suppression logic (:issue:`2377`)
-
-  + New forwarding strategy for access router (:issue:`1999`)
-
-- **Management**
-
-  + Add config file-based strategy selection (:issue:`2053`)
-
-    The sample config file now includes strategy selection for ``/``, ``/localhost``,
-    ``/localhost/nfd``, and ``/ndn/broadcast`` namespaces as follows:
-
-    ::
-
-        tables
-        {
-          ...
-          strategy_choice
-          {
-            /               /localhost/nfd/strategy/best-route
-            /localhost      /localhost/nfd/strategy/broadcast
-            /localhost/nfd  /localhost/nfd/strategy/best-route
-            /ndn/broadcast  /localhost/nfd/strategy/broadcast
-          }
-        }
-
-  + Implement Query Operation in FaceManager (:issue:`1993`)
-
-  + FaceManager now responds with producer-generated NACK when query is invalid (:issue:`1993`)
-
-  + Add functionality for automatic remote prefix registration (:issue:`2056`)
-
-  + Only canonical FaceUri are allowed in faces/create commands (:issue:`1910`)
-
-- **Tables**
-
-  + StrategyInfoHost can now store multiple StrategyInfo of distinct types (:issue:`2240`)
-
-  + Enable iteration over PIT and CS entries (:issue:`2339`)
-
-  + Allow predicate to be specified in Measurements::findLongestPrefixMatch (:issue:`2314`)
-
-  + Calculate the implicit digest of Data packets in CS only when necessary (:issue:`1706`)
-
-- **Tools**
-
-  + Publish ``/localhop/ndn-autoconf/routable-prefixes`` from ``ndn-autoconfig-server``
-    (:issue:`1954`)
-
-  + Display detailed NFD software verion in ``nfd-status-http-server`` and ``nfd-status``
-    (:issue:`1916`)
-
-  + ``nfdc`` now accepts FaceUri in all commands (:issue:`1995`)
-
-  + Add daemon mode for ``ndn-autoconfig`` to re-run detection when connectivity changes
-    (:issue:`2417`)
-
-- **Core**
-
-  + New scheduler::ScopedEventId class to automatically handle scheduled event lifetime
-    (:issue:`2295`)
-
-Updates and bug fixes:
-^^^^^^^^^^^^^^^^^^^^^^
-
-- **Documentation**
-
-  + NFD Developer's guide has been updated to reflect changes in the codebase
-
-  + Installation instruction updates
-
-  + Update of config file instructions for disabling unix sockets (:issue:`2190`)
-
-- **Core**
-
-  + Use implementations moved to ndn-cxx library
-
-     + Use Signal from ndn-cxx (:issue:`2272`, :issue:`2300`)
-
-     + use ethernet::Address from ndn-cxx (:issue:`2142`)
-
-     + Use MAX_NDN_PACKET_SIZE constant from ndn-cxx (:issue:`2099`)
-
-     + Use DEFAULT_INTEREST_LIFETIME from ndn-cxx (:issue:`2202`)
-
-     + Use FaceUri from ndn-cxx (:issue:`2143`)
-
-     + Use DummyClientFace from ndn-cxx (:issue:`2186`)
-
-     + Use ndn::dns from ndn-cxx (:issue:`2207`)
-
-  + Move Network class implementation from ``tools/`` to ``core/``
-
-  + Ignore non-Ethernet ``AF_LINK`` addresses when enumerating NICs on OSX and other BSD systems
-
-  + Fix bug on not properly setting FreshnessPeriod inside SegmentPublisher (:issue:`2438`)
-
-- **Faces**
-
-  + Fix spurious assertion failure in StreamFace (:issue:`1856`)
-
-  + Update websocketpp submodule (:issue:`1903`)
-
-  + Replace FaceFlags with individual fields (:issue:`1992`)
-
-  + Drop WebSocket message if the size is larger than maximum NDN packet size (:issue:`2081`)
-
-  + Make EthernetFace more robust against errors (:issue:`1984`)
-
-  + Prevent potential infinite loop in TcpFactory and UdpFactory (:issue:`2292`)
-
-  + Prevent crashes when attempting to create a UdpFace over a half-working connection
-    (:issue:`2311`)
-
-  + Support MTU larger than 1500 in EthernetFace (for jumbo frames) (:issue:`2305`)
-
-  + Re-enable EthernetFace on OS X platform with boost >=1.57.0 (:issue:`1922`)
-
-  + Fix ``ioctl()`` calls on platforms where libpcap uses ``/dev/bpf*`` (:issue:`2327`)
-
-  + Fix overhead estimation in NDNLP slicer (:issue:`2317`)
-
-  + Replace usage of deprecated EventEmitter with Signal in Face abstractions (:issue:`2300`)
-
-  + Fix NDNLP PartialMessage cleanup scheduling (:issue:`2414`)
-
-  + Remove unnecessary use of DNS resolver in (Udp|Tcp|WebSocket)Factory (:issue:`2422`)
-
-- **Forwarding**
-
-  + Updates related to NccStrategy
-
-    * Fix to prevent remembering of suboptimal upstreams (:issue:`1961`)
-
-    * Optimizing FwNccStrategy/FavorRespondingUpstream test case (:issue:`2037`)
-
-    * Proper detection for new PIT entry (:issue:`1971`)
-
-    * Use UnitTestTimeFixture in NCC test case (:issue:`2163`)
-
-    * Fix loop back to sole downstream (:issue:`1998`)
-
-  + Updates related to BestRoute strategy
-
-    + Redesign best-route v2 strategy test case (:issue:`2126`)
-
-    + Fix clang compilation error in best-route v2 test case (:issue:`2179`)
-
-    + Use UnitTestClock in BestRouteStrategy2 test (:issue:`2160`)
-
-  + Allow strategies limited access to FaceTable (:issue:`2272`)
-
-- **Tables**
-
-  + Ensure that eviction of unsolicited Data is done in FIFO order (:issue:`2043`)
-
-  + Simplify table implementations with C++11 features (:issue:`2100`)
-
-  + Fix issue with Fib::removeNextHopFromAllEntries invalidating NameTree iterator
-    (:issue:`2177`)
-
-  + Replace deprecated EventEmitter with Signal in FaceTable (:issue:`2272`)
-
-  + Refactored implementation of ContentStore based on std::set (:issue:`2254`)
-
-- **Management**
-
-  + Allow omitted FaceId in faces/create command (:issue:`2031`)
-
-  + Avoid deprecated ``ndn::nfd::Controller(Face&)`` constructor (:issue:`2039`)
-
-  + Enable check of command length before accessing verb (:issue:`2151`)
-
-  + Rename FaceEntry to Route (:issue:`2159`)
-
-  + Insert RIB command prefixes into RIB (:issue:`2312`)
-
-- **Tools**
-
-  + Display face attribute fields instead of FaceFlags in ``nfd-status`` and
-    ``nfd-status-http-server`` output (:issue:`1991`)
-
-  + Fix ``nfd-status-http-server`` hanging when nfd-status output is >64k (:issue:`2121`)
-
-  + Ensure that ``ndn-autoconfig`` canonizes FaceUri before sending commands to NFD
-    (:issue:`2387`)
-
-  + Refactored ndn-autoconfig implementation (:issue:`2421`)
-
-  + ndn-autoconfig will now register also ``/localhop/nfd`` prefix towards the hub (:issue:`2416`)
-
-- **Tests**
-
-  + Use UnitTestClock in Forwarder persistent loop test case (:issue:`2162`)
-
-  + Use LimitedIo in FwForwarder/SimpleExchange test case (:issue:`2161`)
-
-- **Build**
-
-  + Fix build error with python3 (:issue:`1302`)
-
-  + Embed CI build and test running script
-
-  + Properly disable assertions in release builds (:issue:`2139`)
-
-  + Embed setting of ``PKG_CONFIG_PATH`` variable to commonly used values (:issue:`2178`)
-
-  + Add conditional compilation for NetworkInterface and PrivilegeHelper
-
-  + Support tools with multiple translation units (:issue:`2344`)
-
-Removals
-^^^^^^^^
-
-- Remove ``listen`` option from unix channel configuration (:issue:`2188`)
-
-- Remove usage of deprecated ``MetaInfo::TYPE_*`` constants (:issue:`2128`)
-
-- Eliminate MapValueIterator in favor of ``boost::adaptors::map_values``
-
-****************************************************************************
-
-NFD version 0.2.0 (changes since version 0.1.0)
------------------------------------------------
-
-Release date: August 25, 2014
-
-- **Documentation**
-
-  + `"NFD Developer's Guide" by NFD authors
-    <http://named-data.net/wp-content/uploads/2014/07/NFD-developer-guide.pdf>`_ that
-    explains NFD's internals including the overall design, major modules, their
-    implementation, and their interactions
-
-  + New detailed instructions on how to enable auto-start of NFD using OSX ``launchd``
-    and Ubuntu's ``upstart`` (see `contrib/ folder
-    <https://github.com/named-data/NFD/tree/master/contrib>`_)
-
-- **Core**
-
-  + Add support for temporary privilege drop and elevation (:issue:`1370`)
-
-  + Add support to reinitialize multicast Faces and (partially) reload config file
-    (:issue:`1584`)
-
-  + Randomization routines are now uniform across all NFD modules (:issue:`1369`)
-
-  + Enable use of new NDN naming conventions (:issue:`1837` and :issue:`1838`)
-
-- **Faces**
-
-  + `WebSocket <http://tools.ietf.org/html/rfc6455>`_ Face support (:issue:`1468`)
-
-  + Fix Ethernet Face support on Linux with ``libpcap`` version >=1.5.0 (:issue:`1511`)
-
-  + Fix to recognize IPv4-mapped IPv6 addresses in ``FaceUri`` (:issue:`1635`)
-
-  + Fix to avoid multiple onFail events (:issue:`1497`)
-
-  + Fix broken support of multicast UDP Faces on OSX (:issue:`1668`)
-
-  + On Linux, path MTU discovery on unicast UDPv4 faces is now disabled (:issue:`1651`)
-
-  + Added link layer byte counts in FaceCounters (:issue:`1729`)
-
-  + Face IDs 0-255 are now reserved for internal NFD use (:issue:`1620`)
-
-  + Serialized StreamFace::send(Interest|Data) operations using queue (:issue:`1777`)
-
-- **Forwarding**
-
-  + Outgoing Interest pipeline now allows strategies to request a fresh ``Nonce`` (e.g., when
-    the strategy needs to re-express the Interest) (:issue:`1596`)
-
-  + Fix in the incoming Data pipeline to avoid sending packets to the incoming Face
-    (:issue:`1556`)
-
-  + New ``RttEstimator`` class that implements the Mean-Deviation RTT estimator to be used in
-    forwarding strategies
-
-  + Fix memory leak caused by not removing PIT entry when Interest matches CS (:issue:`1882`)
-
-  + Fix spurious assertion in NCC strategy (:issue:`1853`)
-
-- **Tables**
-
-  + Fix in ContentStore to properly adjust internal structure when ``Cs::setLimit`` is called
-    (:issue:`1646`)
-
-  + New option in configuration file to set an upper bound on ContentStore size (:issue:`1623`)
-
-  + Fix to prevent infinite lifetime of Measurement entries (:issue:`1665`)
-
-  + Introducing capacity limit in PIT NonceList (:issue:`1770`)
-
-  + Fix memory leak in NameTree (:issue:`1803`)
-
-  + Fix segfault during Fib::removeNextHopFromAllEntries (:issue:`1816`)
-
-- **Management**
-
-  + RibManager now fully support ``CHILD_INHERIT`` and ``CAPTURE`` flags (:issue:`1325`)
-
-  + Fix in ``FaceManager`` to respond with canonical form of Face URI for Face creation command
-    (:issue:`1619`)
-
-  + Fix to prevent creation of duplicate TCP/UDP Faces due to async calls (:issue:`1680`)
-
-  + Fix to properly handle optional ExpirationPeriod in RibRegister command (:issue:`1772`)
-
-  + Added functionality of publishing RIB status (RIB dataset) by RibManager (:issue:`1662`)
-
-  + Fix issue of not properly canceling route expiration during processing of ``unregister``
-    command (:issue:`1902`)
-
-  + Enable periodic clean up of route entries that refer to non-existing faces (:issue:`1875`)
-
-- **Tools**
-
-  + Extended functionality of ``nfd-status``
-
-     * ``-x`` to output in XML format, see :ref:`nfd-status xml schema`
-     * ``-c`` to retrieve channel status information (enabled by default)
-     * ``-s`` to retrieve configured strategy choice for NDN namespaces (enabled by default)
-     * Face status now includes reporting of Face flags (``local`` and ``on-demand``)
-     * On-demand UDP Faces now report remaining lifetime (``expirationPeriod``)
-     * ``-r`` to retrieve RIB information
-
-  + Improved ``nfd-status-http-server``
-
-     * HTTP server now presents status as XSL-formatted XML page
-     * XML dataset and formatted page now include certificate name of the corresponding NFD
-       (:issue:`1807`)
-
-  + Several fixes in ``ndn-autoconfig`` tool (:issue:`1595`)
-
-  + Extended options in ``nfdc``:
-
-    * ``-e`` to set expiration time for registered routes
-    * ``-o`` to specify origin for registration and unregistration commands
-
-  + Enable ``all-faces-prefix'' option in ``nfd-autoreg`` to register prefix for all face
-    (on-demand and non-on-demand) (:issue:`1861`)
-
-  + Enable processing auto-registration in ``nfd-autoreg`` for faces that existed prior to
-    start of the tool (:issue:`1863`)
-
-- **Build**
-
-  + Enable support of precompiled headers for clang and gcc to speed up compilation
-
-- `Other small fixes and extensions
-  <https://github.com/named-data/NFD/compare/NFD-0.1.0...master>`_
-
-****************************************************************************
-
-NFD version 0.1.0
------------------
-
-Release date: May 7, 2014
-
-This is an incomplete list of features that are implemented in NFD version 0.1.0.
-
-- **Packet Format**
-
-  + `NDN-TLV <http://named-data.net/doc/ndn-tlv/>`_
-  + LocalControlHeader, to allow apps to set outgoing face and learn incoming face.
-
-- **Faces**
-
-  + Unix stream socket
-  + UDP unicast
-  + UDP multicast
-  + TCP
-  + Ethernet, currently without fragmentation.
-
-    .. note::
-         Ethernet support will not work properly on Linux kernels with TPACKET_V3 flexible
-         buffer implementation (>= 3.2.0) and libpcap >= 1.5.0 (e.g., Ubuntu Linux 14.04).
-         Refer to `Issue 1551 <http://redmine.named-data.net/issues/1511>`_ for more
-         detail and implementation progress.
-
-- **Management**
-
-  + Use of signed Interests as commands, with authentication and authorization.
-  + Face management
-  + FIB management
-  + Per-namespace strategy selection
-  + 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
-  selectors.
-
-- **RIB Management** that runs as a separate process, ``nrd``.  It supports basic prefix
-  registration by applications, but no flags yet.
-
-- **Strategies**
-
-  + ``broadcast``
-  + ``best-route``
-  + ``ncc``: based on ccnx 0.7 for experimentation
-  + ``client-control``: authorized application can directly control Interest forwarding
-
-- **Name-based scoping**
-
-  + ``/localhost``: communication only within localhost using "local" Faces
-    (UnixStreamFace, LocalTcpFace).  NFD will strictly enforce this scope for Interests
-    and Data packets
-  + ``/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.
-
-- **Applications**
-
-  + Tools to discover hubs on NDN testbed.
-  + peek/poke and traffic generators for testing and debugging.
-  + ``nfdc``, a command-line tool to configure NFD.
-  + ``nfd-status``, a command-line tool to query NFD status.
-  + ``nfd-status-http-server``, which reads the NFD status and publishes over HTTP.
-
-
-Planned Functions and Features for Next Releases
-------------------------------------------------
-
-- NACK
-    A packet sent back by a producer or a router to signal the unavailability of a requested
-    Data packet. The protocol specification for NACK is in progress.
-
-- New strategies
-    Additional strategies, including self-learning that populates the FIB by observing
-    Interest and Data exchange.
-
-- Hop-by-hop Interest limit mechanism
-    For congestion control
-
-- Face enhancements
-    Add faces for new underlying protocols such as WiFi direct.
-    Introduce the concept of "permanent faces" that can survive socket errors.
-    Design a new hop-by-hop header that supports fragmentation, reliability improvement, etc.
-
-- Tables
-    Experiment and evaluate different data structures and algorithms.
-
-- RIB management
-    Move to more scalable data structures and support all flags in prefix registrations.
-
-- Tunnel management
-    For hub nodes to authenticate incoming tunnel requests and maintain the tunnels.
-
-- Extensible name-based scoping
-    Configurable organization-based scoping
+.. include:: release-notes/release-notes-0.4.0.rst
diff --git a/docs/conf.py b/docs/conf.py
index 37384b8..f50b01b 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -30,7 +30,7 @@
 # ones.
 extensions = [
     'sphinx.ext.todo',
-    'redmine_issue',
+    'redmine_issue'
 ]
 
 def addExtensionIfExists(extension):
@@ -260,7 +260,7 @@
 #man_show_urls = False
 
 doxylink = {
-  'NFD' : ('NFD.tag', 'doxygen/'),
+  'nfd' : ('NFD.tag', 'doxygen/'),
 }
 
 if os.getenv('GOOGLE_ANALYTICS', None):
diff --git a/docs/doxygen.conf.in b/docs/doxygen.conf.in
index 2760b9b..99478a8 100644
--- a/docs/doxygen.conf.in
+++ b/docs/doxygen.conf.in
@@ -1929,8 +1929,8 @@
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 PREDEFINED             = NFD_LOG_INIT(x)= \
-                         NFD_LOG_INCLASS_TEMPLATE_SPECIALIZATION_DEFINE(x,y)= \
-                         NFD_LOG_INCLASS_2TEMPLATE_SPECIALIZATION_DEFINE(x,y,z)= \
+                         NFD_LOG_INCLASS_TEMPLATE_SPECIALIZATION_DEFINE(a,b,c)= \
+                         NFD_LOG_INCLASS_2TEMPLATE_SPECIALIZATION_DEFINE(a,b,c,d)= \
                          BOOST_STATIC_ASSERT(x)= \
                          BOOST_CONCEPT_ASSERT \
                          BOOST_CONCEPT_REQUIRES \
diff --git a/docs/index.rst b/docs/index.rst
index 94157be..e75dec9 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -18,6 +18,13 @@
    FAQ
    manpages
 
+.. toctree::
+   :hidden:
+   :maxdepth: 1
+
+   RELEASE_NOTES
+   releases
+
 * :doc:`overview`
 
   A brief overview of NFD and its major modules.
@@ -49,7 +56,9 @@
 
 * `API Documentation (doxygen) <doxygen/annotated.html>`_
 
-* `Release Notes <RELEASE_NOTES.html>`_
+* :doc:`RELEASE_NOTES`
+
+* :doc:`releases`
 
 License
 -------
diff --git a/docs/overview.rst b/docs/overview.rst
index 437649d..133a6db 100644
--- a/docs/overview.rst
+++ b/docs/overview.rst
@@ -1,11 +1,6 @@
 NFD Overview
 ============
 
-.. toctree::
-   :maxdepth: 2
-
-   RELEASE_NOTES
-
 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
diff --git a/docs/release-notes/release-notes-0.1.0.rst b/docs/release-notes/release-notes-0.1.0.rst
new file mode 100644
index 0000000..03b1ce0
--- /dev/null
+++ b/docs/release-notes/release-notes-0.1.0.rst
@@ -0,0 +1,97 @@
+NFD version 0.1.0
+-----------------
+
+Release date: May 7, 2014
+
+This is an incomplete list of features that are implemented in NFD version 0.1.0.
+
+- **Packet Format**
+
+  + `NDN-TLV <http://named-data.net/doc/ndn-tlv/>`_
+  + LocalControlHeader, to allow apps to set outgoing face and learn incoming face.
+
+- **Faces**
+
+  + Unix stream socket
+  + UDP unicast
+  + UDP multicast
+  + TCP
+  + Ethernet, currently without fragmentation.
+
+    .. note::
+         Ethernet support will not work properly on Linux kernels with TPACKET_V3 flexible
+         buffer implementation (>= 3.2.0) and libpcap >= 1.5.0 (e.g., Ubuntu Linux 14.04).
+         Refer to `Issue 1551 <http://redmine.named-data.net/issues/1511>`_ for more
+         detail and implementation progress.
+
+- **Management**
+
+  + Use of signed Interests as commands, with authentication and authorization.
+  + Face management
+  + FIB management
+  + Per-namespace strategy selection
+  + 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
+  selectors.
+
+- **RIB Management** that runs as a separate process, ``nrd``.  It supports basic prefix
+  registration by applications, but no flags yet.
+
+- **Strategies**
+
+  + ``broadcast``
+  + ``best-route``
+  + ``ncc``: based on ccnx 0.7 for experimentation
+  + ``client-control``: authorized application can directly control Interest forwarding
+
+- **Name-based scoping**
+
+  + ``/localhost``: communication only within localhost using "local" Faces
+    (UnixStreamFace, LocalTcpFace).  NFD will strictly enforce this scope for Interests
+    and Data packets
+  + ``/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.
+
+- **Applications**
+
+  + Tools to discover hubs on NDN testbed.
+  + peek/poke and traffic generators for testing and debugging.
+  + ``nfdc``, a command-line tool to configure NFD.
+  + ``nfd-status``, a command-line tool to query NFD status.
+  + ``nfd-status-http-server``, which reads the NFD status and publishes over HTTP.
+
+
+Planned Functions and Features for Next Releases
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- NACK
+    A packet sent back by a producer or a router to signal the unavailability of a requested
+    Data packet. The protocol specification for NACK is in progress.
+
+- New strategies
+    Additional strategies, including self-learning that populates the FIB by observing
+    Interest and Data exchange.
+
+- Hop-by-hop Interest limit mechanism
+    For congestion control
+
+- Face enhancements
+    Add faces for new underlying protocols such as WiFi direct.
+    Introduce the concept of "permanent faces" that can survive socket errors.
+    Design a new hop-by-hop header that supports fragmentation, reliability improvement, etc.
+
+- Tables
+    Experiment and evaluate different data structures and algorithms.
+
+- RIB management
+    Move to more scalable data structures and support all flags in prefix registrations.
+
+- Tunnel management
+    For hub nodes to authenticate incoming tunnel requests and maintain the tunnels.
+
+- Extensible name-based scoping
+    Configurable organization-based scoping
diff --git a/docs/release-notes/release-notes-0.2.0.rst b/docs/release-notes/release-notes-0.2.0.rst
new file mode 100644
index 0000000..a6df316
--- /dev/null
+++ b/docs/release-notes/release-notes-0.2.0.rst
@@ -0,0 +1,132 @@
+NFD version 0.2.0
+-----------------
+
+Release date: August 25, 2014
+
+Changes since version 0.1.0:
+
+- **Documentation**
+
+  + `"NFD Developer's Guide" by NFD authors
+    <http://named-data.net/wp-content/uploads/2014/07/NFD-developer-guide.pdf>`_ that
+    explains NFD's internals including the overall design, major modules, their
+    implementation, and their interactions
+
+  + New detailed instructions on how to enable auto-start of NFD using OSX ``launchd``
+    and Ubuntu's ``upstart`` (see `contrib/ folder
+    <https://github.com/named-data/NFD/tree/master/contrib>`_)
+
+- **Core**
+
+  + Add support for temporary privilege drop and elevation (:issue:`1370`)
+
+  + Add support to reinitialize multicast Faces and (partially) reload config file
+    (:issue:`1584`)
+
+  + Randomization routines are now uniform across all NFD modules (:issue:`1369`)
+
+  + Enable use of new NDN naming conventions (:issue:`1837` and :issue:`1838`)
+
+- **Faces**
+
+  + `WebSocket <http://tools.ietf.org/html/rfc6455>`_ Face support (:issue:`1468`)
+
+  + Fix Ethernet Face support on Linux with ``libpcap`` version >=1.5.0 (:issue:`1511`)
+
+  + Fix to recognize IPv4-mapped IPv6 addresses in ``FaceUri`` (:issue:`1635`)
+
+  + Fix to avoid multiple onFail events (:issue:`1497`)
+
+  + Fix broken support of multicast UDP Faces on OSX (:issue:`1668`)
+
+  + On Linux, path MTU discovery on unicast UDPv4 faces is now disabled (:issue:`1651`)
+
+  + Added link layer byte counts in FaceCounters (:issue:`1729`)
+
+  + Face IDs 0-255 are now reserved for internal NFD use (:issue:`1620`)
+
+  + Serialized StreamFace::send(Interest|Data) operations using queue (:issue:`1777`)
+
+- **Forwarding**
+
+  + Outgoing Interest pipeline now allows strategies to request a fresh ``Nonce`` (e.g., when
+    the strategy needs to re-express the Interest) (:issue:`1596`)
+
+  + Fix in the incoming Data pipeline to avoid sending packets to the incoming Face
+    (:issue:`1556`)
+
+  + New ``RttEstimator`` class that implements the Mean-Deviation RTT estimator to be used in
+    forwarding strategies
+
+  + Fix memory leak caused by not removing PIT entry when Interest matches CS (:issue:`1882`)
+
+  + Fix spurious assertion in NCC strategy (:issue:`1853`)
+
+- **Tables**
+
+  + Fix in ContentStore to properly adjust internal structure when ``Cs::setLimit`` is called
+    (:issue:`1646`)
+
+  + New option in configuration file to set an upper bound on ContentStore size (:issue:`1623`)
+
+  + Fix to prevent infinite lifetime of Measurement entries (:issue:`1665`)
+
+  + Introducing capacity limit in PIT NonceList (:issue:`1770`)
+
+  + Fix memory leak in NameTree (:issue:`1803`)
+
+  + Fix segfault during Fib::removeNextHopFromAllEntries (:issue:`1816`)
+
+- **Management**
+
+  + RibManager now fully support ``CHILD_INHERIT`` and ``CAPTURE`` flags (:issue:`1325`)
+
+  + Fix in ``FaceManager`` to respond with canonical form of Face URI for Face creation command
+    (:issue:`1619`)
+
+  + Fix to prevent creation of duplicate TCP/UDP Faces due to async calls (:issue:`1680`)
+
+  + Fix to properly handle optional ExpirationPeriod in RibRegister command (:issue:`1772`)
+
+  + Added functionality of publishing RIB status (RIB dataset) by RibManager (:issue:`1662`)
+
+  + Fix issue of not properly canceling route expiration during processing of ``unregister``
+    command (:issue:`1902`)
+
+  + Enable periodic clean up of route entries that refer to non-existing faces (:issue:`1875`)
+
+- **Tools**
+
+  + Extended functionality of ``nfd-status``
+
+     * ``-x`` to output in XML format, see :ref:`nfd-status xml schema`
+     * ``-c`` to retrieve channel status information (enabled by default)
+     * ``-s`` to retrieve configured strategy choice for NDN namespaces (enabled by default)
+     * Face status now includes reporting of Face flags (``local`` and ``on-demand``)
+     * On-demand UDP Faces now report remaining lifetime (``expirationPeriod``)
+     * ``-r`` to retrieve RIB information
+
+  + Improved ``nfd-status-http-server``
+
+     * HTTP server now presents status as XSL-formatted XML page
+     * XML dataset and formatted page now include certificate name of the corresponding NFD
+       (:issue:`1807`)
+
+  + Several fixes in ``ndn-autoconfig`` tool (:issue:`1595`)
+
+  + Extended options in ``nfdc``:
+
+    * ``-e`` to set expiration time for registered routes
+    * ``-o`` to specify origin for registration and unregistration commands
+
+  + Enable ``all-faces-prefix'' option in ``nfd-autoreg`` to register prefix for all face
+    (on-demand and non-on-demand) (:issue:`1861`)
+
+  + Enable processing auto-registration in ``nfd-autoreg`` for faces that existed prior to
+    start of the tool (:issue:`1863`)
+
+- **Build**
+
+  + Enable support of precompiled headers for clang and gcc to speed up compilation
+
+- Other small fixes and extensions
diff --git a/docs/release-notes/release-notes-0.3.0.rst b/docs/release-notes/release-notes-0.3.0.rst
new file mode 100644
index 0000000..acc6c15
--- /dev/null
+++ b/docs/release-notes/release-notes-0.3.0.rst
@@ -0,0 +1,251 @@
+NFD version 0.3.0
+-----------------
+
+Release date: February 2, 2015
+
+Changes since version 0.2.0:
+
+New features:
+^^^^^^^^^^^^^
+
+- **Build**
+
+  + The code now requires C++11.  The minimum supported gcc version is 4.6, as earlier versions
+    do not have proper support for C++11 features.
+
+- **Faces**
+
+  + Enable detection of WebSocket connection failures using ping/pong messages (:issue:`1903`)
+
+  + In EthernetFace:
+
+    * Avoid putting the NIC in promiscuous mode if possible (:issue:`1278`)
+
+    * Report packets dropped by the kernel if debug is enabled (:issue:`2441`)
+
+    * Integrate NDNLP fragmentation (:issue:`1209`)
+
+- **Forwarding**
+
+  + Strategy versioning (:issue:`1893`)
+
+  + New Dead Nonce List table to supplement PIT for loop detection (:issue:`1953`)
+
+  + Abstract retransmission suppression logic (:issue:`2377`)
+
+  + New forwarding strategy for access router (:issue:`1999`)
+
+- **Management**
+
+  + Add config file-based strategy selection (:issue:`2053`)
+
+    The sample config file now includes strategy selection for ``/``, ``/localhost``,
+    ``/localhost/nfd``, and ``/ndn/broadcast`` namespaces as follows:
+
+    ::
+
+        tables
+        {
+          ...
+          strategy_choice
+          {
+            /               /localhost/nfd/strategy/best-route
+            /localhost      /localhost/nfd/strategy/broadcast
+            /localhost/nfd  /localhost/nfd/strategy/best-route
+            /ndn/broadcast  /localhost/nfd/strategy/broadcast
+          }
+        }
+
+  + Implement Query Operation in FaceManager (:issue:`1993`)
+
+  + FaceManager now responds with producer-generated NACK when query is invalid (:issue:`1993`)
+
+  + Add functionality for automatic remote prefix registration (:issue:`2056`)
+
+  + Only canonical FaceUri are allowed in faces/create commands (:issue:`1910`)
+
+- **Tables**
+
+  + StrategyInfoHost can now store multiple StrategyInfo of distinct types (:issue:`2240`)
+
+  + Enable iteration over PIT and CS entries (:issue:`2339`)
+
+  + Allow predicate to be specified in Measurements::findLongestPrefixMatch (:issue:`2314`)
+
+  + Calculate the implicit digest of Data packets in CS only when necessary (:issue:`1706`)
+
+- **Tools**
+
+  + Publish ``/localhop/ndn-autoconf/routable-prefixes`` from ``ndn-autoconfig-server``
+    (:issue:`1954`)
+
+  + Display detailed NFD software verion in ``nfd-status-http-server`` and ``nfd-status``
+    (:issue:`1916`)
+
+  + ``nfdc`` now accepts FaceUri in all commands (:issue:`1995`)
+
+  + Add daemon mode for ``ndn-autoconfig`` to re-run detection when connectivity changes
+    (:issue:`2417`)
+
+- **Core**
+
+  + New scheduler::ScopedEventId class to automatically handle scheduled event lifetime
+    (:issue:`2295`)
+
+Updates and bug fixes:
+^^^^^^^^^^^^^^^^^^^^^^
+
+- **Documentation**
+
+  + NFD Developer's guide has been updated to reflect changes in the codebase
+
+  + Installation instruction updates
+
+  + Update of config file instructions for disabling unix sockets (:issue:`2190`)
+
+- **Core**
+
+  + Use implementations moved to ndn-cxx library
+
+     + Use Signal from ndn-cxx (:issue:`2272`, :issue:`2300`)
+
+     + use ethernet::Address from ndn-cxx (:issue:`2142`)
+
+     + Use MAX_NDN_PACKET_SIZE constant from ndn-cxx (:issue:`2099`)
+
+     + Use DEFAULT_INTEREST_LIFETIME from ndn-cxx (:issue:`2202`)
+
+     + Use FaceUri from ndn-cxx (:issue:`2143`)
+
+     + Use DummyClientFace from ndn-cxx (:issue:`2186`)
+
+     + Use ndn::dns from ndn-cxx (:issue:`2207`)
+
+  + Move Network class implementation from ``tools/`` to ``core/``
+
+  + Ignore non-Ethernet ``AF_LINK`` addresses when enumerating NICs on OSX and other BSD systems
+
+  + Fix bug on not properly setting FreshnessPeriod inside SegmentPublisher (:issue:`2438`)
+
+- **Faces**
+
+  + Fix spurious assertion failure in StreamFace (:issue:`1856`)
+
+  + Update websocketpp submodule (:issue:`1903`)
+
+  + Replace FaceFlags with individual fields (:issue:`1992`)
+
+  + Drop WebSocket message if the size is larger than maximum NDN packet size (:issue:`2081`)
+
+  + Make EthernetFace more robust against errors (:issue:`1984`)
+
+  + Prevent potential infinite loop in TcpFactory and UdpFactory (:issue:`2292`)
+
+  + Prevent crashes when attempting to create a UdpFace over a half-working connection
+    (:issue:`2311`)
+
+  + Support MTU larger than 1500 in EthernetFace (for jumbo frames) (:issue:`2305`)
+
+  + Re-enable EthernetFace on OS X platform with boost >=1.57.0 (:issue:`1922`)
+
+  + Fix ``ioctl()`` calls on platforms where libpcap uses ``/dev/bpf*`` (:issue:`2327`)
+
+  + Fix overhead estimation in NDNLP slicer (:issue:`2317`)
+
+  + Replace usage of deprecated EventEmitter with Signal in Face abstractions (:issue:`2300`)
+
+  + Fix NDNLP PartialMessage cleanup scheduling (:issue:`2414`)
+
+  + Remove unnecessary use of DNS resolver in (Udp|Tcp|WebSocket)Factory (:issue:`2422`)
+
+- **Forwarding**
+
+  + Updates related to NccStrategy
+
+    * Fix to prevent remembering of suboptimal upstreams (:issue:`1961`)
+
+    * Optimizing FwNccStrategy/FavorRespondingUpstream test case (:issue:`2037`)
+
+    * Proper detection for new PIT entry (:issue:`1971`)
+
+    * Use UnitTestTimeFixture in NCC test case (:issue:`2163`)
+
+    * Fix loop back to sole downstream (:issue:`1998`)
+
+  + Updates related to BestRoute strategy
+
+    + Redesign best-route v2 strategy test case (:issue:`2126`)
+
+    + Fix clang compilation error in best-route v2 test case (:issue:`2179`)
+
+    + Use UnitTestClock in BestRouteStrategy2 test (:issue:`2160`)
+
+  + Allow strategies limited access to FaceTable (:issue:`2272`)
+
+- **Tables**
+
+  + Ensure that eviction of unsolicited Data is done in FIFO order (:issue:`2043`)
+
+  + Simplify table implementations with C++11 features (:issue:`2100`)
+
+  + Fix issue with Fib::removeNextHopFromAllEntries invalidating NameTree iterator
+    (:issue:`2177`)
+
+  + Replace deprecated EventEmitter with Signal in FaceTable (:issue:`2272`)
+
+  + Refactored implementation of ContentStore based on std::set (:issue:`2254`)
+
+- **Management**
+
+  + Allow omitted FaceId in faces/create command (:issue:`2031`)
+
+  + Avoid deprecated ``ndn::nfd::Controller(Face&)`` constructor (:issue:`2039`)
+
+  + Enable check of command length before accessing verb (:issue:`2151`)
+
+  + Rename FaceEntry to Route (:issue:`2159`)
+
+  + Insert RIB command prefixes into RIB (:issue:`2312`)
+
+- **Tools**
+
+  + Display face attribute fields instead of FaceFlags in ``nfd-status`` and
+    ``nfd-status-http-server`` output (:issue:`1991`)
+
+  + Fix ``nfd-status-http-server`` hanging when nfd-status output is >64k (:issue:`2121`)
+
+  + Ensure that ``ndn-autoconfig`` canonizes FaceUri before sending commands to NFD
+    (:issue:`2387`)
+
+  + Refactored ndn-autoconfig implementation (:issue:`2421`)
+
+  + ndn-autoconfig will now register also ``/localhop/nfd`` prefix towards the hub (:issue:`2416`)
+
+- **Tests**
+
+  + Use UnitTestClock in Forwarder persistent loop test case (:issue:`2162`)
+
+  + Use LimitedIo in FwForwarder/SimpleExchange test case (:issue:`2161`)
+
+- **Build**
+
+  + Fix build error with python3 (:issue:`1302`)
+
+  + Embed CI build and test running script
+
+  + Properly disable assertions in release builds (:issue:`2139`)
+
+  + Embed setting of ``PKG_CONFIG_PATH`` variable to commonly used values (:issue:`2178`)
+
+  + Add conditional compilation for NetworkInterface and PrivilegeHelper
+
+  + Support tools with multiple translation units (:issue:`2344`)
+
+Removals
+^^^^^^^^
+
+- Remove ``listen`` option from unix channel configuration (:issue:`2188`)
+
+- Remove usage of deprecated ``MetaInfo::TYPE_*`` constants (:issue:`2128`)
+
+- Eliminate MapValueIterator in favor of ``boost::adaptors::map_values``
diff --git a/docs/release-notes/release-notes-0.3.1.rst b/docs/release-notes/release-notes-0.3.1.rst
new file mode 100644
index 0000000..59ecfce
--- /dev/null
+++ b/docs/release-notes/release-notes-0.3.1.rst
@@ -0,0 +1,73 @@
+NFD version 0.3.1
+-----------------
+
+Release date: March 3, 2015
+
+Changes since version 0.3.0:
+
+New features:
+^^^^^^^^^^^^^
+
+- ``nfd`` and ``nrd`` daemons are now merged into a single process using separate threads
+  (:issue:`2489`)
+
+- **Core**
+
+  - Extend ConfigFile to support passing a parsed ConfigSection (:issue:`2495`)
+
+  - Allow customization of Logger and LoggerFactory (:issue:`2433`)
+
+  - Make global io_service, scheduler, and global random generator thread-local, and logger
+    thread-safe (:issue:`2489`)
+
+- **Forwarding**
+
+  - Introduce exponential back-off interest retransmission suppression mechanism and enable
+    its use in the best-route strategy (:issue:`1913`)
+
+  - Strategies are now registered with a macro, making it simpler to introduce new strategies
+    to NFD codebase (:issue:`2410`)
+
+- **Tables**
+
+  - ContentStore now recognizes CachingPolicy-NoCache from LocalControlHeader (:issue:`2185`)
+
+Updates and bug fixes:
+^^^^^^^^^^^^^^^^^^^^^^
+
+- **Faces**
+
+  - Remove Tcp|UdpChannel::connect overloads that perform DNS resolution (:issue:`2422`)
+
+  - Properly handle error conditions in UdpChannel::newPeer (:issue:`2516`)
+
+  - Fix inconsistency of UDP face timeouts in sample `nfd.conf` and actual defaults
+    (:issue:`2473`)
+
+  - Introduce Face-specific logging macros (:issue:`2450`)
+
+  - Refactor handling of LinkType face trait and fix FaceStatus reporting: the link type was
+    not properly propagated (:issue:`2563`)
+
+  - Avoid exceptions in NDNLP PartialMessageStore (:issue:`2261`)
+
+  - Update websocketpp to version 0.5.1
+
+- **Tables**
+
+  - Reduce priority of DeadNonceList log messages from DEBUG to TRACE
+
+- **Management**
+
+  - Change register/unregister logging in RibManager to INFO level (:issue:`2547`)
+
+- **Tools**
+
+  - Change prefix for :ref:`the local hub prefix discovery <local-prefix-discovery>` to be
+    under ``/localhop/nfd`` (:issue:`2479`, :issue:`2512`)
+
+- **Tests**
+
+  - Change naming conventions for unit test files and test suite names (:issue:`2497`)
+
+  - Fix segfault in TableNameTree test suite when all test logs are enabled (:issue:`2564`)
diff --git a/docs/release-notes/release-notes-0.3.2.rst b/docs/release-notes/release-notes-0.3.2.rst
new file mode 100644
index 0000000..c785ccb
--- /dev/null
+++ b/docs/release-notes/release-notes-0.3.2.rst
@@ -0,0 +1,69 @@
+NFD version 0.3.2
+-----------------
+
+Release date: May 12, 2015
+
+Changes since version 0.3.1:
+
+New features:
+^^^^^^^^^^^^^
+
+- **Tables**
+
+  * Change lookup API to allow async implementations  of ContentStore (:issue:`2411`)
+
+- **Management**
+
+  * Perform FIB updates before modifying RIB (:issue:`1941`)
+
+Updates and bug fixes:
+^^^^^^^^^^^^^^^^^^^^^^
+
+- **Documentation**
+
+  * Update planned Features: face enhancements (:issue:`2617`)
+
+  * Updated NFD's developer guide to reflect new changes and adding a new section on
+    NFD/ndn-cxx unit testing
+
+- **Face**
+
+  * Refactor channel acceptors to avoid use of shared pointers (:issue:`2613`)
+
+  * Refactor code to avoid deprecated `Block::fromBuffer` overloads (:issue:`2553`)
+
+  * Refactor code to use move semantics for sockets where possible (:issue:`2613`)
+
+  * Switch to non-throwing version of websocketpp APIs (:issue:`2630`)
+
+- **Forwarding**
+
+  * Extend measurements lifetime in AccessStrategy (:issue:`2452`)
+
+- **Management**
+
+  * Stop removed namespace from inheriting ancestor route (:issue:`2757`)
+
+  * Fix TestFibUpdates/EraseFace on Ubuntu 14.04 32-bit (:issue:`2697`)
+
+- **Tools**
+
+  * Fix hanging of `nfdc` on wrong input (:issue:`2690`)
+
+- **Build**
+
+  * Make build scripts compatible with Python 3 (:issue:`2625`)
+
+  * Get rid of the last use of ndn::dns in NFD (:issue:`2422`)
+
+  * Update waf build system to version 1.8.9 (:issue:`2209`, :issue:`2657`, :issue:`2792`)
+
+  * Tweak default pkg-config search paths (:issue:`2711`)
+
+  * Use C version of snprintf (:issue:`2299`)
+
+  * Emulate `std::to_string` when it is missing (:issue:`2299`)
+
+  * Fix several "defined but not used" warnings with gcc-5 (:issue:`2767`)
+
+  * Disable precompiled headers on OS X with clang < 6.1.0 (:issue:`2804`)
diff --git a/docs/release-notes/release-notes-0.3.3.rst b/docs/release-notes/release-notes-0.3.3.rst
new file mode 100644
index 0000000..25010c5
--- /dev/null
+++ b/docs/release-notes/release-notes-0.3.3.rst
@@ -0,0 +1,44 @@
+NFD version 0.3.3
+-----------------
+
+Release date: July 1, 2015
+
+Changes since version 0.3.2:
+
+New features:
+^^^^^^^^^^^^^
+
+- Content Store replacement policy interface (:issue:`1207`)
+
+- Add unit file and instructions for systemd (:issue:`1586`)
+
+- NDN Essential Tools version 0.1 `<https://github.com/named-data/ndn-tools>`__ featuring:
+
+  * ``ndnpeek``, ``ndnpoke``: a pair of programs to request and make available for retrieval of
+    a single Data packet
+  * ``ndnping``, ``ndnpingserver``: reachability testing tools for Named Data Networking
+  * ``ndndump``: a traffic analysis tool that captures Interest and Data packets on the wire
+  * ``ndn-dissect``: an NDN packet format inspector. It reads zero or more NDN packets from
+    either an input file or the standard input, and displays the Type-Length-Value (TLV)
+    structure of those packets on the standard output.
+
+Updates and bug fixes:
+^^^^^^^^^^^^^^^^^^^^^^
+
+- Avoid loopback new Interest in AccessStrategy (:issue:`2831`)
+
+- Simplified implementation of ``nfd-status`` using SegmentFetcher utility class (:issue:`2456`)
+
+Deprecated:
+^^^^^^^^^^^
+
+- ``ndn-tlv-peek`` and ``ndn-tlv-poke`` command-line tools: use ``ndnpeek`` and ``ndnpoke``
+  programs from NDN Essential Tools repository `<https://github.com/named-data/ndn-tools>`__.
+
+Upcoming features:
+^^^^^^^^^^^^^^^^^^
+
+- NDNLPv2 (http://redmine.named-data.net/projects/nfd/wiki/NDNLPv2, :issue:`2520`,
+  :issue:`2879`, :issue:`2763`, :issue:`2883`, :issue:`2841`, :issue:`2866`)
+
+- Refactored implementation of NFD management (:issue:`2200`, :issue:`2107`)
diff --git a/docs/release-notes/release-notes-0.3.4.rst b/docs/release-notes/release-notes-0.3.4.rst
new file mode 100644
index 0000000..822c4ff
--- /dev/null
+++ b/docs/release-notes/release-notes-0.3.4.rst
@@ -0,0 +1,58 @@
+NFD version 0.3.4
+-----------------
+
+Release date: August 31, 2015
+
+Changes since version 0.3.3:
+
+New features:
+^^^^^^^^^^^^^
+
+- Boolean Face property IsOnDemand has been replaced with multistate FacePersistency
+  property (:issue:`2989`, :issue:`3018`): persistent (Face exists as long as there are no
+  system or socket errors), on-demand (Face is removed after inactivity period), and
+  permanent (Face exists unless explicitly destroyed by the management).
+
+  Currently, only UDP faces are allowed to be permanent.  However, management interface to
+  create UDP permanent faces or switch UDP to permanent state will be available in the
+  next release (:issue:`2991`).
+
+- Least Recently Used policy for Content Store (:issue:`2219`)
+
+  Currently, changing the policy requires a minor change in NFD source code.
+  Configuration interface is coming in the next release (:issue:`3148`)
+
+
+Updates and bug fixes:
+^^^^^^^^^^^^^^^^^^^^^^
+
+- Update of NDN Essential Tools to version 0.2 `<https://github.com/named-data/ndn-tools>`__
+  with code improvements and the following new tools:
+
+  * PIB service to manage the public information of keys and publish certificates
+    (:issue:`3018`)
+  * A Wireshark dissector for NDN packets (:issue:`3092`)
+
+- RibManager constructor now accepts KeyChain as a parameter, preparing it for simplifying
+  implementation with the new ``ndn::Dispatcher`` class (:issue:`2390`)
+
+- Fix HTML rendering of nfd-status-http-server output in some browsers (:issue:`3019`)
+
+- Enable automatic re-creation of multicast faces when network connectivity changes
+  (:issue:`2460`)
+
+- Enhance exception throwing with Boost Exception library (:issue:`2541`)
+
+Deprecated:
+^^^^^^^^^^^
+
+- BroadcastStrategy (``/localhost/nfd/strategy/broadcast``) renamed as MulticastStrategy
+  (``/localhost/nfd/strategy/multicast``) (:issue:`3011`)
+
+Upcoming features (partially finished in development branches):
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- NDNLPv2 (http://redmine.named-data.net/projects/nfd/wiki/NDNLPv2, :issue:`2520`,
+  :issue:`2879`, :issue:`2763`, :issue:`2883`, :issue:`2841`, :issue:`2866`)
+
+- Refactored implementation of NFD management (:issue:`2200`, :issue:`2107`)
diff --git a/docs/release-notes/release-notes-0.4.0.rst b/docs/release-notes/release-notes-0.4.0.rst
new file mode 100644
index 0000000..f7bf0cf
--- /dev/null
+++ b/docs/release-notes/release-notes-0.4.0.rst
@@ -0,0 +1,80 @@
+NFD version 0.4.0
+-----------------
+
+Release date: TBD
+
+.. note::
+   Version 0.4.0 introduces several breaking changes to API and wire format of management protocols
+
+Changes since version 0.3.4:
+
+New features:
+^^^^^^^^^^^^^
+
+- **(breaking change)** Refactored implementation of face system (:issue:`3088`,
+  :issue:`3104`, :issue:`3165`, :issue:`3168`, :issue:`3225`, :issue:`3226`)
+
+  The abstraction to send/receive NDN packets has been split into Transport, LinkService, and Face:
+
+  * *Transport* provides delivery of the data blocks over specific underlying channels
+    (raw ethernet packets, unicast/multicast UDP datagrams, TCP and WebSocket streams)
+
+    Implemented: :NFD:`UnixStreamTransport`, :NFD:`UnicastUdpTransport`, :NFD:`MulticastUdpTransport`.
+
+  * *LinkService* provides an "adaptation" layer to translate between NDN packets and data
+    blocks communicated through Transport.  For example, LinkService can provide packet
+    fragmentation and reassembly services.
+
+    Implemented: :NFD:`GenericLinkService`
+
+  * *Face* provides combines Transport and LinkServices, providing high-level interface to work
+    with Interest/Data/Nack packets inside NFD.
+
+  .. note::
+     This feature replaces support for signaling between local applications and NFD from
+     LocalControlHeader with NDNLPv2 protocol.  If your application uses
+     LocalControlHeader features, it must be updated to use the new protocol (e.g., update
+     to use ndn-cxx >= 0.4.0)
+
+- Support for NDNLPv2 (http://redmine.named-data.net/projects/nfd/wiki/NDNLPv2,
+  :issue:`2520`, :issue:`2763`, :issue:`2841`)
+
+  * Network NACK (:issue:`2883`)
+
+- Networking NACK in pipelines and best-route strategy (:issue:`3156`)
+
+- Refactored implementation of NFD management (:issue:`2200`, :issue:`2107`)
+
+- Interest forwarding processes Link included in interest packets (:issue:`3034`)
+
+  .. note::
+     This feature requires proper defintion of new ``tables.network_region`` section in
+     the NFD config file (:issue:`3159`)
+
+- Full support for UDP permanent faces (:issue:`2993`, :issue:`2989`, :issue:`3018`)
+
+Updates and bug fixes:
+^^^^^^^^^^^^^^^^^^^^^^
+
+- Display extended information for fatal NFD errors (:issue:`2541`)
+
+- Compilation fixes for clang-700.0.72 (Apple LLVM 7.0.0) (:issue:`3209`)
+
+- Properly handle exception from NetworkMonitor when the platform doesn't support it
+  (:issue:`3195`)
+
+Deprecated:
+^^^^^^^^^^^
+
+- BroadcastStrategy (``/localhost/nfd/strategy/broadcast``) renamed as MulticastStrategy
+  (``/localhost/nfd/strategy/multicast``) (:issue:`3011`)
+
+Planned features for future releases:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Improvements and extension of NDNLPv2 support
+
+  * New transports
+  * New link service implementation, including support for fragmentation and assembly
+
+- Improved support for automatic prefix propagation (:issue:`3211`, :issue:`2413`)
diff --git a/docs/releases.rst b/docs/releases.rst
new file mode 100644
index 0000000..35d4b70
--- /dev/null
+++ b/docs/releases.rst
@@ -0,0 +1,72 @@
+NFD Versions
+++++++++++++
+
+.. toctree::
+   :hidden:
+   :maxdepth: 1
+
+   release-notes/release-notes-0.4.0
+   release-notes/release-notes-0.3.4
+   release-notes/release-notes-0.3.3
+   release-notes/release-notes-0.3.2
+   release-notes/release-notes-0.3.1
+   release-notes/release-notes-0.3.0
+   release-notes/release-notes-0.2.0
+   release-notes/release-notes-0.1.0
+
+* **NFD version 0.4.0**
+  (:doc:`Release Notes <release-notes/release-notes-0.4.0>`, `Documentation <http://named-data.net/doc/NFD/0.4.0/>`__)
+
+  `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.4.0>`__,
+  `src (tarball) <http://named-data.net/downloads/nfd-0.4.0.tar.bz2>`__ (`checksum <http://named-data.net/downloads/nfd-0.4.0.tar.bz2.sha256>`__)
+
+* **NFD version 0.3.4**
+  (:doc:`Release Notes <release-notes/release-notes-0.3.4>`, `Documentation <http://named-data.net/doc/NFD/0.3.4/>`__)
+
+  `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.3.4>`__,
+  `src (tarball) <http://named-data.net/downloads/nfd-0.3.4.tar.bz2>`__ (`checksum <http://named-data.net/downloads/nfd-0.3.4.tar.bz2.sha256>`__)
+
+* **NFD version 0.3.3**
+  (:doc:`Release Notes <release-notes/release-notes-0.3.3>`, `Documentation <http://named-data.net/doc/NFD/0.3.3/>`__)
+
+  `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.3.3>`__,
+  `src (tarball) <http://named-data.net/downloads/nfd-0.3.3.tar.bz2>`__ (`checksum <http://named-data.net/downloads/nfd-0.3.3.tar.bz2.sha256>`__)
+
+* **NFD version 0.3.2**
+  (:doc:`Release Notes <release-notes/release-notes-0.3.2>`, `Documentation <http://named-data.net/doc/NFD/0.3.2/>`__)
+
+  `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.3.2>`__,
+  `src (tarball) <http://named-data.net/downloads/nfd-0.3.2.tar.bz2>`__ (`checksum <http://named-data.net/downloads/nfd-0.3.2.tar.bz2.sha256>`__)
+
+* **NFD version 0.3.1**
+  (:doc:`Release Notes <release-notes/release-notes-0.3.1>`, `Documentation <http://named-data.net/doc/NFD/0.3.1/>`__)
+
+  `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.3.1>`__,
+  `src (tarball) <http://named-data.net/downloads/nfd-0.3.1.tar.bz2>`__ (`checksum <http://named-data.net/downloads/nfd-0.3.1.tar.bz2.sha256>`__)
+
+* **NFD version 0.3.0**
+  (:doc:`Release Notes <release-notes/release-notes-0.3.0>`, `Documentation <http://named-data.net/doc/NFD/0.3.0/>`__)
+
+  `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.3.0>`__,
+  `src (tarball) <http://named-data.net/downloads/nfd-0.3.0.tar.bz2>`__ (`checksum <http://named-data.net/downloads/nfd-0.3.0.tar.bz2.sha256>`__)
+
+* **NFD version 0.2.0**
+  (:doc:`Release Notes <release-notes/release-notes-0.2.0>`, `Documentation <http://named-data.net/doc/NFD/0.2.0/>`__)
+
+  `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.2.0>`__,
+  `src (tarball) <http://named-data.net/downloads/nfd-0.2.0.tar.bz2>`__ (`checksum <http://named-data.net/downloads/nfd-0.2.0.tar.bz2.sha256>`__)
+
+  - NFD version 0.2.0-rc1
+    `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.2.0-rc1>`__
+
+  - NFD version 0.2.0-rc2
+    `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.2.0-rc2>`__
+
+* **NFD version 0.1.0**
+  (:doc:`Release Notes <release-notes/release-notes-0.1.0>`, `Documentation <http://named-data.net/doc/NFD/0.1.0/>`__)
+
+  `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.1.0>`__,
+  `src (tarball) <http://named-data.net/downloads/nfd-0.1.0.tar.bz2>`__ (`checksum <http://named-data.net/downloads/nfd-0.1.0.tar.bz2.sha256>`__)
+
+  - NFD version 0.1.0-rc1
+    `src (git) <https://github.com/named-data/NFD/releases/tag/NFD-0.1.0-rc1>`__
diff --git a/wscript b/wscript
index 151a084..4312413 100644
--- a/wscript
+++ b/wscript
@@ -24,7 +24,7 @@
 NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
 """
 
-VERSION = "0.3.4"
+VERSION = "0.3.91"
 APPNAME = "nfd"
 BUGREPORT = "http://redmine.named-data.net/projects/nfd"
 URL = "http://named-data.net/doc/NFD/"
