diff --git a/docs/source/boost-custom-install.rst b/docs/source/boost-custom-install.rst
index 860269a..17a9564 100644
--- a/docs/source/boost-custom-install.rst
+++ b/docs/source/boost-custom-install.rst
@@ -1,7 +1,7 @@
 .. _boost-custom-install:
 
-Installing boost libraries
-==========================
+.. Installing boost libraries
+.. ++++++++++++++++++++++++++
 
 Normally, to compile and install boost libraries in non-privileged mode, you would need to issue following commands (e.g., for boost version 1.51.0)::
 
@@ -16,7 +16,7 @@
 However, after the following steps you may still not able to use ndnSIM.
 
 Common pitfalls
----------------
+^^^^^^^^^^^^^^^
 
 The common pitfalls is with boost iostreams library, which is failed to build because of missing bzip2 library.
 This problem can be easily fixed by downloading and installing bzip2 library, e.g., using the following steps::
@@ -40,7 +40,7 @@
 
 
 Compiling NS-3 with custom boost libraries
-==========================================
+++++++++++++++++++++++++++++++++++++++++++
 
 The following commands should allow compilation and run of NS-3 simulations with custom install of boost libraries::
 
diff --git a/docs/source/examples.rst b/docs/source/examples.rst
index 1f41990..c1161d3 100644
--- a/docs/source/examples.rst
+++ b/docs/source/examples.rst
@@ -33,7 +33,7 @@
 .. literalinclude:: ../../examples/ndn-simple.cc
    :language: c++
    :linenos:
-   :lines: 20-27,50-
+   :lines: 20-27,48-
    :emphasize-lines: 30-33,37-49
 
 If this code is placed into ``scratch/ndn-simple.cc`` and NS-3 is compiled in debug mode, you can run and see progress of the
@@ -73,7 +73,7 @@
 FIB is populated using :ndnsim:`GlobalRoutingHelper` (see :doc:`helpers`).
 
 Consumer is simulated using :ndnsim:`ConsumerCbr` reference application and generates Interests towards the producer
-with frequency of 10 Interests per second (see :doc:`applications`).
+with frequency of 100 interests per second (see :doc:`applications`).
 
 Producer is simulated using :ndnsim:`Producer` class, which is used to satisfy all incoming Interests with virtual payload data (1024 bytes).
 
@@ -82,8 +82,8 @@
 .. literalinclude:: ../../examples/ndn-grid.cc
    :language: c++
    :linenos:
-   :lines: 20-27,55-
-   :emphasize-lines: 30-32,34-37,52-56
+   :lines: 20-27,53-
+   :emphasize-lines: 28,31-33,35-38,53-57
     
 
 If this code is placed into ``scratch/ndn-grid.cc`` and NS-3 is compiled in debug mode, you can run and see progress of the
@@ -98,21 +98,43 @@
 
 Instead of defining topology directly as in :ref:`simple-scenario` or using specialized helpers as in :ref:`9-node-grid-example`, ndnSIM provides experimental extended versions of TopologyReader classes: :ndnsim:`AnnotatedTopologyReader` and :ndnsim:`RocketfuelWeightsReader`.
 
-While :ndnsim:`RocketfuelWeightsReader` is a specialized version intended to be used with `Rocketfuel <http://www.cs.washington.edu/research/networking/rocketfuel/>`_ topology and link weights files (examples will be provided later), :ndnsim:`AnnotatedTopologyReader` is a general-use tool that allows creation of any custom topologies.  
-The based format for the input file the :ndnsim:`AnnotatedTopologyReader` expects:
+While :ndnsim:`RocketfuelWeightsReader` is a specialized version intended to be used with `Rocketfuel <http://www.cs.washington.edu/research/networking/rocketfuel/>`_ topology and link weights files (examples will be provided later), :ndnsim:`AnnotatedTopologyReader` is a more general-use class that uses simple user-readable format.
+
+:ndnsim:`AnnotatedTopologyReader` expects the following format:
 
 .. literalinclude:: ../../examples/topologies/topo-grid-3x3.txt
    :language: bash
    :linenos:
    :emphasize-lines: 8,24
 
-If you save the topology file to `topo-grid-3x3.txt` into ``src/ndnSIM/examples/topology/topo-grid-3x3.txt`` directory, then the following code will duplicate the functionality of :ref:`9-node-grid-example` but with the use of :ndnsim:`AnnotatedTopologyReader`:
+
+This scenario (``ndn-grid-topo-plugin.cc``) duplicates the functionality of :ref:`9-node-grid-example` but with the use of :ndnsim:`AnnotatedTopologyReader`.
+
+.. aafig::
+    :aspect: 60
+    :scale: 120
+
+    /--------\	    /-\	        /-\
+    |Consumer|<---->| |<------->| |
+    \--------/	    \-/	        \-/
+	^   	     ^ 	         ^
+        |            |           |   1Mbps/10ms delay
+        v            v           v
+       /-\          /-\         /-\
+       | |<-------->| |<------->| |
+       \-/          \-/         \-/
+	^   	     ^ 	         ^
+        |            |           |
+        v            v           v
+       /-\	    /-\	     /--------\
+       | |<-------->| |<---->|Producer|
+       \-/          \-/      \--------/
 
 .. literalinclude:: ../../examples/ndn-grid-topo-plugin.cc
    :language: c++
    :linenos:
-   :lines: 20-25,53-
-   :emphasize-lines: 13-15,26-28
+   :lines: 20-26,51-
+   :emphasize-lines: 14-16,20,27-30
     
 As you can see, scenario code became more compact and more readable.
 
@@ -124,15 +146,15 @@
 For more information about `Names` class, please refer to `NS-3 documentation <.. http://www.nsnam.org/doxygen/classns3_1_1_names.html>`_
 .
 
-If the topology file is placed into ``src/ndnSIM/examples/topology/topo-grid-3x3.txt`` and the code is placed into ``scratch/ndn-grid-topo-plugin.cc``, you can run and see progress of the simulation using the following command (in optimized mode nothing will be printed out)::
+If the topology file is placed into ``src/ndnSIM/examples/topologies/topo-grid-3x3.txt`` and the code is placed into ``scratch/ndn-grid-topo-plugin.cc``, you can run and see progress of the simulation using the following command (in optimized mode nothing will be printed out)::
 
     NS_LOG=ndn.Consumer:ndn.Producer ./waf --run=ndn-grid-topo-plugin
 
 
-6-node topology
----------------
+6-node bottleneck topology
+--------------------------
 
-This scenario can be used for congestion-related scenarios 
+This scenario (``ndn-congestion-topo-plugin.cc``) can be used for congestion-related scenarios 
 
 .. aafig::
     :aspect: 60
@@ -152,11 +174,13 @@
 
 .. literalinclude:: ../../examples/topologies/topo-6-node.txt
     :language: bash
+    :linenos:
     :emphasize-lines: 3,13
    
 .. literalinclude:: ../../examples/ndn-congestion-topo-plugin.cc
    :language: c++
    :linenos:
+   :lines: 20-26,47-
+   :emphasize-lines: 15,21-22,29-34,41-47,52-62
 
 .. :lines: 20-25,53-
-.. :emphasize-lines: 13-15,26-28
diff --git a/docs/source/faq.rst b/docs/source/faq.rst
index 3c3f9ec..9ec64b3 100644
--- a/docs/source/faq.rst
+++ b/docs/source/faq.rst
@@ -8,8 +8,9 @@
 
     I'm trying to use custom boost libraries, but something is going wrong. What should I do?
 
-Please refer to :ref:`boost-custom-install` section for an example how custom boost libraries could be built.
+.. Please refer to :ref:`boost-custom-install` section for an example how custom boost libraries could be built.
 
+.. include::  boost-custom-install.rst
 
 Visualizer problems
 -------------------
diff --git a/docs/source/getting-started.rst b/docs/source/getting-started.rst
new file mode 100644
index 0000000..02ae504
--- /dev/null
+++ b/docs/source/getting-started.rst
@@ -0,0 +1,113 @@
+Getting Started
+===============
+
+Portability
+------------
+
+ndnSIM has been successfully compiled and used under Ubuntu Linux 12.04 (stock gcc, boost 1.48), Mac OS 10.8 (gcc-4.2 apple/llvm, macports gcc 4.7, boost 1.49-1.52).
+
+.. _requirements:
+
+Requirements
+-------------
+
+1. ndnSIM requires the customized version of NS-3 simulator (a number of patches required to make ndnSIM work with the latest development branch of NS-3).
+
+2. Boost libraries should be installed on the system:
+
+   * For Ubuntu::
+
+       sudo aptitude install libboost-all-dev
+
+   * For MacOS (macports)::
+
+       sudo port instal boost
+
+.. note::
+   !!! If you do not have root permissions to install boost, you can install it in your home folder.  However, you need to be make sure that `libboost_iostreams` library is successfully compiled and is installed.  Please refer to :doc:`the following example <boost-custom-install>` for the hints how to successfully compile and install boost libraries on Ubuntu Linux. 
+
+
+3. If you are planning to use other modules, like visualizer, a number of additional dependencies should be installed.  For example, in
+order to run `visualizer`_ module, the following should be installed:
+
+   * For Ubuntu::
+
+       sudo apt-get install python-dev python-pygraphviz python-kiwi
+       sudo apt-get install python-pygoocanvas python-gnome2
+       sudo apt-get install python-gnomedesktop python-rsvg ipython
+
+   * For MacOS (macports)::
+
+       sudo port install  py27-pygraphviz py27-goocanvas
+
+.. py27-kiwi 
+
+.. _visualizer: http://www.nsnam.org/wiki/index.php/PyViz
+
+Downloading ndnSIM source
+-------------------------
+
+Download a custom branch of NS-3 that contains all necessary patches and more::
+
+	mkdir ndnSIM
+	cd ndnSIM
+	git clone git://github.com/cawka/ns-3-dev-ndnSIM.git ns-3
+	git clone git://github.com/cawka/pybindgen.git pybindgen
+
+The first command is to create a directory, which will contain everything NS-3 related.  The bare minimum is just base NS-3 (the first clone above). The second clone gets a module necessary to build python bindings, which are necessary for the visualizer module.  
+
+Finally, clone actual ndnSIM code and place it in src/ folder::
+
+	git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM
+
+There are quite a few modification to the base NS-3 code that are necessary to run ndnSIM, and the code is periodically synchronized with the official developer branch.  Eventually, all the changes will be merged to the official branch, but for the time being, it is necessary to use the customized branch.
+
+Compiling and running ndnSIM
+----------------------------
+
+ndnSIM uses standard NS-3 compilation procedure.  Normally the following commands should be sufficient to configure and build ndnSIM with python bindings enabled::
+
+	cd <ns-3-folder>
+	./waf configure --enable-examples --enable-ndn-plugins=topology,mobility
+	./waf
+
+On MacOS (with macports), you may need to modify the configure command to use macports version of python::
+
+	cd <ns-3-folder>
+	./waf configure --with-python=/opt/local/bin/python2.7 --enable-examples --enable-ndn-plugins=topology,mobility
+	./waf
+
+Python bindings is an optional and not very stable feature of NS-3 simulator.  It is possible to disable python bindings compilation either to speed up compilation or to avoid certain compilation errors (e.g., "Could not find a task generator for the name 'ns3-visualizer'")::
+
+	cd <ns-3-folder>
+	./waf configure --disable-python --enable-examples --enable-ndn-plugins=topology,mobility
+	./waf
+
+For more configuration options, please refer to ``./waf --help``.
+
+To run :doc:`sample ndnSIM simulations <examples>`::
+
+	./waf --run=ndn-simple
+
+or::
+
+	./waf --run=ndn-grid
+
+If you have compiled with python bindings, then you can try to run these simulations with visualizer::
+
+	./waf --run=ndn-simple --vis
+
+or::
+
+	./waf --run=ndn-grid --vis
+
+.. note::
+   Do not forget to configure and compile NS-3 in optimized mode (``./waf configure -d optimized``) in order to run actual simulations.
+
+Additional compiling options
+++++++++++++++++++++++++++++
+
+ndnSIM contains a number of NS-3 extensions that are not technically part of the ndnSIM.  Right now there are two optional plugins---topology and mobility---which can be enabled using the following configuration option::
+
+	./waf configure --enable-ndn-plugins=topology,mobility
+
diff --git a/docs/source/helpers.rst b/docs/source/helpers.rst
index b73a1ef..efe27f8 100644
--- a/docs/source/helpers.rst
+++ b/docs/source/helpers.rst
@@ -9,79 +9,26 @@
 
 :ndnsim:`StackHelper` is used to install ndnSIM network stack on requested nodes, as well to provide a simple way configure several important parameters of NDN simulation.
 
-Example::
+Example:
 
-   ndn::StackHelper ndnHelper;
-   NodeContainer nodes;
-   ...
-   ndnHelper.Install (nodes);
+.. code-block:: c++
 
-Forwarding strategy
-+++++++++++++++++++
+        ndn::StackHelper ndnHelper;
+        NodeContainer nodes;
+        ...
+        ndnHelper.Install (nodes);
 
-A desired :ndnsim:`forwarding strategy <ForwardingStrategy>` parameter need to be set before installing stack on a node.
+Routing
++++++++
 
-  Currently, there are 2 implemented forwarding strategies that can be used in simulations:
-
-  - :ndnsim:`Flooding` (default)
-
-      Interests will be forwarded to all available faces available for a route (FIB entry).
-      If there are no available GREEN or YELLOW faces, interests is dropped.
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::Flooding");
-	 ...
-	 ndnHelper.Install (nodes);
-	 
-      
-
-  - :ndnsim:`SmartFlooding`
-
-      If GREEN face is available, Interest will be sent to the highest-ranked GREEN face. 
-      If not, Interest will be forwarded to all available faces available for a route (FIB entry)/
-      If there are no available GREEN or YELLOW faces, interests is dropped.
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::SmartFlooding");
-	 ...
-	 ndnHelper.Install (nodes);
-
-  - :ndnsim:`BestRoute`
-
-      If GREEN face is available, Interest will be sent to the highest-ranked GREEN face.
-      If not, Interest will be forwarded to the highest-ranked YELLOW face.
-      If there are no available GREEN or YELLOW faces, interests is dropped.
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
-	 ...
-	 ndnHelper.Install (nodes);
-
-Default routes
-++++++++++++++
+All forwarding strategies require knowledge of where Interests can be forwarded (Forwarding Information Base).  
+Unlike IP routing, this knowledge may be imprecise, but without such knowledge forwarding strategies will not be able to make any decision and will drop any Interests.
 
 .. note::
-   Disabled by default
-
-In simple topologies, like in :doc:`examples <examples>`, or when
-simulating broadcast environment, it is possible to set up *default*
-FIB entries using :ndnsim:`StackHelper::SetDefaultRoutes` call.
-More specifically, every installed NDN stack will have a FIB entry to ``/`` prefix, containing all available faces.
-
-The following should be done before installing stack on a node:
-
-  .. code-block:: c++
-
-     ndnHelper.SetDefaultRoutes (true);
-     ...
-     ndnHelper.Install (nodes);
-
+   By default, all nodes have empty FIB.  You need either to manually configure routes, use global routing controller, or (not recommended) enable default routes.
 
 Manually routes
-+++++++++++++++
+^^^^^^^^^^^^^^^
 
 Routes can be configured manually using :ndnsim:`StackHelper::AddRoute` static methods of :ndnsim:`StackHelper`.
 
@@ -97,14 +44,8 @@
      int32_t metric = ...     // some routing metric
      ndn::StackHelper::AddRoute (node, prefix, face, metric);
 
-
-.. Enable optional interest limiting
-.. +++++++++++++++++++++++++++++++++
-
-.. EnableLimits
-
-GlobalRoutingHelper
------------------------
+Global routing controller
+^^^^^^^^^^^^^^^^^^^^^^^^^
 
 To simplify FIB management in large topologies, ndnSIM contains a global routing controller (:ndnsim:`helper <GlobalRoutingHelper>` and :ndnsim:`special interface <GlobalRouter>`), similar in spirit to ``Ipv4GlobalRoutingHelper``.
 
@@ -134,6 +75,154 @@
    
      cdnGlobalRoutingHelper.CalculateRoutes ();
    
+Default routes
+^^^^^^^^^^^^^^
+
+In simple topologies, like in :doc:`examples <examples>`, or when
+simulating broadcast environment, it is possible to set up *default*
+FIB entries using :ndnsim:`StackHelper::SetDefaultRoutes` call.
+More specifically, every installed NDN stack will have a FIB entry to ``/`` prefix, containing all available faces.
+
+The following should be done before installing stack on a node:
+
+  .. code-block:: c++
+
+     ndnHelper.SetDefaultRoutes (true);
+     ...
+     ndnHelper.Install (nodes);
+
+
+Content Store
++++++++++++++
+
+ndnSIM comes with several different in-memory :ndnsim:`content store <ndn::ContentStore>` implementations, featuring different cache replacement policies.
+
+.. note:
+
+    The default content store uses LRU replacement policity and constrained with 100 cached ContentObjects.
+
+To select a particular content store and configure its capacity, use :ndnsim:`SetContentStore <ndn::StackHelper::SetContentStore>` helper method:
+
+- :ndnsim:`Least Recently Used (LRU) <ndn::cs::Lru>` (default):
+
+      .. code-block:: c++
+
+         ndnHelper.SetContentStore ("ns3::ndn::cs::Lru",
+                                    "MaxSize", "10000");
+	 ...
+	 ndnHelper.Install (nodes);
+
+- :ndnsim:`First-In-First-Out (FIFO) <ndn::cs::Fifo>`:
+
+      .. code-block:: c++
+
+         ndnHelper.SetContentStore ("ns3::ndn::cs::Fifo",
+                                    "MaxSize", "10000");
+	 ...
+	 ndnHelper.Install (nodes);
+
+- :ndnsim:`Random <ndn::cs::Random>`:
+
+      .. code-block:: c++
+
+         ndnHelper.SetContentStore ("ns3::ndn::cs::Random",
+                                    "MaxSize", "10000");
+	 ...
+	 ndnHelper.Install (nodes);
+
+.. note::
+
+    If ``MaxSize`` parameter is omitted, then will be used a default value (100).
+
+.. note::
+
+    If ``MaxSize`` is set to 0, then no limit on ContentStore will be enforced 
+
+Pending Interest Table
+++++++++++++++++++++++
+
+The current version of ndnSIM provides :ndnsim:`templated realizations <ndn::pit::PitImpl>` of :ndnsim:`PIT abstraction <ndn::Pit>`, allowing optional bounding the number of PIT entries and different replacement policies (i.e., perform different actions when limit on number of PIT entries is reached).
+
+To select a particular PIT implementation and configure its policies, use :ndnsim:`SetPit <ndn::StackHelper::SetPit>` helper method:
+
+- :ndnsim:`persistent <ndn::pit::Persistent>` (default):
+
+    New entries will be rejected if PIT size reached its limit
+
+      .. code-block:: c++
+
+         ndnHelper.SetPit ("ns3::ndn::pit::Persistent",
+                           "MaxSize", "0");
+	 ...
+	 ndnHelper.Install (nodes);
+
+- :ndnsim:`random <ndn::pit::Random>`:
+    
+    when PIT reaches its limit, random entry (could be the newly created one) will be removed from PIT;
+
+      .. code-block:: c++
+
+         ndnHelper.SetPit ("ns3::ndn::pit::Random",
+                           "MaxSize", "0");
+	 ...
+	 ndnHelper.Install (nodes);
+
+- :ndnsim:`least-recently-used <ndn::pit::Lru>`:
+
+    the least recently used entry (the oldest entry with minimum number of incoming faces) will be removed when PIT size reached its limit.
+
+      .. code-block:: c++
+
+         ndnHelper.SetPit ("ns3::ndn::pit::Lru",
+                           "MaxSize", "0");
+	 ...
+	 ndnHelper.Install (nodes);
+
+Forwarding strategy
++++++++++++++++++++
+
+A desired :ndnsim:`forwarding strategy <ForwardingStrategy>` parameter need to be set before installing stack on a node.
+
+  Currently, there are following forwarding strategies that can be used in simulations:
+
+  - :ndnsim:`Flooding` (default)
+
+      Interests will be forwarded to all available faces available for a route (FIB entry).
+      If there are no available GREEN or YELLOW faces, interests is dropped.
+
+      .. code-block:: c++
+
+         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::Flooding");
+	 ...
+	 ndnHelper.Install (nodes);
+      
+
+  - :ndnsim:`SmartFlooding`
+
+      If GREEN face is available, Interest will be sent to the highest-ranked GREEN face. 
+      If not, Interest will be forwarded to all available faces available for a route (FIB entry)/
+      If there are no available GREEN or YELLOW faces, interests is dropped.
+
+      .. code-block:: c++
+
+         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::SmartFlooding");
+	 ...
+	 ndnHelper.Install (nodes);
+
+  - :ndnsim:`BestRoute`
+
+      If GREEN face is available, Interest will be sent to the highest-ranked GREEN face.
+      If not, Interest will be forwarded to the highest-ranked YELLOW face.
+      If there are no available GREEN or YELLOW faces, interests is dropped.
+
+      .. code-block:: c++
+
+         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
+	 ...
+	 ndnHelper.Install (nodes);
+
+
+
 
 AppHelper
 ---------------
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 4391e2f..b763bc1 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -9,9 +9,9 @@
    :maxdepth: 4
 
    intro
+   getting-started
    helpers
    fw
    applications
    examples
    faq
-   boost-custom-install
diff --git a/docs/source/intro.rst b/docs/source/intro.rst
index 40bf4fd..d89f320 100644
--- a/docs/source/intro.rst
+++ b/docs/source/intro.rst
@@ -62,122 +62,9 @@
 
 .. _CCNx Project's NDN implementation: http://www.ccnx.org/
 
-Getting Started
-===============
 
-Portability
-------------
-
-ndnSIM has been successfully compiled and used under Ubuntu Linux 12.04 (stock gcc, boost 1.48), Mac OS 10.8 (gcc-4.2 apple/llvm, macports gcc 4.7, boost 1.49 or 1.50).
-
-.. _requirements:
-
-Requirements
--------------
-
-1. ndnSIM requires the customized version of NS-3 simulator (a number of patches required to make ndnSIM work with the latest development branch of NS-3).
-
-2. Boost libraries should be installed on the system:
-
-   * For Ubuntu::
-
-       sudo aptitude install libboost-all-dev
-
-   * For MacOS (macports)::
-
-       sudo port instal boost
-
-.. note::
-   !!! If you do not have root permissions to install boost, you can install it in your home folder.  However, you need to be make sure that `libboost_iostreams` library is successfully compiled and is installed.  Please refer to :doc:`the following example <boost-custom-install>` for the hints how to successfully compile and install boost libraries on Ubuntu Linux. 
-
-
-3. If you are planning to use other modules, like visualizer, a number of additional dependencies should be installed.  For example, in
-order to run `visualizer`_ module, the following should be installed:
-
-   * For Ubuntu::
-
-       sudo apt-get install python-dev python-pygraphviz python-kiwi
-       sudo apt-get install python-pygoocanvas python-gnome2
-       sudo apt-get install python-gnomedesktop python-rsvg ipython
-
-   * For MacOS (macports)::
-
-       sudo port install  py27-pygraphviz py27-goocanvas
-
-.. py27-kiwi 
-
-.. _visualizer: http://www.nsnam.org/wiki/index.php/PyViz
-
-Downloading ndnSIM source
--------------------------
-
-Download a custom branch of NS-3 that contains all necessary patches and more::
-
-	mkdir ndnSIM
-	cd ndnSIM
-	git clone git://github.com/cawka/ns-3-dev-ndnSIM.git ns-3
-	git clone git://github.com/cawka/pybindgen.git pybindgen
-
-The first command is to create a directory, which will contain everything NS-3 related.  The bare minimum is just base NS-3 (the first clone above). The second clone gets a module necessary to build python bindings, which are necessary for the visualizer module.  
-
-Finally, clone actual ndnSIM code and place it in src/ folder::
-
-	git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM
-
-There are quite a few modification to the base NS-3 code that are necessary to run ndnSIM, and the code is periodically synchronized with the official developer branch.  Eventually, all the changes will be merged to the official branch, but for the time being, it is necessary to use the customized branch.
-
-Compiling and running ndnSIM
-----------------------------
-
-ndnSIM uses standard NS-3 compilation procedure.  Normally the following commands should be sufficient to configure and build ndnSIM with python bindings enabled::
-
-	cd <ns-3-folder>
-	./waf configure --enable-examples --enable-ndn-plugins=topology,mobility
-	./waf
-
-On MacOS (with macports), you may need to modify the configure command to use macports version of python::
-
-	cd <ns-3-folder>
-	./waf configure --with-python=/opt/local/bin/python2.7 --enable-examples --enable-ndn-plugins=topology,mobility
-	./waf
-
-Python bindings is an optional and not very stable feature of NS-3 simulator.  It is possible to disable python bindings compilation either to speed up compilation or to avoid certain compilation errors (e.g., "Could not find a task generator for the name 'ns3-visualizer'")::
-
-	cd <ns-3-folder>
-	./waf configure --disable-python --enable-examples --enable-ndn-plugins=topology,mobility
-	./waf
-
-For more configuration options, please refer to ``./waf --help``.
-
-To run :doc:`sample ndnSIM simulations <examples>`::
-
-	./waf --run=ndn-simple
-
-or::
-
-	./waf --run=ndn-grid
-
-If you have compiled with python bindings, then you can try to run these simulations with visualizer::
-
-	./waf --run=ndn-simple --vis
-
-or::
-
-	./waf --run=ndn-grid --vis
-
-.. note::
-   Do not forget to configure and compile NS-3 in optimized mode (``./waf configure -d optimized``) in order to run actual simulations.
-
-Additional compiling options
-++++++++++++++++++++++++++++
-
-ndnSIM contains a number of NS-3 extensions that are not technically part of the ndnSIM.  Right now there are two optional plugins---topology and mobility---which can be enabled using the following configuration option::
-
-	./waf configure --enable-ndn-plugins=topology,mobility
-
-
-Documentation
-=============
+More documentation
+------------------
 
 Overall structure of ndnSIM is described in our `technical report <http://lasr.cs.ucla.edu/afanasyev/data/files/Afanasyev/ndnSIM-TR.pdf>`_.
 
@@ -188,7 +75,7 @@
 ..     ./waf doxygen
 
 Support
-=======
+-------
 
 The code of ndnSIM is in active development.  Bug reports (issues) as well as new feature implementation are always welcome. 
 
@@ -230,14 +117,16 @@
 +-----------------+---------------------------------------------------------------------+
 
 Logging
------------------
+-------
 
-Almost every component in ndnSIM exports logging interface, so it is possible in debug compilation of simulator to track many details. For example, by enabling logging of :ndnsim:`Face` and :ndnsim:`Consumer` will show everything what happens on :ndnsim:`Face` and :ndnsim:`Consumer` classes::
+Almost every component in ndnSIM exports logging interface, so in debug compilation it is possible to track many internal details. 
+For example, logging of :ndnsim:`Face` and :ndnsim:`Consumer` shows everything what happens in :ndnsim:`Face` and :ndnsim:`Consumer` classes::
 
     NS_LOG=ndn.Face:ndn.Consumer ./waf --run=ndn-simple
 
 Refer to the source code and NS-3 documentation to see what logging interfaces are available and about details how enable one or more logging interfaces.
 
+
 .. Indices and tables
 .. ==================
 
diff --git a/examples/ndn-congestion-topo-plugin.cc b/examples/ndn-congestion-topo-plugin.cc
index f5e9a5e..f80a816 100644
--- a/examples/ndn-congestion-topo-plugin.cc
+++ b/examples/ndn-congestion-topo-plugin.cc
@@ -51,11 +51,14 @@
   cmd.Parse (argc, argv);
 
   AnnotatedTopologyReader topologyReader ("", 25);
-  topologyReader.SetFileName ("src/ndnSIM/examples/topology/topo-grid-3x3.txt");
+  topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-6-node.txt");
   topologyReader.Read ();
 
   // Install CCNx stack on all nodes
   ndn::StackHelper ccnxHelper;
+  ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
+  ccnxHelper.SetContentStore ("ns3::ndn::cs::Lru",
+                              "MaxSize", "10000");
   ccnxHelper.InstallAll ();
 
   // Installing global routing interface on all nodes
diff --git a/examples/ndn-grid-topo-plugin.cc b/examples/ndn-grid-topo-plugin.cc
index aa761da..6d0e042 100644
--- a/examples/ndn-grid-topo-plugin.cc
+++ b/examples/ndn-grid-topo-plugin.cc
@@ -55,11 +55,12 @@
   cmd.Parse (argc, argv);
 
   AnnotatedTopologyReader topologyReader ("", 25);
-  topologyReader.SetFileName ("src/ndnSIM/examples/topology/topo-grid-3x3.txt");
+  topologyReader.SetFileName ("src/ndnSIM/examples/topologies/topo-grid-3x3.txt");
   topologyReader.Read ();
 
   // Install CCNx stack on all nodes
   ndn::StackHelper ccnxHelper;
+  ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
   ccnxHelper.InstallAll ();
 
   // Installing global routing interface on all nodes
diff --git a/examples/ndn-grid.cc b/examples/ndn-grid.cc
index bb2d7db..0651e22 100644
--- a/examples/ndn-grid.cc
+++ b/examples/ndn-grid.cc
@@ -39,7 +39,7 @@
  *
  * FIB is populated using NdnGlobalRoutingHelper.
  *
- * Consumer requests data from producer with frequency 10 interests per second
+ * Consumer requests data from producer with frequency 100 interests per second
  * (interests contain constantly increasing sequence number).
  *
  * For every received interest, producer replies with a data packet, containing
@@ -56,7 +56,7 @@
   // Setting default parameters for PointToPoint links and channels
   Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("1Mbps"));
   Config::SetDefault ("ns3::PointToPointChannel::Delay", StringValue ("10ms"));
-  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("20"));
+  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("10"));
 
   // Read optional command-line parameters (e.g., enable visualizer with ./waf --run=<> --visualize
   CommandLine cmd;
@@ -69,6 +69,7 @@
 
   // Install CCNx stack on all nodes
   ndn::StackHelper ccnxHelper;
+  ccnxHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
   ccnxHelper.InstallAll ();
 
   // Installing global routing interface on all nodes
@@ -85,7 +86,7 @@
 
   ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
   consumerHelper.SetPrefix (prefix);
-  consumerHelper.SetAttribute ("Frequency", StringValue ("10")); // 10 interests a second
+  consumerHelper.SetAttribute ("Frequency", StringValue ("100")); // 100 interests a second
   consumerHelper.Install (consumerNodes);
 
   ndn::AppHelper producerHelper ("ns3::ndn::Producer");
diff --git a/model/cs/content-store-impl.cc b/model/cs/content-store-impl.cc
index 7734a7b..0bb9dd2 100644
--- a/model/cs/content-store-impl.cc
+++ b/model/cs/content-store-impl.cc
@@ -263,6 +263,23 @@
 NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, random_policy_traits);
 NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, fifo_policy_traits);
 
+#ifdef DOXYGEN
+// /**
+//  * \brief Content Store implementing LRU cache replacement policy
+//  */
+class Lru : public ContentStoreImpl<lru_policy_traits> { };
+
+/**
+ * \brief Content Store implementing FIFO cache replacement policy
+ */
+class Fifo : public ContentStoreImpl<fifo_policy_traits> { };
+
+/**
+ * \brief Content Store implementing Random cache replacement policy
+ */
+class Random : public ContentStoreImpl<random_policy_traits> { };
+#endif
+
 
 } // namespace cs
 } // namespace ndn
diff --git a/model/pit/ndn-pit-impl.cc b/model/pit/ndn-pit-impl.cc
index 29b029f..41a814b 100644
--- a/model/pit/ndn-pit-impl.cc
+++ b/model/pit/ndn-pit-impl.cc
@@ -370,6 +370,24 @@
 NS_OBJECT_ENSURE_REGISTERED_TEMPL(PitImpl, random_policy_traits);
 NS_OBJECT_ENSURE_REGISTERED_TEMPL(PitImpl, lru_policy_traits);
 
+#ifdef DOXYGEN
+// /**
+//  * \brief PIT in which new entries will be rejected if PIT size reached its limit
+//  */
+class Persistent : public PitImpl<persistent_policy_traits> { };
+
+/**
+ * \brief PIT in which PIT reaches its limit, random entry (could be the newly created one) will be removed from PIT
+ */
+class Random : public PitImpl<random_policy_traits> { };
+
+/**
+ * \brief PIT in which  the least recently used entry (the oldest entry with minimum number of incoming faces)
+ * will be removed when PIT size reached its limit
+ */
+class Lru : public PitImpl<lru_policy_traits> { };
+#endif
+
 } // namespace pit
 } // namespace ndn
 } // namespace ns3
