docs: Restructuring docs and adding new section about customizing Content Store and PIT
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