docs: Documentation update

Change-Id: I6f916eb822a59e980e8fb1134886c3431755119c
diff --git a/AUTHORS b/AUTHORS
index 7d92399..afa667d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,14 +1,17 @@
 The PRIMARY AUTHORS are (and/or have been):
 
-  Alex Afanasyev <alexander.afanasyev@ucla.edu>
-  Ilya Moiseenko <iliamo@ucla.edu>
+  * Alex Afanasyev               <http://lasr.cs.ucla.edu/afanasyev/index.html>
+  * Spyridon "Spyros" Mastorakis <http://cs.ucla.edu/~mastorakis/>
+  * Ilya Moiseenko               <http://ilyamoiseenko.com/>
 
 The following is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS,
 people who have reported bugs, submitted patches,and  implemented new features of ndnSIM:
 
-  Jiangzhe Wang (Lucas) <lucas@cs.ucla.edu>
-  Cheng Yi <yic@email.arizona.edu>
-  Saeid Montazeri <saeid.montazeri@gmail.com>
-  Xiaoke Jiang <shock.jiang@gmail.com>
-  Saran Tarnoi <sarantarnoi@gmail.com>
-  Hovaidi Ardestani Mohammad <mohammad.hovaidi.ardestani@aalto.fi>
+  * Jiangzhe Wang (Lucas)       <lucas@cs.ucla.edu>
+  * Cheng Yi                    <yic@email.arizona.edu>
+  * Saeid Montazeri             <saeid.montazeri@gmail.com>
+  * Xiaoke Jiang                <http://netarchlab.tsinghua.edu.cn/~shock/>
+  * Saran Tarnoi                <sarantarnoi@gmail.com>
+  * Hovaidi Ardestani Mohammad  <mohammad.hovaidi.ardestani@aalto.fi>
+  * Michael Sweatt              <https://www.linkedin.com/in/michaelsweatt>
+  * Wentao Shang                <http://irl.cs.ucla.edu/~wentao/>
diff --git a/NFD/core/scheduler.cpp b/NFD/core/scheduler.cpp
index ed6cffd..c26d466 100644
--- a/NFD/core/scheduler.cpp
+++ b/NFD/core/scheduler.cpp
@@ -27,6 +27,8 @@
 
 namespace ns3 {
 
+/// @cond include_hidden
+
 template<>
 struct EventMemberImplObjTraits<std::function<void()>> {
   typedef std::function<void()> T;
@@ -37,6 +39,8 @@
   }
 };
 
+/// @endcond
+
 } // namespace ns3
 
 namespace nfd {
diff --git a/README.md b/README.md
index 7a5f5e9..a185ecd 100644
--- a/README.md
+++ b/README.md
@@ -1,177 +1,20 @@
-[ndnSIM documentation](http://ndnsim.net)
-=========================================
+ndnSIM 2.0
+==========
 
-For more information, including downloading and compilation instruction, please refer to documentation in ``doc/`` or on http://ndnsim.net
+ndnSIM 2.0 is a new release of [NS-3 based Named Data Networking (NDN)
+simulator](http://ndnsim.net/1.0/) that went through extensive refactoring and rewriting.
+The key new features of the new version:
 
-Getting Started
----------------
+- ndnSIM no longer re-implements basic NDN primitives and directly uses implementation from
+  [ndn-cxx library (NDN C++ library with eXperimental eXtensions)](http://named-data.net/doc/ndn-cxx/)
 
-### Portability
+- All NDN forwarding and management is implemented directly using source code of
+  [Named Data Networking Forwarding Daemon (NFD)](http://named-data.net/doc/NFD/)
 
-ndnSIM has been successfully compiled and used under Ubuntu Linux 12.04 (boost libraries **1.48**, with default version 1.46 compilation will probably fail), 12.10 (default version of boost 1.49), 13.04 (default version of boost 1.49), Fedora 18, Mac OS 10.7 and 10.8 (gcc-4.2 apple/llvm, macports gcc 4.7, boost 1.49-1.54).
+- Packet format changed to [NDN-TLV](http://named-data.net/doc/ndn-tlv/)
 
-### Requirements
+[ndnSIM 2.0 documentation](http://ndnsim.net)
+---------------------------------------------
 
-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
-  
-    * 12.04
-  
-            sudo aptitude install libboost1.48-all-dev
-  
-    * 12.10, 13.04, and newer versions
-  
-            sudo aptitude install libboost-all-dev
-  
-  * For Fedora (for Fedora 18 and later only):
-  
-          sudo yum install boost-devel
-  
-  * For MacOS (macports):
-  
-          sudo port instal boost
-
-  **!!! ndnSIM requires boost version at least 1.48.**   Many linux distribution (Fedora 16, 17 at the time of this writing) ship an old version of boost, making it impossible to compile ndnSIM out-of-the-box.  Please install the latest version, following these simple instructions (http://ndnsim.net/faq.html#installing-boost-libraries).
-
-  **For Ubuntu 12.04**  Ubuntu 12.04 ships with two versions of boost libraries and it is known that if both are installed, then compilation of ndnSIM will most likely fail.  Please install ``libboost1.48-dev-all`` package and uninstall ``libboost-dev-all``.  If you want to install the latest version of boost libraries, then uninstall both ``libboost1.48-dev-all`` and ``libboost-dev-all``, so the libraries do not interfere with each other.
-
-  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 the following example http://ndnsim.net/faq.html#installing-boost-libraries 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 (http://www.nsnam.org/wiki/index.php/PyViz), the following should be installed:
-
-  * For Ubuntu (tested on Ubuntu 12.04, 12.10, 13.04, should work on later versions as well):
-  
-          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 Fedora (tested on Fedora 16):
-  
-          sudo yum install pygoocanvas python-kiwi graphviz-python
-  
-          # easy_install method, since pygraphviz is not (yet?) packaged into Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=740687)
-          sudo yum install graphviz-devel
-          sudo yum install python-pip
-          sudo easy_install pygraphviz
-  
-  * For MacOS (macports):
-  
-          sudo port install  py27-pygraphviz py27-goocanvas
-
-### Downloading ndnSIM source
-
-Download a custom branch of NS-3 that contains all necessary patches, python binding generation library (optional), and clone actual ndnSIM code and place it in src/ folder:
-
-    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
-    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.
-
-If you have problems connecting to github, you can try to clone from google servers:
-
-    mkdir ndnSIM
-    cd ndnSIM
-    git clone https://code.google.com/p/ndnsim.ns3-base/ ns-3
-    git clone https://code.google.com/p/ndnsim.pybindgen/ pybindgen
-    git clone https://code.google.com/p/ndnsim/ ns-3/src/ndnSIM
-
-### 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
-    ./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
-    ./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
-    ./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
-
-**Do not forget to configure and compile NS-3 in optimized mode (``./waf configure -d optimized``) in order to run actual simulations.**
-
-
-### Simulating using ndnSIM
-
-While it is possible to write simulations directly inside NS-3 (in ``scratch/`` folder) or ndnSIM (in ``examples/``), the recommended way is to write your simulation scenarios, as well as any custom extensions, separately from the NS-3 or ndnSIM core.
-
-For example, you can use the following template to write your extensions, simulation scenarios, and metric processing scripts: (http://github.com/cawka/ndnSIM-scenario-template):
-
-    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
-    git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM
-    
-    # Build and install NS-3 and ndnSIM
-    cd ns-3
-    ./waf configure -d optimized
-    ./waf
-    
-    sudo ./waf install
-    cd ..
-    
-    git clone git://github.com/cawka/ndnSIM-scenario-template.git scenario
-    cd scenario
-    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
-    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
-    
-    ./waf configure
-    
-    ./waf --run <scenario>
-
-For more detailed information, refer to README file (https://github.com/cawka/ndnSIM-scenario-template/blob/master/README.md).
-
-### Examples of template-based simulations
-
-1. ndnSIM examples from http://ndnsim.net website and more:
-
-- http://github.com/cawka/ndnSIM-examples or
-- http://code.google.com/p/ndnsim.ndnsim-examples/
-
-2. Script scenarios and graph processing scripts for simulations used in "A Case for Stateful Forwarding Plane" paper by Yi et al. (http://dx.doi.org/10.1016/j.comcom.2013.01.005):
-
-- http://github.com/cawka/ndnSIM-comcom-stateful-fw or
-- http://code.google.com/p/ndnsim.ndnsim-comcom/
-
-3. Script scenarios and graph processing scripts for simulations used in "Rapid Traffic Information Dissemination Using Named Data" paper by Wang et al. http://dx.doi.org/10.1145/2248361.2248365
-
-- http://github.com/cawka/ndnSIM-nom-rapid-car2car or
-- http://code.google.com/p/ndnsim.ndnsim-nom-rapid/
-
-- Rocketfuel-based topology generator for ndnSIM preferred format (randomly assigned link delays and bandwidth, based on estimated types of connections between nodes):
-
-- http://github.com/cawka/ndnSIM-sample-topologies or
-- http://code.google.com/p/ndnsim.ndnsim-sample-topo/
+For more information, including downloading and compilation instruction, please refer to
+http://ndnsim.net or documentation in `docs/` folder.
diff --git a/docs/Doxyfile b/docs/Doxyfile
index ebe4bb0..878da69 100644
--- a/docs/Doxyfile
+++ b/docs/Doxyfile
@@ -1,98 +1,129 @@
-# Doxyfile 1.6.1
+# Doxyfile 1.8.7
 
 # This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
+# doxygen (www.doxygen.org) for a project.
 #
-# All text after a hash (#) is considered a comment and will be ignored
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
 # The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
 
 #---------------------------------------------------------------------------
 # Project related configuration options
 #---------------------------------------------------------------------------
 
 # This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
 
 DOXYFILE_ENCODING      = UTF-8
 
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
 
 PROJECT_NAME           = "ndnSIM"
 
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
 
-PROJECT_NUMBER         =
+PROJECT_NUMBER         = 2.0
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF          =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
 
 PROJECT_LOGO           = ./doc/ns3_html_theme/static/ndn-logo.png
 
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
 
-OUTPUT_DIRECTORY       = 
+OUTPUT_DIRECTORY       =
 
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
 
 CREATE_SUBDIRS         = NO
 
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES    = NO
+
 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
 # documentation generated by doxygen is written. Doxygen will use this
 # information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
 
 OUTPUT_LANGUAGE        = English
 
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
 
 BRIEF_MEMBER_DESC      = YES
 
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
 # brief descriptions will be completely suppressed.
+# The default value is: YES.
 
 REPEAT_BRIEF           = YES
 
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
 
 ABBREVIATE_BRIEF       =
 
 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
+# doxygen will generate a detailed section even if there is only a brief
 # description.
+# The default value is: NO.
 
 ALWAYS_DETAILED_SEC    = NO
 
@@ -100,152 +131,207 @@
 # inherited members of a class in the documentation of that class as if those
 # members were ordinary class members. Constructors, destructors and assignment
 # operators of the base classes will not be shown.
+# The default value is: NO.
 
 INLINE_INHERITED_MEMB  = NO
 
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
 
 FULL_PATH_NAMES        = YES
 
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
 
 STRIP_FROM_PATH        = ../..
 
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
 
 STRIP_FROM_INC_PATH    =
 
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
 
 SHORT_NAMES            = NO
 
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
 
 JAVADOC_AUTOBRIEF      = YES
 
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
 
 QT_AUTOBRIEF           = NO
 
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
 
 MULTILINE_CPP_IS_BRIEF = NO
 
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
 
 INHERIT_DOCS           = YES
 
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
 
 SEPARATE_MEMBER_PAGES  = NO
 
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
 
 TAB_SIZE               = 4
 
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
 
 ALIASES                =
 
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST              =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
 
 OPTIMIZE_OUTPUT_FOR_C  = NO
 
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
 
 OPTIMIZE_OUTPUT_JAVA   = NO
 
 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
 
 OPTIMIZE_FOR_FORTRAN   = NO
 
 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
 
 OPTIMIZE_OUTPUT_VHDL   = NO
 
-# Doxygen selects the parser to use depending on the extension of the files it parses.
-# With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this tag.
-# The format is ext=language, where ext is a file extension, and language is one of
-# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
-# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
-# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
-# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
 
 EXTENSION_MAPPING      =
 
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
 
-BUILTIN_STL_SUPPORT    = NO
+MARKDOWN_SUPPORT       = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT       = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT    = YES
 
 # If you use Microsoft's C++/CLI language, you should set this option to YES to
 # enable parsing support.
+# The default value is: NO.
 
 CPP_CLI_SUPPORT        = NO
 
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
 
 SIP_SUPPORT            = NO
 
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen to replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
 
 IDL_PROPERTY_SUPPORT   = YES
 
@@ -253,977 +339,1561 @@
 # tag is set to YES, then doxygen will reuse the documentation of the first
 # member in the group (if any) for the other members of the group. By default
 # all members of a group must be documented explicitly.
+# The default value is: NO.
 
 DISTRIBUTE_GROUP_DOC   = NO
 
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
 
 SUBGROUPING            = YES
 
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS  = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
 # with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
 # types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
 
 TYPEDEF_HIDES_STRUCT   = NO
 
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penality.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will rougly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
 
-SYMBOL_CACHE_SIZE      = 0
+LOOKUP_CACHE_SIZE      = 0
 
 #---------------------------------------------------------------------------
 # Build related configuration options
 #---------------------------------------------------------------------------
 
 # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
 
-EXTRACT_ALL            = NO
+EXTRACT_ALL            = YES
 
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
 
 EXTRACT_PRIVATE        = NO
 
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
 
 EXTRACT_STATIC         = YES
 
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
 
 EXTRACT_LOCAL_CLASSES  = YES
 
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
 
 EXTRACT_LOCAL_METHODS  = NO
 
 # If this flag is set to YES, the members of anonymous namespaces will be
 # extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespace are hidden.
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
 
 EXTRACT_ANON_NSPACES   = NO
 
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
 
 HIDE_UNDOC_MEMBERS     = NO
 
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
 
 HIDE_UNDOC_CLASSES     = NO
 
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
 
 HIDE_FRIEND_COMPOUNDS  = NO
 
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
 
 HIDE_IN_BODY_DOCS      = NO
 
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
 
 INTERNAL_DOCS          = NO
 
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
 # allowed. This is useful if you have classes or files whose names only differ
 # in case and if your file system supports case sensitive file names. Windows
 # and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
 
-CASE_SENSE_NAMES       = NO
+CASE_SENSE_NAMES       = YES
 
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
 
 HIDE_SCOPE_NAMES       = NO
 
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
 
 SHOW_INCLUDE_FILES     = YES
 
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC  = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES   = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
 
 INLINE_INFO            = YES
 
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
 
 SORT_MEMBER_DOCS       = YES
 
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
 
 SORT_BRIEF_DOCS        = NO
 
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
 
 SORT_MEMBERS_CTORS_1ST = NO
 
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
 
-SORT_GROUP_NAMES       = NO
+SORT_GROUP_NAMES       = YES
 
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
 
 SORT_BY_SCOPE_NAME     = YES
 
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING  = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
 
 GENERATE_TODOLIST      = YES
 
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
 
 GENERATE_TESTLIST      = YES
 
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
 
 GENERATE_BUGLIST       = YES
 
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
 
 GENERATE_DEPRECATEDLIST= YES
 
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
 
 ENABLED_SECTIONS       =
 
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
 
 MAX_INITIALIZER_LINES  = 30
 
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
 
 SHOW_USED_FILES        = YES
 
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES       = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
 
 SHOW_FILES             = YES
 
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page.
-# This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
 
 SHOW_NAMESPACES        = YES
 
 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
 # doxygen should invoke to get the current version for each file (typically from
 # the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
 
 FILE_VERSION_FILTER    =
 
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
-# doxygen. The layout file controls the global structure of the generated output files
-# in an output format independent way. The create the layout file that represents
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name
-# of the layout file.
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
 
 LAYOUT_FILE            =
 
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
+
+CITE_BIB_FILES         =
+
 #---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
+# Configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
 
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
 
 QUIET                  = NO
 
 # The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
 
 WARNINGS               = YES
 
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
 
 WARN_IF_UNDOCUMENTED   = YES
 
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
 
 WARN_IF_DOC_ERROR      = YES
 
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
 
 WARN_NO_PARAMDOC       = NO
 
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
 
 WARN_FORMAT            = "$file:$line: $text "
 
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
 
 WARN_LOGFILE           = doxygen.warnings.log
 
 #---------------------------------------------------------------------------
-# configuration options related to the input files
+# Configuration options related to the input files
 #---------------------------------------------------------------------------
 
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
 
-INPUT                  = ../model ../ndn.cxx ../helper ../utils ../apps \
-                       ../plugins/topology ../plugins/ip-faces \
-                       introspected-doxygen.h doxygen.h
-
-# introspected-doxygen.h should be manually created:
+INPUT                  = ../model \
+                         ../helper \
+                         ../utils \
+                         ../apps \
+                         ../NFD \
+                         introspected-doxygen.hpp \
+                         doxygen.hpp
 # For example:
-# ../../../build/utils/ns3-dev-print-introspected-doxygen-debug --group Ndn > introspected-doxygen.h
+# ../../../build/utils/ns3-dev-print-introspected-doxygen-debug --log --group Ndn > introspected-doxygen.hpp
 
 # This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
 
 INPUT_ENCODING         = UTF-8
 
 # If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
 
-FILE_PATTERNS          = *.h \
-                         *.cc
+FILE_PATTERNS          = *.hpp \
+                         *.cpp
 
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
 
 RECURSIVE              = YES
 
-# The EXCLUDE tag can be used to specify files and/or directories that should
+# The EXCLUDE tag can be used to specify files and/or directories that should be
 # excluded from the INPUT source files. This way you can easily exclude a
 # subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
 
 EXCLUDE                =
 
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
 # from the input.
+# The default value is: NO.
 
 EXCLUDE_SYMLINKS       = NO
 
 # If the value of the INPUT tag contains directories, you can use the
 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
 
-EXCLUDE_PATTERNS       = */test/*
+EXCLUDE_PATTERNS       = */tests/*
 
 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
 # (namespaces, classes, functions, etc.) that should be excluded from the
 # output. The symbol name can be a fully qualified name, a word, or if the
 # wildcard * is used, a substring. Examples: ANamespace, AClass,
 # AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
 
 EXCLUDE_SYMBOLS        =
 
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
 
 EXAMPLE_PATH           = ../examples
 
 # If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
 
 EXAMPLE_PATTERNS       =
 
 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
 
 EXAMPLE_RECURSIVE      = NO
 
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
 
 IMAGE_PATH             = ns3_html_theme/static
 
 # The INPUT_FILTER tag can be used to specify a program that doxygen should
 # invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-# If FILTER_PATTERNS is specified, this tag will be
-# ignored.
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
 
 INPUT_FILTER           =
 
 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.
-# Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.
-# The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
 
 FILTER_PATTERNS        =
 
 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
 
 FILTER_SOURCE_FILES    = NO
 
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
 #---------------------------------------------------------------------------
-# configuration options related to source browsing
+# Configuration options related to source browsing
 #---------------------------------------------------------------------------
 
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
 
 SOURCE_BROWSER         = YES
 
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
 
 INLINE_SOURCES         = NO
 
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
 
 STRIP_CODE_COMMENTS    = YES
 
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
 
 REFERENCED_BY_RELATION = YES
 
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
 
 REFERENCES_RELATION    = YES
 
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.
-# Otherwise they will link to the documentation.
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
 
 REFERENCES_LINK_SOURCE = YES
 
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS        = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
 
 USE_HTAGS              = NO
 
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
 
 VERBATIM_HEADERS       = NO
 
 #---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
+# Configuration options related to the alphabetical class index
 #---------------------------------------------------------------------------
 
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
 
-ALPHABETICAL_INDEX     = NO
+ALPHABETICAL_INDEX     = YES
 
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
 
 COLS_IN_ALPHA_INDEX    = 5
 
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
 
 IGNORE_PREFIX          =
 
 #---------------------------------------------------------------------------
-# configuration options related to the HTML output
+# Configuration options related to the HTML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
 
 GENERATE_HTML          = YES
 
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_OUTPUT            = build/html/doxygen
 
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_FILE_EXTENSION    = .html
 
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
 # standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_HEADER            = ns3_html_theme/ns3_doxy_header.html
 
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_FOOTER            = ns3_html_theme/ns3_doxy_footer.html
-#HTML_FOOTER            = analytics.html
 
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_STYLESHEET        = ns3_html_theme/static/ns3_stylesheet.css
+# HTML_STYLESHEET        = ns3_html_theme/static/ns3_stylesheet.css
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET  =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_EXTRA_FILES       = ns3_html_theme/static/doxygen.css \
                          ns3_html_theme/static/bar-top.png \
-                         ns3_html_theme/static/favicon.ico
+                         ns3_html_theme/static/favicon.ico \
+                         ns3_html_theme/static/ns3_stylesheet.css
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_COLORSTYLE_HUE    = 0
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 HTML_COLORSTYLE_SAT    = 0
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 HTML_COLORSTYLE_GAMMA  = 91
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
 HTML_TIMESTAMP         = YES
 
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
 # documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 HTML_DYNAMIC_SECTIONS  = NO
 
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 GENERATE_DOCSET        = NO
 
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
 
 DOCSET_FEEDNAME        = "Doxygen generated docs"
 
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
 
 DOCSET_BUNDLE_ID       = org.doxygen.Project
 
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME  = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 GENERATE_HTMLHELP      = NO
 
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
 # written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
 CHM_FILE               =
 
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
 HHC_LOCATION           =
 
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
 GENERATE_CHI           = NO
 
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
 CHM_INDEX_ENCODING     =
 
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
 BINARY_TOC             = NO
 
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
 
 TOC_EXPAND             = NO
 
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
-# are set, an additional index file will be generated that can be used as input for
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
-# HTML documentation.
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 GENERATE_QHP           = NO
 
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
 
 QCH_FILE               =
 
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
 
 QHP_NAMESPACE          =
 
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
 
 QHP_VIRTUAL_FOLDER     = doc
 
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
-# For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
 
 QHP_CUST_FILTER_NAME   =
 
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
 
 QHP_CUST_FILTER_ATTRS  =
 
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
 
 QHP_SECT_FILTER_ATTRS  =
 
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
 
 QHG_LOCATION           =
 
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP   = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 DISABLE_INDEX          = NO
 
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE   = 4
-
 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 GENERATE_TREEVIEW      = YES
 
-# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
-# and Class Hierarchy pages using a tree view instead of an ordered list.
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
-USE_INLINE_TREES       = NO
+ENUM_VALUES_PER_LINE   = 4
 
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 TREEVIEW_WIDTH         = 300
 
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 FORMULA_FONTSIZE       = 10
 
-# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP)
-# there is already a search function so this one should typically
-# be disabled.
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT    = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX            = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT         = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS     =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE       =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
 
 SEARCHENGINE           = YES
 
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH    = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH        = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL       =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE        = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID     =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS  =
+
 #---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
+# Configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
 
 GENERATE_LATEX         = NO
 
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_OUTPUT           = latex
 
 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_CMD_NAME         = latex
 
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 MAKEINDEX_CMD_NAME     = makeindex
 
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 COMPACT_LATEX          = YES
 
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 PAPER_TYPE             = a4wide
 
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 EXTRA_PACKAGES         = amsmath
 
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_HEADER           =
 
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER           =
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES      =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 PDF_HYPERLINKS         = YES
 
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
 # higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 USE_PDFLATEX           = YES
 
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_BATCHMODE        = NO
 
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_HIDE_INDICES     = YES
 
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
 
 LATEX_SOURCE_CODE      = NO
 
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE        = plain
+
 #---------------------------------------------------------------------------
-# configuration options related to the RTF output
+# Configuration options related to the RTF output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
 
 GENERATE_RTF           = NO
 
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
 
 RTF_OUTPUT             = rtf
 
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
 
 COMPACT_RTF            = NO
 
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
 
 RTF_HYPERLINKS         = NO
 
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
 
 RTF_STYLESHEET_FILE    =
 
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
 
 RTF_EXTENSIONS_FILE    =
 
 #---------------------------------------------------------------------------
-# configuration options related to the man page output
+# Configuration options related to the man page output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
 
 GENERATE_MAN           = NO
 
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
 
 MAN_OUTPUT             = man
 
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
 
 MAN_EXTENSION          = .3
 
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR             =
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
 
 MAN_LINKS              = NO
 
 #---------------------------------------------------------------------------
-# configuration options related to the XML output
+# Configuration options related to the XML output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
 
 GENERATE_XML           = NO
 
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
 
 XML_OUTPUT             = xml
 
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA             =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD                =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
 
 XML_PROGRAMLISTING     = YES
 
 #---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
+# Configuration options related to the DOCBOOK output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK       = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT         = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
 
 GENERATE_AUTOGEN_DEF   = NO
 
 #---------------------------------------------------------------------------
-# configuration options related to the Perl module output
+# Configuration options related to the Perl module output
 #---------------------------------------------------------------------------
 
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
 
 GENERATE_PERLMOD       = NO
 
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
 
 PERLMOD_LATEX          = NO
 
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader.
-# This is useful
-# if you want to understand what is going on.
-# On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
 
 PERLMOD_PRETTY         = YES
 
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
 
 PERLMOD_MAKEVAR_PREFIX =
 
@@ -1231,117 +1901,143 @@
 # Configuration options related to the preprocessor
 #---------------------------------------------------------------------------
 
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
 
 ENABLE_PREPROCESSING   = YES
 
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 MACRO_EXPANSION        = YES
 
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 EXPAND_ONLY_PREDEF     = YES
 
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 SEARCH_INCLUDES        = YES
 
 # The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
 
 INCLUDE_PATH           = ../../../build
 
 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
 # patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 INCLUDE_FILE_PATTERNS  =
 
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 PREDEFINED             = NS3_ASSERT_ENABLE \
                          NS3_LOG_ENABLE \
                          DOXYGEN \
-                         "NDN_NAMESPACE_BEGIN=namespace ns3 { namespace ndn {" \
-                         "NDN_NAMESPACE_END="}}"
+                         NS_LOG_COMPONENT_DEFINE \
+                         NFD_LOG_INIT \
+                         BOOST_CONCEPT_ASSERT \
+                         PUBLIC_WITH_TESTS_ELSE_PROTECTED=protected \
+                         PUBLIC_WITH_TESTS_ELSE_PRIVATE=private \
+                         PROTECTED_WITH_TESTS_ELSE_PRIVATE=private \
+                         VIRTUAL_WITH_TESTS \
+                         DECL_OVERRIDE \
+                         ATTRIBUTE_HELPER_CPP
 
 
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 EXPAND_AS_DEFINED      = ATTRIBUTE_VALUE_DEFINE \
                          ATTRIBUTE_VALUE_DEFINE_WITH_NAME \
-                         ATTRIBUTE_HELPER_HEADER_2
+                         ATTRIBUTE_HELPER_HEADER_2 \
+                         ATTRIBUTE_HELPER_HEADER
 
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 SKIP_FUNCTION_MACROS   = YES
 
 #---------------------------------------------------------------------------
-# Configuration::additions related to external references
+# Configuration options related to external references
 #---------------------------------------------------------------------------
 
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-#
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
 # TAGFILES = file1 file2 ...
 # Adding location for the tag files is done as follows:
-#
 # TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have a unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
 
 TAGFILES               =
 
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
 
-GENERATE_TAGFILE = ndnSIM.tag
+GENERATE_TAGFILE       = ndnSIM.tag
 
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
 
 ALLEXTERNALS           = NO
 
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
 
 EXTERNAL_GROUPS        = YES
 
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES         = YES
+
 # The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
 
 PERL_PATH              = /usr/bin/perl
 
@@ -1349,192 +2045,293 @@
 # Configuration options related to the dot tool
 #---------------------------------------------------------------------------
 
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
 # powerful graphs.
+# The default value is: YES.
 
 CLASS_DIAGRAMS         = YES
 
 # You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
 # documentation. The MSCGEN_PATH tag allows you to specify the directory where
 # the mscgen tool resides. If left empty the tool is assumed to be found in the
 # default search path.
 
 MSCGEN_PATH            =
 
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_PATH               =
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
 
 HIDE_UNDOC_RELATIONS   = YES
 
 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: NO.
 
 HAVE_DOT               = YES
 
-# By default doxygen will write a font called FreeSans.ttf to the output
-# directory and reference it in all dot files that doxygen generates. This
-# font does not include all possible unicode characters however, so when you need
-# these (or just want a differently looking font) you can specify the font name
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
-# which can be done by putting it in a standard location or by setting the
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
-# containing the font.
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
-DOT_FONTNAME           = FreeSans
+DOT_NUM_THREADS        = 0
 
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME           =
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_FONTSIZE           = 10
 
-# By default doxygen will tell dot to use the output directory to look for the
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a
-# different font using DOT_FONTNAME you can set the path where dot
-# can find it using this tag.
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_FONTPATH           =
 
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 CLASS_GRAPH            = YES
 
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 COLLABORATION_GRAPH    = YES
 
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 GROUP_GRAPHS           = YES
 
 # If the UML_LOOK tag is set to YES doxygen will generate inheritance and
 # collaboration diagrams in a style similar to the OMG's Unified Modeling
 # Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 UML_LOOK               = NO
 
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS   = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 TEMPLATE_RELATIONS     = YES
 
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 INCLUDE_GRAPH          = YES
 
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 INCLUDED_BY_GRAPH      = YES
 
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 CALL_GRAPH             = NO
 
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 CALLER_GRAPH           = NO
 
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 GRAPHICAL_HIERARCHY    = YES
 
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DIRECTORY_GRAPH        = YES
 
 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_IMAGE_FORMAT       = png
 
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG        = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
 # found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_PATH               =
 
 # The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOTFILE_DIRS           =
 
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS           =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS           =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_GRAPH_MAX_NODES    = 50
 
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
 # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 MAX_DOT_GRAPH_DEPTH    = 0
 
 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_TRANSPARENT        = NO
 
 # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
 # files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_MULTI_TARGETS      = NO
 
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 GENERATE_LEGEND        = YES
 
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
 
 DOT_CLEANUP            = YES
diff --git a/docs/introspected-doxygen.hpp b/docs/introspected-doxygen.hpp
index 9525534..53b17a3 100644
--- a/docs/introspected-doxygen.hpp
+++ b/docs/introspected-doxygen.hpp
@@ -1,4 +1,4385 @@
-Usage:
-../../../ build / utils / ns3 - dev - print - introspected - doxygen - debug[options]
+/*!
 
-  Options : --help : print these options-- output - text : format output as plain text
+\class ns3::ndn::App
+
+<h3>Config Paths</h3>
+
+ns3::ndn::App is accessible through the following paths with Config::Set and Config::Connect:
+<ul>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App</li>
+</ul>
+No Attributes are defined for this type.<br>
+<h3>TraceSources</h3>
+<ul>
+<li><b>ReceivedInterests</b>: ReceivedInterests
+</li>
+<li><b>ReceivedDatas</b>: ReceivedDatas
+</li>
+<li><b>TransmittedInterests</b>: TransmittedInterests
+</li>
+<li><b>TransmittedDatas</b>: TransmittedDatas
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::Consumer
+
+<h3>Config Paths</h3>
+
+ns3::ndn::Consumer is accessible through the following paths with Config::Set and Config::Connect:
+<ul>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%Consumer</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%Consumer</li>
+</ul>
+<h3>Attributes</h3>
+<ul>
+<li><b>StartSeq</b>: Initial sequence number
+  <ul>
+    <li>Set with class: \ref ns3::IntegerValue</li>
+    <li>Underlying type: \ref int32_t -2147483648:2147483647</li>
+    <li>Initial value: 0</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Prefix</b>: Name of the Interest
+  <ul>
+    <li>Set with class: \ref NameValue</li>
+    <li>Underlying type: \ref Name</li>
+    <li>Initial value: /</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>LifeTime</b>: LifeTime for interest packet
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 2s</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>RetxTimer</b>: Timeout defining how frequent retransmission timeouts should be checked
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 50ms</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::Application</h3>
+<ul>
+<li><b>StartTime</b>: Time at which the application will start
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>StopTime</b>: Time at which the application will stop
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>LastRetransmittedInterestDataDelay</b>: Delay between last retransmitted Interest and received Data
+</li>
+<li><b>FirstInterestDataDelay</b>: Delay between first transmitted Interest and received Data
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::App</h3>
+<ul>
+<li><b>ReceivedInterests</b>: ReceivedInterests
+</li>
+<li><b>ReceivedDatas</b>: ReceivedDatas
+</li>
+<li><b>TransmittedInterests</b>: TransmittedInterests
+</li>
+<li><b>TransmittedDatas</b>: TransmittedDatas
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::ConsumerBatches
+
+<h3>Config Paths</h3>
+
+ns3::ndn::ConsumerBatches is accessible through the following paths with Config::Set and Config::Connect:
+<ul>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerBatches</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%ConsumerBatches</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerBatches</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%ConsumerBatches</li>
+</ul>
+<h3>Attributes</h3>
+<ul>
+<li><b>Batches</b>: Batches to schedule. Should be vector, containing pairs of time and amount
+  <ul>
+    <li>Set with class: \ref BatchesValue</li>
+    <li>Underlying type: \ref Batches</li>
+    <li>Initial value: </li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::ndn::Consumer</h3>
+<ul>
+<li><b>StartSeq</b>: Initial sequence number
+  <ul>
+    <li>Set with class: \ref ns3::IntegerValue</li>
+    <li>Underlying type: \ref int32_t -2147483648:2147483647</li>
+    <li>Initial value: 0</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Prefix</b>: Name of the Interest
+  <ul>
+    <li>Set with class: \ref NameValue</li>
+    <li>Underlying type: \ref Name</li>
+    <li>Initial value: /</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>LifeTime</b>: LifeTime for interest packet
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 2s</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>RetxTimer</b>: Timeout defining how frequent retransmission timeouts should be checked
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 50ms</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::Application</h3>
+<ul>
+<li><b>StartTime</b>: Time at which the application will start
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>StopTime</b>: Time at which the application will stop
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::Consumer</h3>
+<ul>
+<li><b>LastRetransmittedInterestDataDelay</b>: Delay between last retransmitted Interest and received Data
+</li>
+<li><b>FirstInterestDataDelay</b>: Delay between first transmitted Interest and received Data
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::App</h3>
+<ul>
+<li><b>ReceivedInterests</b>: ReceivedInterests
+</li>
+<li><b>ReceivedDatas</b>: ReceivedDatas
+</li>
+<li><b>TransmittedInterests</b>: TransmittedInterests
+</li>
+<li><b>TransmittedDatas</b>: TransmittedDatas
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::ConsumerCbr
+
+<h3>Config Paths</h3>
+
+ns3::ndn::ConsumerCbr is accessible through the following paths with Config::Set and Config::Connect:
+<ul>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerCbr</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%ConsumerCbr</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerCbr</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%ConsumerCbr</li>
+</ul>
+<h3>Attributes</h3>
+<ul>
+<li><b>Frequency</b>: Frequency of interest packets
+  <ul>
+    <li>Set with class: \ref ns3::DoubleValue</li>
+    <li>Underlying type: \ref double -1.79769e+308:1.79769e+308</li>
+    <li>Initial value: 1.0</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Randomize</b>: Type of send time randomization: none (default), uniform, exponential
+  <ul>
+    <li>Set with class: \ref StringValue</li>
+    <li>Underlying type: </li>
+    <li>Initial value: none</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>MaxSeq</b>: Maximum sequence number to request
+  <ul>
+    <li>Set with class: \ref ns3::IntegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 4294967295</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::ndn::Consumer</h3>
+<ul>
+<li><b>StartSeq</b>: Initial sequence number
+  <ul>
+    <li>Set with class: \ref ns3::IntegerValue</li>
+    <li>Underlying type: \ref int32_t -2147483648:2147483647</li>
+    <li>Initial value: 0</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Prefix</b>: Name of the Interest
+  <ul>
+    <li>Set with class: \ref NameValue</li>
+    <li>Underlying type: \ref Name</li>
+    <li>Initial value: /</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>LifeTime</b>: LifeTime for interest packet
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 2s</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>RetxTimer</b>: Timeout defining how frequent retransmission timeouts should be checked
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 50ms</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::Application</h3>
+<ul>
+<li><b>StartTime</b>: Time at which the application will start
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>StopTime</b>: Time at which the application will stop
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::Consumer</h3>
+<ul>
+<li><b>LastRetransmittedInterestDataDelay</b>: Delay between last retransmitted Interest and received Data
+</li>
+<li><b>FirstInterestDataDelay</b>: Delay between first transmitted Interest and received Data
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::App</h3>
+<ul>
+<li><b>ReceivedInterests</b>: ReceivedInterests
+</li>
+<li><b>ReceivedDatas</b>: ReceivedDatas
+</li>
+<li><b>TransmittedInterests</b>: TransmittedInterests
+</li>
+<li><b>TransmittedDatas</b>: TransmittedDatas
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::ConsumerWindow
+
+<h3>Config Paths</h3>
+
+ns3::ndn::ConsumerWindow is accessible through the following paths with Config::Set and Config::Connect:
+<ul>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerWindow</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%ConsumerWindow</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerWindow</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%ConsumerWindow</li>
+</ul>
+<h3>Attributes</h3>
+<ul>
+<li><b>Window</b>: Initial size of the window
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 1</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>PayloadSize</b>: Average size of content object size (to calculate interest generation rate)
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 1040</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Size</b>: Amount of data in megabytes to request, relying on PayloadSize parameter (alternative to MaxSeq attribute)
+  <ul>
+    <li>Set with class: \ref ns3::DoubleValue</li>
+    <li>Underlying type: \ref double -1.79769e+308:1.79769e+308</li>
+    <li>Initial value: -1</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>MaxSeq</b>: Maximum sequence number to request (alternative to Size attribute, would activate only if Size is -1). The parameter is activated only if Size negative (not set)
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 4294967295</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>InitialWindowOnTimeout</b>: Set window to initial value when timeout occurs
+  <ul>
+    <li>Set with class: \ref BooleanValue</li>
+    <li>Underlying type: \ref bool</li>
+    <li>Initial value: true</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::ndn::Consumer</h3>
+<ul>
+<li><b>StartSeq</b>: Initial sequence number
+  <ul>
+    <li>Set with class: \ref ns3::IntegerValue</li>
+    <li>Underlying type: \ref int32_t -2147483648:2147483647</li>
+    <li>Initial value: 0</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Prefix</b>: Name of the Interest
+  <ul>
+    <li>Set with class: \ref NameValue</li>
+    <li>Underlying type: \ref Name</li>
+    <li>Initial value: /</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>LifeTime</b>: LifeTime for interest packet
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 2s</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>RetxTimer</b>: Timeout defining how frequent retransmission timeouts should be checked
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 50ms</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::Application</h3>
+<ul>
+<li><b>StartTime</b>: Time at which the application will start
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>StopTime</b>: Time at which the application will stop
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>WindowTrace</b>: Window that controls how many outstanding interests are allowed
+</li>
+<li><b>InFlight</b>: Current number of outstanding interests
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::Consumer</h3>
+<ul>
+<li><b>LastRetransmittedInterestDataDelay</b>: Delay between last retransmitted Interest and received Data
+</li>
+<li><b>FirstInterestDataDelay</b>: Delay between first transmitted Interest and received Data
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::App</h3>
+<ul>
+<li><b>ReceivedInterests</b>: ReceivedInterests
+</li>
+<li><b>ReceivedDatas</b>: ReceivedDatas
+</li>
+<li><b>TransmittedInterests</b>: TransmittedInterests
+</li>
+<li><b>TransmittedDatas</b>: TransmittedDatas
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::ConsumerZipfMandelbrot
+
+<h3>Config Paths</h3>
+
+ns3::ndn::ConsumerZipfMandelbrot is accessible through the following paths with Config::Set and Config::Connect:
+<ul>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerCbr/$%ns3::%ndn::%ConsumerZipfMandelbrot</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerZipfMandelbrot</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%ConsumerCbr/$%ns3::%ndn::%ConsumerZipfMandelbrot</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%ConsumerZipfMandelbrot</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerCbr/$%ns3::%ndn::%ConsumerZipfMandelbrot</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%Consumer/$%ns3::%ndn::%ConsumerZipfMandelbrot</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%ConsumerCbr/$%ns3::%ndn::%ConsumerZipfMandelbrot</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%ConsumerZipfMandelbrot</li>
+</ul>
+<h3>Attributes</h3>
+<ul>
+<li><b>NumberOfContents</b>: Number of the Contents in total
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>q</b>: parameter of improve rank
+  <ul>
+    <li>Set with class: \ref ns3::DoubleValue</li>
+    <li>Underlying type: \ref double -1.79769e+308:1.79769e+308</li>
+    <li>Initial value: 0.7</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>s</b>: parameter of power
+  <ul>
+    <li>Set with class: \ref ns3::DoubleValue</li>
+    <li>Underlying type: \ref double -1.79769e+308:1.79769e+308</li>
+    <li>Initial value: 0.7</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::ndn::ConsumerCbr</h3>
+<ul>
+<li><b>Frequency</b>: Frequency of interest packets
+  <ul>
+    <li>Set with class: \ref ns3::DoubleValue</li>
+    <li>Underlying type: \ref double -1.79769e+308:1.79769e+308</li>
+    <li>Initial value: 1.0</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Randomize</b>: Type of send time randomization: none (default), uniform, exponential
+  <ul>
+    <li>Set with class: \ref StringValue</li>
+    <li>Underlying type: </li>
+    <li>Initial value: none</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>MaxSeq</b>: Maximum sequence number to request
+  <ul>
+    <li>Set with class: \ref ns3::IntegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 4294967295</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::ndn::Consumer</h3>
+<ul>
+<li><b>StartSeq</b>: Initial sequence number
+  <ul>
+    <li>Set with class: \ref ns3::IntegerValue</li>
+    <li>Underlying type: \ref int32_t -2147483648:2147483647</li>
+    <li>Initial value: 0</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Prefix</b>: Name of the Interest
+  <ul>
+    <li>Set with class: \ref NameValue</li>
+    <li>Underlying type: \ref Name</li>
+    <li>Initial value: /</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>LifeTime</b>: LifeTime for interest packet
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 2s</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>RetxTimer</b>: Timeout defining how frequent retransmission timeouts should be checked
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: 50ms</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::Application</h3>
+<ul>
+<li><b>StartTime</b>: Time at which the application will start
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>StopTime</b>: Time at which the application will stop
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::Consumer</h3>
+<ul>
+<li><b>LastRetransmittedInterestDataDelay</b>: Delay between last retransmitted Interest and received Data
+</li>
+<li><b>FirstInterestDataDelay</b>: Delay between first transmitted Interest and received Data
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::App</h3>
+<ul>
+<li><b>ReceivedInterests</b>: ReceivedInterests
+</li>
+<li><b>ReceivedDatas</b>: ReceivedDatas
+</li>
+<li><b>TransmittedInterests</b>: TransmittedInterests
+</li>
+<li><b>TransmittedDatas</b>: TransmittedDatas
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::ContentStore
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+<h3>TraceSources</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Fifo
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Fifo::AggregateStats
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Fifo::Freshness
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Fifo::LifetimeStats
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Freshness::Fifo
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::cs::Fifo::Freshness</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Freshness::Lfu
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::cs::Lfu::Freshness</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Freshness::Lru
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::cs::Lru::Freshness</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Freshness::Random
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::cs::Random::Freshness</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Lfu
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Lfu::AggregateStats
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Lfu::Freshness
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Lfu::LifetimeStats
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Lru
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Lru::AggregateStats
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Lru::Freshness
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Lru::LifetimeStats
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Nocache
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Probability::Fifo
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>CacheProbability</b>: Set probability of caching in ContentStore. If 1, every content is cached. If 0, no content is cached.
+  <ul>
+    <li>Set with class: \ref ns3::DoubleValue</li>
+    <li>Underlying type: \ref double -1.79769e+308:1.79769e+308</li>
+    <li>Initial value: 1</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::ndn::cs::ProbabilityImpl::Fifo</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::cs::ProbabilityImpl::Fifo</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Probability::Lfu
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>CacheProbability</b>: Set probability of caching in ContentStore. If 1, every content is cached. If 0, no content is cached.
+  <ul>
+    <li>Set with class: \ref ns3::DoubleValue</li>
+    <li>Underlying type: \ref double -1.79769e+308:1.79769e+308</li>
+    <li>Initial value: 1</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::ndn::cs::ProbabilityImpl::Lfu</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::cs::ProbabilityImpl::Lfu</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Probability::Lru
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>CacheProbability</b>: Set probability of caching in ContentStore. If 1, every content is cached. If 0, no content is cached.
+  <ul>
+    <li>Set with class: \ref ns3::DoubleValue</li>
+    <li>Underlying type: \ref double -1.79769e+308:1.79769e+308</li>
+    <li>Initial value: 1</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::ndn::cs::ProbabilityImpl::Lru</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::cs::ProbabilityImpl::Lru</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Probability::Random
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>CacheProbability</b>: Set probability of caching in ContentStore. If 1, every content is cached. If 0, no content is cached.
+  <ul>
+    <li>Set with class: \ref ns3::DoubleValue</li>
+    <li>Underlying type: \ref double -1.79769e+308:1.79769e+308</li>
+    <li>Initial value: 1</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::ndn::cs::ProbabilityImpl::Random</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::cs::ProbabilityImpl::Random</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::ProbabilityImpl::Fifo
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::ProbabilityImpl::Lfu
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::ProbabilityImpl::Lru
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::ProbabilityImpl::Random
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Random
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Random::AggregateStats
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Random::Freshness
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Random::LifetimeStats
+
+Doxygen introspection did not find any typical Config paths.<br>
+<h3>Attributes</h3>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 100</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>TraceSources</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Stats::Fifo
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+<h3>TraceSources</h3>
+<ul>
+<li><b>WillRemoveEntry</b>: Trace called just before content store entry will be removed
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::cs::Fifo::LifetimeStats</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Stats::Lfu
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+<h3>TraceSources</h3>
+<ul>
+<li><b>WillRemoveEntry</b>: Trace called just before content store entry will be removed
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::cs::Lfu::LifetimeStats</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Stats::Lru
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+<h3>TraceSources</h3>
+<ul>
+<li><b>WillRemoveEntry</b>: Trace called just before content store entry will be removed
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::cs::Lru::LifetimeStats</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::cs::Stats::Random
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+<h3>TraceSources</h3>
+<ul>
+<li><b>WillRemoveEntry</b>: Trace called just before content store entry will be removed
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::cs::Random::LifetimeStats</h3>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache
+</li>
+</ul>
+<h3>TraceSources defined in parent class ns3::ndn::ContentStore</h3>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit
+</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss
+</li>
+</ul>
+*/
+
+/*!
+
+\class ns3::ndn::Data
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+No TraceSources are defined for this type.<br>
+*/
+
+/*!
+
+\class ns3::ndn::GlobalRouter
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+No TraceSources are defined for this type.<br>
+*/
+
+/*!
+
+\class ns3::ndn::Interest
+
+Doxygen introspection did not find any typical Config paths.<br>
+No Attributes are defined for this type.<br>
+No TraceSources are defined for this type.<br>
+*/
+
+/*!
+
+\class ns3::ndn::Producer
+
+<h3>Config Paths</h3>
+
+ns3::ndn::Producer is accessible through the following paths with Config::Set and Config::Connect:
+<ul>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%App/$%ns3::%ndn::%Producer</li>
+<li>/NodeList/[i]/ApplicationList/[i]/$%ns3::%ndn::%Producer</li>
+</ul>
+<h3>Attributes</h3>
+<ul>
+<li><b>Prefix</b>: Prefix, for which producer has the data
+  <ul>
+    <li>Set with class: \ref NameValue</li>
+    <li>Underlying type: \ref Name</li>
+    <li>Initial value: /</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Postfix</b>: Postfix that is added to the output data (e.g., for adding producer-uniqueness)
+  <ul>
+    <li>Set with class: \ref NameValue</li>
+    <li>Underlying type: \ref Name</li>
+    <li>Initial value: /</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>PayloadSize</b>: Virtual payload size for Content packets
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 1024</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Freshness</b>: Freshness of data packets, if 0, then unlimited freshness
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>Signature</b>: Fake signature, 0 valid signature (default), other values application-specific
+  <ul>
+    <li>Set with class: \ref ns3::UintegerValue</li>
+    <li>Underlying type: \ref uint32_t 0:4294967295</li>
+    <li>Initial value: 0</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>KeyLocator</b>: Name to be used for key locator.  If root, then key locator is not used
+  <ul>
+    <li>Set with class: \ref NameValue</li>
+    <li>Underlying type: \ref Name</li>
+    <li>Initial value: /</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+<h3>Attributes defined in parent class ns3::Application</h3>
+<ul>
+<li><b>StartTime</b>: Time at which the application will start
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+<li><b>StopTime</b>: Time at which the application will stop
+  <ul>
+    <li>Set with class: \ref ns3::TimeValue</li>
+    <li>Underlying type: \ref Time --9223372036854775808.0ns:+9223372036854775807.0ns</li>
+    <li>Initial value: +0.0ns</li>
+    <li>Flags: <span class="mlabel">construct </span><span class="mlabel">write </span><span class="mlabel">read </span></li>
+  </ul> 
+</ul>
+No TraceSources are defined for this type.<br>
+<h3>TraceSources defined in parent class ns3::ndn::App</h3>
+<ul>
+<li><b>ReceivedInterests</b>: ReceivedInterests
+</li>
+<li><b>ReceivedDatas</b>: ReceivedDatas
+</li>
+<li><b>TransmittedInterests</b>: TransmittedInterests
+</li>
+<li><b>TransmittedDatas</b>: TransmittedDatas
+</li>
+</ul>
+*/
+
+/*!
+\page TraceSourceList All TraceSources
+
+<b>ns3::ndn::App</b><br>
+<ul>
+<li><b>ReceivedInterests</b>: ReceivedInterests</li>
+<li><b>ReceivedDatas</b>: ReceivedDatas</li>
+<li><b>TransmittedInterests</b>: TransmittedInterests</li>
+<li><b>TransmittedDatas</b>: TransmittedDatas</li>
+</ul>
+<b>ns3::ndn::Consumer</b><br>
+<ul>
+<li><b>LastRetransmittedInterestDataDelay</b>: Delay between last retransmitted Interest and received Data</li>
+<li><b>FirstInterestDataDelay</b>: Delay between first transmitted Interest and received Data</li>
+</ul>
+<b>ns3::ndn::ConsumerWindow</b><br>
+<ul>
+<li><b>WindowTrace</b>: Window that controls how many outstanding interests are allowed</li>
+<li><b>InFlight</b>: Current number of outstanding interests</li>
+</ul>
+<b>ns3::ndn::cs::Lru</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::ContentStore</b><br>
+<ul>
+<li><b>CacheHits</b>: Trace called every time there is a cache hit</li>
+<li><b>CacheMisses</b>: Trace called every time there is a cache miss</li>
+</ul>
+<b>ns3::ndn::cs::Random</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Fifo</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Lfu</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Lru::AggregateStats</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Random::AggregateStats</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Fifo::AggregateStats</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Lfu::AggregateStats</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Lru::Freshness</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Random::Freshness</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Fifo::Freshness</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Lfu::Freshness</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::ProbabilityImpl::Lru</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::ProbabilityImpl::Random</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::ProbabilityImpl::Fifo</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::ProbabilityImpl::Lfu</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Stats::Lru</b><br>
+<ul>
+<li><b>WillRemoveEntry</b>: Trace called just before content store entry will be removed</li>
+</ul>
+<b>ns3::ndn::cs::Lru::LifetimeStats</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Stats::Random</b><br>
+<ul>
+<li><b>WillRemoveEntry</b>: Trace called just before content store entry will be removed</li>
+</ul>
+<b>ns3::ndn::cs::Random::LifetimeStats</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Stats::Fifo</b><br>
+<ul>
+<li><b>WillRemoveEntry</b>: Trace called just before content store entry will be removed</li>
+</ul>
+<b>ns3::ndn::cs::Fifo::LifetimeStats</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+<b>ns3::ndn::cs::Stats::Lfu</b><br>
+<ul>
+<li><b>WillRemoveEntry</b>: Trace called just before content store entry will be removed</li>
+</ul>
+<b>ns3::ndn::cs::Lfu::LifetimeStats</b><br>
+<ul>
+<li><b>DidAddEntry</b>: Trace fired every time entry is successfully added to the cache</li>
+</ul>
+*/
+
+/*!
+\page AttributesList All Attributes
+
+<b>ns3::RandomVariableStream</b><br>
+<ul>
+<li><b>Stream</b>: The stream number for this RNG stream. -1 means "allocate a stream automatically". Note that if -1 is set, Get will return -1 so that it is not possible to know which value was automatically allocated.</li>
+<li><b>Antithetic</b>: Set this RNG stream to generate antithetic values</li>
+</ul>
+<b>ns3::UniformRandomVariable</b><br>
+<ul>
+<li><b>Min</b>: The lower bound on the values returned by this RNG stream.</li>
+<li><b>Max</b>: The upper bound on the values returned by this RNG stream.</li>
+</ul>
+<b>ns3::ConstantRandomVariable</b><br>
+<ul>
+<li><b>Constant</b>: The constant value returned by this RNG stream.</li>
+</ul>
+<b>ns3::SequentialRandomVariable</b><br>
+<ul>
+<li><b>Min</b>: The first value of the sequence.</li>
+<li><b>Max</b>: One more than the last value of the sequence.</li>
+<li><b>Increment</b>: The sequence random variable increment.</li>
+<li><b>Consecutive</b>: The number of times each member of the sequence is repeated.</li>
+</ul>
+<b>ns3::ExponentialRandomVariable</b><br>
+<ul>
+<li><b>Mean</b>: The mean of the values returned by this RNG stream.</li>
+<li><b>Bound</b>: The upper bound on the values returned by this RNG stream.</li>
+</ul>
+<b>ns3::ParetoRandomVariable</b><br>
+<ul>
+<li><b>Mean</b>: The mean parameter for the Pareto distribution returned by this RNG stream.</li>
+<li><b>Shape</b>: The shape parameter for the Pareto distribution returned by this RNG stream.</li>
+<li><b>Bound</b>: The upper bound on the values returned by this RNG stream.</li>
+</ul>
+<b>ns3::WeibullRandomVariable</b><br>
+<ul>
+<li><b>Scale</b>: The scale parameter for the Weibull distribution returned by this RNG stream.</li>
+<li><b>Shape</b>: The shape parameter for the Weibull distribution returned by this RNG stream.</li>
+<li><b>Bound</b>: The upper bound on the values returned by this RNG stream.</li>
+</ul>
+<b>ns3::NormalRandomVariable</b><br>
+<ul>
+<li><b>Mean</b>: The mean value for the normal distribution returned by this RNG stream.</li>
+<li><b>Variance</b>: The variance value for the normal distribution returned by this RNG stream.</li>
+<li><b>Bound</b>: The bound on the values returned by this RNG stream.</li>
+</ul>
+<b>ns3::LogNormalRandomVariable</b><br>
+<ul>
+<li><b>Mu</b>: The mu value for the log-normal distribution returned by this RNG stream.</li>
+<li><b>Sigma</b>: The sigma value for the log-normal distribution returned by this RNG stream.</li>
+</ul>
+<b>ns3::GammaRandomVariable</b><br>
+<ul>
+<li><b>Alpha</b>: The alpha value for the gamma distribution returned by this RNG stream.</li>
+<li><b>Beta</b>: The beta value for the gamma distribution returned by this RNG stream.</li>
+</ul>
+<b>ns3::ErlangRandomVariable</b><br>
+<ul>
+<li><b>K</b>: The k value for the Erlang distribution returned by this RNG stream.</li>
+<li><b>Lambda</b>: The lambda value for the Erlang distribution returned by this RNG stream.</li>
+</ul>
+<b>ns3::TriangularRandomVariable</b><br>
+<ul>
+<li><b>Mean</b>: The mean value for the triangular distribution returned by this RNG stream.</li>
+<li><b>Min</b>: The lower bound on the values returned by this RNG stream.</li>
+<li><b>Max</b>: The upper bound on the values returned by this RNG stream.</li>
+</ul>
+<b>ns3::ZipfRandomVariable</b><br>
+<ul>
+<li><b>N</b>: The n value for the Zipf distribution returned by this RNG stream.</li>
+<li><b>Alpha</b>: The alpha value for the Zipf distribution returned by this RNG stream.</li>
+</ul>
+<b>ns3::ZetaRandomVariable</b><br>
+<ul>
+<li><b>Alpha</b>: The alpha value for the zeta distribution returned by this RNG stream.</li>
+</ul>
+<b>ns3::DataCollectionObject</b><br>
+<ul>
+<li><b>Name</b>: Object's name</li>
+<li><b>Enabled</b>: Object's enabled status</li>
+</ul>
+<b>ns3::Probe</b><br>
+<ul>
+<li><b>Start</b>: Time data collection starts</li>
+<li><b>Stop</b>: Time when data collection stops.  The special time value of 0 disables this attribute</li>
+</ul>
+<b>ns3::Application</b><br>
+<ul>
+<li><b>StartTime</b>: Time at which the application will start</li>
+<li><b>StopTime</b>: Time at which the application will stop</li>
+</ul>
+<b>ns3::Channel</b><br>
+<ul>
+<li><b>Id</b>: The id (unique integer) of this Channel.</li>
+</ul>
+<b>ns3::ChannelListPriv</b><br>
+<ul>
+<li><b>ChannelList</b>: The list of all channels created during the simulation.</li>
+</ul>
+<b>ns3::Node</b><br>
+<ul>
+<li><b>DeviceList</b>: The list of devices associated to this Node.</li>
+<li><b>ApplicationList</b>: The list of applications associated to this Node.</li>
+<li><b>Id</b>: The id (unique integer) of this Node.</li>
+<li><b>SystemId</b>: The systemId of this node: a unique integer used for parallel simulations.</li>
+</ul>
+<b>ns3::NodeListPriv</b><br>
+<ul>
+<li><b>NodeList</b>: The list of all nodes created during the simulation.</li>
+</ul>
+<b>ns3::DropTailQueue</b><br>
+<ul>
+<li><b>Mode</b>: Whether to use bytes (see MaxBytes) or packets (see MaxPackets) as the maximum queue size metric.</li>
+<li><b>MaxPackets</b>: The maximum number of packets accepted by this DropTailQueue.</li>
+<li><b>MaxBytes</b>: The maximum number of bytes accepted by this DropTailQueue.</li>
+</ul>
+<b>ns3::ErrorModel</b><br>
+<ul>
+<li><b>IsEnabled</b>: Whether this ErrorModel is enabled or not.</li>
+</ul>
+<b>ns3::RateErrorModel</b><br>
+<ul>
+<li><b>ErrorUnit</b>: The error unit</li>
+<li><b>ErrorRate</b>: The error rate.</li>
+<li><b>RanVar</b>: The decision variable attached to this error model.</li>
+</ul>
+<b>ns3::BurstErrorModel</b><br>
+<ul>
+<li><b>ErrorRate</b>: The burst error event.</li>
+<li><b>BurstStart</b>: The decision variable attached to this error model.</li>
+<li><b>BurstSize</b>: The number of packets being corrupted at one drop.</li>
+</ul>
+<b>ns3::PacketSocket</b><br>
+<ul>
+<li><b>RcvBufSize</b>: PacketSocket maximum receive buffer size (bytes)</li>
+</ul>
+<b>ns3::PcapFileWrapper</b><br>
+<ul>
+<li><b>CaptureSize</b>: Maximum length of captured packets (cf. pcap snaplen)</li>
+</ul>
+<b>ns3::RedQueue</b><br>
+<ul>
+<li><b>Mode</b>: Determines unit for QueueLimit</li>
+<li><b>MeanPktSize</b>: Average of packet size</li>
+<li><b>IdlePktSize</b>: Average packet size used during idle times. Used when m_cautions = 3</li>
+<li><b>Wait</b>: True for waiting between dropped packets</li>
+<li><b>Gentle</b>: True to increases dropping probability slowly when average queue exceeds maxthresh</li>
+<li><b>MinTh</b>: Minimum average length threshold in packets/bytes</li>
+<li><b>MaxTh</b>: Maximum average length threshold in packets/bytes</li>
+<li><b>QueueLimit</b>: Queue limit in bytes/packets</li>
+<li><b>QW</b>: Queue weight related to the exponential weighted moving average (EWMA)</li>
+<li><b>LInterm</b>: The maximum probability of dropping a packet</li>
+<li><b>Ns1Compat</b>: NS-1 compatibility</li>
+<li><b>LinkBandwidth</b>: The RED link bandwidth</li>
+<li><b>LinkDelay</b>: The RED link delay</li>
+</ul>
+<b>ns3::SimpleChannel</b><br>
+<ul>
+<li><b>Delay</b>: Transmission delay through the channel</li>
+</ul>
+<b>ns3::SimpleNetDevice</b><br>
+<ul>
+<li><b>ReceiveErrorModel</b>: The receiver error model used to simulate packet loss</li>
+<li><b>PointToPointMode</b>: The device is configured in Point to Point mode</li>
+<li><b>TxQueue</b>: A queue to use as the transmit queue in the device.</li>
+<li><b>DataRate</b>: The default data rate for point to point links. Zero means infinite</li>
+</ul>
+<b>ns3::PacketSocketClient</b><br>
+<ul>
+<li><b>MaxPackets</b>: The maximum number of packets the application will send (zero means infinite)</li>
+<li><b>Interval</b>: The time to wait between packets</li>
+<li><b>PacketSize</b>: Size of packets generated (bytes).</li>
+</ul>
+<b>ns3::MobilityModel</b><br>
+<ul>
+<li><b>Position</b>: The current position of the mobility model.</li>
+<li><b>Velocity</b>: The current velocity of the mobility model.</li>
+</ul>
+<b>ns3::GaussMarkovMobilityModel</b><br>
+<ul>
+<li><b>Bounds</b>: Bounds of the area to cruise.</li>
+<li><b>TimeStep</b>: Change current direction and speed after moving for this time.</li>
+<li><b>Alpha</b>: A constant representing the tunable parameter in the Gauss-Markov model.</li>
+<li><b>MeanVelocity</b>: A random variable used to assign the average velocity.</li>
+<li><b>MeanDirection</b>: A random variable used to assign the average direction.</li>
+<li><b>MeanPitch</b>: A random variable used to assign the average pitch.</li>
+<li><b>NormalVelocity</b>: A gaussian random variable used to calculate the next velocity value.</li>
+<li><b>NormalDirection</b>: A gaussian random variable used to calculate the next direction value.</li>
+<li><b>NormalPitch</b>: A gaussian random variable used to calculate the next pitch value.</li>
+</ul>
+<b>ns3::HierarchicalMobilityModel</b><br>
+<ul>
+<li><b>Child</b>: The child mobility model.</li>
+<li><b>Parent</b>: The parent mobility model.</li>
+</ul>
+<b>ns3::GridPositionAllocator</b><br>
+<ul>
+<li><b>GridWidth</b>: The number of objects layed out on a line.</li>
+<li><b>MinX</b>: The x coordinate where the grid starts.</li>
+<li><b>MinY</b>: The y coordinate where the grid starts.</li>
+<li><b>DeltaX</b>: The x space between objects.</li>
+<li><b>DeltaY</b>: The y space between objects.</li>
+<li><b>LayoutType</b>: The type of layout.</li>
+</ul>
+<b>ns3::RandomRectanglePositionAllocator</b><br>
+<ul>
+<li><b>X</b>: A random variable which represents the x coordinate of a position in a random rectangle.</li>
+<li><b>Y</b>: A random variable which represents the y coordinate of a position in a random rectangle.</li>
+</ul>
+<b>ns3::RandomBoxPositionAllocator</b><br>
+<ul>
+<li><b>X</b>: A random variable which represents the x coordinate of a position in a random box.</li>
+<li><b>Y</b>: A random variable which represents the y coordinate of a position in a random box.</li>
+<li><b>Z</b>: A random variable which represents the z coordinate of a position in a random box.</li>
+</ul>
+<b>ns3::RandomDiscPositionAllocator</b><br>
+<ul>
+<li><b>Theta</b>: A random variable which represents the angle (gradients) of a position in a random disc.</li>
+<li><b>Rho</b>: A random variable which represents the radius of a position in a random disc.</li>
+<li><b>X</b>: The x coordinate of the center of the random position disc.</li>
+<li><b>Y</b>: The y coordinate of the center of the random position disc.</li>
+</ul>
+<b>ns3::UniformDiscPositionAllocator</b><br>
+<ul>
+<li><b>rho</b>: The radius of the disc</li>
+<li><b>X</b>: The x coordinate of the center of the  disc.</li>
+<li><b>Y</b>: The y coordinate of the center of the  disc.</li>
+</ul>
+<b>ns3::RandomDirection2dMobilityModel</b><br>
+<ul>
+<li><b>Bounds</b>: The 2d bounding area</li>
+<li><b>Speed</b>: A random variable to control the speed (m/s).</li>
+<li><b>Pause</b>: A random variable to control the pause (s).</li>
+</ul>
+<b>ns3::RandomWalk2dMobilityModel</b><br>
+<ul>
+<li><b>Bounds</b>: Bounds of the area to cruise.</li>
+<li><b>Time</b>: Change current direction and speed after moving for this delay.</li>
+<li><b>Distance</b>: Change current direction and speed after moving for this distance.</li>
+<li><b>Mode</b>: The mode indicates the condition used to change the current speed and direction</li>
+<li><b>Direction</b>: A random variable used to pick the direction (gradients).</li>
+<li><b>Speed</b>: A random variable used to pick the speed (m/s).</li>
+</ul>
+<b>ns3::RandomWaypointMobilityModel</b><br>
+<ul>
+<li><b>Speed</b>: A random variable used to pick the speed of a random waypoint model.</li>
+<li><b>Pause</b>: A random variable used to pick the pause of a random waypoint model.</li>
+<li><b>PositionAllocator</b>: The position model used to pick a destination point.</li>
+</ul>
+<b>ns3::SteadyStateRandomWaypointMobilityModel</b><br>
+<ul>
+<li><b>MinSpeed</b>: Minimum speed value, [m/s]</li>
+<li><b>MaxSpeed</b>: Maximum speed value, [m/s]</li>
+<li><b>MinPause</b>: Minimum pause value, [s]</li>
+<li><b>MaxPause</b>: Maximum pause value, [s]</li>
+<li><b>MinX</b>: Minimum X value of traveling region, [m]</li>
+<li><b>MaxX</b>: Maximum X value of traveling region, [m]</li>
+<li><b>MinY</b>: Minimum Y value of traveling region, [m]</li>
+<li><b>MaxY</b>: Maximum Y value of traveling region, [m]</li>
+<li><b>Z</b>: Z value of traveling region (fixed), [m]</li>
+</ul>
+<b>ns3::WaypointMobilityModel</b><br>
+<ul>
+<li><b>NextWaypoint</b>: The next waypoint used to determine position.</li>
+<li><b>WaypointsLeft</b>: The number of waypoints remaining.</li>
+<li><b>LazyNotify</b>: Only call NotifyCourseChange when position is calculated.</li>
+<li><b>InitialPositionIsWaypoint</b>: Calling SetPosition with no waypoints creates a waypoint.</li>
+</ul>
+<b>ns3::RandomPropagationDelayModel</b><br>
+<ul>
+<li><b>Variable</b>: The random variable which generates random delays (s).</li>
+</ul>
+<b>ns3::ConstantSpeedPropagationDelayModel</b><br>
+<ul>
+<li><b>Speed</b>: The speed (m/s)</li>
+</ul>
+<b>ns3::RandomPropagationLossModel</b><br>
+<ul>
+<li><b>Variable</b>: The random variable used to pick a loss everytime CalcRxPower is invoked.</li>
+</ul>
+<b>ns3::FriisPropagationLossModel</b><br>
+<ul>
+<li><b>Frequency</b>: The carrier frequency (in Hz) at which propagation occurs  (default is 5.15 GHz).</li>
+<li><b>SystemLoss</b>: The system loss</li>
+<li><b>MinLoss</b>: The minimum value (dB) of the total loss, used at short ranges. Note: </li>
+</ul>
+<b>ns3::TwoRayGroundPropagationLossModel</b><br>
+<ul>
+<li><b>Frequency</b>: The carrier frequency (in Hz) at which propagation occurs  (default is 5.15 GHz).</li>
+<li><b>SystemLoss</b>: The system loss</li>
+<li><b>MinDistance</b>: The distance under which the propagation model refuses to give results (m)</li>
+<li><b>HeightAboveZ</b>: The height of the antenna (m) above the node's Z coordinate</li>
+</ul>
+<b>ns3::LogDistancePropagationLossModel</b><br>
+<ul>
+<li><b>Exponent</b>: The exponent of the Path Loss propagation model</li>
+<li><b>ReferenceDistance</b>: The distance at which the reference loss is calculated (m)</li>
+<li><b>ReferenceLoss</b>: The reference loss at reference distance (dB). (Default is Friis at 1m with 5.15 GHz)</li>
+</ul>
+<b>ns3::ThreeLogDistancePropagationLossModel</b><br>
+<ul>
+<li><b>Distance0</b>: Beginning of the first (near) distance field</li>
+<li><b>Distance1</b>: Beginning of the second (middle) distance field.</li>
+<li><b>Distance2</b>: Beginning of the third (far) distance field.</li>
+<li><b>Exponent0</b>: The exponent for the first field.</li>
+<li><b>Exponent1</b>: The exponent for the second field.</li>
+<li><b>Exponent2</b>: The exponent for the third field.</li>
+<li><b>ReferenceLoss</b>: The reference loss at distance d0 (dB). (Default is Friis at 1m with 5.15 GHz)</li>
+</ul>
+<b>ns3::NakagamiPropagationLossModel</b><br>
+<ul>
+<li><b>Distance1</b>: Beginning of the second distance field. Default is 80m.</li>
+<li><b>Distance2</b>: Beginning of the third distance field. Default is 200m.</li>
+<li><b>m0</b>: m0 for distances smaller than Distance1. Default is 1.5.</li>
+<li><b>m1</b>: m1 for distances smaller than Distance2. Default is 0.75.</li>
+<li><b>m2</b>: m2 for distances greater than Distance2. Default is 0.75.</li>
+<li><b>ErlangRv</b>: Access to the underlying ErlangRandomVariable</li>
+<li><b>GammaRv</b>: Access to the underlying GammaRandomVariable</li>
+</ul>
+<b>ns3::FixedRssLossModel</b><br>
+<ul>
+<li><b>Rss</b>: The fixed receiver Rss.</li>
+</ul>
+<b>ns3::MatrixPropagationLossModel</b><br>
+<ul>
+<li><b>DefaultLoss</b>: The default value for propagation loss, dB.</li>
+</ul>
+<b>ns3::RangePropagationLossModel</b><br>
+<ul>
+<li><b>MaxRange</b>: Maximum Transmission Range (meters)</li>
+</ul>
+<b>ns3::JakesProcess</b><br>
+<ul>
+<li><b>DopplerFrequencyHz</b>: Corresponding doppler frequency[Hz]</li>
+<li><b>NumberOfOscillators</b>: The number of oscillators</li>
+</ul>
+<b>ns3::Cost231PropagationLossModel</b><br>
+<ul>
+<li><b>Lambda</b>: The wavelength  (default is 2.3 GHz at 300 000 km/s).</li>
+<li><b>Frequency</b>: The Frequency  (default is 2.3 GHz).</li>
+<li><b>BSAntennaHeight</b>:  BS Antenna Height (default is 50m).</li>
+<li><b>SSAntennaHeight</b>:  SS Antenna Height (default is 3m).</li>
+<li><b>MinDistance</b>: The distance under which the propagation model refuses to give results (m) </li>
+</ul>
+<b>ns3::OkumuraHataPropagationLossModel</b><br>
+<ul>
+<li><b>Frequency</b>: The propagation frequency in Hz</li>
+<li><b>Environment</b>: Environment Scenario</li>
+<li><b>CitySize</b>: Dimension of the city</li>
+</ul>
+<b>ns3::ItuR1411LosPropagationLossModel</b><br>
+<ul>
+<li><b>Frequency</b>: The propagation frequency in Hz</li>
+</ul>
+<b>ns3::ItuR1411NlosOverRooftopPropagationLossModel</b><br>
+<ul>
+<li><b>Frequency</b>: The Frequency  (default is 2.106 GHz).</li>
+<li><b>Environment</b>: Environment Scenario</li>
+<li><b>CitySize</b>: Dimension of the city</li>
+<li><b>RooftopLevel</b>: The height of the rooftop level in meters</li>
+<li><b>StreetsOrientation</b>: The orientation of streets in degrees [0,90] with respect to the direction of propagation</li>
+<li><b>StreetsWidth</b>: The width of streets</li>
+<li><b>BuildingsExtend</b>: The distance over which the buildings extend</li>
+<li><b>BuildingSeparation</b>: The separation between buildings</li>
+</ul>
+<b>ns3::CosineAntennaModel</b><br>
+<ul>
+<li><b>Beamwidth</b>: The 3dB beamwidth (degrees)</li>
+<li><b>Orientation</b>: The angle (degrees) that expresses the orientation of the antenna on the x-y plane relative to the x axis</li>
+<li><b>MaxGain</b>: The gain (dB) at the antenna boresight (the direction of maximum gain)</li>
+</ul>
+<b>ns3::ParabolicAntennaModel</b><br>
+<ul>
+<li><b>Beamwidth</b>: The 3dB beamwidth (degrees)</li>
+<li><b>Orientation</b>: The angle (degrees) that expresses the orientation of the antenna on the x-y plane relative to the x axis</li>
+<li><b>MaxAttenuation</b>: The maximum attenuation (dB) of the antenna radiation pattern.</li>
+</ul>
+<b>ns3::ConstantSpectrumPropagationLossModel</b><br>
+<ul>
+<li><b>Loss</b>: Path loss (dB) between transmitter and receiver</li>
+</ul>
+<b>ns3::SingleModelSpectrumChannel</b><br>
+<ul>
+<li><b>MaxLossDb</b>: If a single-frequency PropagationLossModel is used, this value represents the maximum loss in dB for which transmissions will be passed to the receiving PHY. Signals for which the PropagationLossModel returns a loss bigger than this value will not be propagated to the receiver. This parameter is to be used to reduce the computational load by not propagating signals that are far beyond the interference range. Note that the default value corresponds to considering all signals for reception. Tune this value with care. </li>
+</ul>
+<b>ns3::MultiModelSpectrumChannel</b><br>
+<ul>
+<li><b>MaxLossDb</b>: If a single-frequency PropagationLossModel is used, this value represents the maximum loss in dB for which transmissions will be passed to the receiving PHY. Signals for which the PropagationLossModel returns a loss bigger than this value will not be propagated to the receiver. This parameter is to be used to reduce the computational load by not propagating signals that are far beyond the interference range. Note that the default value corresponds to considering all signals for reception. Tune this value with care. </li>
+</ul>
+<b>ns3::WaveformGenerator</b><br>
+<ul>
+<li><b>Period</b>: the period (=1/frequency)</li>
+<li><b>DutyCycle</b>: the duty cycle of the generator, i.e., the fraction of the period that is occupied by a signal</li>
+</ul>
+<b>ns3::SpectrumAnalyzer</b><br>
+<ul>
+<li><b>Resolution</b>: the lengh of the time interval over which the power spectral density of incoming signals is averaged</li>
+<li><b>NoisePowerSpectralDensity</b>: the power spectral density of the measuring instrument noise, in Watt/Hz. Mostly useful to make spectrograms look more similar to those obtained by real devices. Defaults to the value for thermal noise at 300K.</li>
+</ul>
+<b>ns3::AlohaNoackNetDevice</b><br>
+<ul>
+<li><b>Address</b>: The MAC address of this device.</li>
+<li><b>Queue</b>: packets being transmitted get queued here</li>
+<li><b>Mtu</b>: The Maximum Transmission Unit</li>
+<li><b>Phy</b>: The PHY layer attached to this device.</li>
+</ul>
+<b>ns3::HalfDuplexIdealPhy</b><br>
+<ul>
+<li><b>Rate</b>: The PHY rate used by this device</li>
+</ul>
+<b>ns3::NonCommunicatingNetDevice</b><br>
+<ul>
+<li><b>Phy</b>: The PHY layer attached to this device.</li>
+</ul>
+<b>ns3::LrWpanMac</b><br>
+<ul>
+<li><b>PanId</b>: 16-bit identifier of the associated PAN</li>
+</ul>
+<b>ns3::LrWpanNetDevice</b><br>
+<ul>
+<li><b>Channel</b>: The channel attached to this device</li>
+<li><b>Phy</b>: The PHY layer attached to this device.</li>
+<li><b>Mac</b>: The MAC layer attached to this device.</li>
+<li><b>UseAcks</b>: Request acknowledgments for data frames.</li>
+</ul>
+<b>ns3::LrWpanLqiTag</b><br>
+<ul>
+<li><b>Lqi</b>: The lqi of the last packet received</li>
+</ul>
+<b>ns3::NullMessageSimulatorImpl</b><br>
+<ul>
+<li><b>SchedulerTune</b>: Null Message scheduler tuning parameter</li>
+</ul>
+<b>ns3::PointToPointNetDevice</b><br>
+<ul>
+<li><b>Mtu</b>: The MAC-level Maximum Transmission Unit</li>
+<li><b>Address</b>: The MAC address of this device.</li>
+<li><b>DataRate</b>: The default data rate for point to point links</li>
+<li><b>ReceiveErrorModel</b>: The receiver error model used to simulate packet loss</li>
+<li><b>InterframeGap</b>: The time to wait between packet (frame) transmissions</li>
+<li><b>TxQueue</b>: A queue to use as the transmit queue in the device.</li>
+</ul>
+<b>ns3::PointToPointChannel</b><br>
+<ul>
+<li><b>Delay</b>: Transmission delay through the channel</li>
+</ul>
+<b>ns3::BridgeNetDevice</b><br>
+<ul>
+<li><b>Mtu</b>: The MAC-level Maximum Transmission Unit</li>
+<li><b>EnableLearning</b>: Enable the learning mode of the Learning Bridge</li>
+<li><b>ExpirationTime</b>: Time it takes for learned MAC state entry to expire.</li>
+</ul>
+<b>ns3::IpL4Protocol</b><br>
+<ul>
+<li><b>ProtocolNumber</b>: The Ip protocol number.</li>
+</ul>
+<b>ns3::Ipv4Interface</b><br>
+<ul>
+<li><b>ArpCache</b>: The arp cache for this ipv4 interface</li>
+</ul>
+<b>ns3::Ipv4L3Protocol</b><br>
+<ul>
+<li><b>DefaultTos</b>: The TOS value set by default on all outgoing packets generated on this node.</li>
+<li><b>DefaultTtl</b>: The TTL value set by default on all outgoing packets generated on this node.</li>
+<li><b>FragmentExpirationTimeout</b>: When this timeout expires, the fragments will be cleared from the buffer.</li>
+<li><b>InterfaceList</b>: The set of Ipv4 interfaces associated to this Ipv4 stack.</li>
+</ul>
+<b>ns3::Ipv4</b><br>
+<ul>
+<li><b>IpForward</b>: Globally enable or disable IP forwarding for all current and future Ipv4 devices.</li>
+<li><b>WeakEsModel</b>: RFC1122 term for whether host accepts datagram with a dest. address on another interface</li>
+</ul>
+<b>ns3::UdpL4Protocol</b><br>
+<ul>
+<li><b>SocketList</b>: The list of sockets associated to this protocol.</li>
+</ul>
+<b>ns3::TcpL4Protocol</b><br>
+<ul>
+<li><b>RttEstimatorType</b>: Type of RttEstimator objects.</li>
+<li><b>SocketType</b>: Socket type of TCP objects.</li>
+<li><b>SocketList</b>: The list of sockets associated to this protocol.</li>
+</ul>
+<b>ns3::RttMeanDeviation</b><br>
+<ul>
+<li><b>Gain</b>: Gain used in estimating the RTT, must be 0 < Gain < 1</li>
+</ul>
+<b>ns3::RttEstimator</b><br>
+<ul>
+<li><b>MaxMultiplier</b>: Maximum RTO Multiplier</li>
+<li><b>InitialEstimation</b>: Initial RTT estimation</li>
+<li><b>MinRTO</b>: Minimum retransmit timeout value</li>
+</ul>
+<b>ns3::TcpNewReno</b><br>
+<ul>
+<li><b>ReTxThreshold</b>: Threshold for fast retransmit</li>
+<li><b>LimitedTransmit</b>: Enable limited transmit</li>
+</ul>
+<b>ns3::TcpSocketBase</b><br>
+<ul>
+<li><b>MaxSegLifetime</b>: Maximum segment lifetime in seconds, use for TIME_WAIT state transition to CLOSED state</li>
+<li><b>MaxWindowSize</b>: Max size of advertised window</li>
+<li><b>IcmpCallback</b>: Callback invoked whenever an icmp error is received on this socket.</li>
+<li><b>IcmpCallback6</b>: Callback invoked whenever an icmpv6 error is received on this socket.</li>
+<li><b>WindowScaling</b>: Enable or disable Window Scaling option</li>
+<li><b>Timestamp</b>: Enable or disable Timestamp option</li>
+</ul>
+<b>ns3::TcpSocket</b><br>
+<ul>
+<li><b>SndBufSize</b>: TcpSocket maximum transmit buffer size (bytes)</li>
+<li><b>RcvBufSize</b>: TcpSocket maximum receive buffer size (bytes)</li>
+<li><b>SegmentSize</b>: TCP maximum segment size in bytes (may be adjusted based on MTU discovery)</li>
+<li><b>InitialSlowStartThreshold</b>: TCP initial slow start threshold (bytes)</li>
+<li><b>InitialCwnd</b>: TCP initial congestion window size (segments)</li>
+<li><b>ConnTimeout</b>: TCP retransmission timeout when opening connection (seconds)</li>
+<li><b>ConnCount</b>: Number of connection attempts (SYN retransmissions) before returning failure</li>
+<li><b>DelAckTimeout</b>: Timeout value for TCP delayed acks, in seconds</li>
+<li><b>DelAckCount</b>: Number of packets to wait before sending a TCP ack</li>
+<li><b>TcpNoDelay</b>: Set to true to disable Nagle's algorithm</li>
+<li><b>PersistTimeout</b>: Persist timeout to probe for rx window</li>
+</ul>
+<b>ns3::ArpCache</b><br>
+<ul>
+<li><b>AliveTimeout</b>: When this timeout expires, the matching cache entry needs refreshing</li>
+<li><b>DeadTimeout</b>: When this timeout expires, a new attempt to resolve the matching entry is made</li>
+<li><b>WaitReplyTimeout</b>: When this timeout expires, the cache entries will be scanned and entries in WaitReply state will resend ArpRequest unless MaxRetries has been exceeded, in which case the entry is marked dead</li>
+<li><b>MaxRetries</b>: Number of retransmissions of ArpRequest before marking dead</li>
+<li><b>PendingQueueSize</b>: The size of the queue for packets pending an arp reply.</li>
+</ul>
+<b>ns3::ArpL3Protocol</b><br>
+<ul>
+<li><b>CacheList</b>: The list of ARP caches</li>
+<li><b>RequestJitter</b>: The jitter in ms a node is allowed to wait before sending an ARP request. Some jitter aims to prevent collisions. By default, the model will wait for a duration in ms defined by a uniform random-variable between 0 and RequestJitter</li>
+</ul>
+<b>ns3::UdpSocketImpl</b><br>
+<ul>
+<li><b>IcmpCallback</b>: Callback invoked whenever an icmp error is received on this socket.</li>
+<li><b>IcmpCallback6</b>: Callback invoked whenever an icmpv6 error is received on this socket.</li>
+</ul>
+<b>ns3::UdpSocket</b><br>
+<ul>
+<li><b>RcvBufSize</b>: UdpSocket maximum receive buffer size (bytes)</li>
+<li><b>IpTtl</b>: socket-specific TTL for unicast IP packets (if non-zero)</li>
+<li><b>IpMulticastTtl</b>: socket-specific TTL for multicast IP packets (if non-zero)</li>
+<li><b>IpMulticastIf</b>: interface index for outgoing multicast on this socket; -1 indicates to use default interface</li>
+<li><b>IpMulticastLoop</b>: whether outgoing multicast sent also to loopback interface</li>
+<li><b>MtuDiscover</b>: If enabled, every outgoing ip packet will have the DF flag set.</li>
+</ul>
+<b>ns3::Ipv4RawSocketImpl</b><br>
+<ul>
+<li><b>Protocol</b>: Protocol number to match.</li>
+<li><b>IcmpFilter</b>: Any icmp header whose type field matches a bit in this filter is dropped. Type must be less than 32.</li>
+<li><b>IpHeaderInclude</b>: Include IP Header information (a.k.a setsockopt (IP_HDRINCL)).</li>
+</ul>
+<b>ns3::NdiscCache</b><br>
+<ul>
+<li><b>UnresolvedQueueSize</b>: Size of the queue for packets pending an NA reply.</li>
+</ul>
+<b>ns3::Ipv6L3Protocol</b><br>
+<ul>
+<li><b>DefaultTtl</b>: The TTL value set by default on all outgoing packets generated on this node.</li>
+<li><b>DefaultTclass</b>: The TCLASS value set by default on all outgoing packets generated on this node.</li>
+<li><b>InterfaceList</b>: The set of IPv6 interfaces associated to this IPv6 stack.</li>
+<li><b>SendIcmpv6Redirect</b>: Send the ICMPv6 Redirect when appropriate.</li>
+</ul>
+<b>ns3::Ipv6</b><br>
+<ul>
+<li><b>IpForward</b>: Globally enable or disable IP forwarding for all current and future IPv6 devices.</li>
+<li><b>MtuDiscover</b>: If disabled, every interface will have its MTU set to 1280 bytes.</li>
+</ul>
+<b>ns3::Ipv6RawSocketImpl</b><br>
+<ul>
+<li><b>Protocol</b>: Protocol number to match.</li>
+</ul>
+<b>ns3::Ipv6Extension</b><br>
+<ul>
+<li><b>ExtensionNumber</b>: The IPv6 extension number.</li>
+</ul>
+<b>ns3::Ipv6ExtensionRoutingDemux</b><br>
+<ul>
+<li><b>Routing Extensions</b>: The set of IPv6 Routing extensions registered with this demux.</li>
+</ul>
+<b>ns3::Ipv6ExtensionDemux</b><br>
+<ul>
+<li><b>Extensions</b>: The set of IPv6 extensions registered with this demux.</li>
+</ul>
+<b>ns3::Ipv6Option</b><br>
+<ul>
+<li><b>OptionNumber</b>: The IPv6 option number.</li>
+</ul>
+<b>ns3::Ipv6OptionDemux</b><br>
+<ul>
+<li><b>Options</b>: The set of IPv6 options registered with this demux.</li>
+</ul>
+<b>ns3::Icmpv6L4Protocol</b><br>
+<ul>
+<li><b>DAD</b>: Always do DAD check.</li>
+<li><b>SolicitationJitter</b>: The jitter in ms a node is allowed to wait before sending any solicitation . Some jitter aims to prevent collisions. By default, the model will wait for a duration in ms defined by a uniform random-variable between 0 and SolicitationJitter</li>
+</ul>
+<b>ns3::TcpTahoe</b><br>
+<ul>
+<li><b>ReTxThreshold</b>: Threshold for fast retransmit</li>
+</ul>
+<b>ns3::TcpReno</b><br>
+<ul>
+<li><b>ReTxThreshold</b>: Threshold for fast retransmit</li>
+</ul>
+<b>ns3::TcpWestwood</b><br>
+<ul>
+<li><b>FilterType</b>: Use this to choose no filter or Tustin's approximation filter</li>
+<li><b>ProtocolType</b>: Use this to let the code run as Westwood or WestwoodPlus</li>
+</ul>
+<b>ns3::CoDelQueue</b><br>
+<ul>
+<li><b>Mode</b>: Whether to use Bytes (see MaxBytes) or Packets (see MaxPackets) as the maximum queue size metric.</li>
+<li><b>MaxPackets</b>: The maximum number of packets accepted by this CoDelQueue.</li>
+<li><b>MaxBytes</b>: The maximum number of bytes accepted by this CoDelQueue.</li>
+<li><b>MinBytes</b>: The CoDel algorithm minbytes parameter.</li>
+<li><b>Interval</b>: The CoDel algorithm interval</li>
+<li><b>Target</b>: The CoDel algorithm target queue delay</li>
+</ul>
+<b>ns3::Ipv4GlobalRouting</b><br>
+<ul>
+<li><b>RandomEcmpRouting</b>: Set to true if packets are randomly routed among ECMP; set to false for using only one route consistently</li>
+<li><b>RespondToInterfaceEvents</b>: Set to true if you want to dynamically recompute the global routes upon Interface notification events (up/down, or add/remove address)</li>
+</ul>
+<b>ns3::Ipv6PmtuCache</b><br>
+<ul>
+<li><b>CacheExpiryTime</b>: Validity time for a Path MTU entry. Default is 10 minutes, minimum is 5 minutes.</li>
+</ul>
+<b>ns3::RipNg</b><br>
+<ul>
+<li><b>UnsolicitedRoutingUpdate</b>: The time between two Unsolicited Routing Updates.</li>
+<li><b>StartupDelay</b>: Maximum random delay for protocol startup (send route requests).</li>
+<li><b>TimeoutDelay</b>: The delay to invalidate a route.</li>
+<li><b>GarbageCollectionDelay</b>: The delay to delete an expired route.</li>
+<li><b>MinTriggeredCooldown</b>: Min cooldown delay after a Triggered Update.</li>
+<li><b>MaxTriggeredCooldown</b>: Max cooldown delay after a Triggered Update.</li>
+<li><b>SplitHorizon</b>: Split Horizon strategy.</li>
+</ul>
+<b>ns3::WimaxNetDevice</b><br>
+<ul>
+<li><b>Mtu</b>: The MAC-level Maximum Transmission Unit</li>
+<li><b>Phy</b>: The PHY layer attached to this device.</li>
+<li><b>Channel</b>: The channel attached to this device.</li>
+<li><b>RTG</b>: receive/transmit transition gap.</li>
+<li><b>TTG</b>: transmit/receive transition gap.</li>
+<li><b>ConnectionManager</b>: The connection manager attached to this device.</li>
+<li><b>BurstProfileManager</b>: The burst profile manager attached to this device.</li>
+<li><b>BandwidthManager</b>: The bandwidth manager attached to this device.</li>
+<li><b>InitialRangingConnection</b>: Initial ranging connection</li>
+<li><b>BroadcastConnection</b>: Broadcast connection</li>
+</ul>
+<b>ns3::BaseStationNetDevice</b><br>
+<ul>
+<li><b>BSScheduler</b>: Downlink Scheduler for BS</li>
+<li><b>InitialRangInterval</b>: Time between Initial Ranging regions assigned by the BS. Maximum is 2s</li>
+<li><b>DcdInterval</b>: Time between transmission of DCD messages. Maximum value is 10s.</li>
+<li><b>UcdInterval</b>: Time between transmission of UCD messages. Maximum value is 10s.</li>
+<li><b>IntervalT8</b>: Wait for DSA/DSC Acknowledge timeout. Maximum 300ms.</li>
+<li><b>RangReqOppSize</b>: The ranging opportunity size in symbols</li>
+<li><b>BwReqOppSize</b>: The bandwidth request opportunity size in symbols</li>
+<li><b>MaxRangCorrectionRetries</b>: Number of retries on contention Ranging Requests</li>
+<li><b>SSManager</b>: The ss manager attached to this device.</li>
+<li><b>Scheduler</b>: The BS scheduler attached to this device.</li>
+<li><b>LinkManager</b>: The link manager attached to this device.</li>
+<li><b>UplinkScheduler</b>: The uplink scheduler attached to this device.</li>
+<li><b>BsIpcsPacketClassifier</b>: The uplink IP packet classifier attached to this device.</li>
+<li><b>ServiceFlowManager</b>: The service flow manager attached to this device.</li>
+</ul>
+<b>ns3::SubscriberStationNetDevice</b><br>
+<ul>
+<li><b>BasicConnection</b>: Basic connection</li>
+<li><b>PrimaryConnection</b>: Primary connection</li>
+<li><b>LostDlMapInterval</b>: Time since last received DL-MAP message before downlink synchronization is considered lost. Maximum is 600ms</li>
+<li><b>LostUlMapInterval</b>: Time since last received UL-MAP before uplink synchronization is considered lost, maximum is 600.</li>
+<li><b>MaxDcdInterval</b>: Maximum time between transmission of DCD messages. Maximum is 10s</li>
+<li><b>MaxUcdInterval</b>: Maximum time between transmission of UCD messages. Maximum is 10s</li>
+<li><b>IntervalT1</b>: Wait for DCD timeout. Maximum is 5*maxDcdInterval</li>
+<li><b>IntervalT2</b>: Wait for broadcast ranging timeout, i.e., wait for initial ranging opportunity. Maximum is 5*Ranging interval</li>
+<li><b>IntervalT3</b>: ranging Response reception timeout following the transmission of a ranging request. Maximum is 200ms</li>
+<li><b>IntervalT7</b>: wait for DSA/DSC/DSD Response timeout. Maximum is 1s</li>
+<li><b>IntervalT12</b>: Wait for UCD descriptor.Maximum is 5*MaxUcdInterval</li>
+<li><b>IntervalT20</b>: Time the SS searches for preambles on a given channel. Minimum is 2 MAC frames</li>
+<li><b>IntervalT21</b>: time the SS searches for (decodable) DL-MAP on a given channel</li>
+<li><b>MaxContentionRangingRetries</b>: Number of retries on contention Ranging Requests</li>
+<li><b>SSScheduler</b>: The ss scheduler attached to this device.</li>
+<li><b>LinkManager</b>: The ss link manager attached to this device.</li>
+<li><b>Classifier</b>: The ss classifier attached to this device.</li>
+</ul>
+<b>ns3::WimaxPhy</b><br>
+<ul>
+<li><b>Channel</b>: Wimax channel</li>
+<li><b>FrameDuration</b>: The frame duration in seconds.</li>
+<li><b>Frequency</b>: The central frequency in KHz.</li>
+<li><b>Bandwidth</b>: The channel bandwidth in Hz.</li>
+</ul>
+<b>ns3::WimaxConnection</b><br>
+<ul>
+<li><b>Type</b>: Connection type</li>
+<li><b>TxQueue</b>: Transmit queue</li>
+</ul>
+<b>ns3::SimpleOfdmWimaxPhy</b><br>
+<ul>
+<li><b>NoiseFigure</b>: Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver.</li>
+<li><b>TxPower</b>: Transmission power (dB).</li>
+<li><b>G</b>: This is the ratio of CP time to useful time.</li>
+<li><b>TxGain</b>: Transmission gain (dB).</li>
+<li><b>RxGain</b>: Reception gain (dB).</li>
+<li><b>Nfft</b>: FFT size</li>
+<li><b>TraceFilePath</b>: Path to the directory containing SNR to block error rate files</li>
+</ul>
+<b>ns3::UplinkSchedulerMBQoS</b><br>
+<ul>
+<li><b>WindowInterval</b>: The time to wait to reset window</li>
+</ul>
+<b>ns3::WimaxMacQueue</b><br>
+<ul>
+<li><b>MaxSize</b>: Maximum size</li>
+</ul>
+<b>ns3::ConfigStore</b><br>
+<ul>
+<li><b>Mode</b>: Configuration mode</li>
+<li><b>Filename</b>: The file where the configuration should be saved to or loaded from.</li>
+<li><b>FileFormat</b>: Type of file format</li>
+</ul>
+<b>ns3::Building</b><br>
+<ul>
+<li><b>NRoomsX</b>: The number of rooms in the X axis.</li>
+<li><b>NRoomsY</b>: The number of rooms in the Y axis.</li>
+<li><b>NFloors</b>: The number of floors of this building.</li>
+<li><b>Id</b>: The id (unique integer) of this Building.</li>
+<li><b>Boundaries</b>: The boundaries of this Building as a value of type ns3::Box</li>
+<li><b>Type</b>: The type of building</li>
+<li><b>ExternalWallsType</b>: The type of material of which the external walls are made</li>
+</ul>
+<b>ns3::BuildingListPriv</b><br>
+<ul>
+<li><b>BuildingList</b>: The list of all buildings created during the simulation.</li>
+</ul>
+<b>ns3::ItuR1238PropagationLossModel</b><br>
+<ul>
+<li><b>Frequency</b>: The Frequency  (default is 2.106 GHz).</li>
+</ul>
+<b>ns3::BuildingsPropagationLossModel</b><br>
+<ul>
+<li><b>ShadowSigmaOutdoor</b>: Standard deviation of the normal distribution used for calculate the shadowing for outdoor nodes</li>
+<li><b>ShadowSigmaIndoor</b>: Standard deviation of the normal distribution used for calculate the shadowing for indoor nodes </li>
+<li><b>ShadowSigmaExtWalls</b>: Standard deviation of the normal distribution used for calculate the shadowing due to ext walls </li>
+<li><b>InternalWallLoss</b>: Additional loss for each internal wall [dB]</li>
+</ul>
+<b>ns3::HybridBuildingsPropagationLossModel</b><br>
+<ul>
+<li><b>Frequency</b>: The Frequency  (default is 2.106 GHz).</li>
+<li><b>Los2NlosThr</b>:  Threshold from LoS to NLoS in ITU 1411 [m].</li>
+<li><b>Environment</b>: Environment Scenario</li>
+<li><b>CitySize</b>: Dimension of the city</li>
+<li><b>RooftopLevel</b>: The height of the rooftop level in meters</li>
+</ul>
+<b>ns3::RandomBuildingPositionAllocator</b><br>
+<ul>
+<li><b>WithReplacement</b>: If true, the building will be randomly selected with replacement. If false, no replacement will occur, until the list of buildings to select becomes empty, at which point it will be filled again with the list of all buildings.</li>
+</ul>
+<b>ns3::GridBuildingAllocator</b><br>
+<ul>
+<li><b>GridWidth</b>: The number of objects layed out on a line.</li>
+<li><b>MinX</b>: The x coordinate where the grid starts.</li>
+<li><b>MinY</b>: The y coordinate where the grid starts.</li>
+<li><b>LengthX</b>:  the length of the wall of each building along the X axis.</li>
+<li><b>LengthY</b>:  the length of the wall of each building along the X axis.</li>
+<li><b>DeltaX</b>: The x space between buildings.</li>
+<li><b>DeltaY</b>: The y space between buildings.</li>
+<li><b>Height</b>: The height of the building (roof level)</li>
+<li><b>LayoutType</b>: The type of layout.</li>
+</ul>
+<b>ns3::BulkSendApplication</b><br>
+<ul>
+<li><b>SendSize</b>: The amount of data to send each time.</li>
+<li><b>Remote</b>: The address of the destination</li>
+<li><b>MaxBytes</b>: The total number of bytes to send. Once these bytes are sent, no data  is sent again. The value zero means that there is no limit.</li>
+<li><b>Protocol</b>: The type of protocol to use.</li>
+</ul>
+<b>ns3::OnOffApplication</b><br>
+<ul>
+<li><b>DataRate</b>: The data rate in on state.</li>
+<li><b>PacketSize</b>: The size of packets sent in on state</li>
+<li><b>Remote</b>: The address of the destination</li>
+<li><b>OnTime</b>: A RandomVariableStream used to pick the duration of the 'On' state.</li>
+<li><b>OffTime</b>: A RandomVariableStream used to pick the duration of the 'Off' state.</li>
+<li><b>MaxBytes</b>: The total number of bytes to send. Once these bytes are sent, no packet is sent again, even in on state. The value zero means that there is no limit.</li>
+<li><b>Protocol</b>: The type of protocol to use.</li>
+</ul>
+<b>ns3::PacketSink</b><br>
+<ul>
+<li><b>Local</b>: The Address on which to Bind the rx socket.</li>
+<li><b>Protocol</b>: The type id of the protocol to use for the rx socket.</li>
+</ul>
+<b>ns3::Ping6</b><br>
+<ul>
+<li><b>MaxPackets</b>: The maximum number of packets the application will send</li>
+<li><b>Interval</b>: The time to wait between packets</li>
+<li><b>RemoteIpv6</b>: The Ipv6Address of the outbound packets</li>
+<li><b>LocalIpv6</b>: Local Ipv6Address of the sender</li>
+<li><b>PacketSize</b>: Size of packets generated</li>
+</ul>
+<b>ns3::Radvd</b><br>
+<ul>
+<li><b>AdvertisementJitter</b>: Uniform variable to provide jitter between min and max values of AdvInterval</li>
+</ul>
+<b>ns3::UdpClient</b><br>
+<ul>
+<li><b>MaxPackets</b>: The maximum number of packets the application will send</li>
+<li><b>Interval</b>: The time to wait between packets</li>
+<li><b>RemoteAddress</b>: The destination Address of the outbound packets</li>
+<li><b>RemotePort</b>: The destination port of the outbound packets</li>
+<li><b>PacketSize</b>: Size of packets generated. The minimum packet size is 12 bytes which is the size of the header carrying the sequence number and the time stamp.</li>
+</ul>
+<b>ns3::UdpServer</b><br>
+<ul>
+<li><b>Port</b>: Port on which we listen for incoming packets.</li>
+<li><b>PacketWindowSize</b>: The size of the window used to compute the packet loss. This value should be a multiple of 8.</li>
+</ul>
+<b>ns3::UdpTraceClient</b><br>
+<ul>
+<li><b>RemoteAddress</b>: The destination Address of the outbound packets</li>
+<li><b>RemotePort</b>: The destination port of the outbound packets</li>
+<li><b>MaxPacketSize</b>: The maximum size of a packet (including the SeqTsHeader, 12 bytes).</li>
+<li><b>TraceFilename</b>: Name of file to load a trace from. By default, uses a hardcoded trace.</li>
+</ul>
+<b>ns3::UdpEchoClient</b><br>
+<ul>
+<li><b>MaxPackets</b>: The maximum number of packets the application will send</li>
+<li><b>Interval</b>: The time to wait between packets</li>
+<li><b>RemoteAddress</b>: The destination Address of the outbound packets</li>
+<li><b>RemotePort</b>: The destination port of the outbound packets</li>
+<li><b>PacketSize</b>: Size of echo data in outbound packets</li>
+</ul>
+<b>ns3::UdpEchoServer</b><br>
+<ul>
+<li><b>Port</b>: Port on which we listen for incoming packets.</li>
+</ul>
+<b>ns3::V4Ping</b><br>
+<ul>
+<li><b>Remote</b>: The address of the machine we want to ping.</li>
+<li><b>Verbose</b>: Produce usual output.</li>
+<li><b>Interval</b>: Wait  interval  seconds between sending each packet.</li>
+<li><b>Size</b>: The number of data bytes to be sent, real packet will be 8 (ICMP) + 20 (IP) bytes longer.</li>
+</ul>
+<b>ns3::VirtualNetDevice</b><br>
+<ul>
+<li><b>Mtu</b>: The MAC-level Maximum Transmission Unit</li>
+</ul>
+<b>ns3::CsmaNetDevice</b><br>
+<ul>
+<li><b>Address</b>: The MAC address of this device.</li>
+<li><b>Mtu</b>: The MAC-level Maximum Transmission Unit</li>
+<li><b>EncapsulationMode</b>: The link-layer encapsulation type to use.</li>
+<li><b>SendEnable</b>: Enable or disable the transmitter section of the device.</li>
+<li><b>ReceiveEnable</b>: Enable or disable the receiver section of the device.</li>
+<li><b>ReceiveErrorModel</b>: The receiver error model used to simulate packet loss</li>
+<li><b>TxQueue</b>: A queue to use as the transmit queue in the device.</li>
+</ul>
+<b>ns3::CsmaChannel</b><br>
+<ul>
+<li><b>DataRate</b>: The transmission data rate to be provided to devices connected to the channel</li>
+<li><b>Delay</b>: Transmission delay through the channel</li>
+</ul>
+<b>ns3::LteSpectrumPhy</b><br>
+<ul>
+<li><b>DataErrorModelEnabled</b>: Activate/Deactivate the error model of data (TBs of PDSCH and PUSCH) [by default is active].</li>
+<li><b>CtrlErrorModelEnabled</b>: Activate/Deactivate the error model of control (PCFICH-PDCCH decodification) [by default is active].</li>
+</ul>
+<b>ns3::LteEnbPhy</b><br>
+<ul>
+<li><b>TxPower</b>: Transmission power in dBm</li>
+<li><b>NoiseFigure</b>: Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver. According to Wikipedia (http://en.wikipedia.org/wiki/Noise_figure), this is "the difference in decibels (dB) between the noise output of the actual receiver to the noise output of an  ideal receiver with the same overall gain and bandwidth when the receivers  are connected to sources at the standard noise temperature T0." In this model, we consider T0 = 290K.</li>
+<li><b>MacToChannelDelay</b>: The delay in TTI units that occurs between a scheduling decision in the MAC and the actual start of the transmission by the PHY. This is intended to be used to model the latency of real PHY and MAC implementations.</li>
+<li><b>UeSinrSamplePeriod</b>: The sampling period for reporting UEs' SINR stats (default value 1)</li>
+<li><b>InterferenceSamplePeriod</b>: The sampling period for reporting interference stats (default value 1)</li>
+<li><b>DlSpectrumPhy</b>: The downlink LteSpectrumPhy associated to this LtePhy</li>
+<li><b>UlSpectrumPhy</b>: The uplink LteSpectrumPhy associated to this LtePhy</li>
+</ul>
+<b>ns3::LteUePhy</b><br>
+<ul>
+<li><b>TxPower</b>: Transmission power in dBm</li>
+<li><b>NoiseFigure</b>: Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver. According to Wikipedia (http://en.wikipedia.org/wiki/Noise_figure), this is "the difference in decibels (dB) between the noise output of the actual receiver to the noise output of an  ideal receiver with the same overall gain and bandwidth when the receivers  are connected to sources at the standard noise temperature T0." In this model, we consider T0 = 290K.</li>
+<li><b>TxMode1Gain</b>: Transmission mode 1 gain in dB</li>
+<li><b>TxMode2Gain</b>: Transmission mode 2 gain in dB</li>
+<li><b>TxMode3Gain</b>: Transmission mode 3 gain in dB</li>
+<li><b>TxMode4Gain</b>: Transmission mode 4 gain in dB</li>
+<li><b>TxMode5Gain</b>: Transmission mode 5 gain in dB</li>
+<li><b>TxMode6Gain</b>: Transmission mode 6 gain in dB</li>
+<li><b>TxMode7Gain</b>: Transmission mode 7 gain in dB</li>
+<li><b>RsrpSinrSamplePeriod</b>: The sampling period for reporting RSRP-SINR stats (default value 1)</li>
+<li><b>DlSpectrumPhy</b>: The downlink LteSpectrumPhy associated to this LtePhy</li>
+<li><b>UlSpectrumPhy</b>: The uplink LteSpectrumPhy associated to this LtePhy</li>
+<li><b>RsrqUeMeasThreshold</b>: Receive threshold for PSS on RSRQ [dB]</li>
+<li><b>UeMeasurementsFilterPeriod</b>: Time period for reporting UE measurements (default 200 ms.) </li>
+<li><b>EnableUplinkPowerControl</b>: If true Uplink Power Control will be enabled</li>
+</ul>
+<b>ns3::LteAmc</b><br>
+<ul>
+<li><b>Ber</b>: The requested BER in assigning MCS (default is 0.00005).</li>
+<li><b>AmcModel</b>: AMC model used to assign CQI</li>
+</ul>
+<b>ns3::UeManager</b><br>
+<ul>
+<li><b>DataRadioBearerMap</b>: List of UE DataRadioBearerInfo by DRBID.</li>
+<li><b>Srb0</b>: SignalingRadioBearerInfo for SRB0</li>
+<li><b>Srb1</b>: SignalingRadioBearerInfo for SRB1</li>
+<li><b>C-RNTI</b>: Cell Radio Network Temporary Identifier</li>
+</ul>
+<b>ns3::LteEnbRrc</b><br>
+<ul>
+<li><b>UeMap</b>: List of UeManager by C-RNTI.</li>
+<li><b>DefaultTransmissionMode</b>: The default UEs' transmission mode (0: SISO)</li>
+<li><b>EpsBearerToRlcMapping</b>: Specify which type of RLC will be used for each type of EPS bearer. </li>
+<li><b>SystemInformationPeriodicity</b>: The interval for sending system information (Time value)</li>
+<li><b>SrsPeriodicity</b>: The SRS periodicity in milliseconds</li>
+<li><b>ConnectionRequestTimeoutDuration</b>: After a RA attempt, if no RRC CONNECTION REQUEST is received before this time, the UE context is destroyed. Must account for reception of RAR and transmission of RRC CONNECTION REQUEST over UL GRANT.</li>
+<li><b>ConnectionSetupTimeoutDuration</b>: After accepting connection request, if no RRC CONNECTION SETUP COMPLETE is received before this time, the UE context is destroyed. Must account for the UE's reception of RRC CONNECTION SETUP and transmission of RRC CONNECTION SETUP COMPLETE.</li>
+<li><b>ConnectionRejectedTimeoutDuration</b>: Time to wait between sending a RRC CONNECTION REJECT and destroying the UE context</li>
+<li><b>HandoverJoiningTimeoutDuration</b>: After accepting a handover request, if no RRC CONNECTION RECONFIGURATION COMPLETE is received before this time, the UE context is destroyed. Must account for reception of X2 HO REQ ACK by source eNB, transmission of the Handover Command, non-contention-based random access and reception of the RRC CONNECTION RECONFIGURATION COMPLETE message.</li>
+<li><b>HandoverLeavingTimeoutDuration</b>: After issuing a Handover Command, if neither RRC CONNECTION RE-ESTABLISHMENT nor X2 UE Context Release has been previously received, the UE context is destroyed.</li>
+<li><b>QRxLevMin</b>: One of information transmitted within the SIB1 message, indicating the required minimum RSRP level that any UE must receive from this cell before it is allowed to camp to this cell. The default value -70 corresponds to -140 dBm and is the lowest possible value as defined by Section 6.3.4 of 3GPP TS 36.133. This restriction, however, only applies to initial cell selection and EPC-enabled simulation.</li>
+<li><b>AdmitHandoverRequest</b>: Whether to admit an X2 handover request from another eNB</li>
+<li><b>AdmitRrcConnectionRequest</b>: Whether to admit a connection request from a UE</li>
+<li><b>RsrpFilterCoefficient</b>: Determines the strength of smoothing effect induced by layer 3 filtering of RSRP in all attached UE; if set to 0, no layer 3 filtering is applicable</li>
+<li><b>RsrqFilterCoefficient</b>: Determines the strength of smoothing effect induced by layer 3 filtering of RSRQ in all attached UE; if set to 0, no layer 3 filtering is applicable</li>
+</ul>
+<b>ns3::LteUeRrc</b><br>
+<ul>
+<li><b>DataRadioBearerMap</b>: List of UE RadioBearerInfo for Data Radio Bearers by LCID.</li>
+<li><b>Srb0</b>: SignalingRadioBearerInfo for SRB0</li>
+<li><b>Srb1</b>: SignalingRadioBearerInfo for SRB1</li>
+<li><b>CellId</b>: Serving cell identifier</li>
+<li><b>C-RNTI</b>: Cell Radio Network Temporary Identifier</li>
+<li><b>T300</b>: Timer for the RRC Connection Establishment procedure (i.e., the procedure is deemed as failed if it takes longer than this)</li>
+</ul>
+<b>ns3::LteRlcTm</b><br>
+<ul>
+<li><b>MaxTxBufferSize</b>: Maximum Size of the Transmission Buffer (in Bytes)</li>
+</ul>
+<b>ns3::LteRlcUm</b><br>
+<ul>
+<li><b>MaxTxBufferSize</b>: Maximum Size of the Transmission Buffer (in Bytes)</li>
+</ul>
+<b>ns3::LteRlcAm</b><br>
+<ul>
+<li><b>PollRetransmitTimer</b>: Value of the t-PollRetransmit (See section 7.3 of 3GPP TS 36.322)</li>
+<li><b>TxOpportunityForRetxAlwaysBigEnough</b>: If true, always pretend that the size of a TxOpportunity is big enough for retransmission. If false (default and realistic behavior), no retx is performed unless the corresponding TxOpportunity is big enough.</li>
+</ul>
+<b>ns3::LteNetDevice</b><br>
+<ul>
+<li><b>Mtu</b>: The MAC-level Maximum Transmission Unit</li>
+</ul>
+<b>ns3::LteEnbNetDevice</b><br>
+<ul>
+<li><b>LteEnbRrc</b>: The RRC associated to this EnbNetDevice</li>
+<li><b>LteHandoverAlgorithm</b>: The handover algorithm associated to this EnbNetDevice</li>
+<li><b>LteAnr</b>: The automatic neighbour relation function associated to this EnbNetDevice</li>
+<li><b>LteFfrAlgorithm</b>: The FFR algorithm associated to this EnbNetDevice</li>
+<li><b>LteEnbMac</b>: The MAC associated to this EnbNetDevice</li>
+<li><b>FfMacScheduler</b>: The scheduler associated to this EnbNetDevice</li>
+<li><b>LteEnbPhy</b>: The PHY associated to this EnbNetDevice</li>
+<li><b>UlBandwidth</b>: Uplink Transmission Bandwidth Configuration in number of Resource Blocks</li>
+<li><b>DlBandwidth</b>: Downlink Transmission Bandwidth Configuration in number of Resource Blocks</li>
+<li><b>CellId</b>: Cell Identifier</li>
+<li><b>DlEarfcn</b>: Downlink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) as per 3GPP 36.101 Section 5.7.3. </li>
+<li><b>UlEarfcn</b>: Uplink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) as per 3GPP 36.101 Section 5.7.3. </li>
+<li><b>CsgId</b>: The Closed Subscriber Group (CSG) identity that this eNodeB belongs to</li>
+<li><b>CsgIndication</b>: If true, only UEs which are members of the CSG (i.e. same CSG ID) can gain access to the eNodeB, therefore enforcing closed access mode. Otherwise, the eNodeB operates as a non-CSG cell and implements open access mode.</li>
+</ul>
+<b>ns3::LteUeNetDevice</b><br>
+<ul>
+<li><b>EpcUeNas</b>: The NAS associated to this UeNetDevice</li>
+<li><b>LteUeRrc</b>: The RRC associated to this UeNetDevice</li>
+<li><b>LteUeMac</b>: The MAC associated to this UeNetDevice</li>
+<li><b>LteUePhy</b>: The PHY associated to this UeNetDevice</li>
+<li><b>Imsi</b>: International Mobile Subscriber Identity assigned to this UE</li>
+<li><b>DlEarfcn</b>: Downlink E-UTRA Absolute Radio Frequency Channel Number (EARFCN) as per 3GPP 36.101 Section 5.7.3. </li>
+<li><b>CsgId</b>: The Closed Subscriber Group (CSG) identity that this UE is associated with, i.e., giving the UE access to cells which belong to this particular CSG. This restriction only applies to initial cell selection and EPC-enabled simulation. This does not revoke the UE's access to non-CSG cells. </li>
+</ul>
+<b>ns3::LteHelper</b><br>
+<ul>
+<li><b>Scheduler</b>: The type of scheduler to be used for eNBs. The allowed values for this attributes are the type names of any class inheriting from ns3::FfMacScheduler.</li>
+<li><b>FfrAlgorithm</b>: The type of FFR algorithm to be used for eNBs. The allowed values for this attributes are the type names of any class inheriting from ns3::LteFfrAlgorithm.</li>
+<li><b>HandoverAlgorithm</b>: The type of handover algorithm to be used for eNBs. The allowed values for this attributes are the type names of any class inheriting from ns3::LteHandoverAlgorithm.</li>
+<li><b>PathlossModel</b>: The type of pathloss model to be used. The allowed values for this attributes are the type names of any class inheriting from ns3::PropagationLossModel.</li>
+<li><b>FadingModel</b>: The type of fading model to be used.The allowed values for this attributes are the type names of any class inheriting from ns3::SpectrumPropagationLossModel.If the type is set to an empty string, no fading model is used.</li>
+<li><b>UseIdealRrc</b>: If true, LteRrcProtocolIdeal will be used for RRC signaling. If false, LteRrcProtocolReal will be used.</li>
+<li><b>AnrEnabled</b>: Activate or deactivate Automatic Neighbour Relation function</li>
+<li><b>UsePdschForCqiGeneration</b>: If true, DL-CQI will be calculated from PDCCH as signal and PDSCH as interference If false, DL-CQI will be calculated from PDCCH as signal and PDCCH as interference  </li>
+</ul>
+<b>ns3::PointToPointEpcHelper</b><br>
+<ul>
+<li><b>S1uLinkDataRate</b>: The data rate to be used for the next S1-U link to be created</li>
+<li><b>S1uLinkDelay</b>: The delay to be used for the next S1-U link to be created</li>
+<li><b>S1uLinkMtu</b>: The MTU of the next S1-U link to be created. Note that, because of the additional GTP/UDP/IP tunneling overhead, you need a MTU larger than the end-to-end MTU that you want to support.</li>
+<li><b>X2LinkDataRate</b>: The data rate to be used for the next X2 link to be created</li>
+<li><b>X2LinkDelay</b>: The delay to be used for the next X2 link to be created</li>
+<li><b>X2LinkMtu</b>: The MTU of the next X2 link to be created. Note that, because of some big X2 messages, you need a big MTU.</li>
+</ul>
+<b>ns3::RadioBearerStatsCalculator</b><br>
+<ul>
+<li><b>StartTime</b>: Start time of the on going epoch.</li>
+<li><b>EpochDuration</b>: Epoch duration.</li>
+<li><b>DlRlcOutputFilename</b>: Name of the file where the downlink results will be saved.</li>
+<li><b>UlRlcOutputFilename</b>: Name of the file where the uplink results will be saved.</li>
+<li><b>DlPdcpOutputFilename</b>: Name of the file where the downlink results will be saved.</li>
+<li><b>UlPdcpOutputFilename</b>: Name of the file where the uplink results will be saved.</li>
+</ul>
+<b>ns3::PhyStatsCalculator</b><br>
+<ul>
+<li><b>DlRsrpSinrFilename</b>: Name of the file where the RSRP/SINR statistics will be saved.</li>
+<li><b>UlSinrFilename</b>: Name of the file where the UE SINR statistics will be saved.</li>
+<li><b>UlInterferenceFilename</b>: Name of the file where the interference statistics will be saved.</li>
+</ul>
+<b>ns3::MacStatsCalculator</b><br>
+<ul>
+<li><b>DlOutputFilename</b>: Name of the file where the downlink results will be saved.</li>
+<li><b>UlOutputFilename</b>: Name of the file where the uplink results will be saved.</li>
+</ul>
+<b>ns3::PhyTxStatsCalculator</b><br>
+<ul>
+<li><b>DlTxOutputFilename</b>: Name of the file where the downlink results will be saved.</li>
+<li><b>UlTxOutputFilename</b>: Name of the file where the uplink results will be saved.</li>
+</ul>
+<b>ns3::PhyRxStatsCalculator</b><br>
+<ul>
+<li><b>DlRxOutputFilename</b>: Name of the file where the downlink results will be saved.</li>
+<li><b>UlRxOutputFilename</b>: Name of the file where the uplink results will be saved.</li>
+</ul>
+<b>ns3::RadioEnvironmentMapHelper</b><br>
+<ul>
+<li><b>ChannelPath</b>: The path to the channel for which the Radio Environment Map is to be generated</li>
+<li><b>OutputFile</b>: the filename to which the Radio Environment Map is saved</li>
+<li><b>XMin</b>: The min x coordinate of the map.</li>
+<li><b>YMin</b>: The min y coordinate of the map.</li>
+<li><b>XMax</b>: The max x coordinate of the map.</li>
+<li><b>YMax</b>: The max y coordinate of the map.</li>
+<li><b>XRes</b>: The resolution (number of points) of the map along the x axis.</li>
+<li><b>YRes</b>: The resolution (number of points) of the map along the y axis.</li>
+<li><b>Z</b>: The value of the z coordinate for which the map is to be generated</li>
+<li><b>StopWhenDone</b>: If true, Simulator::Stop () will be called as soon as the REM has been generated</li>
+<li><b>NoisePower</b>: the power of the measuring instrument noise, in Watts. Default to a kT of -174 dBm with a noise figure of 9 dB and a bandwidth of 25 LTE Resource Blocks</li>
+<li><b>MaxPointsPerIteration</b>: Maximum number of REM points to be calculated per iteration. Every point consumes approximately 5KB of memory.</li>
+<li><b>Earfcn</b>: E-UTRA Absolute Radio Frequency Channel Number (EARFCN) as per 3GPP 36.101 Section 5.7.3. </li>
+<li><b>Bandwidth</b>: Transmission Bandwidth Configuration (in number of RBs) over which the SINR will be calculated</li>
+<li><b>UseDataChannel</b>: If true, REM will be generated for PDSCH and for PDCCH otherwise </li>
+<li><b>RbId</b>: Resource block Id, for which REM will be generated,default value is -1, what means REM will be averaged from all RBs</li>
+</ul>
+<b>ns3::LteHexGridEnbTopologyHelper</b><br>
+<ul>
+<li><b>InterSiteDistance</b>: The distance [m] between nearby sites</li>
+<li><b>SectorOffset</b>: The offset [m] in the position for the node of each sector with respect to the center of the three-sector site</li>
+<li><b>SiteHeight</b>: The height [m] of each site</li>
+<li><b>MinX</b>: The x coordinate where the hex grid starts.</li>
+<li><b>MinY</b>: The y coordinate where the hex grid starts.</li>
+<li><b>GridWidth</b>: The number of sites in even rows (odd rows will have one additional site).</li>
+</ul>
+<b>ns3::FfMacScheduler</b><br>
+<ul>
+<li><b>UlCqiFilter</b>: The filter to apply on UL CQIs received</li>
+</ul>
+<b>ns3::RrFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::LteEnbMac</b><br>
+<ul>
+<li><b>NumberOfRaPreambles</b>: how many random access preambles are available for the contention based RACH process</li>
+<li><b>PreambleTransMax</b>: Maximum number of random access preamble transmissions</li>
+<li><b>RaResponseWindowSize</b>: length of the window (in TTIs) for the reception of the random access response (RAR); the resulting RAR timeout is this value + 3 ms</li>
+</ul>
+<b>ns3::LteRadioBearerTag</b><br>
+<ul>
+<li><b>rnti</b>: The rnti that indicates the UE to which packet belongs</li>
+<li><b>lcid</b>: The id whithin the UE identifying the logical channel to which the packet belongs</li>
+</ul>
+<b>ns3::EpsBearerTag</b><br>
+<ul>
+<li><b>rnti</b>: The rnti that indicates the UE which packet belongs</li>
+<li><b>bid</b>: The EPS bearer id within the UE to which the packet belongs</li>
+</ul>
+<b>ns3::PfFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::FdMtFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::TdMtFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::TtaFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::FdBetFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::TdBetFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::FdTbfqFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>DebtLimit</b>: Flow debt limit (default -625000 bytes)</li>
+<li><b>CreditLimit</b>: Flow credit limit (default 625000 bytes)</li>
+<li><b>TokenPoolSize</b>: The maximum value of flow token pool (default 1 bytes)</li>
+<li><b>CreditableThreshold</b>: Threshold of flow credit (default 0 bytes)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::TdTbfqFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>DebtLimit</b>: Flow debt limit (default -625000 bytes)</li>
+<li><b>CreditLimit</b>: Flow credit limit (default 625000 bytes)</li>
+<li><b>TokenPoolSize</b>: The maximum value of flow token pool (default 1 bytes)</li>
+<li><b>CreditableThreshold</b>: Threshold of flow credit (default 0 bytes)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::PssFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>PssFdSchedulerType</b>: FD scheduler in PSS (default value is PFsch)</li>
+<li><b>nMux</b>: The number of UE selected by TD scheduler (default value is 0)</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::CqaFfMacScheduler</b><br>
+<ul>
+<li><b>CqiTimerThreshold</b>: The number of TTIs a CQI is valid (default 1000 - 1 sec.)</li>
+<li><b>CqaMetric</b>: CqaFfMacScheduler metric type that can be: CqaFf, CqaPf</li>
+<li><b>HarqEnabled</b>: Activate/Deactivate the HARQ [by default is active].</li>
+<li><b>UlGrantMcs</b>: The MCS of the UL grant, must be [0..15] (default 0)</li>
+</ul>
+<b>ns3::TraceFadingLossModel</b><br>
+<ul>
+<li><b>TraceFilename</b>: Name of file to load a trace from.</li>
+<li><b>TraceLength</b>: The total length of the fading trace (default value 10 s.)</li>
+<li><b>SamplesNum</b>: The number of samples the trace is made of (default 10000)</li>
+<li><b>WindowSize</b>: The size of the window for the fading trace (default value 0.5 s.)</li>
+<li><b>RbNum</b>: The number of RB the trace is made of (default 100)</li>
+<li><b>RngStreamSetSize</b>: The number of RNG streams reserved for the fading model. The maximum number of streams that are needed for an LTE FDD scenario is 2 * numUEs * numeNBs.</li>
+</ul>
+<b>ns3::A2A4RsrqHandoverAlgorithm</b><br>
+<ul>
+<li><b>ServingCellThreshold</b>: If the RSRQ of the serving cell is worse than this threshold, neighbour cells are consider for handover</li>
+<li><b>NeighbourCellOffset</b>: Minimum offset between serving and best neighbour cell to trigger the Handover</li>
+</ul>
+<b>ns3::A3RsrpHandoverAlgorithm</b><br>
+<ul>
+<li><b>Hysteresis</b>: Handover margin (hysteresis) in dB (rounded to the nearest multiple of 0.5 dB)</li>
+<li><b>TimeToTrigger</b>: Time during which neighbour cell's RSRP must continuously higher than serving cell's RSRP in order to trigger a handover</li>
+</ul>
+<b>ns3::LteAnr</b><br>
+<ul>
+<li><b>Threshold</b>: Minimum RSRQ range value required for detecting a neighbour cell</li>
+</ul>
+<b>ns3::LteFfrAlgorithm</b><br>
+<ul>
+<li><b>FrCellTypeId</b>: Downlink FR cell type ID for automatic configuration,default value is 0 and it means that user needs to configure FR algorithm manually,if it is set to 1,2 or 3 FR algorithm will be configured automatically</li>
+<li><b>EnabledInUplink</b>: If FR algorithm will also work in Uplink, default value true</li>
+</ul>
+<b>ns3::LteFrHardAlgorithm</b><br>
+<ul>
+<li><b>UlSubBandOffset</b>: Uplink Offset in number of Resource Block Groups</li>
+<li><b>UlSubBandwidth</b>: Uplink Transmission SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>DlSubBandOffset</b>: Downlink Offset in number of Resource Block Groups</li>
+<li><b>DlSubBandwidth</b>: Downlink Transmission SubBandwidth Configuration in number of Resource Block Groups</li>
+</ul>
+<b>ns3::LteFrStrictAlgorithm</b><br>
+<ul>
+<li><b>UlCommonSubBandwidth</b>: Uplink Common SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>UlEdgeSubBandOffset</b>: Uplink Edge SubBand Offset in number of Resource Block Groups</li>
+<li><b>UlEdgeSubBandwidth</b>: Uplink Edge SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>DlCommonSubBandwidth</b>: Downlink Common SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>DlEdgeSubBandOffset</b>: Downlink Edge SubBand Offset in number of Resource Block Groups</li>
+<li><b>DlEdgeSubBandwidth</b>: Downlink Edge SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>RsrqThreshold</b>: If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band</li>
+<li><b>CenterPowerOffset</b>: PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0</li>
+<li><b>EdgePowerOffset</b>: PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0</li>
+<li><b>CenterAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in center areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+<li><b>EdgeAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in edge areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+</ul>
+<b>ns3::LteFrSoftAlgorithm</b><br>
+<ul>
+<li><b>UlEdgeSubBandOffset</b>: Uplink Edge SubBand Offset in number of Resource Block Groups</li>
+<li><b>UlEdgeSubBandwidth</b>: Uplink Edge SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>DlEdgeSubBandOffset</b>: Downlink Edge SubBand Offset in number of Resource Block Groups</li>
+<li><b>DlEdgeSubBandwidth</b>: Downlink Edge SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>AllowCenterUeUseEdgeSubBand</b>: If true center UEs can receive on Edge SubBand RBGs</li>
+<li><b>RsrqThreshold</b>: If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band</li>
+<li><b>CenterPowerOffset</b>: PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0</li>
+<li><b>EdgePowerOffset</b>: PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0</li>
+<li><b>CenterAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in center areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+<li><b>EdgeAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in edge areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+</ul>
+<b>ns3::LteFfrSoftAlgorithm</b><br>
+<ul>
+<li><b>UlCommonSubBandwidth</b>: Uplink Medium (Common) SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>UlEdgeSubBandOffset</b>: Uplink Edge SubBand Offset in number of Resource Block Groups</li>
+<li><b>UlEdgeSubBandwidth</b>: Uplink Edge SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>DlCommonSubBandwidth</b>: Downlink Medium (Common) SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>DlEdgeSubBandOffset</b>: Downlink Edge SubBand Offset in number of Resource Block Groups</li>
+<li><b>DlEdgeSubBandwidth</b>: Downlink Edge SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>CenterRsrqThreshold</b>: If the RSRQ of is worse than this threshold, UE should be served in Medium sub-band</li>
+<li><b>EdgeRsrqThreshold</b>: If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band</li>
+<li><b>CenterAreaPowerOffset</b>: PdschConfigDedicated::Pa value for Center Sub-band, default value dB0</li>
+<li><b>MediumAreaPowerOffset</b>: PdschConfigDedicated::Pa value for Medium Sub-band, default value dB0</li>
+<li><b>EdgeAreaPowerOffset</b>: PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0</li>
+<li><b>CenterAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in center areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+<li><b>MediumAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in medium areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+<li><b>EdgeAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in edge areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+</ul>
+<b>ns3::LteFfrEnhancedAlgorithm</b><br>
+<ul>
+<li><b>UlSubBandOffset</b>: Uplink SubBand Offset for this cell in number of Resource Block Groups</li>
+<li><b>UlReuse3SubBandwidth</b>: Uplink Reuse 3 SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>UlReuse1SubBandwidth</b>: Uplink Reuse 1 SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>DlSubBandOffset</b>: Downlink SubBand Offset for this cell in number of Resource Block Groups</li>
+<li><b>DlReuse3SubBandwidth</b>: Downlink Reuse 3 SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>DlReuse1SubBandwidth</b>: Downlink Reuse 1 SubBandwidth Configuration in number of Resource Block Groups</li>
+<li><b>RsrqThreshold</b>: If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band</li>
+<li><b>CenterAreaPowerOffset</b>: PdschConfigDedicated::Pa value for Center Sub-band, default value dB0</li>
+<li><b>EdgeAreaPowerOffset</b>: PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0</li>
+<li><b>DlCqiThreshold</b>: If the DL-CQI for RBG of is higher than this threshold, transmission on RBG is possible</li>
+<li><b>UlCqiThreshold</b>: If the UL-CQI for RBG of is higher than this threshold, transmission on RBG is possible</li>
+<li><b>CenterAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in center areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+<li><b>EdgeAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in edge areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+</ul>
+<b>ns3::LteFfrDistributedAlgorithm</b><br>
+<ul>
+<li><b>CalculationInterval</b>: Time interval between calculation of Edge sub-band, Default value 1 second</li>
+<li><b>RsrqThreshold</b>: If the RSRQ of is worse than this threshold, UE should be served in Edge sub-band</li>
+<li><b>RsrpDifferenceThreshold</b>: If the difference between the power of the signal received by UE from the serving cell and the power of the signal received from the adjacent cell is less than a RsrpDifferenceThreshold value, the cell weight is incremented</li>
+<li><b>CenterPowerOffset</b>: PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0</li>
+<li><b>EdgePowerOffset</b>: PdschConfigDedicated::Pa value for Edge Sub-band, default value dB0</li>
+<li><b>EdgeRbNum</b>: Number of RB that can be used in edge Sub-band</li>
+<li><b>CenterAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in center areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+<li><b>EdgeAreaTpc</b>: TPC value which will be set in DL-DCI for UEs in edge areaAbsolute mode is used, default value 1 is mapped to -1 according toTS36.213 Table 5.1.1.1-2</li>
+</ul>
+<b>ns3::LteUePowerControl</b><br>
+<ul>
+<li><b>ClosedLoop</b>: If true Closed Loop mode will be active, otherwise Open Loop</li>
+<li><b>AccumulationEnabled</b>: If true TCP accumulation mode will be active, otherwise absolute mode will be active</li>
+<li><b>Alpha</b>: Value of Alpha paramter</li>
+<li><b>Pcmax</b>: Max Transmission power in dBm, Default value 23 dBmTS36.101 section 6.2.3</li>
+<li><b>Pcmin</b>: Min Transmission power in dBm, Default value -40 dBmTS36.101 section 6.2.3</li>
+<li><b>PoNominalPusch</b>: P_O_NOMINAL_PUSCH   INT (-126 ... 24), Default value -80</li>
+<li><b>PoUePusch</b>: P_O_UE_PUSCH   INT(-8...7), Default value 0</li>
+<li><b>PsrsOffset</b>: P_SRS_OFFSET   INT(0...15), Default value 7</li>
+</ul>
+<b>ns3::YansWifiPhy</b><br>
+<ul>
+<li><b>EnergyDetectionThreshold</b>: The energy of a received signal should be higher than this threshold (dbm) to allow the PHY layer to detect the signal.</li>
+<li><b>CcaMode1Threshold</b>: The energy of a received signal should be higher than this threshold (dbm) to allow the PHY layer to declare CCA BUSY state</li>
+<li><b>TxGain</b>: Transmission gain (dB).</li>
+<li><b>RxGain</b>: Reception gain (dB).</li>
+<li><b>TxPowerLevels</b>: Number of transmission power levels available between TxPowerStart and TxPowerEnd included.</li>
+<li><b>TxPowerEnd</b>: Maximum available transmission level (dbm).</li>
+<li><b>TxPowerStart</b>: Minimum available transmission level (dbm).</li>
+<li><b>RxNoiseFigure</b>: Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver. According to Wikipedia (http://en.wikipedia.org/wiki/Noise_figure), this is "the difference in decibels (dB) between the noise output of the actual receiver to the noise output of an  ideal receiver with the same overall gain and bandwidth when the receivers  are connected to sources at the standard noise temperature T0 (usually 290 K)". For</li>
+<li><b>State</b>: The state of the PHY layer</li>
+<li><b>ChannelSwitchDelay</b>: Delay between two short frames transmitted on different frequencies.</li>
+<li><b>ChannelNumber</b>: Channel center frequency = Channel starting frequency + 5 MHz * nch</li>
+<li><b>Frequency</b>: The operating frequency.</li>
+<li><b>Transmitters</b>: The number of transmitters.</li>
+<li><b>Recievers</b>: The number of recievers.</li>
+<li><b>ShortGuardEnabled</b>: Whether or not short guard interval is enabled.</li>
+<li><b>LdpcEnabled</b>: Whether or not LDPC is enabled.</li>
+<li><b>STBCEnabled</b>: Whether or not STBC is enabled.</li>
+<li><b>GreenfieldEnabled</b>: Whether or not STBC is enabled.</li>
+<li><b>ChannelBonding</b>: Whether 20MHz or 40MHz.</li>
+</ul>
+<b>ns3::YansWifiChannel</b><br>
+<ul>
+<li><b>PropagationLossModel</b>: A pointer to the propagation loss model attached to this channel.</li>
+<li><b>PropagationDelayModel</b>: A pointer to the propagation delay model attached to this channel.</li>
+</ul>
+<b>ns3::WifiMacQueue</b><br>
+<ul>
+<li><b>MaxPacketNumber</b>: If a packet arrives when there are already this number of packets, it is dropped.</li>
+<li><b>MaxDelay</b>: If a packet stays longer than this delay in the queue, it is dropped.</li>
+</ul>
+<b>ns3::DcaTxop</b><br>
+<ul>
+<li><b>Queue</b>: The WifiMacQueue object</li>
+</ul>
+<b>ns3::Dcf</b><br>
+<ul>
+<li><b>MinCw</b>: The minimum value of the contention window.</li>
+<li><b>MaxCw</b>: The maximum value of the contention window.</li>
+<li><b>Aifsn</b>: The AIFSN: the default value conforms to simple DCA.</li>
+</ul>
+<b>ns3::WifiMac</b><br>
+<ul>
+<li><b>CtsTimeout</b>: When this timeout expires, the RTS/CTS handshake has failed.</li>
+<li><b>AckTimeout</b>: When this timeout expires, the DATA/ACK handshake has failed.</li>
+<li><b>BasicBlockAckTimeout</b>: When this timeout expires, the BASIC_BLOCK_ACK_REQ/BASIC_BLOCK_ACK handshake has failed.</li>
+<li><b>CompressedBlockAckTimeout</b>: When this timeout expires, the COMPRESSED_BLOCK_ACK_REQ/COMPRESSED_BLOCK_ACK handshake has failed.</li>
+<li><b>Sifs</b>: The value of the SIFS constant.</li>
+<li><b>EifsNoDifs</b>: The value of EIFS-DIFS</li>
+<li><b>Slot</b>: The duration of a Slot.</li>
+<li><b>Pifs</b>: The value of the PIFS constant.</li>
+<li><b>Rifs</b>: The value of the RIFS constant.</li>
+<li><b>MaxPropagationDelay</b>: The maximum propagation delay. Unused for now.</li>
+<li><b>Ssid</b>: The ssid we want to belong to.</li>
+</ul>
+<b>ns3::RegularWifiMac</b><br>
+<ul>
+<li><b>QosSupported</b>: This Boolean attribute is set to enable 802.11e/WMM-style QoS support at this STA</li>
+<li><b>HtSupported</b>: This Boolean attribute is set to enable 802.11n support at this STA</li>
+<li><b>CtsToSelfSupported</b>: Use CTS to Self when using a rate that is not in the basic set rate</li>
+<li><b>DcaTxop</b>: The DcaTxop object</li>
+<li><b>VO_EdcaTxopN</b>: Queue that manages packets belonging to AC_VO access class</li>
+<li><b>VI_EdcaTxopN</b>: Queue that manages packets belonging to AC_VI access class</li>
+<li><b>BE_EdcaTxopN</b>: Queue that manages packets belonging to AC_BE access class</li>
+<li><b>BK_EdcaTxopN</b>: Queue that manages packets belonging to AC_BK access class</li>
+</ul>
+<b>ns3::WifiRemoteStationManager</b><br>
+<ul>
+<li><b>IsLowLatency</b>: If true, we attempt to modelize a so-called low-latency device: a device where decisions about tx parameters can be made on a per-packet basis and feedback about the transmission of each packet is obtained before sending the next. Otherwise, we modelize a  high-latency device, that is a device where we cannot update our decision about tx parameters after every packet transmission.</li>
+<li><b>MaxSsrc</b>: The maximum number of retransmission attempts for an RTS. This value will not have any effect on some rate control algorithms.</li>
+<li><b>MaxSlrc</b>: The maximum number of retransmission attempts for a DATA packet. This value will not have any effect on some rate control algorithms.</li>
+<li><b>RtsCtsThreshold</b>: If  the size of the data packet + LLC header + MAC header + FCS trailer is bigger than this value, we use an RTS/CTS handshake before sending the data, as per IEEE Std. 802.11-2012, Section 9.3.5. This value will not have any effect on some rate control algorithms.</li>
+<li><b>FragmentationThreshold</b>: If the size of the data packet + LLC header + MAC header + FCS trailer is biggerthan this value, we fragment it such that the size of the fragments are equal or smaller than this value, as per IEEE Std. 802.11-2012, Section 9.5. This value will not have any effect on some rate control algorithms.</li>
+<li><b>NonUnicastMode</b>: Wifi mode used for non-unicast transmissions.</li>
+<li><b>DefaultTxPowerLevel</b>: Default power level to be used for transmissions. This is the power level that is used by all those WifiManagers that do notimplement TX power control.</li>
+</ul>
+<b>ns3::ApWifiMac</b><br>
+<ul>
+<li><b>BeaconInterval</b>: Delay between two beacons</li>
+<li><b>BeaconJitter</b>: A uniform random variable to cause the initial beacon starting time (after simulation time 0) to be distributed between 0 and the BeaconInterval.</li>
+<li><b>EnableBeaconJitter</b>: If beacons are enabled, whether to jitter the initial send event.</li>
+<li><b>BeaconGeneration</b>: Whether or not beacons are generated.</li>
+</ul>
+<b>ns3::StaWifiMac</b><br>
+<ul>
+<li><b>ProbeRequestTimeout</b>: The interval between two consecutive probe request attempts.</li>
+<li><b>AssocRequestTimeout</b>: The interval between two consecutive assoc request attempts.</li>
+<li><b>MaxMissedBeacons</b>: Number of beacons which much be consecutively missed before we attempt to restart association.</li>
+<li><b>ActiveProbing</b>: If true, we send probe requests. If false, we don't. NOTE: if more than one STA in your simulation is using active probing, you should enable it at a different simulation time for each STA, otherwise all the STAs will start sending probes at the same time resulting in collisions. See bug 1060 for more info.</li>
+</ul>
+<b>ns3::WifiNetDevice</b><br>
+<ul>
+<li><b>Mtu</b>: The MAC-level Maximum Transmission Unit</li>
+<li><b>Channel</b>: The channel attached to this device</li>
+<li><b>Phy</b>: The PHY layer attached to this device.</li>
+<li><b>Mac</b>: The MAC layer attached to this device.</li>
+<li><b>RemoteStationManager</b>: The station manager attached to this device.</li>
+</ul>
+<b>ns3::ArfWifiManager</b><br>
+<ul>
+<li><b>TimerThreshold</b>: The 'timer' threshold in the ARF algorithm.</li>
+<li><b>SuccessThreshold</b>: The minimum number of sucessfull transmissions to try a new rate.</li>
+</ul>
+<b>ns3::AarfWifiManager</b><br>
+<ul>
+<li><b>SuccessK</b>: Multiplication factor for the success threshold in the AARF algorithm.</li>
+<li><b>TimerK</b>: Multiplication factor for the timer threshold in the AARF algorithm.</li>
+<li><b>MaxSuccessThreshold</b>: Maximum value of the success threshold in the AARF algorithm.</li>
+<li><b>MinTimerThreshold</b>: The minimum value for the 'timer' threshold in the AARF algorithm.</li>
+<li><b>MinSuccessThreshold</b>: The minimum value for the success threshold in the AARF algorithm.</li>
+</ul>
+<b>ns3::IdealWifiManager</b><br>
+<ul>
+<li><b>BerThreshold</b>: The maximum Bit Error Rate acceptable at any transmission mode</li>
+</ul>
+<b>ns3::ConstantRateWifiManager</b><br>
+<ul>
+<li><b>DataMode</b>: The transmission mode to use for every data packet transmission</li>
+<li><b>ControlMode</b>: The transmission mode to use for every control packet transmission.</li>
+</ul>
+<b>ns3::AmrrWifiManager</b><br>
+<ul>
+<li><b>UpdatePeriod</b>: The interval between decisions about rate control changes</li>
+<li><b>FailureRatio</b>: Ratio of minimum erroneous transmissions needed to switch to a lower rate</li>
+<li><b>SuccessRatio</b>: Ratio of maximum erroneous transmissions needed to switch to a higher rate</li>
+<li><b>MaxSuccessThreshold</b>: Maximum number of consecutive success periods needed to switch to a higher rate</li>
+<li><b>MinSuccessThreshold</b>: Minimum number of consecutive success periods needed to switch to a higher rate</li>
+</ul>
+<b>ns3::OnoeWifiManager</b><br>
+<ul>
+<li><b>UpdatePeriod</b>: The interval between decisions about rate control changes</li>
+<li><b>RaiseThreshold</b>: Attempt to raise the rate if we hit that threshold</li>
+<li><b>AddCreditThreshold</b>: Add credit threshold</li>
+</ul>
+<b>ns3::RraaWifiManager</b><br>
+<ul>
+<li><b>Basic</b>: If true the RRAA-BASIC algorithm will be used, otherwise the RRAA wil be used</li>
+<li><b>Timeout</b>: Timeout for the RRAA BASIC loss estimaton block (s)</li>
+<li><b>ewndFor54mbps</b>: ewnd parameter for 54 Mbs data mode</li>
+<li><b>ewndFor48mbps</b>: ewnd parameter for 48 Mbs data mode</li>
+<li><b>ewndFor36mbps</b>: ewnd parameter for 36 Mbs data mode</li>
+<li><b>ewndFor24mbps</b>: ewnd parameter for 24 Mbs data mode</li>
+<li><b>ewndFor18mbps</b>: ewnd parameter for 18 Mbs data mode</li>
+<li><b>ewndFor12mbps</b>: ewnd parameter for 12 Mbs data mode</li>
+<li><b>ewndFor9mbps</b>: ewnd parameter for 9 Mbs data mode</li>
+<li><b>ewndFor6mbps</b>: ewnd parameter for 6 Mbs data mode</li>
+<li><b>poriFor48mbps</b>: Pori parameter for 48 Mbs data mode</li>
+<li><b>poriFor36mbps</b>: Pori parameter for 36 Mbs data mode</li>
+<li><b>poriFor24mbps</b>: Pori parameter for 24 Mbs data mode</li>
+<li><b>poriFor18mbps</b>: Pori parameter for 18 Mbs data mode</li>
+<li><b>poriFor12mbps</b>: Pori parameter for 12 Mbs data mode</li>
+<li><b>poriFor9mbps</b>: Pori parameter for 9 Mbs data mode</li>
+<li><b>poriFor6mbps</b>: Pori parameter for 6 Mbs data mode</li>
+<li><b>pmtlFor54mbps</b>: Pmtl parameter for 54 Mbs data mode</li>
+<li><b>pmtlFor48mbps</b>: Pmtl parameter for 48 Mbs data mode</li>
+<li><b>pmtlFor36mbps</b>: Pmtl parameter for 36 Mbs data mode</li>
+<li><b>pmtlFor24mbps</b>: Pmtl parameter for 24 Mbs data mode</li>
+<li><b>pmtlFor18mbps</b>: Pmtl parameter for 18 Mbs data mode</li>
+<li><b>pmtlFor12mbps</b>: Pmtl parameter for 12 Mbs data mode</li>
+<li><b>pmtlFor9mbps</b>: Pmtl parameter for 9 Mbs data mode</li>
+</ul>
+<b>ns3::AarfcdWifiManager</b><br>
+<ul>
+<li><b>SuccessK</b>: Multiplication factor for the success threshold in the AARF algorithm.</li>
+<li><b>TimerK</b>: Multiplication factor for the timer threshold in the AARF algorithm.</li>
+<li><b>MaxSuccessThreshold</b>: Maximum value of the success threshold in the AARF algorithm.</li>
+<li><b>MinTimerThreshold</b>: The minimum value for the 'timer' threshold in the AARF algorithm.</li>
+<li><b>MinSuccessThreshold</b>: The minimum value for the success threshold in the AARF algorithm.</li>
+<li><b>MinRtsWnd</b>: Minimum value for Rts window of Aarf-CD</li>
+<li><b>MaxRtsWnd</b>: Maximum value for Rts window of Aarf-CD</li>
+<li><b>TurnOffRtsAfterRateDecrease</b>: If true the RTS mechanism will be turned off when the rate will be decreased</li>
+<li><b>TurnOnRtsAfterRateIncrease</b>: If true the RTS mechanism will be turned on when the rate will be increased</li>
+</ul>
+<b>ns3::CaraWifiManager</b><br>
+<ul>
+<li><b>ProbeThreshold</b>: The number of consecutive transmissions failure to activate the RTS probe.</li>
+<li><b>FailureThreshold</b>: The number of consecutive transmissions failure to decrease the rate.</li>
+<li><b>SuccessThreshold</b>: The minimum number of sucessfull transmissions to try a new rate.</li>
+<li><b>Timeout</b>: The 'timer' in the CARA algorithm</li>
+</ul>
+<b>ns3::MinstrelWifiManager</b><br>
+<ul>
+<li><b>UpdateStatistics</b>: The interval between updating statistics table </li>
+<li><b>LookAroundRate</b>: the percentage to try other rates</li>
+<li><b>EWMA</b>: EWMA level</li>
+<li><b>SampleColumn</b>: The number of columns used for sampling</li>
+<li><b>PacketLength</b>: The packet length used for calculating mode TxTime</li>
+</ul>
+<b>ns3::QosTag</b><br>
+<ul>
+<li><b>tid</b>: The tid that indicates AC which packet belongs</li>
+</ul>
+<b>ns3::EdcaTxopN</b><br>
+<ul>
+<li><b>BlockAckThreshold</b>: If number of packets in this queue reaches this value,                                         block ack mechanism is used. If this value is 0, block ack is never used.</li>
+<li><b>BlockAckInactivityTimeout</b>: Represents max time (blocks of 1024 micro seconds) allowed for block ack                                                 inactivity. If this value isn't equal to 0 a timer start after that a                                                 block ack setup is completed and will be reset every time that a block                                                 ack frame is received. If this value is 0, block ack inactivity timeout won't be used.</li>
+<li><b>Queue</b>: The WifiMacQueue object</li>
+</ul>
+<b>ns3::MsduStandardAggregator</b><br>
+<ul>
+<li><b>MaxAmsduSize</b>: Max length in byte of an A-MSDU</li>
+</ul>
+<b>ns3::SnrTag</b><br>
+<ul>
+<li><b>Snr</b>: The snr of the last packet received</li>
+</ul>
+<b>ns3::AthstatsWifiTraceSink</b><br>
+<ul>
+<li><b>Interval</b>: Time interval between reports</li>
+</ul>
+<b>ns3::WifiRadioEnergyModel</b><br>
+<ul>
+<li><b>IdleCurrentA</b>: The default radio Idle current in Ampere.</li>
+<li><b>CcaBusyCurrentA</b>: The default radio CCA Busy State current in Ampere.</li>
+<li><b>TxCurrentA</b>: The radio Tx current in Ampere.</li>
+<li><b>RxCurrentA</b>: The radio Rx current in Ampere.</li>
+<li><b>SwitchingCurrentA</b>: The default radio Channel Switch current in Ampere.</li>
+<li><b>SleepCurrentA</b>: The radio Sleep current in Ampere.</li>
+<li><b>TxCurrentModel</b>: A pointer to the attached tx current model.</li>
+</ul>
+<b>ns3::BasicEnergySource</b><br>
+<ul>
+<li><b>BasicEnergySourceInitialEnergyJ</b>: Initial energy stored in basic energy source.</li>
+<li><b>BasicEnergySupplyVoltageV</b>: Initial supply voltage for basic energy source.</li>
+<li><b>BasicEnergyLowBatteryThreshold</b>: Low battery threshold for basic energy source.</li>
+<li><b>BasicEnergyHighBatteryThreshold</b>: High battery threshold for basic energy source.</li>
+<li><b>PeriodicEnergyUpdateInterval</b>: Time between two consecutive periodic energy updates.</li>
+</ul>
+<b>ns3::LiIonEnergySource</b><br>
+<ul>
+<li><b>LiIonEnergySourceInitialEnergyJ</b>: Initial energy stored in basic energy source.</li>
+<li><b>LiIonEnergyLowBatteryThreshold</b>: Low battery threshold for LiIon energy source.</li>
+<li><b>InitialCellVoltage</b>: Initial (maximum) voltage of the cell (fully charged).</li>
+<li><b>NominalCellVoltage</b>: Nominal voltage of the cell.</li>
+<li><b>ExpCellVoltage</b>: Cell voltage at the end of the exponential zone.</li>
+<li><b>RatedCapacity</b>: Rated capacity of the cell.</li>
+<li><b>NomCapacity</b>: Cell capacity at the end of the nominal zone.</li>
+<li><b>ExpCapacity</b>: Cell Capacity at the end of the exponential zone.</li>
+<li><b>InternalResistance</b>: Internal resistance of the cell</li>
+<li><b>TypCurrent</b>: Typical discharge current used to fit the curves</li>
+<li><b>ThresholdVoltage</b>: Minimum threshold voltage to consider the battery depleted.</li>
+<li><b>PeriodicEnergyUpdateInterval</b>: Time between two consecutive periodic energy updates.</li>
+</ul>
+<b>ns3::RvBatteryModel</b><br>
+<ul>
+<li><b>RvBatteryModelPeriodicEnergyUpdateInterval</b>: RV battery model sampling interval.</li>
+<li><b>RvBatteryModelLowBatteryThreshold</b>: Low battery threshold.</li>
+<li><b>RvBatteryModelOpenCircuitVoltage</b>: RV battery model open circuit voltage.</li>
+<li><b>RvBatteryModelCutoffVoltage</b>: RV battery model cutoff voltage.</li>
+<li><b>RvBatteryModelAlphaValue</b>: RV battery model alpha value.</li>
+<li><b>RvBatteryModelBetaValue</b>: RV battery model beta value.</li>
+<li><b>RvBatteryModelNumOfTerms</b>: The number of terms of the infinite sum for estimating battery level.</li>
+</ul>
+<b>ns3::BasicEnergyHarvester</b><br>
+<ul>
+<li><b>PeriodicHarvestedPowerUpdateInterval</b>: Time between two consecutive periodic updates of the harvested power. By default, the value is updated every 1 s</li>
+<li><b>HarvestablePower</b>: The harvestable power [Watts] that the energy harvester is allowed to harvest. By default, the model will allow to harvest an amount of power defined by a uniformly distributed random variable in 0 and 2.0 Watts</li>
+</ul>
+<b>ns3::LinearWifiTxCurrentModel</b><br>
+<ul>
+<li><b>Eta</b>: The efficiency of the power amplifier.</li>
+<li><b>Voltage</b>: The supply voltage (in Volts).</li>
+<li><b>IdleCurrent</b>: The current in the IDLE state (in Watts).</li>
+</ul>
+<b>ns3::UanChannel</b><br>
+<ul>
+<li><b>PropagationModel</b>: A pointer to the propagation model.</li>
+<li><b>NoiseModel</b>: A pointer to the model of the channel ambient noise.</li>
+</ul>
+<b>ns3::UanNoiseModelDefault</b><br>
+<ul>
+<li><b>Wind</b>: Wind speed in m/s.</li>
+<li><b>Shipping</b>: Shipping contribution to noise between 0 and 1.</li>
+</ul>
+<b>ns3::UanPhyGen</b><br>
+<ul>
+<li><b>CcaThreshold</b>: Aggregate energy of incoming signals to move to CCA Busy state dB.</li>
+<li><b>RxThreshold</b>: Required SNR for signal acquisition in dB.</li>
+<li><b>TxPower</b>: Transmission output power in dB.</li>
+<li><b>RxGain</b>: Gain added to incoming signal at receiver.</li>
+<li><b>SupportedModes</b>: List of modes supported by this PHY.</li>
+<li><b>PerModel</b>: Functor to calculate PER based on SINR and TxMode.</li>
+<li><b>SinrModel</b>: Functor to calculate SINR based on pkt arrivals and modes.</li>
+</ul>
+<b>ns3::UanPhyPerGenDefault</b><br>
+<ul>
+<li><b>Threshold</b>: SINR cutoff for good packet reception.</li>
+</ul>
+<b>ns3::UanPhyCalcSinrFhFsk</b><br>
+<ul>
+<li><b>NumberOfHops</b>: Number of frequencies in hopping pattern.</li>
+</ul>
+<b>ns3::UanNetDevice</b><br>
+<ul>
+<li><b>Channel</b>: The channel attached to this device.</li>
+<li><b>Phy</b>: The PHY layer attached to this device.</li>
+<li><b>Mac</b>: The MAC layer attached to this device.</li>
+<li><b>Transducer</b>: The Transducer attached to this device.</li>
+</ul>
+<b>ns3::UanMacCw</b><br>
+<ul>
+<li><b>CW</b>: The MAC parameter CW.</li>
+<li><b>SlotTime</b>: Time slot duration for MAC backoff.</li>
+</ul>
+<b>ns3::UanPropModelThorp</b><br>
+<ul>
+<li><b>SpreadCoef</b>: Spreading coefficient used in calculation of Thorp's approximation.</li>
+</ul>
+<b>ns3::UanPhyDual</b><br>
+<ul>
+<li><b>CcaThresholdPhy1</b>: Aggregate energy of incoming signals to move to CCA Busy state dB of Phy1.</li>
+<li><b>CcaThresholdPhy2</b>: Aggregate energy of incoming signals to move to CCA Busy state dB of Phy2.</li>
+<li><b>TxPowerPhy1</b>: Transmission output power in dB of Phy1.</li>
+<li><b>TxPowerPhy2</b>: Transmission output power in dB of Phy2.</li>
+<li><b>RxGainPhy1</b>: Gain added to incoming signal at receiver of Phy1.</li>
+<li><b>RxGainPhy2</b>: Gain added to incoming signal at receiver of Phy2.</li>
+<li><b>SupportedModesPhy1</b>: List of modes supported by Phy1.</li>
+<li><b>SupportedModesPhy2</b>: List of modes supported by Phy2.</li>
+<li><b>PerModelPhy1</b>: Functor to calculate PER based on SINR and TxMode for Phy1.</li>
+<li><b>PerModelPhy2</b>: Functor to calculate PER based on SINR and TxMode for Phy2.</li>
+<li><b>SinrModelPhy1</b>: Functor to calculate SINR based on pkt arrivals and modes for Phy1.</li>
+<li><b>SinrModelPhy2</b>: Functor to calculate SINR based on pkt arrivals and modes for Phy2.</li>
+</ul>
+<b>ns3::UanMacRc</b><br>
+<ul>
+<li><b>RetryRate</b>: Number of retry attempts per second (of RTS/GWPING).</li>
+<li><b>MaxFrames</b>: Maximum number of frames to include in a single RTS.</li>
+<li><b>QueueLimit</b>: Maximum packets to queue at MAC.</li>
+<li><b>SIFS</b>: Spacing to give between frames (this should match gateway).</li>
+<li><b>NumberOfRates</b>: Number of rate divisions supported by each PHY.</li>
+<li><b>MinRetryRate</b>: Smallest allowed RTS retry rate.</li>
+<li><b>RetryStep</b>: Retry rate increment.</li>
+<li><b>MaxPropDelay</b>: Maximum possible propagation delay to gateway.</li>
+</ul>
+<b>ns3::UanMacRcGw</b><br>
+<ul>
+<li><b>MaxReservations</b>: Maximum number of reservations to accept per cycle.</li>
+<li><b>NumberOfRates</b>: Number of rates per Phy layer.</li>
+<li><b>MaxPropDelay</b>: Maximum propagation delay between gateway and non-gateway nodes.</li>
+<li><b>SIFS</b>: Spacing between frames to account for timing error and processing delay.</li>
+<li><b>NumberOfNodes</b>: Number of non-gateway nodes in this gateway's neighborhood.</li>
+<li><b>MinRetryRate</b>: Smallest allowed RTS retry rate.</li>
+<li><b>RetryStep</b>: Retry rate increment.</li>
+<li><b>TotalRate</b>: Total available channel rate in bps (for a single channel, without splitting reservation channel).</li>
+<li><b>RateStep</b>: Increments available for rate assignment in bps.</li>
+<li><b>FrameSize</b>: Size of data frames in bytes.</li>
+</ul>
+<b>ns3::AcousticModemEnergyModel</b><br>
+<ul>
+<li><b>TxPowerW</b>: The modem Tx power in Watts</li>
+<li><b>RxPowerW</b>: The modem Rx power in Watts</li>
+<li><b>IdlePowerW</b>: The modem Idle power in Watts</li>
+<li><b>SleepPowerW</b>: The modem Sleep power in Watts</li>
+</ul>
+<b>ns3::aodv::RoutingProtocol</b><br>
+<ul>
+<li><b>HelloInterval</b>: HELLO messages emission interval.</li>
+<li><b>RreqRetries</b>: Maximum number of retransmissions of RREQ to discover a route</li>
+<li><b>RreqRateLimit</b>: Maximum number of RREQ per second.</li>
+<li><b>RerrRateLimit</b>: Maximum number of RERR per second.</li>
+<li><b>NodeTraversalTime</b>: Conservative estimate of the average one hop traversal time for packets and should include queuing delays, interrupt processing times and transfer times.</li>
+<li><b>NextHopWait</b>: Period of our waiting for the neighbour's RREP_ACK = 10 ms + NodeTraversalTime</li>
+<li><b>ActiveRouteTimeout</b>: Period of time during which the route is considered to be valid</li>
+<li><b>MyRouteTimeout</b>: Value of lifetime field in RREP generating by this node = 2 * max(ActiveRouteTimeout, PathDiscoveryTime)</li>
+<li><b>BlackListTimeout</b>: Time for which the node is put into the blacklist = RreqRetries * NetTraversalTime</li>
+<li><b>DeletePeriod</b>: DeletePeriod is intended to provide an upper bound on the time for which an upstream node A can have a neighbor B as an active next hop for destination D, while B has invalidated the route to D. = 5 * max (HelloInterval, ActiveRouteTimeout)</li>
+<li><b>NetDiameter</b>: Net diameter measures the maximum possible number of hops between two nodes in the network</li>
+<li><b>NetTraversalTime</b>: Estimate of the average net traversal time = 2 * NodeTraversalTime * NetDiameter</li>
+<li><b>PathDiscoveryTime</b>: Estimate of maximum time needed to find route in network = 2 * NetTraversalTime</li>
+<li><b>MaxQueueLen</b>: Maximum number of packets that we allow a routing protocol to buffer.</li>
+<li><b>MaxQueueTime</b>: Maximum time packets can be queued (in seconds)</li>
+<li><b>AllowedHelloLoss</b>: Number of hello messages which may be loss for valid link.</li>
+<li><b>GratuitousReply</b>: Indicates whether a gratuitous RREP should be unicast to the node originated route discovery.</li>
+<li><b>DestinationOnly</b>: Indicates only the destination may respond to this RREQ.</li>
+<li><b>EnableHello</b>: Indicates whether a hello messages enable.</li>
+<li><b>EnableBroadcast</b>: Indicates whether a broadcast data packets forwarding enable.</li>
+<li><b>UniformRv</b>: Access to the underlying UniformRandomVariable</li>
+</ul>
+<b>ns3::MeshPointDevice</b><br>
+<ul>
+<li><b>Mtu</b>: The MAC-level Maximum Transmission Unit</li>
+<li><b>RoutingProtocol</b>: The mesh routing protocol used by this mesh point.</li>
+</ul>
+<b>ns3::MeshWifiInterfaceMac</b><br>
+<ul>
+<li><b>BeaconInterval</b>: Beacon Interval</li>
+<li><b>RandomStart</b>: Window when beacon generating starts (uniform random) in seconds</li>
+<li><b>BeaconGeneration</b>: Enable/Disable Beaconing.</li>
+</ul>
+<b>ns3::dot11s::PeerLink</b><br>
+<ul>
+<li><b>RetryTimeout</b>: Retry timeout</li>
+<li><b>HoldingTimeout</b>: Holding timeout</li>
+<li><b>ConfirmTimeout</b>: Confirm timeout</li>
+<li><b>MaxRetries</b>: Maximum number of retries</li>
+<li><b>MaxBeaconLoss</b>: Maximum number of lost beacons before link will be closed</li>
+<li><b>MaxPacketFailure</b>: Maximum number of failed packets before link will be closed</li>
+</ul>
+<b>ns3::dot11s::PeerManagementProtocol</b><br>
+<ul>
+<li><b>MaxNumberOfPeerLinks</b>: Maximum number of peer links</li>
+<li><b>MaxBeaconShiftValue</b>: Maximum number of TUs for beacon shifting</li>
+<li><b>EnableBeaconCollisionAvoidance</b>: Enable/Disable Beacon collision avoidance.</li>
+</ul>
+<b>ns3::dot11s::HwmpProtocol</b><br>
+<ul>
+<li><b>RandomStart</b>: Random delay at first proactive PREQ</li>
+<li><b>MaxQueueSize</b>: Maximum number of packets we can store when resolving route</li>
+<li><b>Dot11MeshHWMPmaxPREQretries</b>: Maximum number of retries before we suppose the destination to be unreachable</li>
+<li><b>Dot11MeshHWMPnetDiameterTraversalTime</b>: Time we suppose the packet to go from one edge of the network to another</li>
+<li><b>Dot11MeshHWMPpreqMinInterval</b>: Minimal interval between to successive PREQs</li>
+<li><b>Dot11MeshHWMPperrMinInterval</b>: Minimal interval between to successive PREQs</li>
+<li><b>Dot11MeshHWMPactiveRootTimeout</b>: Lifetime of poractive routing information</li>
+<li><b>Dot11MeshHWMPactivePathTimeout</b>: Lifetime of reactive routing information</li>
+<li><b>Dot11MeshHWMPpathToRootInterval</b>: Interval between two successive proactive PREQs</li>
+<li><b>Dot11MeshHWMPrannInterval</b>: Lifetime of poractive routing information</li>
+<li><b>MaxTtl</b>: Initial value of Time To Live field</li>
+<li><b>UnicastPerrThreshold</b>: Maximum number of PERR receivers, when we send a PERR as a chain of unicasts</li>
+<li><b>UnicastPreqThreshold</b>: Maximum number of PREQ receivers, when we send a PREQ as a chain of unicasts</li>
+<li><b>UnicastDataThreshold</b>: Maximum number ofbroadcast receivers, when we send a broadcast as a chain of unicasts</li>
+<li><b>DoFlag</b>: Destination only HWMP flag</li>
+<li><b>RfFlag</b>: Reply and forward flag</li>
+</ul>
+<b>ns3::dot11s::AirtimeLinkMetricCalculator</b><br>
+<ul>
+<li><b>TestLength</b>: Rate should be estimated using test length.</li>
+<li><b>Dot11MetricTid</b>: TID used to calculate metric (data rate)</li>
+</ul>
+<b>ns3::flame::FlameRtable</b><br>
+<ul>
+<li><b>Lifetime</b>: The lifetime of the routing enrty</li>
+</ul>
+<b>ns3::flame::FlameProtocol</b><br>
+<ul>
+<li><b>BroadcastInterval</b>: How often we must send broadcast packets</li>
+<li><b>MaxCost</b>: Cost threshold after which packet will be dropped</li>
+</ul>
+<b>ns3::Dot11sStack</b><br>
+<ul>
+<li><b>Root</b>: The MAC address of root mesh point.</li>
+</ul>
+<b>ns3::VisualSimulatorImpl</b><br>
+<ul>
+<li><b>SimulatorImplFactory</b>: Factory for the underlying simulator implementation used by the visualizer.</li>
+</ul>
+<b>ns3::ndn::ConsumerBatches</b><br>
+<ul>
+<li><b>Batches</b>: Batches to schedule. Should be vector, containing pairs of time and amount</li>
+</ul>
+<b>ns3::ndn::Consumer</b><br>
+<ul>
+<li><b>StartSeq</b>: Initial sequence number</li>
+<li><b>Prefix</b>: Name of the Interest</li>
+<li><b>LifeTime</b>: LifeTime for interest packet</li>
+<li><b>RetxTimer</b>: Timeout defining how frequent retransmission timeouts should be checked</li>
+</ul>
+<b>ns3::ndn::ConsumerCbr</b><br>
+<ul>
+<li><b>Frequency</b>: Frequency of interest packets</li>
+<li><b>Randomize</b>: Type of send time randomization: none (default), uniform, exponential</li>
+<li><b>MaxSeq</b>: Maximum sequence number to request</li>
+</ul>
+<b>ns3::ndn::ConsumerWindow</b><br>
+<ul>
+<li><b>Window</b>: Initial size of the window</li>
+<li><b>PayloadSize</b>: Average size of content object size (to calculate interest generation rate)</li>
+<li><b>Size</b>: Amount of data in megabytes to request, relying on PayloadSize parameter (alternative to MaxSeq attribute)</li>
+<li><b>MaxSeq</b>: Maximum sequence number to request (alternative to Size attribute, would activate only if Size is -1). The parameter is activated only if Size negative (not set)</li>
+<li><b>InitialWindowOnTimeout</b>: Set window to initial value when timeout occurs</li>
+</ul>
+<b>ns3::ndn::ConsumerZipfMandelbrot</b><br>
+<ul>
+<li><b>NumberOfContents</b>: Number of the Contents in total</li>
+<li><b>q</b>: parameter of improve rank</li>
+<li><b>s</b>: parameter of power</li>
+</ul>
+<b>ns3::ndn::Producer</b><br>
+<ul>
+<li><b>Prefix</b>: Prefix, for which producer has the data</li>
+<li><b>Postfix</b>: Postfix that is added to the output data (e.g., for adding producer-uniqueness)</li>
+<li><b>PayloadSize</b>: Virtual payload size for Content packets</li>
+<li><b>Freshness</b>: Freshness of data packets, if 0, then unlimited freshness</li>
+<li><b>Signature</b>: Fake signature, 0 valid signature (default), other values application-specific</li>
+<li><b>KeyLocator</b>: Name to be used for key locator.  If root, then key locator is not used</li>
+</ul>
+<b>ns3::ndn::cs::Lru</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Random</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Fifo</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Lfu</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Lru::AggregateStats</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Random::AggregateStats</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Fifo::AggregateStats</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Lfu::AggregateStats</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Lru::Freshness</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Random::Freshness</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Fifo::Freshness</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Lfu::Freshness</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Probability::Lru</b><br>
+<ul>
+<li><b>CacheProbability</b>: Set probability of caching in ContentStore. If 1, every content is cached. If 0, no content is cached.</li>
+</ul>
+<b>ns3::ndn::cs::ProbabilityImpl::Lru</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Probability::Random</b><br>
+<ul>
+<li><b>CacheProbability</b>: Set probability of caching in ContentStore. If 1, every content is cached. If 0, no content is cached.</li>
+</ul>
+<b>ns3::ndn::cs::ProbabilityImpl::Random</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Probability::Fifo</b><br>
+<ul>
+<li><b>CacheProbability</b>: Set probability of caching in ContentStore. If 1, every content is cached. If 0, no content is cached.</li>
+</ul>
+<b>ns3::ndn::cs::ProbabilityImpl::Fifo</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Probability::Lfu</b><br>
+<ul>
+<li><b>CacheProbability</b>: Set probability of caching in ContentStore. If 1, every content is cached. If 0, no content is cached.</li>
+</ul>
+<b>ns3::ndn::cs::ProbabilityImpl::Lfu</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Lru::LifetimeStats</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Random::LifetimeStats</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Fifo::LifetimeStats</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::cs::Lfu::LifetimeStats</b><br>
+<ul>
+<li><b>MaxSize</b>: Set maximum number of entries in ContentStore. If 0, limit is not enforced</li>
+</ul>
+<b>ns3::ndn::RttEstimator</b><br>
+<ul>
+<li><b>MaxMultiplier</b>: Maximum RTO Multiplier</li>
+<li><b>InitialEstimation</b>: Initial RTT estimation</li>
+<li><b>MinRTO</b>: Minimum retransmit timeout value</li>
+<li><b>MaxRTO</b>: Maximum retransmit timeout value</li>
+</ul>
+<b>ns3::ndn::RttMeanDeviation</b><br>
+<ul>
+<li><b>Gain</b>: Gain used in estimating the RTT (smoothed RTT), must be 0 < Gain < 1</li>
+<li><b>Gain2</b>: Gain2 used in estimating the RTT (variance), must be 0 < Gain2 < 1</li>
+</ul>
+<b>ns3::olsr::RoutingProtocol</b><br>
+<ul>
+<li><b>HelloInterval</b>: HELLO messages emission interval.</li>
+<li><b>TcInterval</b>: TC messages emission interval.</li>
+<li><b>MidInterval</b>: MID messages emission interval.  Normally it is equal to TcInterval.</li>
+<li><b>HnaInterval</b>: HNA messages emission interval.  Normally it is equal to TcInterval.</li>
+<li><b>Willingness</b>: Willingness of a node to carry and forward traffic for other nodes.</li>
+</ul>
+<b>ns3::FlowMonitor</b><br>
+<ul>
+<li><b>MaxPerHopDelay</b>: The maximum per-hop delay that should be considered.  Packets still not received after this delay are to be considered lost.</li>
+<li><b>StartTime</b>: The time when the monitoring starts.</li>
+<li><b>DelayBinWidth</b>: The width used in the delay histogram.</li>
+<li><b>JitterBinWidth</b>: The width used in the jitter histogram.</li>
+<li><b>PacketSizeBinWidth</b>: The width used in the packetSize histogram.</li>
+<li><b>FlowInterruptionsBinWidth</b>: The width used in the flowInterruptions histogram.</li>
+<li><b>FlowInterruptionsMinTime</b>: The minimum inter-arrival time that is considered a flow interruption.</li>
+</ul>
+<b>ns3::dsdv::RoutingProtocol</b><br>
+<ul>
+<li><b>PeriodicUpdateInterval</b>: Periodic interval between exchange of full routing tables among nodes. </li>
+<li><b>SettlingTime</b>: Minimum time an update is to be stored in adv table before sending outin case of change in metric (in seconds)</li>
+<li><b>MaxQueueLen</b>: Maximum number of packets that we allow a routing protocol to buffer.</li>
+<li><b>MaxQueuedPacketsPerDst</b>: Maximum number of packets that we allow per destination to buffer.</li>
+<li><b>MaxQueueTime</b>: Maximum time packets can be queued (in seconds)</li>
+<li><b>EnableBuffering</b>: Enables buffering of data packets if no route to destination is available</li>
+<li><b>EnableWST</b>: Enables Weighted Settling Time for the updates before advertising</li>
+<li><b>Holdtimes</b>: Times the forwarding Interval to purge the route.</li>
+<li><b>WeightedFactor</b>: WeightedFactor for the settling time if Weighted Settling Time is enabled</li>
+<li><b>EnableRouteAggregation</b>: Enables Weighted Settling Time for the updates before advertising</li>
+<li><b>RouteAggregationTime</b>: Time to aggregate updates before sending them out (in seconds)</li>
+</ul>
+<b>ns3::dsr::DsrRouting</b><br>
+<ul>
+<li><b>RouteCache</b>: The route cache for saving routes from route discovery process.</li>
+<li><b>RreqTable</b>: The request table to manage route requests.</li>
+<li><b>PassiveBuffer</b>: The passive buffer to manage promisucously received passive ack.</li>
+<li><b>MaxSendBuffLen</b>: Maximum number of packets that can be stored in send buffer.</li>
+<li><b>MaxSendBuffTime</b>: Maximum time packets can be queued in the send buffer .</li>
+<li><b>MaxMaintLen</b>: Maximum number of packets that can be stored in maintenance buffer.</li>
+<li><b>MaxMaintTime</b>: Maximum time packets can be queued in maintenance buffer.</li>
+<li><b>MaxCacheLen</b>: Maximum number of route entries that can be stored in route cache.</li>
+<li><b>RouteCacheTimeout</b>: Maximum time the route cache can be queued in route cache.</li>
+<li><b>MaxEntriesEachDst</b>: Maximum number of route entries for a single destination to respond.</li>
+<li><b>SendBuffInterval</b>: How often to check send buffer for packet with route.</li>
+<li><b>NodeTraversalTime</b>: The time it takes to traverse two neighboring nodes.</li>
+<li><b>RreqRetries</b>: Maximum number of retransmissions for request discovery of a route.</li>
+<li><b>MaintenanceRetries</b>: Maximum number of retransmissions for data packets from maintenance buffer.</li>
+<li><b>RequestTableSize</b>: Maximum number of request entries in the request table, set this as the number of nodes in the simulation.</li>
+<li><b>RequestIdSize</b>: Maximum number of request source Ids in the request table.</li>
+<li><b>UniqueRequestIdSize</b>: Maximum number of request Ids in the request table for a single destination.</li>
+<li><b>NonPropRequestTimeout</b>: The timeout value for non-propagation request.</li>
+<li><b>DiscoveryHopLimit</b>: The max discovery hop limit for route requests.</li>
+<li><b>MaxSalvageCount</b>: The max salvage count for a single data packet.</li>
+<li><b>BlacklistTimeout</b>: The time for a neighbor to stay in blacklist.</li>
+<li><b>GratReplyHoldoff</b>: The time for gratuitous reply entry to expire.</li>
+<li><b>BroadcastJitter</b>: The jitter time to avoid collision for broadcast packets.</li>
+<li><b>LinkAckTimeout</b>: The time a packet in maintenance buffer wait for link acknowledgment.</li>
+<li><b>TryLinkAcks</b>: The number of link acknowledgment to use.</li>
+<li><b>PassiveAckTimeout</b>: The time a packet in maintenance buffer wait for passive acknowledgment.</li>
+<li><b>TryPassiveAcks</b>: The number of passive acknowledgment to use.</li>
+<li><b>RequestPeriod</b>: The base time interval between route requests.</li>
+<li><b>MaxRequestPeriod</b>: The max time interval between route requests.</li>
+<li><b>GraReplyTableSize</b>: The gratuitous reply table size.</li>
+<li><b>CacheType</b>: Use Link Cache or use Path Cache</li>
+<li><b>StabilityDecrFactor</b>: The stability decrease factor for link cache</li>
+<li><b>StabilityIncrFactor</b>: The stability increase factor for link cache</li>
+<li><b>InitStability</b>: The initial stability factor for link cache</li>
+<li><b>MinLifeTime</b>: The minimal life time for link cache</li>
+<li><b>UseExtends</b>: The extension time for link cache</li>
+<li><b>EnableSubRoute</b>: Enables saving of sub route when receiving route error messages, only available when using path route cache</li>
+<li><b>RetransIncr</b>: The increase time for retransmission timer when facing network congestion</li>
+<li><b>MaxNetworkQueueSize</b>: The max number of packet to save in the network queue.</li>
+<li><b>MaxNetworkQueueDelay</b>: The max time for a packet to stay in the network queue.</li>
+<li><b>NumPriorityQueues</b>: The max number of packet to save in the network queue.</li>
+<li><b>LinkAcknowledgment</b>: Enable Link layer acknowledgment mechanism</li>
+</ul>
+<b>ns3::dsr::DsrOptions</b><br>
+<ul>
+<li><b>OptionNumber</b>: The Dsr option number.</li>
+</ul>
+<b>ns3::SixLowPanNetDevice</b><br>
+<ul>
+<li><b>Rfc6282</b>: Use RFC6282 (IPHC) if true, RFC4944 (HC1) otherwise.</li>
+<li><b>OmitUdpChecksum</b>: Omit the UDP checksum in IPHC compression.</li>
+<li><b>FragmentReassemblyListSize</b>: The maximum size of the reassembly buffer (in packets). Zero meaning infinite.</li>
+<li><b>FragmentExpirationTimeout</b>: When this timeout expires, the fragments will be cleared from the buffer.</li>
+<li><b>CompressionThreshold</b>: The minimum MAC layer payload size.</li>
+<li><b>ForceEtherType</b>: Force a specific EtherType in L2 frames.</li>
+<li><b>EtherType</b>: The specific EtherType to be used in L2 frames.</li>
+</ul>
+<b>ns3::FdNetDevice</b><br>
+<ul>
+<li><b>Address</b>: The MAC address of this device.</li>
+<li><b>Start</b>: The simulation time at which to spin up the device thread.</li>
+<li><b>Stop</b>: The simulation time at which to tear down the device thread.</li>
+<li><b>EncapsulationMode</b>: The link-layer encapsulation type to use.</li>
+<li><b>RxQueueSize</b>: Maximum size of the read queue.  This value limits number of packets that have been read from the network into a memory buffer but have not yet been processed by the simulator.</li>
+</ul>
+<b>ns3::LteDataRadioBearerInfo</b><br>
+<ul>
+<li><b>DrbIdentity</b>: The id of this Data Radio Bearer</li>
+<li><b>EpsBearerIdentity</b>: The id of the EPS bearer corresponding to this Data Radio Bearer</li>
+<li><b>logicalChannelIdentity</b>: The id of the Logical Channel corresponding to this Data Radio Bearer</li>
+<li><b>LteRlc</b>: RLC instance of the radio bearer.</li>
+<li><b>LtePdcp</b>: PDCP instance of the radio bearer.</li>
+</ul>
+<b>ns3::LteSignalingRadioBearerInfo</b><br>
+<ul>
+<li><b>SrbIdentity</b>: The id of this Signaling Radio Bearer</li>
+<li><b>LteRlc</b>: RLC instance of the radio bearer.</li>
+<li><b>LtePdcp</b>: PDCP instance of the radio bearer.</li>
+</ul>
+*/
+
+/*!
+\page GlobalValueList All GlobalValues
+
+<ul>
+  <li><b>\anchor GlobalValueSimulatorImplementationType SimulatorImplementationType</b>: The object class to use as the simulator implementation.  Default value: ns3::DefaultSimulatorImpl.</li>
+  <li><b>\anchor GlobalValueSchedulerType SchedulerType</b>: The object class to use as the scheduler implementation.  Default value: ns3::MapScheduler.</li>
+  <li><b>\anchor GlobalValueRngSeed RngSeed</b>: The global seed of all rng streams.  Default value: 1.</li>
+  <li><b>\anchor GlobalValueRngRun RngRun</b>: The run number used to modify the global seed.  Default value: 1.</li>
+  <li><b>\anchor GlobalValueChecksumEnabled ChecksumEnabled</b>: A global switch to enable all checksums for all protocols.  Default value: false.</li>
+</ul>
+*/
+
+/*!
+\page LogComponentList All LogComponents
+
+<ul>
+  <li><b>A2A4RsrqHandoverAlgorithm</b></li>
+  <li><b>A3RsrpHandoverAlgorithm</b></li>
+  <li><b>AarfWifiManager</b></li>
+  <li><b>Aarfcd</b></li>
+  <li><b>AcousticModemEnergyModel</b></li>
+  <li><b>Address</b></li>
+  <li><b>AddressUtils</b></li>
+  <li><b>AdhocAlohaNoackIdealPhyHelper</b></li>
+  <li><b>AdhocWifiMac</b></li>
+  <li><b>AlohaNoackMacHeader</b></li>
+  <li><b>AlohaNoackNetDevice</b></li>
+  <li><b>AmrrWifiRemoteStation</b></li>
+  <li><b>AmsduSubframeHeader</b></li>
+  <li><b>Angles</b></li>
+  <li><b>AnimationInterface</b></li>
+  <li><b>AnnotatedTopologyReader</b></li>
+  <li><b>AntennaModel</b></li>
+  <li><b>AodvNeighbors</b></li>
+  <li><b>AodvRequestQueue</b></li>
+  <li><b>AodvRoutingProtocol</b></li>
+  <li><b>AodvRoutingTable</b></li>
+  <li><b>ApWifiMac</b></li>
+  <li><b>Application</b></li>
+  <li><b>ApplicationPacketProbe</b></li>
+  <li><b>ArpCache</b></li>
+  <li><b>ArpHeader</b></li>
+  <li><b>ArpL3Protocol</b></li>
+  <li><b>Asn1Header</b></li>
+  <li><b>Athstats</b></li>
+  <li><b>AttributeConstructionList</b></li>
+  <li><b>AttributeIterator</b></li>
+  <li><b>AttributeValue</b></li>
+  <li><b>BSLinkManager</b></li>
+  <li><b>BSScheduler</b></li>
+  <li><b>BSSchedulerRtps</b></li>
+  <li><b>BSSchedulerSimple</b></li>
+  <li><b>Backoff</b></li>
+  <li><b>BandwidthManager</b></li>
+  <li><b>BaseStationNetDevice</b></li>
+  <li><b>BasicEnergyHarvester</b></li>
+  <li><b>BasicEnergySource</b></li>
+  <li><b>BlockAckAgreement</b></li>
+  <li><b>BlockAckCache</b></li>
+  <li><b>BlockAckManager</b></li>
+  <li><b>Boolean</b></li>
+  <li><b>BooleanProbe</b></li>
+  <li><b>Breakpoint</b></li>
+  <li><b>BridgeChannel</b></li>
+  <li><b>BridgeHelper</b></li>
+  <li><b>BridgeNetDevice</b></li>
+  <li><b>BsServiceFlowManager</b></li>
+  <li><b>Buffer</b></li>
+  <li><b>Building</b></li>
+  <li><b>BuildingAllocator</b></li>
+  <li><b>BuildingList</b></li>
+  <li><b>BuildingPositionAllocator</b></li>
+  <li><b>BuildingsHelper</b></li>
+  <li><b>BuildingsPropagationLossModel</b></li>
+  <li><b>BulkSendApplication</b></li>
+  <li><b>BurstProfileManager</b></li>
+  <li><b>ByteTagList</b></li>
+  <li><b>CalendarScheduler</b></li>
+  <li><b>Callback</b></li>
+  <li><b>CandidateQueue</b></li>
+  <li><b>CapabilityInformation</b></li>
+  <li><b>Cara</b></li>
+  <li><b>Channel</b></li>
+  <li><b>ChannelList</b></li>
+  <li><b>CoDelQueue</b></li>
+  <li><b>CommandLine</b></li>
+  <li><b>Config</b></li>
+  <li><b>ConfigStore</b></li>
+  <li><b>ConnectionManager</b></li>
+  <li><b>ConstantRateWifiManager</b></li>
+  <li><b>ConstantSpectrumPropagationLossModel</b></li>
+  <li><b>ConstantVelocityHelper</b></li>
+  <li><b>CosineAntennaModel</b></li>
+  <li><b>Cost231PropagationLossModel</b></li>
+  <li><b>CqaFfMacScheduler</b></li>
+  <li><b>CsmaChannel</b></li>
+  <li><b>CsmaHelper</b></li>
+  <li><b>CsmaNetDevice</b></li>
+  <li><b>CsmaStarHelper</b></li>
+  <li><b>CtrlHeaders</b></li>
+  <li><b>DataCalculator</b></li>
+  <li><b>DataCollectionObject</b></li>
+  <li><b>DataCollector</b></li>
+  <li><b>DataOutputInterface</b></li>
+  <li><b>DataRate</b></li>
+  <li><b>DcaTxop</b></li>
+  <li><b>Dcf</b></li>
+  <li><b>DcfManager</b></li>
+  <li><b>DefaultSimulatorImpl</b></li>
+  <li><b>DeviceEnergyModel</b></li>
+  <li><b>DeviceEnergyModelContainer</b></li>
+  <li><b>DistributedSimulatorImpl</b></li>
+  <li><b>Dot11sPeerManagementProtocol</b></li>
+  <li><b>Double</b></li>
+  <li><b>DoubleProbe</b></li>
+  <li><b>DropTailQueue</b></li>
+  <li><b>DsdvPacketQueue</b></li>
+  <li><b>DsdvRoutingProtocol</b></li>
+  <li><b>DsdvRoutingTable</b></li>
+  <li><b>DsrErrorBuffer</b></li>
+  <li><b>DsrFsHeader</b></li>
+  <li><b>DsrGraReplyTable</b></li>
+  <li><b>DsrHelper</b></li>
+  <li><b>DsrMainHelper</b></li>
+  <li><b>DsrMaintainBuffer</b></li>
+  <li><b>DsrNetworkQueue</b></li>
+  <li><b>DsrOptionHeader</b></li>
+  <li><b>DsrOptions</b></li>
+  <li><b>DsrRouting</b></li>
+  <li><b>DsrSendBuffer</b></li>
+  <li><b>DsssErrorRateModel</b></li>
+  <li><b>EdcaTxopN</b></li>
+  <li><b>EnergyHarvester</b></li>
+  <li><b>EnergyHarvesterContainer</b></li>
+  <li><b>EnergySource</b></li>
+  <li><b>Enum</b></li>
+  <li><b>EpcEnbApplication</b></li>
+  <li><b>EpcHelper</b></li>
+  <li><b>EpcMme</b></li>
+  <li><b>EpcSgwPgwApplication</b></li>
+  <li><b>EpcTft</b></li>
+  <li><b>EpcTftClassifier</b></li>
+  <li><b>EpcUeNas</b></li>
+  <li><b>EpcX2</b></li>
+  <li><b>EpcX2Header</b></li>
+  <li><b>ErrorModel</b></li>
+  <li><b>EthernetHeader</b></li>
+  <li><b>EthernetTrailer</b></li>
+  <li><b>EventId</b></li>
+  <li><b>EventImpl</b></li>
+  <li><b>FatalImpl</b></li>
+  <li><b>FdBetFfMacScheduler</b></li>
+  <li><b>FdMtFfMacScheduler</b></li>
+  <li><b>FdNetDevice</b></li>
+  <li><b>FdNetDeviceHelper</b></li>
+  <li><b>FdReader</b></li>
+  <li><b>FdTbfqFfMacScheduler</b></li>
+  <li><b>FfMacScheduler</b></li>
+  <li><b>FileAggregator</b></li>
+  <li><b>FileHelper</b></li>
+  <li><b>FlameProtocol</b></li>
+  <li><b>FlameProtocolMac</b></li>
+  <li><b>FlameRtable</b></li>
+  <li><b>FlowIdTag</b></li>
+  <li><b>FlowMonitor</b></li>
+  <li><b>GlobalRouteManager</b></li>
+  <li><b>GlobalRouteManagerImpl</b></li>
+  <li><b>GlobalRouter</b></li>
+  <li><b>GlobalRoutingHelper</b></li>
+  <li><b>GlobalValue</b></li>
+  <li><b>GnuplotAggregator</b></li>
+  <li><b>GnuplotHelper</b></li>
+  <li><b>GrantedTimeWindowMpiInterface</b></li>
+  <li><b>GtkconfigStore</b></li>
+  <li><b>GtpuHeader</b></li>
+  <li><b>HalfDuplexIdealPhy</b></li>
+  <li><b>HalfDuplexIdealPhySignalParameters</b></li>
+  <li><b>Hash</b></li>
+  <li><b>Hash-Fnv</b></li>
+  <li><b>Hash-Murmur3</b></li>
+  <li><b>HashFunction</b></li>
+  <li><b>Header</b></li>
+  <li><b>HeapScheduler</b></li>
+  <li><b>HigherDataTxVectorTag</b></li>
+  <li><b>Histogram</b></li>
+  <li><b>HtCapabilities</b></li>
+  <li><b>HwmpProtocol</b></li>
+  <li><b>HwmpProtocolMac</b></li>
+  <li><b>HwmpRtable</b></li>
+  <li><b>HybridBuildingsPropagationLossModel</b></li>
+  <li><b>Icmpv4Header</b></li>
+  <li><b>Icmpv4L4Protocol</b></li>
+  <li><b>Icmpv6Header</b></li>
+  <li><b>Icmpv6L4Protocol</b></li>
+  <li><b>Inet6SocketAddress</b></li>
+  <li><b>InetSocketAddress</b></li>
+  <li><b>InetTopologyReader</b></li>
+  <li><b>Integer</b></li>
+  <li><b>InterferenceHelper</b></li>
+  <li><b>InternetStackHelper</b></li>
+  <li><b>InternetTraceHelper</b></li>
+  <li><b>IpL4Protocol</b></li>
+  <li><b>IpcsClassifier</b></li>
+  <li><b>IpcsClassifierRecord</b></li>
+  <li><b>Ipv4</b></li>
+  <li><b>Ipv4Address</b></li>
+  <li><b>Ipv4AddressGenerator</b></li>
+  <li><b>Ipv4AddressHelper</b></li>
+  <li><b>Ipv4EndPoint</b></li>
+  <li><b>Ipv4EndPointDemux</b></li>
+  <li><b>Ipv4FlowProbe</b></li>
+  <li><b>Ipv4GlobalRouting</b></li>
+  <li><b>Ipv4Header</b></li>
+  <li><b>Ipv4Interface</b></li>
+  <li><b>Ipv4InterfaceAddress</b></li>
+  <li><b>Ipv4L3Protocol</b></li>
+  <li><b>Ipv4ListRouting</b></li>
+  <li><b>Ipv4NixVectorRouting</b></li>
+  <li><b>Ipv4PacketInfoTag</b></li>
+  <li><b>Ipv4PacketProbe</b></li>
+  <li><b>Ipv4RawSocketFactory</b></li>
+  <li><b>Ipv4RawSocketFactoryImpl</b></li>
+  <li><b>Ipv4RawSocketImpl</b></li>
+  <li><b>Ipv4Route</b></li>
+  <li><b>Ipv4RoutingProtocol</b></li>
+  <li><b>Ipv4RoutingTableEntry</b></li>
+  <li><b>Ipv4StaticRouting</b></li>
+  <li><b>Ipv4StaticRoutingHelper</b></li>
+  <li><b>Ipv6Address</b></li>
+  <li><b>Ipv6AddressGenerator</b></li>
+  <li><b>Ipv6AddressHelper</b></li>
+  <li><b>Ipv6AutoconfiguredPrefix</b></li>
+  <li><b>Ipv6EndPoint</b></li>
+  <li><b>Ipv6EndPointDemux</b></li>
+  <li><b>Ipv6Extension</b></li>
+  <li><b>Ipv6ExtensionHeader</b></li>
+  <li><b>Ipv6FlowProbe</b></li>
+  <li><b>Ipv6Header</b></li>
+  <li><b>Ipv6Interface</b></li>
+  <li><b>Ipv6InterfaceAddress</b></li>
+  <li><b>Ipv6L3Protocol</b></li>
+  <li><b>Ipv6ListRouting</b></li>
+  <li><b>Ipv6Option</b></li>
+  <li><b>Ipv6OptionHeader</b></li>
+  <li><b>Ipv6PacketProbe</b></li>
+  <li><b>Ipv6PmtuCache</b></li>
+  <li><b>Ipv6RawSocketImpl</b></li>
+  <li><b>Ipv6StaticRouting</b></li>
+  <li><b>Ipv6StaticRoutingHelper</b></li>
+  <li><b>IsotropicAntennaModel</b></li>
+  <li><b>ItuR1238PropagationLossModel</b></li>
+  <li><b>ItuR1411LosPropagationLossModel</b></li>
+  <li><b>ItuR1411NlosOverRooftopPropagationLossModel</b></li>
+  <li><b>Jakes</b></li>
+  <li><b>JakesProcess</b></li>
+  <li><b>Kun2600MhzPropagationLossModel</b></li>
+  <li><b>L2RateTracer</b></li>
+  <li><b>LiIonEnergySource</b></li>
+  <li><b>ListScheduler</b></li>
+  <li><b>LlcSnalHeader</b></li>
+  <li><b>LoopbackNetDevice</b></li>
+  <li><b>LrWpanCsmaCa</b></li>
+  <li><b>LrWpanErrorModel</b></li>
+  <li><b>LrWpanHelper</b></li>
+  <li><b>LrWpanInterferenceHelper</b></li>
+  <li><b>LrWpanMac</b></li>
+  <li><b>LrWpanNetDevice</b></li>
+  <li><b>LrWpanPhy</b></li>
+  <li><b>LrWpanSpectrumSignalParameters</b></li>
+  <li><b>LrWpanSpectrumValueHelper</b></li>
+  <li><b>LteAmc</b></li>
+  <li><b>LteAnr</b></li>
+  <li><b>LteChunkProcessor</b></li>
+  <li><b>LteCommon</b></li>
+  <li><b>LteControlMessage</b></li>
+  <li><b>LteEnbMac</b></li>
+  <li><b>LteEnbNetDevice</b></li>
+  <li><b>LteEnbPhy</b></li>
+  <li><b>LteEnbRrc</b></li>
+  <li><b>LteFfrAlgorithm</b></li>
+  <li><b>LteFfrDistributedAlgorithm</b></li>
+  <li><b>LteFfrEnhancedAlgorithm</b></li>
+  <li><b>LteFfrSoftAlgorithm</b></li>
+  <li><b>LteFrHardAlgorithm</b></li>
+  <li><b>LteFrNoOpAlgorithm</b></li>
+  <li><b>LteFrSoftAlgorithm</b></li>
+  <li><b>LteFrStrictAlgorithm</b></li>
+  <li><b>LteGlobalPathlossDatabase</b></li>
+  <li><b>LteHandoverAlgorithm</b></li>
+  <li><b>LteHarqPhy</b></li>
+  <li><b>LteHelper</b></li>
+  <li><b>LteHexGridEnbTopologyHelper</b></li>
+  <li><b>LteInterference</b></li>
+  <li><b>LteMiErrorModel</b></li>
+  <li><b>LteNetDevice</b></li>
+  <li><b>LtePdcp</b></li>
+  <li><b>LtePdcpHeader</b></li>
+  <li><b>LtePhy</b></li>
+  <li><b>LteRlc</b></li>
+  <li><b>LteRlcAm</b></li>
+  <li><b>LteRlcAmHeader</b></li>
+  <li><b>LteRlcHeader</b></li>
+  <li><b>LteRlcTm</b></li>
+  <li><b>LteRlcUm</b></li>
+  <li><b>LteRrcProtocolIdeal</b></li>
+  <li><b>LteRrcProtocolReal</b></li>
+  <li><b>LteSpectrumPhy</b></li>
+  <li><b>LteSpectrumSignalParameters</b></li>
+  <li><b>LteSpectrumValueHelper</b></li>
+  <li><b>LteStatsCalculator</b></li>
+  <li><b>LteUeMac</b></li>
+  <li><b>LteUeNetDevice</b></li>
+  <li><b>LteUePhy</b></li>
+  <li><b>LteUePowerControl</b></li>
+  <li><b>LteUeRrc</b></li>
+  <li><b>LteVendorSpecificParameters</b></li>
+  <li><b>MACMESSAGES</b></li>
+  <li><b>Mac16Address</b></li>
+  <li><b>Mac48Address</b></li>
+  <li><b>Mac64Address</b></li>
+  <li><b>MacLow</b></li>
+  <li><b>MacRxMiddle</b></li>
+  <li><b>MacStatsCalculator</b></li>
+  <li><b>MakeEvent</b></li>
+  <li><b>MapScheduler</b></li>
+  <li><b>MeshL2RoutingProtocol</b></li>
+  <li><b>MeshPointDevice</b></li>
+  <li><b>MeshWifiInterfaceMac</b></li>
+  <li><b>MicrowaveOvenSpectrumValue</b></li>
+  <li><b>MinstrelWifiManager</b></li>
+  <li><b>MobilityBuildingInfo</b></li>
+  <li><b>MobilityHelper</b></li>
+  <li><b>MpiInterface</b></li>
+  <li><b>MsduAggregator</b></li>
+  <li><b>MsduStandardAggregator</b></li>
+  <li><b>MultiModelSpectrumChannel</b></li>
+  <li><b>Names</b></li>
+  <li><b>NdiscCache</b></li>
+  <li><b>NetDevice</b></li>
+  <li><b>NistErrorRateModel</b></li>
+  <li><b>NixVector</b></li>
+  <li><b>NoOpHandoverAlgorithm</b></li>
+  <li><b>Node</b></li>
+  <li><b>NodeList</b></li>
+  <li><b>NonCommunicatingNetDevice</b></li>
+  <li><b>Ns2MobilityHelper</b></li>
+  <li><b>NullMessageMpiInterface</b></li>
+  <li><b>NullMessageSimulatorImpl</b></li>
+  <li><b>Object</b></li>
+  <li><b>ObjectBase</b></li>
+  <li><b>ObjectFactory</b></li>
+  <li><b>ObjectPtrContainer</b></li>
+  <li><b>OcbWifiMac</b></li>
+  <li><b>OhBuildingsPropagationLossModel</b></li>
+  <li><b>OkumuraHataPropagationLossModel</b></li>
+  <li><b>OlsrHeader</b></li>
+  <li><b>OlsrRoutingProtocol</b></li>
+  <li><b>OmnetDataOutput</b></li>
+  <li><b>OnOffApplication</b></li>
+  <li><b>OnoeWifiRemoteStation</b></li>
+  <li><b>OrbisTopologyReader</b></li>
+  <li><b>OutputStreamWrapper</b></li>
+  <li><b>Packet</b></li>
+  <li><b>PacketBB</b></li>
+  <li><b>PacketBurst</b></li>
+  <li><b>PacketDataCalculators</b></li>
+  <li><b>PacketLossCounter</b></li>
+  <li><b>PacketMetadata</b></li>
+  <li><b>PacketProbe</b></li>
+  <li><b>PacketSink</b></li>
+  <li><b>PacketSocket</b></li>
+  <li><b>PacketSocketAddress</b></li>
+  <li><b>PacketSocketClient</b></li>
+  <li><b>PacketSocketFactory</b></li>
+  <li><b>PacketSocketServer</b></li>
+  <li><b>PacketTagList</b></li>
+  <li><b>ParabolicAntennaModel</b></li>
+  <li><b>PassiveBuffer</b></li>
+  <li><b>PcapFile</b></li>
+  <li><b>PcapFileWrapper</b></li>
+  <li><b>PeerManagementProtocol</b></li>
+  <li><b>PendingData</b></li>
+  <li><b>PfFfMacScheduler</b></li>
+  <li><b>PhyRxStatsCalculator</b></li>
+  <li><b>PhyStatsCalculator</b></li>
+  <li><b>PhyTxStatsCalculator</b></li>
+  <li><b>Ping6Application</b></li>
+  <li><b>PointToPointChannel</b></li>
+  <li><b>PointToPointDumbbellHelper</b></li>
+  <li><b>PointToPointEpcHelper</b></li>
+  <li><b>PointToPointGridHelper</b></li>
+  <li><b>PointToPointHelper</b></li>
+  <li><b>PointToPointNetDevice</b></li>
+  <li><b>PointToPointRemoteChannel</b></li>
+  <li><b>PointToPointStarHelper</b></li>
+  <li><b>Pointer</b></li>
+  <li><b>PositionAllocator</b></li>
+  <li><b>PppHeader</b></li>
+  <li><b>PrintIntrospectedDoxygen</b></li>
+  <li><b>Probe</b></li>
+  <li><b>PropagationLossModel</b></li>
+  <li><b>PssFfMacScheduler</b></li>
+  <li><b>PyViz</b></li>
+  <li><b>Queue</b></li>
+  <li><b>RadioBearerStatsCalculator</b></li>
+  <li><b>RadioBearerStatsConnector</b></li>
+  <li><b>RadioEnvironmentMapHelper</b></li>
+  <li><b>RadiotapHeader</b></li>
+  <li><b>RadvdApplication</b></li>
+  <li><b>RadvdHelper</b></li>
+  <li><b>RadvdInterface</b></li>
+  <li><b>RadvdPrefix</b></li>
+  <li><b>RandomDirection2dMobilityModel</b></li>
+  <li><b>RandomVariable</b></li>
+  <li><b>RandomVariableStream</b></li>
+  <li><b>RandomVariableStreamHelper</b></li>
+  <li><b>RandomWalk2d</b></li>
+  <li><b>RawTextConfig</b></li>
+  <li><b>RedQueue</b></li>
+  <li><b>RefCountBase</b></li>
+  <li><b>RegularWifiMac</b></li>
+  <li><b>RemSpectrumPhy</b></li>
+  <li><b>RipNg</b></li>
+  <li><b>RngSeedManager</b></li>
+  <li><b>RngStream</b></li>
+  <li><b>RocketfuelMapReader</b></li>
+  <li><b>RocketfuelTopologyReader</b></li>
+  <li><b>RocketfuelWeightsReader</b></li>
+  <li><b>RouteCache</b></li>
+  <li><b>RrFfMacScheduler</b></li>
+  <li><b>RraaWifiManager</b></li>
+  <li><b>RrcHeader</b></li>
+  <li><b>RreqTable</b></li>
+  <li><b>RttEstimator</b></li>
+  <li><b>RvBatteryModel</b></li>
+  <li><b>SNRToBlockErrorRateManager</b></li>
+  <li><b>SSLinkManager</b></li>
+  <li><b>SSManager</b></li>
+  <li><b>SSScheduler</b></li>
+  <li><b>Scheduler</b></li>
+  <li><b>SeqTsHeader</b></li>
+  <li><b>ServiceFlowManager</b></li>
+  <li><b>ShannonSpectrumErrorModel</b></li>
+  <li><b>SimpleChannel</b></li>
+  <li><b>SimpleDeviceEnergyModel</b></li>
+  <li><b>SimpleNetDevice</b></li>
+  <li><b>SimpleNetDeviceHelper</b></li>
+  <li><b>SimpleOfdmWimaxPhy</b></li>
+  <li><b>Simulator</b></li>
+  <li><b>SimulatorImpl</b></li>
+  <li><b>SingleModelSpectrumChannel</b></li>
+  <li><b>SixLowPanHelper</b></li>
+  <li><b>SixLowPanNetDevice</b></li>
+  <li><b>Socket</b></li>
+  <li><b>SocketFactory</b></li>
+  <li><b>SpectrumAnalyzer</b></li>
+  <li><b>SpectrumAnalyzerHelper</b></li>
+  <li><b>SpectrumConverter</b></li>
+  <li><b>SpectrumInterference</b></li>
+  <li><b>SpectrumModel</b></li>
+  <li><b>SpectrumPhy</b></li>
+  <li><b>SpectrumPropagationLossModel</b></li>
+  <li><b>SpectrumSignalParameters</b></li>
+  <li><b>SpectrumValue</b></li>
+  <li><b>SqliteDataOutput</b></li>
+  <li><b>SsServiceFlowManager</b></li>
+  <li><b>StaWifiMac</b></li>
+  <li><b>SubscriberStationNetDevice</b></li>
+  <li><b>SupportedRates</b></li>
+  <li><b>Synchronizer</b></li>
+  <li><b>SystemCondition</b></li>
+  <li><b>SystemMutex</b></li>
+  <li><b>SystemPath</b></li>
+  <li><b>SystemThread</b></li>
+  <li><b>SystemWallClockMsPrivate</b></li>
+  <li><b>TagBuffer</b></li>
+  <li><b>TcpHeader</b></li>
+  <li><b>TcpL4Protocol</b></li>
+  <li><b>TcpNewReno</b></li>
+  <li><b>TcpOption</b></li>
+  <li><b>TcpOptionRfc793</b></li>
+  <li><b>TcpOptionTS</b></li>
+  <li><b>TcpOptionWinScale</b></li>
+  <li><b>TcpReno</b></li>
+  <li><b>TcpRfc793</b></li>
+  <li><b>TcpRxBuffer</b></li>
+  <li><b>TcpSocket</b></li>
+  <li><b>TcpSocketBase</b></li>
+  <li><b>TcpTahoe</b></li>
+  <li><b>TcpTxBuffer</b></li>
+  <li><b>TcpWestwood</b></li>
+  <li><b>TdBetFfMacScheduler</b></li>
+  <li><b>TdMtFfMacScheduler</b></li>
+  <li><b>TdTbfqFfMacScheduler</b></li>
+  <li><b>Test</b></li>
+  <li><b>Time</b></li>
+  <li><b>TimeDataCalculators</b></li>
+  <li><b>TimeSeriesAdaptor</b></li>
+  <li><b>Timer</b></li>
+  <li><b>Tlv</b></li>
+  <li><b>TopologyReader</b></li>
+  <li><b>TopologyReaderHelper</b></li>
+  <li><b>TraceFadingLossModel</b></li>
+  <li><b>TraceHelper</b></li>
+  <li><b>TraceSourceAccessor</b></li>
+  <li><b>Trailer</b></li>
+  <li><b>TtaFfMacScheduler</b></li>
+  <li><b>TypeId</b></li>
+  <li><b>UanChannel</b></li>
+  <li><b>UanHelper</b></li>
+  <li><b>UanMacAloha</b></li>
+  <li><b>UanMacCw</b></li>
+  <li><b>UanMacRc</b></li>
+  <li><b>UanMacRcGw</b></li>
+  <li><b>UanNetDevice</b></li>
+  <li><b>UanPhyDual</b></li>
+  <li><b>UanPhyGen</b></li>
+  <li><b>UanPropModelThorp</b></li>
+  <li><b>UanTransducerHd</b></li>
+  <li><b>UanTxMode</b></li>
+  <li><b>UdpClient</b></li>
+  <li><b>UdpEchoClientApplication</b></li>
+  <li><b>UdpEchoServerApplication</b></li>
+  <li><b>UdpL4Protocol</b></li>
+  <li><b>UdpServer</b></li>
+  <li><b>UdpSocket</b></li>
+  <li><b>UdpSocketImpl</b></li>
+  <li><b>UdpTraceClient</b></li>
+  <li><b>Uinteger</b></li>
+  <li><b>Uinteger16Probe</b></li>
+  <li><b>Uinteger32Probe</b></li>
+  <li><b>Uinteger8Probe</b></li>
+  <li><b>UplinkScheduler</b></li>
+  <li><b>UplinkSchedulerMBQoS</b></li>
+  <li><b>UplinkSchedulerRtps</b></li>
+  <li><b>UplinkSchedulerSimple</b></li>
+  <li><b>V4Ping</b></li>
+  <li><b>Vector</b></li>
+  <li><b>VendorSpecificAction</b></li>
+  <li><b>VirtualNetDevice</b></li>
+  <li><b>VisualSimulatorImpl</b></li>
+  <li><b>Watchdog</b></li>
+  <li><b>WaveMacLow</b></li>
+  <li><b>WaveformGenerator</b></li>
+  <li><b>WaveformGeneratorHelper</b></li>
+  <li><b>WaypointMobilityModel</b></li>
+  <li><b>WifiChannel</b></li>
+  <li><b>WifiHelper</b></li>
+  <li><b>WifiNetDevice</b></li>
+  <li><b>WifiPhy</b></li>
+  <li><b>WifiPhyStateHelper</b></li>
+  <li><b>WifiRadioEnergyModel</b></li>
+  <li><b>WifiRemoteStationManager</b></li>
+  <li><b>WifiTxCurrentModel</b></li>
+  <li><b>WimaxChannel</b></li>
+  <li><b>WimaxHelper</b></li>
+  <li><b>WimaxMacQueue</b></li>
+  <li><b>WimaxNetDevice</b></li>
+  <li><b>WimaxPhy</b></li>
+  <li><b>XmlConfig</b></li>
+  <li><b>YansErrorRateModel</b></li>
+  <li><b>YansWifiChannel</b></li>
+  <li><b>YansWifiHelper</b></li>
+  <li><b>YansWifiPhy</b></li>
+  <li><b>int64x64</b></li>
+  <li><b>int64x64-128</b></li>
+  <li><b>ndn.App</b></li>
+  <li><b>ndn.AppDelayTracer</b></li>
+  <li><b>ndn.AppFace</b></li>
+  <li><b>ndn.AppHelper</b></li>
+  <li><b>ndn.Consumer</b></li>
+  <li><b>ndn.ConsumerBatches</b></li>
+  <li><b>ndn.ConsumerCbr</b></li>
+  <li><b>ndn.ConsumerWindow</b></li>
+  <li><b>ndn.ConsumerZipfMandelbrot</b></li>
+  <li><b>ndn.CsTracer</b></li>
+  <li><b>ndn.FibHelper</b></li>
+  <li><b>ndn.GlobalRoutingHelper</b></li>
+  <li><b>ndn.L3Protocol</b></li>
+  <li><b>ndn.L3RateTracer</b></li>
+  <li><b>ndn.LinkControlHelper</b></li>
+  <li><b>ndn.NetDeviceFace</b></li>
+  <li><b>ndn.Producer</b></li>
+  <li><b>ndn.RttEstimator</b></li>
+  <li><b>ndn.RttMeanDeviation</b></li>
+  <li><b>ndn.StackHelper</b></li>
+  <li><b>ndn.StrategyChoiceHelper</b></li>
+  <li><b>ndn.cs.ContentStore</b></li>
+  <li><b>ndn.cs.Fifo</b></li>
+  <li><b>ndn.cs.Fifo::AggregateStats</b></li>
+  <li><b>ndn.cs.Fifo::Freshness</b></li>
+  <li><b>ndn.cs.Fifo::LifetimeStats</b></li>
+  <li><b>ndn.cs.Freshness.Fifo</b></li>
+  <li><b>ndn.cs.Freshness.Lfu</b></li>
+  <li><b>ndn.cs.Freshness.Lru</b></li>
+  <li><b>ndn.cs.Freshness.Random</b></li>
+  <li><b>ndn.cs.Lfu</b></li>
+  <li><b>ndn.cs.Lfu::AggregateStats</b></li>
+  <li><b>ndn.cs.Lfu::Freshness</b></li>
+  <li><b>ndn.cs.Lfu::LifetimeStats</b></li>
+  <li><b>ndn.cs.Lru</b></li>
+  <li><b>ndn.cs.Lru::AggregateStats</b></li>
+  <li><b>ndn.cs.Lru::Freshness</b></li>
+  <li><b>ndn.cs.Lru::LifetimeStats</b></li>
+  <li><b>ndn.cs.Nocache</b></li>
+  <li><b>ndn.cs.ProbabilityImpl::Fifo</b></li>
+  <li><b>ndn.cs.ProbabilityImpl::Lfu</b></li>
+  <li><b>ndn.cs.ProbabilityImpl::Lru</b></li>
+  <li><b>ndn.cs.ProbabilityImpl::Random</b></li>
+  <li><b>ndn.cs.Random</b></li>
+  <li><b>ndn.cs.Random::AggregateStats</b></li>
+  <li><b>ndn.cs.Random::Freshness</b></li>
+  <li><b>ndn.cs.Random::LifetimeStats</b></li>
+  <li><b>ndn.cs.Stats.Fifo</b></li>
+  <li><b>ndn.cs.Stats.Lfu</b></li>
+  <li><b>ndn.cs.Stats.Lru</b></li>
+  <li><b>ndn.cs.Stats.Random</b></li>
+  <li><b>nfd.BestRouteStrategy2</b></li>
+  <li><b>nfd.ChannelStatusPublisher</b></li>
+  <li><b>nfd.ClientControlStrategy</b></li>
+  <li><b>nfd.CommandValidator</b></li>
+  <li><b>nfd.ConfigFile</b></li>
+  <li><b>nfd.ContentStore</b></li>
+  <li><b>nfd.CsEntry</b></li>
+  <li><b>nfd.CsSkipListEntry</b></li>
+  <li><b>nfd.DeadNonceList</b></li>
+  <li><b>nfd.FaceManager</b></li>
+  <li><b>nfd.FaceQueryStatusPublisher</b></li>
+  <li><b>nfd.FaceStatusPublisher</b></li>
+  <li><b>nfd.FaceTable</b></li>
+  <li><b>nfd.FibEnumerationPublisher</b></li>
+  <li><b>nfd.FibManager</b></li>
+  <li><b>nfd.Forwarder</b></li>
+  <li><b>nfd.GeneralConfigSection</b></li>
+  <li><b>nfd.InternalFace</b></li>
+  <li><b>nfd.ManagerBase</b></li>
+  <li><b>nfd.NameTree</b></li>
+  <li><b>nfd.PrivilegeHelper</b></li>
+  <li><b>nfd.Strategy</b></li>
+  <li><b>nfd.StrategyChoice</b></li>
+  <li><b>nfd.StrategyChoiceManager</b></li>
+  <li><b>nfd.StrategyChoicePublisher</b></li>
+  <li><b>nfd.TablesConfigSection</b></li>
+  <li><b>ns3::ArfWifiManager</b></li>
+  <li><b>simpleOfdmWimaxChannel</b></li>
+</ul>
+*/
+
diff --git a/docs/log-sources.hpp b/docs/log-sources.hpp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/docs/log-sources.hpp
diff --git a/docs/ns3_html_theme/ns3_doxy_header.html b/docs/ns3_html_theme/ns3_doxy_header.html
index a927ead..a63e509 100644
--- a/docs/ns3_html_theme/ns3_doxy_header.html
+++ b/docs/ns3_html_theme/ns3_doxy_header.html
@@ -33,7 +33,7 @@
   </td>
   <td id="projecttext">
    <div id="projectbrief">NS-3 based Named Data Networking (NDN) simulator</div>
-   <span id="projectnumber">ndnSIM: NDN, CCN, CCNx, content centric networks</span>
+   <span id="projectnumber">ndnSIM 2.0: NDN, CCN, CCNx, content centric networks</span>
   </td>
   <!--BEGIN DISABLE_INDEX-->
    <!--BEGIN SEARCHENGINE-->
diff --git a/docs/ns3_html_theme/theme.conf b/docs/ns3_html_theme/theme.conf
index f733deb..3c06cc4 100644
--- a/docs/ns3_html_theme/theme.conf
+++ b/docs/ns3_html_theme/theme.conf
@@ -4,8 +4,8 @@
 pygments_style = sphinx
 
 [options]
-projectname = ndnSIM
-homepage = http://ndnSIM.net/
+projectname = ndnSIM 2.0
+homepage = http://ndnsim.net/
 homepage2 = http://irl.cs.ucla.edu/
 apidocs = ndnSIM API
 apidocsurl = http://ndnSIM.net/doxygen/annotated.html
@@ -15,7 +15,7 @@
 # logo = ns-3-inverted-notext-small.png
 logoalt = ns-3 Logo
 projectbrief = NS-3 based Named Data Networking (NDN) simulator
-projectnumber = ndnSIM: NDN, CCN, CCNx, content centric networks
+projectnumber = ndnSIM 2.0: NDN, CCN, CCNx, content centric networks
 
 favicon = favicon.ico
 docstitle = Documentation
diff --git a/docs/source/_static/l2-rate-tracer.png b/docs/source/_static/l2-rate-tracer.png
index c930bd4..d00ee0a 100644
--- a/docs/source/_static/l2-rate-tracer.png
+++ b/docs/source/_static/l2-rate-tracer.png
Binary files differ
diff --git a/docs/source/_static/ndnSIM-structure.pdf b/docs/source/_static/ndnSIM-structure.pdf
new file mode 100644
index 0000000..c0829a2
--- /dev/null
+++ b/docs/source/_static/ndnSIM-structure.pdf
Binary files differ
diff --git a/docs/source/_static/ndnSIM-structure.png b/docs/source/_static/ndnSIM-structure.png
new file mode 100644
index 0000000..cf2c3f1
--- /dev/null
+++ b/docs/source/_static/ndnSIM-structure.png
Binary files differ
diff --git a/docs/source/_static/ndnsim-components.pdf b/docs/source/_static/ndnsim-components.pdf
deleted file mode 100644
index d940bf9..0000000
--- a/docs/source/_static/ndnsim-components.pdf
+++ /dev/null
Binary files differ
diff --git a/docs/source/_static/ndnsim-components.png b/docs/source/_static/ndnsim-components.png
deleted file mode 100644
index 1601f19..0000000
--- a/docs/source/_static/ndnsim-components.png
+++ /dev/null
Binary files differ
diff --git a/docs/source/_static/nfd-forwarding-overview.pdf b/docs/source/_static/nfd-forwarding-overview.pdf
new file mode 100644
index 0000000..18187f3
--- /dev/null
+++ b/docs/source/_static/nfd-forwarding-overview.pdf
Binary files differ
diff --git a/docs/source/_static/nfd-forwarding-overview.png b/docs/source/_static/nfd-forwarding-overview.png
new file mode 100644
index 0000000..e62e7d6
--- /dev/null
+++ b/docs/source/_static/nfd-forwarding-overview.png
Binary files differ
diff --git a/docs/source/_static/root-5sec-counts.png b/docs/source/_static/root-5sec-counts.png
deleted file mode 100644
index 5257f1d..0000000
--- a/docs/source/_static/root-5sec-counts.png
+++ /dev/null
Binary files differ
diff --git a/docs/source/_static/root-rates.png b/docs/source/_static/root-rates.png
index bc0df92..9101e3d 100644
--- a/docs/source/_static/root-rates.png
+++ b/docs/source/_static/root-rates.png
Binary files differ
diff --git a/docs/source/_templates/indexcontent.html b/docs/source/_templates/indexcontent.html
index a536a8d..d25b177 100644
--- a/docs/source/_templates/indexcontent.html
+++ b/docs/source/_templates/indexcontent.html
@@ -1,11 +1,17 @@
 {% extends "layout.html" %}
-{% set title = _('ndnSIM documentation') %}
+{% set title = _('ndnSIM 2.0 documentation') %}
 
 {% block body %}
     <h1>{{ docstitle|e }}</h1>
-    <p>
-The ndnSIM is NS-3 module that implements Named Data Networking (NDN) communication model, the clean slate Internet design. ndnSIM is specially optimized for simulation purposes and has a cleaner and more extensible internal structure comparing to the existing NDN implementation (NDNx).
-    </p>
+
+<p>ndnSIM 2.0 is a new release of <a class="reference external" href="http://ndnsim.net/1.0/">NS-3 based Named Data Networking (NDN) simulator</a> that went through extensive refactoring and rewriting.  The key new features of the new version:</p>
+
+<ul class="simple">
+<li>ndnSIM no longer re-implements basic NDN primitives and directly uses implementation from <a class="reference external" href="http://named-data.net/doc/ndn-cxx/">ndn-cxx library (NDN C++ library with eXperimental eXtensions)</a>.</li>
+<li>All NDN forwarding and management is implemented directly using source code of <a class="reference external" href="http://named-data.net/doc/NFD/">Named
+Data Networking Forwarding Daemon (NFD)</a></li>
+<li>Packet format changed to <a class="reference external" href="http://named-data.net/doc/ndn-tlv/">NDN-TLV</a></li>
+</ul>
 
     <p>
 We invite you to <a href="http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim" target="_blank">join our mailing list</a> to see and participate in discussions about ndnSIM implementation and simulations in general (<a href="http://www.lists.cs.ucla.edu/pipermail/ndnsim/" target="_blank">mailing list archives</a>).
@@ -15,7 +21,7 @@
   <p><strong>Parts of the documentation:</strong></p>
   <table class="contentstable" align="center"><tr>
     <td width="50%" valign="top">
-      <p class="biglink"><a class="biglink" href="{{ pathto("tutorial") }}">ndnSIM tutorial</a><br/>
+      <p class="biglink"><a class="biglink" href="{{ pathto("tutorial") }}">ndnSIM 2.0 tutorial</a><br/>
          <div class="linkdescr" style="margin-left: 20px">
            <p class="biglink"><a class="biglink" href="{{ pathto("intro") }}">Introduction</a><br/>
              <span class="linkdescr">what is ndnSIM, how to get support, and what is in the package</span></p>
@@ -42,8 +48,6 @@
          <span class="linkdescr">doxygen-generated API documentation</span></p>
       <p class="biglink"><a class="biglink" href="{{ pathto("faq") }}">FAQs</a><br/>
          <span class="linkdescr">frequently asked questions (with answers!)</span></p>
-      <p class="biglink"><a class="biglink" href="{{ pathto("ndnsim-packet-formats") }}">ndnSIM packet format</a><br/>
-         <span class="linkdescr">definition of the optimized default packet format</span></p>
       <p class="biglink"><a class="biglink" href="{{ pathto("ndnsim-research-papers") }}">ndnSIM research papers</a><br/>
          <span class="linkdescr">list of ndnSIM-related papers</span></p>
     </td></tr>
diff --git a/docs/source/applications.rst b/docs/source/applications.rst
index c62722c..6fe0533 100644
--- a/docs/source/applications.rst
+++ b/docs/source/applications.rst
@@ -9,14 +9,14 @@
 ++++++++++++++++++++++
 
 ConsumerCbr
-^^^^^^^^^^^^^^^
+^^^^^^^^^^^
 
 :ndnsim:`ConsumerCbr` an application that generates Interest traffic with predefined pattern (constant frequency, constant average rate with inter-Interest gap distributed uniformly at random, exponentially at random, etc.).
 
 .. code-block:: c++
 
    // Create application using the app helper
-   ndn::AppHelper helper ("ns3::ndn::ConsumerCbr");
+   AppHelper helper("ns3::ndn::ConsumerCbr");
 
 This applications has the following attributes:
 
@@ -30,7 +30,7 @@
   .. code-block:: c++
 
      // Set attribute using the app helper
-     helper.SetAttribute ("Frequency", DoubleValue (1.0));
+     helper.SetAttribute("Frequency", DoubleValue (1.0));
 
 * ``Randomize``
 
@@ -48,7 +48,7 @@
   .. code-block:: c++
 
      // Set attribute using the app helper
-     helper.SetAttribute ("Randomize", StringValue ("uniform"));
+     helper.SetAttribute("Randomize", StringValue("uniform"));
 
 ConsumerZipfMandelbrot
 ^^^^^^^^^^^^^^^^^^^^^^
@@ -62,7 +62,7 @@
 .. code-block:: c++
 
    // Create application using the app helper
-   ndn::AppHelper helper ("ns3::ndn::ConsumerZipfMandelbrot");
+   ndn::AppHelper helper("ns3::ndn::ConsumerZipfMandelbrot");
 
 ``Frequency`` and ``Randomize`` attributes can be used in the same way as in the base :ndnsim:`ConsumerCbr` applications.
 
@@ -99,7 +99,7 @@
 .. code-block:: c++
 
    // Create application using the app helper
-   ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerBatches");
+   ndn::AppHelper consumerHelper("ns3::ndn::ConsumerBatches");
 
 This applications has the following attributes:
 
@@ -114,18 +114,18 @@
   .. code-block:: c++
 
      // Set attribute using the app helper
-     helper.SetAttribute ("Batches", StringValue ("1s 1 2s 5 10s 2"));
+     helper.SetAttribute("Batches", StringValue("1s 1 2s 5 10s 2"));
 
 
 ConsumerWindow
 ^^^^^^^^^^^^^^^^^^
 
-:ndnsim:`ConsumerWindow` is an application generating a variable rate Interest traffic. It relies on an optional NACK-Interest feature and implements a simple sliding-window-based Interest generation mechanism.
+:ndnsim:`ConsumerWindow` is an application generating a variable rate Interest traffic. It implements a simple sliding-window-based Interest generation mechanism.
 
 .. code-block:: c++
 
    // Create application using the app helper
-   ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerWindow");
+   AppHelper consumerHelper("ns3::ndn::ConsumerWindow");
 
 
 This applications has the following attributes:
@@ -161,7 +161,7 @@
 .. code-block:: c++
 
    // Create application using the app helper
-   ndn::AppHelper consumerHelper ("ns3::ndn::Producer");
+   AppHelper consumerHelper("ns3::ndn::Producer");
 
 .. _Custom applications:
 
@@ -183,39 +183,37 @@
 When this application starts it sets "interest filter" (install FIB entry) for /prefix/sub, as well as sends Interest for this prefix.
 When an Interest is received, it is replied with a ContentObject with 1024-byte fake payload.
 
-For more details refer ``examples/custom-apps/custom-app.h``, ``examples/custom-apps/custom-app.cc`` and API documentation of ndnSIM and NS-3.
+For more details refer ``examples/ndn-custom-apps/custom-app.hpp``, ``examples/ndn-custom-apps/custom-app.cpp`` and API documentation of ndnSIM and NS-3.
 
-Header file ``examples/custom-apps/custom-app.h``:
+Header file ``examples/ndn-custom-apps/custom-app.hpp``:
 
-.. literalinclude:: ../../examples/custom-apps/custom-app.h
+.. literalinclude:: ../../examples/ndn-custom-apps/custom-app.hpp
     :language: c++
     :linenos:
-    :lines: 21-29,40-
+    :lines: 20-28,39-
 
-Source file ``examples/custom-apps/custom-app.cc``:
+Source file ``examples/ndn-custom-apps/custom-app.cpp``:
 
-.. literalinclude:: ../../examples/custom-apps/custom-app.cc
+.. literalinclude:: ../../examples/ndn-custom-apps/custom-app.cpp
     :language: c++
     :linenos:
-    :lines: 21-
+    :lines: 20-
 
-Example how to use custom app in a scenario (``ndn-simple-with-custom-app.cc``):
+Example how to use custom app in a scenario (``ndn-simple-with-custom-app.cpp``):
 
  .. *      +------+ <-----> (CustomApp1)
  .. *      | Node |
  .. *      +------+ <-----> (CustomApp2)
  .. *
 
-.. literalinclude:: ../../examples/ndn-simple-with-custom-app.cc
+.. literalinclude:: ../../examples/ndn-custom-apps.cpp
     :language: c++
     :linenos:
-    :lines: 21-28,39-
-    :emphasize-lines: 26-31
-
+    :lines: 20-27,37-
 
 To run this scenario, use the following command::
 
-        NS_LOG=CustomApp ./waf --run=ndn-simple-with-custom-app
+        NS_LOG=CustomApp ./waf --run=ndn-custom-apps
 
 
 Producer example (Interest hijacker)
@@ -223,19 +221,19 @@
 
 The following code demonstrates how to implement a basic producer application that "hijacks" all incoming Interests.
 
-Header file ``examples/custom-apps/hijacker.h``:
+Header file ``examples/ndn-custom-apps/hijacker.hpp``:
 
-.. literalinclude:: ../../examples/custom-apps/hijacker.h
+.. literalinclude:: ../../examples/ndn-custom-apps/hijacker.hpp
     :language: c++
     :linenos:
-    :lines: 21-
+    :lines: 20-
 
-Source file ``examples/custom-apps/hijacker.cc``:
+Source file ``examples/ndn-custom-apps/hijacker.cpp``:
 
-.. literalinclude:: ../../examples/custom-apps/hijacker.cc
+.. literalinclude:: ../../examples/ndn-custom-apps/hijacker.cpp
     :language: c++
     :linenos:
-    :lines: 21-
+    :lines: 20-
 
 
 After defining this class, you can use it with :ndnsim:`ndn::AppHelper`. For example:
@@ -243,27 +241,6 @@
 .. code-block:: c++
 
     ...
-    ndn::AppHelper producerHelper ("Hijacker");
-    producerHelper.Install (producerNode);
+    ndn::AppHelper producerHelper("Hijacker");
+    producerHelper.Install(producerNode);
     ...
-
-Dumb requester
-^^^^^^^^^^^^^^
-
-This application continually requests the same Data packet.
-
-Header file ``examples/custom-apps/dumb-requester.h``:
-
-.. literalinclude:: ../../examples/custom-apps/dumb-requester.h
-    :language: c++
-    :linenos:
-    :lines: 21-
-
-Source file ``examples/custom-apps/dumb-requester.cc``:
-
-.. literalinclude:: ../../examples/custom-apps/dumb-requester.cc
-    :language: c++
-    :linenos:
-    :lines: 21-
-
-
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 1d60617..afd3a1f 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -41,16 +41,16 @@
 
 # General information about the project.
 project = u''
-copyright = u'2011-2013 (c) Alexander Afanasyev, Ilya Moiseenko, and Lixia Zhang'
+copyright = u'2011-2015 (c) Alexander Afanasyev, Spyros Mastorakis, Ilya Moiseenko, and Lixia Zhang'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = '0.5'
+version = '2.0'
 # The full version, including alpha/beta/rc tags.
-release = 'Overall ndnSIM'
+release = 'Overall ndnSIM 2.0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -185,8 +185,8 @@
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass [howto/manual]).
 latex_documents = [
-  ('tutorial', 'ndnSIM-tutorial.tex', u'ndnSIM: NS-3 based Named Data Networking (NDN) simulator documentation',
-   u'Alexander Afanasyev, Ilya Moiseenko, and Lixia Zhang', 'manual'),
+  ('tutorial', 'ndnSIM-tutorial.tex', u'ndnSIM 2.0: NS-3 based Named Data Networking (NDN) simulator documentation',
+   u'Alexander Afanasyev, Spyros Mastorakis, Ilya Moiseenko, and Lixia Zhang', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -215,8 +215,8 @@
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    ('index', 'ndnSIM', u'ndnSIM: NS-3 based Named Data Networking (NDN) simulator documentation',
-     [u'Alexander Afanasyev, Ilya Moiseenko, and Lixia Zhang'], 1)
+    ('index', 'ndnSIM', u'ndnSIM 2.0: NS-3 based Named Data Networking (NDN) simulator documentation',
+     [u'Alexander Afanasyev, Spyros Mastorakis, Ilya Moiseenko, and Lixia Zhang'], 1)
 ]
 
 # If true, show URL addresses after external links.
@@ -229,8 +229,8 @@
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-  ('index', 'ndnSIM', u'ndnSIM: NS-3 based Named Data Networking (NDN) simulator documentation',
-   u'Alexander Afanasyev, Ilya Moiseenko, and Lixia Zhang', 'ndnSIM', 'One line description of project.',
+  ('index', 'ndnSIM', u'ndnSIM 2.0: NS-3 based Named Data Networking (NDN) simulator documentation',
+   u'Alexander Afanasyev, Spyridon Mastorakis, Ilya Moiseenko, and Lixia Zhang', 'ndnSIM', 'One line description of project.',
    'Miscellaneous'),
 ]
 
@@ -245,12 +245,13 @@
 
 doxylink = {
   'ndnsim' : ('ndnSIM.tag', 'doxygen/'),
+  'nfd' : ('ndnSIM.tag', 'doxygen/'),
 }
 
 googleanalytics_id = "UA-21372502-8"
 
 googleanalytics_enabled = True
 
-aafig_format = dict(latex='pdf', html='svg', text=None)
+aafig_format = {'latex': 'pdf', 'html': 'svg', 'text': None}
 
 # aafig_default_options = dict(Fixed=True)
diff --git a/docs/source/cs.rst b/docs/source/cs.rst
index 6098337..b118822 100644
--- a/docs/source/cs.rst
+++ b/docs/source/cs.rst
@@ -1,60 +1,187 @@
 .. _content store:
 
-Content Store
-+++++++++++++
+NFD's Content Store
+++++++++++++++++++++
 
-ndnSIM comes with several different in-memory :ndnsim:`content store <ndn::ContentStore>` implementations, featuring different cache replacement policies.
+The current implementation of NFD's Content Store uses a `skip list
+<http://en.wikipedia.org/wiki/Skip_list>`_ as its underlying data structure. Skip lists are a
+probabilistic alternative to balanced trees. Skip lists are balanced by virtue of a random
+number generator. Its average insertion and lookup complexity is O(log n). CS entries are
+placed in the Skip List in ascending order (by Name).
 
-.. note:
+The current implementation evicts CS entries based on prioritized FIFO (First In First Out)
+strategy.  The entries that get removed first are unsolicited Data packets, which are the Data
+packets that got cached opportunistically without preceding forwarding of the corresponding
+Interest packet. Next, the Data packets with expired freshness are removed. Lastly, the Data
+packets are removed from the Content Store on a pure FIFO basis. This cache replacement policy
+is currently hard-coded; it is intended to be replaceable in the future by the NFD developer
+team.
 
-    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
-
-Simple content stores
-^^^^^^^^^^^^^^^^^^^^^
-
-Least Recently Used (LRU) (default)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Implementation name: :ndnsim:`ndn::cs::Lru`.
-
-Usage example:
+The only currently available option to control behavior of NFD's Content Store is to set its
+maximum size using :ndnsim:`StackHelper::setCsSize()`:
 
       .. code-block:: c++
 
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Lru",
-                                    "MaxSize", "10000");
-	 ...
-	 ndnHelper.Install (nodes);
+         ndnHelper.setCsSize(<max-size-in-packets>);
+         ...
+         ndnHelper.Install(nodes);
 
-First-In-First-Out (FIFO)
-~~~~~~~~~~~~~~~~~~~~~~~~~
+Examples:
 
-Implementation name: :ndnsim:`ndn::cs::Fifo`
+- Effectively disable NFD content store an all nodes
 
-Usage example:
+  Minimum allowed value for NFD content store size is 1.  If 0 is specified, it will be assumed
+  that the old content store implementation should be used.
 
       .. code-block:: c++
 
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Fifo",
-                                    "MaxSize", "10000");
-	 ...
-	 ndnHelper.Install (nodes);
+         ndnHelper.setCsSize(1);
+         ...
+         ndnHelper.Install(nodes);
 
-Random
-~~~~~~
-
-Implementation name: :ndnsim:`ndn::cs::Random`
-
-Usage example:
+- Set CS size 100 on node1, size 1000 on node1, and size 2000 on all other nodes:
 
       .. code-block:: c++
 
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Random",
-                                    "MaxSize", "10000");
-	 ...
-	 ndnHelper.Install (nodes);
+         ndnHelper.setCsSize(100);
+         ndnHelper.Install(node1);
+
+         ndnHelper.setCsSize(1000);
+         ndnHelper.Install(node2);
+
+         NodeContainer allOtherNodes;
+         for (NodeList::Iterator i = NodeList::Begin(); i != NodeList::End(); ++i) {
+           if (*i != node1 && *i != node2) {
+             allOtherNodes.Add(*i);
+           }
+         }
+         ndnHelper.Install(allOtherNodes);
+
+CS entry
+~~~~~~~~
+
+The Data packet, along with other necessary fields, are stored in a CS entry.  Each entry
+contains:
+
+- the Data packet
+- flag indicating whether the Data packet is unsolicited
+- the timestamp at which the cached Data becomes stale
+
+CS
+~~
+
+A multi-index container is maintained in order to support the prioritized FIFO cache
+replacement policy.  In this way, pointers to the Data packets in a particular order are
+kept. Note that this multi-index container is completely separated from the skip list
+container, which indexes Content Store entries by name.
+
+The container (Cs::CleanupIndex) currently supports indexing of unsolicited Data packets,
+indexing by packet staleness and indexing by packet arrival time. Calculation of the indexes is
+performed in the container during the Data packet insertion (Cs::insert) in the Content Store.
+
+Eviction (Cs::evictItem) is performed during the insertion when the CS is full, and when the
+capacity is decreased by management. We decided not to perform periodical cleanups, because its
+CPU overhead causes jitter in packet forwarding.
+
+In the current version of NFD, cache replacement policy can be modified by adding different
+indexes in the Cs::CleanupIndex container (refer to Boost.multiIndex documentation) and
+implementing additional logic in Cs::evictItem function.
+
+For more detailed specification refer to the `NFD Developer's Guide
+<http://named-data.net/wp-content/uploads/2014/07/NFD-developer-guide.pdf>`_, section 3.2.
+
+Old Content Store Implementations
++++++++++++++++++++++++++++++++++
+
+NFD's content store implementation takes full consideration of Interest selectors, however is
+not yet flexible when it comes to cache replacement policies.  Feature to extend CS flexibility
+is currently in active development (refer to `Issue #2219 on NFD Redmine
+<http://redmine.named-data.net/issues/2219>`_) and for the time being, we have ported the old
+ndnSIM 1.0 content store implementations to the new code base.  These implementations feature
+different cache replacement policies, but have very limited support for Interest selectors.  If
+your scenario relies on proper selector processing, do not use these implementations as the
+simulation results most likely be incorrect.
+
+To select old content store implementations, use :ndnsim:`StackHelper::SetOldContentStore`:
+
+.. code-block:: c++
+
+    ndnHelper.SetOldContentStore("<content store implementation>",
+                                ["<optional parameter>", "<optional parameter's value>" [, ...]]);
+    ...
+    ndnHelper.Install (nodes);
+
+Available old content store implementations are listed in the following table:
+
+
++----------------------------------------------+----------------------------------------------------------+
+| **Simple content stores**                                                                               |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Lru``                      | **Least recently used (LRU) (default)**                  |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Fifo``                     | First-in-first-Out (FIFO)                                |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Lfu``                      | Least frequently used (LFU)                              |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Random``                   | Random                                                   |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Nocache``                  | Policy that completely disables caching                  |
++----------------------------------------------+----------------------------------------------------------+
++----------------------------------------------+----------------------------------------------------------+
+| **Content stores with entry lifetime tracking**                                                         |
+|                                                                                                         |
+| These policies allow evaluation of CS enties lifetime (i.e., how long entries stay in CS)               |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Stats::Lru``               | Least recently used (LRU)                                |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Stats::Fifo``              | Least frequently used (LFU)                              |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Stats::Lfu``               | Random                                                   |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Stats::Random``            | Policy that completely disables caching                  |
++----------------------------------------------+----------------------------------------------------------+
++----------------------------------------------+----------------------------------------------------------+
+| **Content stores respecting freshness field of Data packets**                                           |
+|                                                                                                         |
+| These policies cache Data packets only for the time indicated by FreshnessPeriod.                       |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Freshness::Lru``           | Least recently used (LRU)                                |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Freshness::Fifo``          | Least frequently used (LFU)                              |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Freshness::Lfu``           | Random                                                   |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Freshness::Random``        | Policy that completely disables caching                  |
++----------------------------------------------+----------------------------------------------------------+
++----------------------------------------------+----------------------------------------------------------+
+| **Content store realization that probabilistically accepts data packet into CS (placement policy)**     |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Probability::Lru``         | Least recently used (LRU)                                |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Probability::Fifo``        | Least frequently used (LFU)                              |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Probability::Lfu``         | Random                                                   |
++----------------------------------------------+----------------------------------------------------------+
+|   ``ns3::ndn::cs::Probability::Random``      | Policy that completely disables caching                  |
++----------------------------------------------+----------------------------------------------------------+
+
+Examples:
+
+
+- Select simple LRU policy on node1, simple FIFO policy on node2, and simple random policy on
+  other nodes with maximum CS sizes of 10000 packets:
+
+      .. code-block:: c++
+
+         ndnHelper.SetOldContentStore("ns3::ndn::cs::Lru", "MaxSize", "10000");
+         ndnHelper.Install(node1);
+
+         ndnHelper.SetOldContentStore("ns3::ndn::cs::Fifo", "MaxSize", "10000");
+         ndnHelper.Install(node2);
+
+         ndnHelper.SetOldContentStore("ns3::ndn::cs::Random", "MaxSize", "10000");
+         ...
+         ndnHelper.Install(otherNodes);
 
 .. note::
 
@@ -64,179 +191,37 @@
 
     If ``MaxSize`` is set to 0, then no limit on ContentStore will be enforced
 
-Nocache
-~~~~~~~
-
-:ndnsim:`Trivial implementation <ndn::cs::Nocache>` of the ContentStore that does not really do any caching.
-
-Usage example:
+- Disable CS on node2
 
       .. code-block:: c++
 
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Nocache");
-	 ...
-	 ndnHelper.Install (nodes);
+         ndnHelper.SetOldContentStore("ns3::ndn::cs::Nocache");
+         ndnHelper.Install(node3);
 
-Content stores with entry lifetime tracking
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-In order to evaluate lifetime of the content store entries, the special versions of the content store need to be used:
-
-Least Recently Used (LRU)
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Implementation name: :ndnsim:`ndn::cs::Stats::Lru`.
-
-Usage example:
+- Track lifetime of CS entries (must use ``ns3::ndn::cs::*::LifetimeStats`` policy):
 
       .. code-block:: c++
 
          void
-         CacheEntryRemoved (std::string context, Ptr<const ndn::cs::Entry> entry, Time lifetime)
+         CacheEntryRemoved(std::string context, Ptr<const ndn::cs::Entry> entry, Time lifetime)
          {
-             std::cout << entry->GetName () << " " << lifetime.ToDouble (Time::S) << "s" << std::endl;
+             std::cout << entry->GetName() << " " << lifetime.ToDouble(Time::S) << "s" << std::endl;
          }
 
          ...
 
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Stats::Lru",
-                                    "MaxSize", "10000");
-	 ...
-	 ndnHelper.Install (nodes);
+         ndnHelper.SetOldContentStore("ns3::ndn::cs::Stats::Lru", "MaxSize", "10000");
+         ...
+         ndnHelper.Install(nodes);
 
          // connect to lifetime trace
-         Config::Connect ("/NodeList/*/$ns3::ndn::cs::Stats::Lru/WillRemoveEntry", MakeCallback (CacheEntryRemoved));
+         Config::Connect("/NodeList/*/$ns3::ndn::cs::Stats::Lru/WillRemoveEntry", MakeCallback(CacheEntryRemoved));
 
+- Get aggregate statistics of CS hit/miss ratio (works with any policy)
 
-First-In-First-Out (FIFO)
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Implementation name: :ndnsim:`ndn::cs::Stats::Fifo`.
-
-Usage example:
+  The simplest way tro track CS hit/miss statistics is to use :ndnsim:`CsTracer`, in more
+  details described in :ref:`Metrics Section <cs trace helper>`.
 
       .. code-block:: c++
 
-         void
-         CacheEntryRemoved (std::string context, Ptr<const ndn::cs::Entry> entry, Time lifetime)
-         {
-             std::cout << entry->GetName () << " " << lifetime.ToDouble (Time::S) << "s" << std::endl;
-         }
-
-         ...
-
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Stats::Fifo",
-                                    "MaxSize", "10000");
-	 ...
-	 ndnHelper.Install (nodes);
-
-         // connect to lifetime trace
-         Config::Connect ("/NodeList/*/$ns3::ndn::cs::Stats::Fifo/WillRemoveEntry", MakeCallback (CacheEntryRemoved));
-
-Random
-~~~~~~
-
-Implementation name: :ndnsim:`ndn::cs::Stats::Random`
-
-Usage example:
-
-      .. code-block:: c++
-
-         void
-         CacheEntryRemoved (std::string context, Ptr<const ndn::cs::Entry> entry, Time lifetime)
-         {
-             std::cout << entry->GetName () << " " << lifetime.ToDouble (Time::S) << "s" << std::endl;
-         }
-
-         ...
-
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Stats::Random",
-                                    "MaxSize", "10000");
-	 ...
-	 ndnHelper.Install (nodes);
-
-         // connect to lifetime trace
-         Config::Connect ("/NodeList/*/$ns3::ndn::cs::Stats::Random/WillRemoveEntry", MakeCallback (CacheEntryRemoved));
-
-.. _Content Store respecting freshness field of ContentObjects:
-
-Content stores respecting freshness field of ContentObjects
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-If simulations need Content Store which respects freshness of ContentObjects, the following versions of content store should be used:
-
-.. note:
-
-    Please note that currently, Freshness granularity is 1 second and maximum value is 65535 second. Value means infinity.
-
-Least Recently Used (LRU)
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Implementation name: :ndnsim:`ndn::cs::Freshness::Lru`.
-
-Usage example:
-
-      .. code-block:: c++
-
-         ...
-
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Freshness::Lru",
-                                    "MaxSize", "10000");
-	 ...
-
-First-In-First-Out (FIFO)
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Implementation name: :ndnsim:`ndn::cs::Freshness::Fifo`
-
-Usage example:
-
-      .. code-block:: c++
-
-         ...
-
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Freshness::Fifo",
-                                    "MaxSize", "10000");
-	 ...
-
-Random
-~~~~~~
-
-Implementation name: :ndnsim:`ndn::cs::Freshness::Random`
-
-Usage example:
-
-      .. code-block:: c++
-
-         ...
-
-         ndnHelper.SetContentStore ("ns3::ndn::cs::Freshness::Random",
-                                    "MaxSize", "10000");
-	 ...
-
-Example
-~~~~~~~
-
-The following example demonstrates a basic usage of a customized content store (``ndn-simple-with-content-freshness.cc``).
-In this scenario two simple consumers (both installed on a consumer node) continually request the same data packet.
-When Data producer specify unlimited freshness, Content keeps getting satisfied from local caches, while if freshness is specified, Interests periodically are getting through to the Data producer.
-
-.. aafig::
-    :aspect: 60
-    :scale: 120
-
-      +----------+                +--------+                +----------+
-      |          |     1Mbps      |        |      1Mbps     |          |
-      | Consumer |<-------------->| Router |<-------------->| Producer |
-      |          |         10ms   |        |         10ms   |          |
-      +----------+                +--------+                +----------+
-
-
-.. literalinclude:: ../../examples/ndn-simple-with-content-freshness.cc
-    :language: c++
-    :linenos:
-    :lines: 20-27,43-
-
-To run this scenario, use the following command::
-
-        NS_LOG=DumbRequester:ndn.cs.Freshness.Lru ./waf --run=ndn-simple-with-content-freshness
+         CsTracer::InstallAll("cs-trace.txt", Seconds(1));
diff --git a/docs/source/examples.rst b/docs/source/examples.rst
index 4fb13d0..6561be5 100644
--- a/docs/source/examples.rst
+++ b/docs/source/examples.rst
@@ -4,10 +4,13 @@
 .. role:: red
 
 .. note::
-   :red:`!!! This page only shows up examples of how to config topology and perform basic operations in ndnSIM (an example equivalent to "Hello, world1") !!!  These are **NOT** examples of real experimentations (just like "Hello, world!" is not a real program).`
+   :red:`!!! This page only shows up examples of how to config topology and perform basic
+   operations in ndnSIM (an example equivalent to "Hello, world1") !!!  These are **NOT**
+   examples of real experimentations (just like "Hello, world!" is not a real program).`
 
 .. note::
-   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can directly run the example without putting scenario into ``scratch/`` folder.
+   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can
+   directly run the example without putting scenario into ``scratch/`` folder.
 
 .. _simple-scenario:
 
@@ -26,33 +29,37 @@
           |          |         10ms   |        |         10ms   |          |
           +----------+                +--------+                +----------+
 
-The first example (``ndn-simple.cc``) shows very basics of ndnSIM.  In the simulated
+The first example (``ndn-simple.cpp``) shows very basics of ndnSIM.  In the simulated
 topology there are 3 nodes, connected with point-to-point links, one
 NDN consumer, and one NDN producer:
 
-Consumer is simulated using :ndnsim:`ConsumerCbr` reference application and generates Interests towards the producer
-with frequency of 10 Interests per second (see :doc:`applications`).
+Consumer is simulated using :ndnsim:`ConsumerCbr` reference application and generates Interests
+towards the producer with frequency of 10 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).
+Producer is simulated using :ndnsim:`Producer` class, which is used to satisfy all incoming
+Interests with virtual payload data (1024 bytes).
 
-FIB on every node is populated using default routes (see :doc:`helpers`).
+FIB on every node is populated using default routes (see :doc:`helpers`) and the content store
+structure of the original ndnSIM is used.
 
 The following code represents all that is necessary to run such a
 simple scenario
 
-.. literalinclude:: ../../examples/ndn-simple.cc
+.. literalinclude:: ../../examples/ndn-simple.cpp
    :language: c++
    :linenos:
-   :lines: 20-27,48-
-   :emphasize-lines: 30-33,37-49
+   :lines: 20-28,49-
+   :emphasize-lines: 23-24,27-29,42-53
 
-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
-simulation using the following command (in optimized mode nothing will be printed out)::
+If this code is placed into ``scratch/ndn-simple.cpp`` and NS-3 is compiled in debug mode, 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-simple
 
 .. note::
-   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can directly run the example without putting scenario into ``scratch/`` folder.
+   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can
+   directly run the example without putting scenario into ``scratch/`` folder.
 
 .. _9-node-grid-example:
 
@@ -81,31 +88,35 @@
            | |<-------->| |<---->|Producer|
            \-/          \-/      \--------/
 
-This scenario (``ndn-grid.cc``) simulates a grid topology, which is constructed using PointToPointLayout NS-3 module
+This scenario (``ndn-grid.cpp``) simulates a grid topology, which is constructed using
+PointToPointLayout NS-3 module.
 
-FIB is populated using :ndnsim:`GlobalRoutingHelper` (see :doc:`helpers`).
+FIB is populated using :ndnsim:`GlobalRoutingHelper` (see :doc:`helpers`). The content store
+structure of NFD is used in all the nodes.
 
-Consumer is simulated using :ndnsim:`ConsumerCbr` reference application and generates Interests towards the producer
-with frequency of 100 interests per second (see :doc:`applications`).
+Consumer is simulated using :ndnsim:`ConsumerCbr` reference application and generates Interests
+towards the producer 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).
+Producer is simulated using :ndnsim:`Producer` class, which is used to satisfy all incoming
+Interests with virtual payload data (1024 bytes).
 
 The following code represents all that is necessary to run such a simple scenario
 
-.. literalinclude:: ../../examples/ndn-grid.cc
+.. literalinclude:: ../../examples/ndn-grid.cpp
    :language: c++
    :linenos:
-   :lines: 20-27,53-
-   :emphasize-lines: 28,31-33,35-38,53-57
+   :lines: 20-29,54-
+   :emphasize-lines: 24-26,33,36-37,40-42,58,61
 
-
-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
-simulation using the following command (in optimized mode nothing will be printed out)::
+If this code is placed into ``scratch/ndn-grid.cpp`` and NS-3 is compiled in debug mode, 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
 
 .. note::
-   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can directly run the example without putting scenario into ``scratch/`` folder.
+   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can
+   directly run the example without putting scenario into ``scratch/`` folder.
 
 .. _9-node-grid-example-using-topology-plugin:
 
@@ -134,9 +145,15 @@
            | |<-------->| |<---->|Producer|
            \-/          \-/      \--------/
 
-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`.
+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 more general-use class that uses simple user-readable format.
+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:
 
@@ -147,30 +164,34 @@
    :emphasize-lines: 8,24
 
 
-This scenario (``ndn-grid-topo-plugin.cc``) duplicates the functionality of :ref:`9-node-grid-example` but with the use of :ndnsim:`AnnotatedTopologyReader`.
+This scenario (``ndn-grid-topo-plugin.cpp``) duplicates the functionality of
+:ref:`9-node-grid-example` but with the use of :ndnsim:`AnnotatedTopologyReader`.
 
-.. literalinclude:: ../../examples/ndn-grid-topo-plugin.cc
+.. literalinclude:: ../../examples/ndn-grid-topo-plugin.cpp
    :language: c++
    :linenos:
-   :lines: 20-26,51-
-   :emphasize-lines: 14-16,20,27-30
+   :lines: 20-27,52-
+   :emphasize-lines: 15-17,31-33
 
 As you can see, scenario code became more compact and more readable.
 
-:ndnsim:`AnnotatedTopologyReader` provides two ways to access topology nodes.
-First, you can use the method :ndnsim:`AnnotatedTopologyReader::GetNodes` which returns NodeContainer.
+:ndnsim:`AnnotatedTopologyReader` provides two ways to access topology nodes.  First, you can
+use the method :ndnsim:`AnnotatedTopologyReader::GetNodes` which returns NodeContainer.
 
-Alternatively, nodes can be accessed by name using `Names::Find<Node> ("nodename")` call, as in the above example.
-For this purpose,:ndnsim:`AnnotatedTopologyReader` automatically registers all created nodes with names specified in topology file.
-For more information about `Names` class, please refer to `NS-3 documentation <.. http://www.nsnam.org/doxygen/classns3_1_1_names.html>`_
-.
+Alternatively, nodes can be accessed by name using `Names::Find<Node> ("nodename")` call, as in
+the above example.  For this purpose,:ndnsim:`AnnotatedTopologyReader` automatically registers
+all created nodes with names specified in topology file.  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/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)::
+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.cpp``, 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
 
 .. note::
-   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can directly run the example without putting scenario into ``scratch/`` folder.
+   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can
+   directly run the example without putting scenario into ``scratch/`` folder.
 
 6-node bottleneck topology
 --------------------------
@@ -181,45 +202,43 @@
         :aspect: 60
         :scale: 90
 
-        /------\                                                    /------\
-        | Src1 |<--+                                            +-->| Dst1 |
-        \------/    \                                          /    \------/
-                     \                                        /
-                      +-->/------\   "bottleneck"  /------\<-+
-                          | Rtr1 |<===============>| Rtr2 |
-                      +-->\------/                 \------/<-+
-                     /                                        \
-        /------\    /                                          \    /------\
-        | Src2 |<--+                                            +-->| Dst2 |
-        \------/                                                    \------/
+         /------\                                                    /------\
+         | Src1 |<--+                                            +-->| Dst1 |
+         \------/    \                                          /    \------/
+                      \                                        /
+                       +-->/------\   "bottleneck"  /------\<-+
+                           | Rtr1 |<===============>| Rtr2 |
+                       +-->\------/                 \------/<-+
+                      /                                        \
+         /------\    /                                          \    /------\
+         | Src2 |<--+                                            +-->| Dst2 |
+         \------/                                                    \------/
 
-This scenario (``ndn-congestion-topo-plugin.cc``) can be used for congestion-related scenarios
+
+This scenario (``ndn-congestion-topo-plugin.cpp``) can be used for congestion-related scenarios
 
 .. literalinclude:: ../../examples/topologies/topo-6-node.txt
     :language: bash
     :linenos:
     :lines: 1-2,15-
-    :emphasize-lines: 3,13
 
-.. literalinclude:: ../../examples/ndn-congestion-topo-plugin.cc
+.. literalinclude:: ../../examples/ndn-congestion-topo-plugin.cpp
    :language: c++
    :linenos:
-   :lines: 20-26,47-
-   :emphasize-lines: 15,21-22,29-34,41-47,52-62
-
-.. :lines: 20-25,53-
+   :lines: 20-27,48-
 
 To run this scenario and see what is happening, use the following command::
 
         NS_LOG=ndn.Consumer:ndn.Producer ./waf --run=ndn-congestion-topo-plugin
 
 .. note::
-   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can directly run the example without putting scenario into ``scratch/`` folder.
+   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can
+   directly run the example without putting scenario into ``scratch/`` folder.
 
-.. _11-node 2-bottleneck topology with custom forwarding strategy:
+.. _11-node 2-bottleneck topology:
 
-11-node 2-bottleneck topology with custom forwarding strategy
--------------------------------------------------------------
+11-node 2-bottleneck topology
+------------------------------
 
 .. sidebar:: Topology
 
@@ -252,13 +271,7 @@
          "Numbers near nodes denote face IDs. Face ID is assigned based on the order of link"
          "definitions in the topology file"
 
-To effectively use the example :ref:`custom strategy <Writing your own custom strategy>`, we need to make sure that FIB entries contain at least two entries.
-In the current version of ndnSIM, this can be accomplished using manual route configuration.
-
-The following example illustrates how the strategy can be used in simulation scenario.
-
-Let us first define a meaningful topology:
-
+Firstly, we define a meaningful topology:
 
 The corresponding topology file (``topo-11-node-two-bottlenecks.txt``):
 
@@ -267,14 +280,14 @@
     :linenos:
     :lines: 1-2,28-
 
-Example simulation (``ndn-congestion-alt-topo-plugin.cc``) scenario that utilizes CustomStrategy forwarding strategy:
+After that, we define the simulation scenario:
 
-.. literalinclude:: ../../examples/ndn-congestion-alt-topo-plugin.cc
+Example simulation (``ndn-congestion-alt-topo-plugin.cpp``) scenario:
+
+.. literalinclude:: ../../examples/ndn-congestion-alt-topo-plugin.cpp
     :language: c++
     :linenos:
-    :lines: 21-28,61-
-    :emphasize-lines: 16,21,49-50,65-79
-
+    :lines: 20-27,60-
 
 To run this scenario and see what is happening, use the following command::
 
@@ -285,7 +298,124 @@
         ./waf --run=ndn-congestion-alt-topo-plugin --visualize
 
 .. note::
-   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can directly run the example without putting scenario into ``scratch/`` folder.
+   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can
+   directly run the example without putting scenario into ``scratch/`` folder.
+
+.. _6-node topology with custom NFD forwarding strategy:
+
+6-node topology with custom NFD forwarding strategy
+---------------------------------------------------
+
+.. sidebar:: Topology
+
+    .. aafig::
+        :aspect: 60
+        :scale: 90
+
+                                /-----\
+                                | CSU |
+                       +----->  | HUB |  <----+
+                       |        \-----/       |
+                       |                      |  1Mbps/10ms delay
+                       v                      v
+                     /------\               /----------\
+                     | UCLA |               | Consumer |
+                     | HUB  |               |   CSU-1  |
+             +-----> \------/ <-----+       \----------/
+             |                      |
+             |                      |
+             v                      v
+         /----------\           /----------\
+         | Producer |           | Producer |
+         |  UCLA-1  |           |  UCLA-2  |
+         \----------/           \----------/
+
+        "All links are 1Mbps with propagation 10ms delay."
+        "FIB is populated using NdnGlobalRoutingHelper."
+
+This scenario simulates a load balancer topology (using topology reader module).  The
+corresponding topology file (``topo-load-balancer.txt``):
+
+.. literalinclude:: ../../examples/topologies/topo-load-balancer.txt
+    :language: bash
+    :linenos:
+    :lines: 30-36,43-
+
+After that, we define the simulation scenario:
+
+Example simulation (``ndn-load-balancer.cpp``) scenario:
+
+.. literalinclude:: ../../examples/ndn-load-balancer.cpp
+    :language: c++
+    :linenos:
+    :lines: 20-27,55-
+    :emphasize-lines: 7,44-45
+
+In this simulation scenario, the node called "UCLA-HUB" implements a random load balancing
+strategy for the name prefix "/ucla/hello". In this way, the Interest packets will be
+forwarded randomly either to the producer node called "UCLA-1" or the producer node called
+"UCLA-2".
+
+To run this scenario and see what is happening, use the following command::
+
+        NS_LOG=ndn.Consumer:ndn.Producer ./waf --run=ndn-load-balancer
+
+.. note::
+   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can
+   directly run the example without putting scenario into ``scratch/`` folder.
+
+9-node grid topology with different forwarding strategies per name prefix
+-------------------------------------------------------------------------
+
+This scenario simulates a grid topology (using PointToPointGrid module). In this scenario,
+thanks to NFD, we can choose a different forwarding strategy for each prefix in each node.
+
+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 1024 bytes of
+virtual payload.
+
+In this scenario, we choose the broadcast strategy to be installed for the name prefix
+"/prefix1" in all the nodes, while for the name prefix "/prefix2", the best-route strategy
+will be installed in all the topology nodes.
+
+Example simulation (``ndn-different-strategy-per-prefix.cpp``) scenario:
+
+.. literalinclude:: ../../examples/ndn-different-strategy-per-prefix.cpp
+    :language: c++
+    :linenos:
+    :lines: 20-33,61-
+    :emphasize-lines: 51-52
+
+To run this scenario and see what is happening, use the following command::
+
+        NS_LOG=ndn.Consumer:ndn.Producer ./waf --run=ndn-different-strategy-per-prefix
+
+9-node grid topology with different forwarding strategy for each node
+---------------------------------------------------------------------
+
+This scenario simulates a grid topology (using PointToPointGrid module). The first six nodes
+use the best route forwarding strategy, whereas the three remaining nodes use the broadcast
+forwarding strategy.
+
+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 1024 bytes of
+virtual payload.
+
+Example simulation (``ndn-grid-multiple-strategies.cpp``) scenario:
+
+.. literalinclude:: ../../examples/ndn-grid-multiple-strategies.cpp
+    :language: c++
+    :linenos:
+    :lines: 20-33,61-
+    :emphasize-lines: 49-58
+
+To run this scenario and see what is happening, use the following command::
+
+        NS_LOG=ndn.Consumer:ndn.Producer ./waf --run=ndn-grid-multiple-strategies
 
 3-level binary tree with packet-level trace helpers
 ---------------------------------------------------
@@ -298,18 +428,11 @@
 
 :ref:`cs trace helper example`
 
-
 3-level binary tree with  application-level Interest-Data delay tracer
 ----------------------------------------------------------------------
 
 :ref:`app delay trace helper example`
 
-
-3-node topology with Content Store respecting freshness field of ContentObjects
--------------------------------------------------------------------------------
-
-:ref:`Content Store respecting freshness field of ContentObjects`
-
 1-node topology with custom application
 ---------------------------------------
 
@@ -318,17 +441,19 @@
 Simple scenario with pcap dump
 ------------------------------
 
-The following example (``ndn-simple-with-pcap.cc``) demonstrates how to dump all simulated traffic
-in pcap-formatted data, which can be used for later analysis by conventional tools, like tcpdump and wireshark.
+The following example (``ndn-simple-with-pcap.cpp``) demonstrates how to dump all simulated
+traffic in pcap-formatted data, which can be used for later analysis by conventional tools,
+like tcpdump and wireshark.
 
-.. literalinclude:: ../../examples/ndn-simple-with-pcap.cc
+.. literalinclude:: ../../examples/ndn-simple-with-pcap.cpp
    :language: c++
    :linenos:
    :lines: 20-
-   :emphasize-lines: 7-29,70-72
+   :emphasize-lines: 24-43,89-91
 
-If this code is placed into ``scratch/ndn-simple-with-pcap.cc`` and NS-3 is compiled in debug mode, you can run and see progress of the
-simulation using the following command (in optimized mode nothing will be printed out)::
+If this code is placed into ``scratch/ndn-simple-with-pcap.cpp`` and NS-3 is compiled in debug
+mode, 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-simple-with-pcap
 
@@ -337,38 +462,36 @@
      tcpdump -r ndn-simple-trace.pcap
 
 .. note::
-   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can directly run the example without putting scenario into ``scratch/`` folder.
+   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can
+   directly run the example without putting scenario into ``scratch/`` folder.
 
 .. _Simple scenario with link failures:
 
 Simple scenario with link failures
 ----------------------------------
 
-The following example (``ndn-simple-with-link-failure.cc``) shows how to "fail" links in ndnSIM simulation.
-The basic idea is to set ndn::Faces that correspond to the failed link to DOWN state.
-ndnSIM now includes a simple helper that simplifies this process.
+The following example (``ndn-simple-with-link-failure.cpp``) shows how to "fail" links in
+ndnSIM simulation.  The basic idea is to set ndn::Faces that correspond to the failed link to
+DOWN state.  ndnSIM now includes a simple helper that simplifies this process.
 
-.. literalinclude:: ../../examples/ndn-simple-with-link-failure.cc
+.. literalinclude:: ../../examples/ndn-simple-with-link-failure.cpp
    :language: c++
    :linenos:
-   :lines: 21-31,52-
-   :emphasize-lines: 54-56
+   :lines: 20-31,52-
+   :emphasize-lines: 56-57
 
-If this code is placed into ``scratch/ndn-simple-with-link-failure.cc`` and NS-3 is compiled in debug mode, you can run and see progress of the
-simulation using the following command (in optimized mode nothing will be printed out)::
+If this code is placed into ``scratch/ndn-simple-with-link-failure.cpp`` and NS-3 is compiled
+in debug mode, 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:ndn.LinkControlHelper ./waf --run=ndn-simple-with-link-failure
 
 .. note::
-   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can directly run the example without putting scenario into ``scratch/`` folder.
+   If you compiled ndnSIM with examples (``./waf configure --enable-examples``) you can
+   directly run the example without putting scenario into ``scratch/`` folder.
 
 
 25-node tree topology with L2Tracer
 -----------------------------------
 
 :ref:`Example of packet drop tracer (L2Tracer)`
-
-3-node topology with periodic tracing of PIT
---------------------------------------------
-
-:ref:`periodic tracing of Pending Interest Table (PIT) size`
diff --git a/docs/source/faq.rst b/docs/source/faq.rst
index a7ce4bd..068afb0 100644
--- a/docs/source/faq.rst
+++ b/docs/source/faq.rst
@@ -129,11 +129,7 @@
 
     How can I fail a link between to NDN nodes?
 
-
-Right now, NS-3 does not provide ability to actually "break" the link between nodes in NS-3.
-However, exactly the same effect can be achieved by making an interface (:ndnsim:`ndn::Face`) up or down (:ndnsim:`ndn::Face::SetUp(true)` or :ndnsim:`ndn::Face::SetUp(false)`).
-
-You can use :ndnsim:`ndn::LinkControlHelper` to schedule failing links.  For example, refer to :ref:`Simple scenario with link failures` example.
+Refer to :ref:`Link Control Helper`.
 
 General questions
 -----------------
@@ -142,4 +138,6 @@
 
     I found an error in the documentation / bug in the code. What should I do?
 
-Please create an issue for the documentation error or code bug on `github <http://github.com/NDN-Routing/ndnSIM>`_, or tell us about the error on `our mailing list <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ .
+Please submit a bug report on `redmine <http://redmine.named-data.net/projects/ndnsim?jump=welcome>`_,
+or tell us about the error on `our mailing list
+<http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ .
diff --git a/docs/source/fw.rst b/docs/source/fw.rst
index 45d4f2b..c98e134 100644
--- a/docs/source/fw.rst
+++ b/docs/source/fw.rst
@@ -3,298 +3,173 @@
 Forwarding Strategies
 =====================
 
-ndnSIM provides simple ways to experiment with custom Interest/Data forwarding strategies.
-A new forwarding strategy can be implement completely different processing or override just specific actions/events of the :ndnsim:`forwarding strategy interface <ndn::ForwardingStrategy>`.
-Please refer to :ndnsim:`API documentation <ndn::ForwardingStrategy>` of the forwarding strategy interface, which lists all default actions/events.
+ndnSIM through its integration with NFD provides simple ways to experiment with the custom
+Interest/Data forwarding strategies of NFD.
+
+A new forwarding strategy can be implement completely different processing or override just
+specific actions/events of the :nfd:`forwarding strategy interface <nfd::fw::Strategy>`.  NFD
+offers the maximum flexibility by allowing per-namespace selection of each specific forwarding
+strategy.
+
+Please refer to :nfd:`API documentation <nfd::fw::Strategy>` of the forwarding strategy
+interface, which lists all default actions/events. For a more detailed specification, you can
+read `NFD Developer's Guide
+<http://named-data.net/wp-content/uploads/2014/07/NFD-developer-guide.pdf>`_, section 5.
 
 Available forwarding strategies
 +++++++++++++++++++++++++++++++
 
-Basic forwarding strategies
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
++--------------------------------------------+----------------------------------------------------------------------------------------------+
+| Strategy Name                              | Description                                                                                  |
++============================================+==============================================================================================+
+| ``/localhost/nfd/strategy/best-route``     | :nfd:`Best Route Strategy <nfd::fw::BestRouteStrategy2>` **(default)**                       |
+|                                            |                                                                                              |
+|                                            | The best route strategy forwards an Interest to the                                          |
+|                                            | upstream with lowest routing cost.                                                           |
++--------------------------------------------+----------------------------------------------------------------------------------------------+
++--------------------------------------------+----------------------------------------------------------------------------------------------+
+| ``/localhost/nfd/strategy/ncc``            | :nfd:`NCC Strategy <nfd::fw::NccStrategy>`                                                   |
+|                                            |                                                                                              |
+|                                            | The NCC strategy is an reimplementation of CCNx 0.7.2                                        |
+|                                            | default strategy. It has similar algorithm but is not                                        |
+|                                            | guaranteed to be equivalent.                                                                 |
++--------------------------------------------+----------------------------------------------------------------------------------------------+
++--------------------------------------------+----------------------------------------------------------------------------------------------+
+| ``/localhost/nfd/strategy/broadcast``      |  :nfd:`Broadcast Strategy <nfd::fw::BroadcastStrategy>`                                      |
+|                                            |                                                                                              |
+|                                            |  The broadcast strategy forwards every Interest to all                                       |
+|                                            |  upstreams, indicated by the supplied FIB entry.                                             |
++--------------------------------------------+----------------------------------------------------------------------------------------------+
++--------------------------------------------+----------------------------------------------------------------------------------------------+
+| ``/localhost/nfd/strategy/client-control`` | :nfd:`Client Control Strategy <nfd::fw::ClientControlStrategy>`                              |
+|                                            |                                                                                              |
+|                                            | The client control strategy allows a local consumer                                          |
+|                                            | application to choose the outgoing face of each Interest.                                    |
++--------------------------------------------+----------------------------------------------------------------------------------------------+
 
-Flooding
-########
 
-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.
+.. note::
 
-Implementation name: :ndnsim:`ns3::ndn::fw::Flooding` (default)
+    ndnSIM 2.0 exactly like NFD allows different namespaces to be associated with different
+    forwarding strategies.  By default, the following forwarding strategy configuration is
+    defined:
 
-Usage example:
+    +--------------------+-----------------------------------------------+
+    | Namespace          | Strategy Name                                 |
+    +====================+===============================================+
+    | ``/``              | ``/localhost/nfd/strategy/best-route``        |
+    +--------------------+-----------------------------------------------+
+    | ``/localhost``     | ``/localhost/nfd/strategy/broadcast``         |
+    +--------------------+-----------------------------------------------+
+    | ``/localhost/nfd`` | ``/localhost/nfd/strategy/best-route``        |
+    +--------------------+-----------------------------------------------+
+    | ``/ndn/broadcast`` | ``/localhost/nfd/strategy/broadcast``         |
+    +--------------------+-----------------------------------------------+
+
+
+
+Examples:
 
       .. code-block:: c++
 
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::Flooding");
-	 ...
-	 ndnHelper.Install (nodes);
-
-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.
-
-Implementation name :ndnsim:`ns3::ndn::fw::SmartFlooding`
-
-Usage example:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::SmartFlooding");
-	 ...
-	 ndnHelper.Install (nodes);
-
-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.
-
-Implementation name: :ndnsim:`ns3::ndn::fw::BestRoute`
-
-Usage example:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute");
-	 ...
-	 ndnHelper.Install (nodes);
-
-Strategies with Interest limits
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following strategies enforce different granularities of Interest limits.  Each strategy is an extension of the basic one (custom strategies can also be extended with limits, refer to the source code).
-
-Currently, ndnSIM implements two types of Interest limit enforcements, both based on a Token Bucket approach:
-
-   - :ndnsim:`ns3::ndn::Limits::Window` (default)
-
-        Interest token is borrowed when Interest is send out.  The token is returned only when Interest is satisfied or times out.
-
-   - :ndnsim:`ns3::ndn::Limits::Rate`
-
-        Interest token is borrowed when Interest is send out.  The token is returned periodically based on link capacity.
-
-In both cases, limit is set according to the following equation:
-
-.. math::
-
-    \mathrm{Interest\ Limit} = Delay\ [s] \cdot
-       \frac{\mathrm{Bandwidth\ [Bytes/s]}}
-       {\mathrm{Data\ packet\ size\ [Bytes]} + \mathrm{Interest\ packet\ size\ [Bytes]}}
-
-To configure packet sizes and delay parameters, use the following :ndnsim:`ndn::StackHelper` method:
-
-      .. code-block:: c++
-
-         // ndnHelper.EnableLimits (true, <delay>, <average interest packet size>, <average data packet size>);
-         ndnHelper.EnableLimits (true, Seconds (0.2), 40, 1100);
-	 ...
-	 ndnHelper.Install (nodes);
-
-Usage examples
-##############
-
-Per outgoing Face limits
-%%%%%%%%%%%%%%%%%%%%%%%%
-
-- :ndnsim:`ns3::ndn::fw::Flooding::PerOutFaceLimits`
-
-    With :ndnsim:`Limits::Window`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::Flooding::PerOutFaceLimits"
-                                          "Limit", "ns3::ndn::Limits::Window");
-	 ...
-	 ndnHelper.Install (nodes);
-
-
-    With :ndnsim:`Limits::Rate`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::Flooding::PerOutFaceLimits"
-                                          "Limit", "ns3::ndn::Limits::Rate");
-	 ...
-	 ndnHelper.Install (nodes);
-
-- :ndnsim:`ns3::ndn::fw::SmartFlooding::PerOutFaceLimits`
-
-    With :ndnsim:`Limits::Window`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::SmartFlooding::PerOutFaceLimits"
-                                          "Limit", "ns3::ndn::Limits::Window");
-	 ...
-	 ndnHelper.Install (nodes);
-
-
-    With :ndnsim:`Limits::Rate`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::SmartFlooding::PerOutFaceLimits"
-                                          "Limit", "ns3::ndn::Limits::Rate");
-	 ...
-	 ndnHelper.Install (nodes);
-
-- :ndnsim:`ns3::ndn::fw::BestRoute::PerOutFaceLimits`
-
-    With :ndnsim:`Limits::Window`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute::PerOutFaceLimits"
-                                          "Limit", "ns3::ndn::Limits::Window");
-	 ...
-	 ndnHelper.Install (nodes);
-
-
-    With :ndnsim:`Limits::Rate`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute::PerOutFaceLimits"
-                                          "Limit", "ns3::ndn::Limits::Rate");
-	 ...
-	 ndnHelper.Install (nodes);
-
-
-Per FIB entry, per outgoing face limits
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-- :ndnsim:`ns3::ndn::fw::Flooding::PerOutFaceLimits::PerFibLimits`
-
-    With :ndnsim:`Limits::Window`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::Flooding::PerOutFaceLimits::PerFibLimits"
-                                          "Limit", "ns3::ndn::Limits::Window");
-	 ...
-	 ndnHelper.Install (nodes);
-
-
-    With :ndnsim:`Limits::Rate`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::Flooding::PerOutFaceLimits::PerFibLimits"
-                                          "Limit", "ns3::ndn::Limits::Rate");
-	 ...
-	 ndnHelper.Install (nodes);
-
-- :ndnsim:`ns3::ndn::fw::SmartFlooding::PerOutFaceLimits::PerFibLimits`
-
-    With :ndnsim:`Limits::Window`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::SmartFlooding::PerOutFaceLimits::PerFibLimits"
-                                          "Limit", "ns3::ndn::Limits::Window");
-	 ...
-	 ndnHelper.Install (nodes);
-
-
-    With :ndnsim:`Limits::Rate`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::SmartFlooding::PerOutFaceLimits::PerFibLimits"
-                                          "Limit", "ns3::ndn::Limits::Rate");
-	 ...
-	 ndnHelper.Install (nodes);
-
-- :ndnsim:`ns3::ndn::fw::BestRoute::PerOutFaceLimits::PerFibLimits`
-
-    With :ndnsim:`Limits::Window`:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute::PerOutFaceLimits::PerFibLimits"
-                                          "Limit", "ns3::ndn::Limits::Window");
-	 ...
-	 ndnHelper.Install (nodes);
-
-
-    With :ndnsim:`Limits::Rate`:
-
-      .. code-block:: c++
+         StrategyChoiceHelper::Install(nodes, prefix,
+                                       "/localhost/nfd/strategy/broadcast");
 
-         ndnHelper.SetForwardingStrategy ("ns3::ndn::fw::BestRoute::PerOutFaceLimits::PerFibLimits"
-                                          "Limit", "ns3::ndn::Limits::Rate");
-	 ...
-	 ndnHelper.Install (nodes);
 
 .. _Writing your own custom strategy:
 
 Writing your own custom strategy
 ++++++++++++++++++++++++++++++++
 
-First step in creating your own strategy is to decide which existing strategy you want to extend.  You can either use realize :ndnsim:`forwarding strategy interface <ndn::ForwardingStrategy>` (:ndnsim:`ndn::ForwardingStrategy::DoPropagateInterest` call must be implemented) or extended one of the available forwarding strategies (:ndnsim:`fw::BestRoute` or :ndnsim:`fw::Flooding`).
-The following example assumes that we are realizing :ndnsim:`forwarding strategy interface <ndn::ForwardingStrategy>`.
+One of the objectives and features of ndnSIM 2.0 is that it uses NFD codebase for packet
+forwarding.  Therefore, writing strategy in ndnSIM is almost exactly the same process as
+outlined in `Section 5.3 of the NFD Developer's Guide
+<http://named-data.net/wp-content/uploads/2014/07/NFD-developer-guide.pdf>`_.
 
-The follwoing are template strategy h/cc files:
+The purpose of the strategy is to decides how to forward Interests and it is not intended to
+override any processing steps in the forwarding pipelines of NFD.  If it is desired to support
+a new packet type (other than Interest and Data), a new field in Interest or Data packets, or
+override some actions in the pipelines (e.g., disable ContentStore lookup), it can be
+accomplished by modification of the forwarding pipelines in :nfd:`nfd::Forwarder` class.
 
-.. literalinclude:: ../../examples/custom-strategies/custom-strategy.h
+The initial step in creating a new strategy is to create a class, say ``MyStrategy`` that is
+derived from :nfd:`nfd::fw::Strategy`. This subclass must at least override the triggers that are
+marked pure virtual and may override other available triggers that are marked just virtual.
+
+If the strategy needs to store information, it is needed to decide whether the information
+is related to a namespace or an Interest. Information related to a namespace but not
+specific to an Interest should be stored in Measurements entries; information related to an
+Interest should be stored in PIT entries, PIT downstream records, or PIT upstream records.
+After this decision is made, a data structure derived from StrategyInfo class needs to be
+declared. In the existing implementation, such data structures are declared as nested
+classes as it provides natural grouping and scope protection of the strategy-specific
+entity, but it is not required to follow the same model. If timers are needed, EventId
+fields needs to be added to such data structure(s).
+
+.. image:: _static/nfd-forwarding-overview.png
+    :alt: Packet processing in NFD/ndnSIM is broken into a number of small “pipelines” and
+          strategy callbacks
+
+The final step is to implement one or more of the triggers with the desired strategy logic.
+These triggers are listed below:
+
+- :nfd:`After Receive Interest Trigger <nfd::fw::Strategy::afterReceiveInterest()>`
+
+    When an Interest is received, passes necessary checks, and needs to be forwarded, Incoming
+    Interest pipeline (Section 4.2.1) invokes this trigger with the PIT entry, incoming Interest
+    packet, and FIB entry. At that time, the following conditions hold for the Interest:
+
+    - The Interest does not violate ``/localhost`` scope.
+    - The Interest is not looped.
+    - The Interest cannot be satisfied by ContentStore.
+    - The Interest is under a namespace managed by this strategy.
+
+    After being triggered, the strategy should decide whether and where to forward this
+    Interest. If the strategy decides to forward this Interest, it should invoke send Interest
+    action at least once. If the strategy concludes that this Interest cannot be forwarded, it
+    should invoke reject pending Interest action, so that the PIT entry will be deleted
+    shortly.
+
+- :nfd:`Before Satisfy Interest Trigger <nfd::fw::Strategy::beforeSatisfyInterest()>`
+
+    This method will be triggered just before the pending Interest is being satisfied.  It may
+    be useful override this method, e.g., to measure data plane performance.
+
+- :nfd:`Before Expire Interest Trigger <nfd::fw::Strategy::beforeExpirePendingInterest()>`
+
+    This method will be triggered just before the pending Interest is timed out.  Same as with
+    the before satisfy interest trigger, this method may be useful o measure data plane
+    performance.
+
+Example
+^^^^^^^
+
+The following code implements a random load balancing forwarding strategy. This strategy
+was created by Steve DiBenedetto and was found in one of his `GitHub repository
+<https://github.com/dibenede/ndn-tutorial-gec21>`_.
+
+.. literalinclude:: ../../examples/ndn-load-balancer/random-load-balancer-strategy.hpp
    :language: c++
    :linenos:
-   :lines: 1-36,51-55,59-
+   :lines: 26-
 
-.. literalinclude:: ../../examples/custom-strategies/custom-strategy.cc
+.. literalinclude:: ../../examples/ndn-load-balancer/random-load-balancer-strategy.cpp
    :language: c++
    :linenos:
-   :lines: 1-40,42-50,75-76,115-
-   :emphasize-lines: 21,27
+   :lines: 26-
 
-After having the template, we can fill the necesasry functionality.
+This forwarding strategy can be enabled for a specific name prefix when developing the
+simulation scenario as follows:
 
-Let us say, that we want Interest be forwarded to first two best-metric faces specified by FIB.
-That is, if node has two or more alternative paths to forward the Interests, this Interest will be forwarded to the best two neighbors.
-The following implementation of CustomStrategy::DoPropagateInterest accomplishes the task:
+      .. code-block:: c++
 
-.. literalinclude:: ../../examples/custom-strategies/custom-strategy.cc
-   :language: c++
-   :linenos:
-   :lines: 45-75
-   :emphasize-lines: 7-30
+         #include "random-load-balancer-strategy.hpp"
 
-After the compilation, you can use ``"ns3::ndn::fw::CustomStrategy"`` as a parameter to :ndnsim:`ndn::StackHelper::SetForwardingStrategy` helper method.
+         ...
 
- .. as well as NS_LOG=ndn.fw.CustomStrategy when running in a debug mode
-
-Extending strategy
-++++++++++++++++++
-
-If you need more customization for the forwarding strategy, there are many forwarding strategy events that can be overriden.
-For example, if we want to perform special logging of all forwarded, timed out, and satisfied Intersts, we can override the following events (for more events, refer to :ndnsim:`ForwardingStrategy API documentation <ForwardingStrategy>`):
-
-- :ndnsim:`DidSendOutInterest <ForwardingStrategy::DidSendOutInterest>`, which fired just after forwarding the Interest
-
-- :ndnsim:`WillEraseTimedOutPendingInterest <ForwardingStrategy::WillEraseTimedOutPendingInterest>`, which fired just before PIT entry is removed by timeout
-
-- :ndnsim:`WillSatisfyPendingInterest <ForwardingStrategy::WillSatisfyPendingInterest>`, which fired just before Interest will be satisfied.
-
-The highlighted ares of the following code demonstrates how it can be impelmented:
-
-.. literalinclude:: ../../examples/custom-strategies/custom-strategy.h
-   :language: c++
-   :linenos:
-   :emphasize-lines: 37-50,56-58
-
-.. literalinclude:: ../../examples/custom-strategies/custom-strategy.cc
-   :language: c++
-   :linenos:
-   :emphasize-lines: 41,77-114
-
+         StrategyChoiceHelper::Install<nfd::fw::RandomLoadBalancerStrategy>(nodes, prefix);
 
 Example of using custom strategy
-++++++++++++++++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Please refer to :ref:`this example <11-node 2-bottleneck topology with custom forwarding strategy>`.
-
+Please refer to :ref:`6-node topology with custom NFD forwarding strategy` .
diff --git a/docs/source/getting-started.rst b/docs/source/getting-started.rst
index 77c89e2..23ff20d 100644
--- a/docs/source/getting-started.rst
+++ b/docs/source/getting-started.rst
@@ -4,59 +4,46 @@
 Portability
 ------------
 
-ndnSIM has been successfully compiled and used under Ubuntu Linux 12.04 (boost libraries **1.48**, with default version 1.46 compilation will probably fail), 12.10 (default version of boost 1.49), 13.04 (default version of boost 1.49), Fedora 18, Mac OS 10.7 and 10.8 (gcc-4.2 apple/llvm, macports gcc 4.7, boost 1.49-1.54).
+ndnSIM has been successfully compiled and used under Ubuntu Linux 12.04 (only with boost
+libraries **1.48**), 14.04 (default version of boost), OS X 10.10 (Xcode 6.1.1, macports boost
+1.56-1.57).
 
 .. _requirements:
 
-Requirements
+Prerequisites
 -------------
 
-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
-
-        * 12.04
-
-            .. code-block:: bash
-
-                sudo aptitude install libboost1.48-all-dev
-
-        * 12.10, 13.04, and newer versions
-
-            .. code-block:: bash
-
-                sudo aptitude install libboost-all-dev
-
-    * For Fedora (for Fedora 18 and later only):
-
-        .. code-block:: bash
-
-            sudo yum install boost-devel
-
-    * For MacOS (macports):
-
-        .. code-block:: bash
-
-            sudo port instal boost
+1. `ndnSIM also required ndn-cxx library and all of its prerequisites
+   <http://named-data.net/doc/ndn-cxx/current/INSTALL.html>`_.
 
 .. role:: red
 
 .. note::
-   :red:`!!! ndnSIM requires boost version at least 1.48.`   Many linux distribution (Fedora 16, 17 at the time of this writing) ship an old version of boost, making it impossible to compile ndnSIM out-of-the-box.  Please install the latest version, following :ref:`these simple instructions <Installing boost libraries>`.
+   :red:`!!! ndn-cxx and ndnSIM requires boost version at least 1.48.` Many linux distribution
+   (Fedora 16, 17 at the time of this writing) ship an old version of boost, making it
+   impossible to compile ndnSIM out-of-the-box.  Please install the latest version, following
+   :ref:`these simple instructions <Installing boost libraries>`.
 
 .. note::
-   :red:`For Ubuntu 12.04`  Ubuntu 12.04 ships with two versions of boost libraries and it is known that if both are installed, then compilation of ndnSIM will most likely fail.  Please install ``libboost1.48-dev-all`` package and uninstall ``libboost-dev-all``.  If you want to install the latest version of boost libraries, then uninstall both ``libboost1.48-dev-all`` and ``libboost-dev-all``, so the libraries do not interfere with each other.
+   :red:`For Ubuntu 12.04` Ubuntu 12.04 ships with two versions of boost libraries and it is
+   known that if both are installed, then compilation of ndnSIM will most likely fail.  Please
+   install ``libboost1.48-dev-all`` package and uninstall ``libboost-dev-all``.  If you want to
+   install the latest version of boost libraries, then uninstall both ``libboost1.48-dev-all``
+   and ``libboost-dev-all``, so the libraries do not interfere with each other.
 
 .. 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 :ref:`the following example <Installing boost libraries>` for the hints how to successfully compile and install boost libraries on Ubuntu Linux.
+   !!! 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 :ref:`the following example <Installing boost
+   libraries>` 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:
+2. 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 (tested on Ubuntu 12.04, 12.10, 13.04, should work on later versions as well):
+   * For Ubuntu (tested on Ubuntu 14.04, should work on later versions as well):
 
        .. code-block:: bash
 
@@ -81,106 +68,155 @@
 
            sudo port install  py27-pygraphviz py27-goocanvas
 
-.. py27-kiwi
+           # If you add NDN macports repository, as described in
+           # http://named-data.net/doc/NFD/current/INSTALL.html#install-nfd-using-the-ndn-macports-repository-on-os-x
+           # you will be able to install another useful python module
+           # sudo port install 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, python binding generation library (optional), and clone actual ndnSIM code and place it in src/ folder:
+ndnSIM package consists of three pieces:
+
+- `ndn-cxx library <http://named-data.net/doc/ndn-cxx/>`_
+- a custom branch of NS-3 that contains a few useful patches
+- a customized python binding generation library (necessary if you want to use NS-3's python
+  bindings and/or visualizer module)
+- the source code of ndnSIM module
+
+The following commands download all pieces from GitHub repositories:
 
 .. code-block:: bash
 
-	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
-	git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM
+    mkdir ndnSIM
+    cd ndnSIM
+    git clone https://github.com/named-data/ndn-cxx.git ndn-cxx
+    git clone https://github.com/cawka/ns-3-dev-ndnSIM.git ns-3
+    git clone https://github.com/cawka/pybindgen.git pybindgen
+    git clone https://github.com/named-data/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.
+The few modification to the base NS-3 code 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.
 
-If you have problems connecting to github, you can try to clone from google servers:
-
-.. code-block:: bash
-
-        mkdir ndnSIM
-        cd ndnSIM
-        git clone https://code.google.com/p/ndnsim.ns3-base/ ns-3
-        git clone https://code.google.com/p/ndnsim.pybindgen/ pybindgen
-        git clone https://code.google.com/p/ndnsim/ ns-3/src/ndnSIM
 
 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:
+- Compile and install ndn-cxx library
 
-.. code-block:: bash
+    .. code-block:: bash
 
-	cd <ns-3-folder>
-	./waf configure --enable-examples
-	./waf
+        cd ndnSIM/ndn-cxx
+        ./waf configure
+        ./waf
+        sudo ./waf install
 
-On MacOS (with macports), you may need to modify the configure command to use macports version of python:
+    .. note::
+       On Ubuntu platform you can also install ndn-cxx library from `NDN
+       PPA repository <http://named-data.net/doc/NFD/current/INSTALL.html#installing-nfd-from-binaries>`_
 
-.. code-block:: bash
+       .. code-block:: bash
 
-	cd <ns-3-folder>
-	./waf configure --with-python=/opt/local/bin/python2.7 --enable-examples
-	./waf
+           sudo apt-get install ndn-cxx
 
-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'"):
+- Compile NS-3 with ndnSIM module
 
-.. code-block:: bash
+    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 --disable-python --enable-examples
-	./waf
+    .. code-block:: bash
 
-For more configuration options, please refer to ``./waf --help``.
+        cd <ns-3-folder>
+        ./waf configure --enable-examples
+        ./waf
 
-To run :doc:`sample ndnSIM simulations <examples>`:
+    On MacOS (with macports), you may need to modify the configure command to use macports
+    version of python:
 
-.. code-block:: bash
+    .. code-block:: bash
 
-	./waf --run=ndn-simple
+        cd <ns-3-folder>
+        ./waf configure --with-python=/opt/local/bin/python2.7 --enable-examples
+        # or run ``sudo port select python python27``
+        ./waf
 
-or:
+    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'"):
 
-.. code-block:: bash
+    .. code-block:: bash
 
-	./waf --run=ndn-grid
+        cd <ns-3-folder>
+        ./waf configure --disable-python --enable-examples
+        ./waf
 
-If you have compiled with python bindings, then you can try to run these simulations with visualizer:
-
-.. code-block:: bash
-
-	./waf --run=ndn-simple --vis
-
-or:
-
-.. code-block:: bash
-
-	./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.
-
+    For more configuration options, please refer to ``./waf --help``.
 
 Simulating using ndnSIM
 -----------------------
 
-While it is possible to write simulations directly inside NS-3 (in ``scratch/`` folder) or ndnSIM (in ``examples/``), the recommended way is to write your simulation scenarios, as well as any custom extensions, separately from the NS-3 or ndnSIM core.
+- Examples simulations
 
-For example, you can use the following template to write your extensions, simulation scenarios, and metric processing scripts: `<http://github.com/cawka/ndnSIM-scenario-template>`_:
+    When NS-3 is compiled with ``--with-examples`` flag, you can directly run all examples
+    described in :doc:`examples section of this tutorial <examples>`.  For example, to run
+    ``ndn-simple.cpp`` scenario, you can run the following command:
 
-.. code-block:: bash
+    .. code-block:: bash
 
-	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
-	git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM
+        ./waf --run=ndn-simple
+
+    To run ``ndn-grid.cpp` scenario:
+
+    .. code-block:: bash
+
+        ./waf --run=ndn-grid
+
+    To run the sample simulation scenarios with the logging module of NS-3 enabled (note that
+    this will work only when NS-3 is compiled in debug mode):
+
+    .. code-block:: bash
+
+        NS_LOG=ndn.Producer:ndn.Consumer ./waf --run=<scenario name>
+
+    If you have compiled with python bindings, then you can try to run these simulations with
+    visualizer:
+
+    .. code-block:: bash
+
+        ./waf --run=ndn-simple --vis
+
+    or:
+
+    .. code-block:: bash
+
+        ./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.
+
+- Real experimentation
+
+    While it is possible to write simulations directly inside NS-3 (in ``scratch/`` folder) or
+    ndnSIM (in ``examples/``), the recommended way is to write your simulation scenarios, as
+    well as any custom extensions, separately from the NS-3 or ndnSIM core.
+
+    For example, you can use the following template to write your extensions, simulation
+    scenarios, and metric processing scripts:
+    `<http://github.com/cawka/ndnSIM-scenario-template>`_:
+
+    .. code-block:: bash
+
+        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
+        git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM
 
         # Build and install NS-3 and ndnSIM
         cd ns-3
@@ -199,7 +235,8 @@
 
         ./waf --run <scenario>
 
-For more detailed information, refer to `README file <https://github.com/cawka/ndnSIM-scenario-template/blob/master/README.md>`_.
+    For more detailed information, refer to `README file
+    <https://github.com/cawka/ndnSIM-scenario-template/blob/master/README.md>`_.
 
 Examples of template-based simulations
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -207,19 +244,19 @@
 1. ndnSIM examples from `<http://ndnsim.net>`_ website and more:
 
 - `<http://github.com/cawka/ndnSIM-examples>`_, or
-- `<http://code.google.com/p/ndnsim.ndnsim-examples/>`_
 
-2. Script scenarios and graph processing scripts for simulations used in "A Case for Stateful Forwarding Plane" paper by Yi et al. (`<http://dx.doi.org/10.1016/j.comcom.2013.01.005>`_):
+2. Script scenarios and graph processing scripts for simulations used in "A Case for Stateful
+   Forwarding Plane" paper by Yi et al. (`<http://dx.doi.org/10.1016/j.comcom.2013.01.005>`_):
 
 - `<http://github.com/cawka/ndnSIM-comcom-stateful-fw>`_, or
-- `<http://code.google.com/p/ndnsim.ndnsim-comcom/>`_
 
-3. Script scenarios and graph processing scripts for simulations used in "Rapid Traffic Information Dissemination Using Named Data" paper by Wang et al. (`<http://dx.doi.org/10.1145/2248361.2248365>`_):
+3. Script scenarios and graph processing scripts for simulations used in "Rapid Traffic
+   Information Dissemination Using Named Data" paper by Wang et
+   al. (`<http://dx.doi.org/10.1145/2248361.2248365>`_):
 
 - `<http://github.com/cawka/ndnSIM-nom-rapid-car2car>`_, or
-- `<http://code.google.com/p/ndnsim.ndnsim-nom-rapid/>`_
 
-- Rocketfuel-based topology generator for ndnSIM preferred format (randomly assigned link delays and bandwidth, based on estimated types of connections between nodes):
+- Rocketfuel-based topology generator for ndnSIM preferred format (randomly assigned link
+  delays and bandwidth, based on estimated types of connections between nodes):
 
 - `<http://github.com/cawka/ndnSIM-sample-topologies>`_, or
-- `<http://code.google.com/p/ndnsim.ndnsim-sample-topo/>`_
diff --git a/docs/source/helpers.rst b/docs/source/helpers.rst
index a1f88f8..91bcf4d 100644
--- a/docs/source/helpers.rst
+++ b/docs/source/helpers.rst
@@ -1,53 +1,83 @@
 ndnSIM helpers
 ==============
 
-Helpers are very important components of ndnSIM, especially for writing simulation scenarios.
-The following summarizes helpers and their basic usage.
+Helpers are very important components of ndnSIM, especially for writing simulation
+scenarios.  The following summarizes helpers and their basic usage.
 
-StackHelper
----------------
+NDN Stack Helpers
+-----------------
 
-: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.
+: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:
 
 .. code-block:: c++
 
-        ndn::StackHelper ndnHelper;
+        StackHelper ndnHelper;
         NodeContainer nodes;
         ...
-        ndnHelper.Install (nodes);
+        ndnHelper.Install(nodes);
 
 Routing
 +++++++
 
-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.
+All forwarding strategies require knowledge of where Interests can be forwarded
+(Forwarding Information Base).
 
 .. note::
-   By default, all nodes have empty FIB.  You need either to manually configure routes, use global routing controller, or (not recommended) enable default routes.
+   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
-^^^^^^^^^^^^^^^
+Manually routes (FIB Helper)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Routes can be configured manually using :ndnsim:`StackHelper::AddRoute` static methods of :ndnsim:`StackHelper`.
+The :ndnsim:`FIB helper <FibHelper>` interacts with the FIB manager of NFD by sending
+special Interest commands to the manager in order to add/remove a next hop from FIB
+entries or add routes to the FIB manually (manual configuration of FIB).
 
-These routes **should** be created **after** installing NDN stack on a node:
+Adding a route to the FIB manually:
 
-  .. code-block:: c++
+    .. code-block:: c++
 
-     ndnHelper.Install (nodes);
-     ...
-     Ptr<Node> node = ...     // FIB entry will be added to FIB on this node
-     std::string prefix = ... // some prefix
-     Ptr<ndn::Face> face = ... // NDN face that belongs to the node and through which prefix is accessible
-     int32_t metric = ...     // some routing metric
-     ndn::StackHelper::AddRoute (node, prefix, face, metric);
+       Ptr<Node> node = ...     // some node
+       std::string prefix = ... // some prefix
+       Ptr<ndn::Face> face = ... // NDN face that belongs to the node and through which prefix is accessible
+       int32_t metric = ...     // some routing metric
+       FibHelper::AddRoute(node, prefix, face, metric);
 
-Global routing controller
-^^^^^^^^^^^^^^^^^^^^^^^^^
+:ndnsim:`FIB helper <FibHelper>` has few other AddRoute overloads that may be easier to
+        use.  For example, when setting up manual routes between nodes connected with
+        PointToPointNetDevice's, it is simpler to use the overload that accepts two nodes
+        (face will be automatically determined by the helper).
 
-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``.
+.. @todo Implement RemoveRoute and add documentation about it
+
+..
+   Adding a next hop to a FIB entry (if any) that matches a given name prefix for a topology node:
+
+       .. code-block:: c++
+
+          Ptr<Node> node = .. // Get the desired node
+          FibHelper::AddRoute(parameters, node);
+
+..
+   Removing a next hop from a FIB entry (if any) that matches a given name prefix for a topology node:
+
+       .. code-block:: c++
+
+          Ptr<Node> node = // Get the desired node
+          nfd::ControlParameters parameters;
+          parameters.setName(prefix);
+          FibHelper::RemoveNextHop(parameters, node);
+
+
+Automatic Shortest Path Routes (Global Routing Helper)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+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``.
 
 There are several necessary steps, in order to take advantage of the global routing controller:
 
@@ -57,8 +87,8 @@
 
      NodeContainer nodes;
      ...
-     ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;
-     ndnGlobalRoutingHelper.Install (nodes);
+     GlobalRoutingHelper ndnGlobalRoutingHelper;
+     ndnGlobalRoutingHelper.Install(nodes);
 
 * specify which node exports which prefix using :ndnsim:`GlobalRoutingHelper::AddOrigins`
 
@@ -67,150 +97,98 @@
      Ptr<Node> producer; // producer node that exports prefix
      std::string prefix; // exported prefix
      ...
-     ndnGlobalRoutingHelper.AddOrigins (prefix, producer);
+     ndnGlobalRoutingHelper.AddOrigins(prefix, producer);
 
 * calculate and install FIBs on every node using :ndnsim:`GlobalRoutingHelper::CalculateRoutes`
 
    .. code-block:: c++
 
-     cdnGlobalRoutingHelper.CalculateRoutes ();
+     GlobalRoutingHelper::CalculateRoutes();
 
-Default routes
-^^^^^^^^^^^^^^
+Forwarding Strategy
++++++++++++++++++++
 
-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.
+ndnSIM 2.0 exactly like NFD allows different namespaces to be associated with different
+forwarding strategies.  By default, the following forwarding strategy configuration is defined:
 
-The following should be done before installing stack on a node:
++--------------------+------------------------------+-----------------------------------------------+
+| Namespace          | Strategy                     | Strategy Name                                 |
++====================+==============================+===============================================+
+| ``/``              | :nfd:`fw::BestRouteStrategy` | ``/localhost/nfd/strategy/best-route``        |
++--------------------+------------------------------+-----------------------------------------------+
+| ``/localhost``     | :nfd:`fw::BroadcastStrategy` | ``/localhost/nfd/strategy/broadcast``         |
++--------------------+------------------------------+-----------------------------------------------+
+| ``/localhost/nfd`` | :nfd:`fw::BestRouteStrategy` | ``/localhost/nfd/strategy/best-route``        |
++--------------------+------------------------------+-----------------------------------------------+
+| ``/ndn/broadcast`` | :nfd:`fw::BroadcastStrategy` | ``/localhost/nfd/strategy/broadcast``         |
++--------------------+------------------------------+-----------------------------------------------+
 
-  .. code-block:: c++
 
-     ndnHelper.SetDefaultRoutes (true);
-     ...
-     ndnHelper.Install (nodes);
 
 
+The :ndnsim:`Strategy Choice helper <StrategyChoiceHelper>` interacts with the Strategy
+Choice manager of NFD by sending special Interest commands to the manager in order to
+specify the desired per-name prefix forwarding strategy for one, more or all the nodes of a topology.
+
+This helper should be used as follows:
+
+    .. code-block:: c++
+
+       StrategyChoiceHelper::Install(nodes, prefix, strategyName);
+
+or (for a forwarding strategy to be installed in all the topology nodes):
+
+    .. code-block:: c++
+
+       StrategyChoiceHelper::InstallAll(prefix, strategyName);
+
 Content Store
 +++++++++++++
 
-ndnSIM comes with several different in-memory :ndnsim:`content store <ndn::ContentStore>` implementations, featuring different cache replacement policies.
-
-To select a particular content store and configure its capacity, use :ndnsim:`SetContentStore <ndn::StackHelper::SetContentStore>` helper method:
+ndnSIM uses NFD's content store implementation, maximum size of which can be controlled using
+:ndnsim:`StackHelper::setCsSize()`:
 
       .. code-block:: c++
 
-         ndnHelper.SetContentStore ("<content store implementation>",
-                                    ["<optional parameter>", "<optional parameter's value>" [, ...]]);
-	 ...
-	 ndnHelper.Install (nodes);
+         ndnHelper.setCsSize(<max-size-in-packets>);
+         ...
+         ndnHelper.Install(nodes);
 
-In simulation scenarios it is possible to select one of :ref:`the existing implementations of the content store or implement your own <content store>`.
+.. note::
+
+    Unless specified in the simulation scenario, default maximum size of the content store is
+    100 Data packets.
+
+.. note::
+
+    NFD's content store implementation takes full consideration of Interest selectors, however
+    is not yet flexible when it comes to cache replacement policies.  Feature to extend CS
+    flexibility is currently in active development (refer to `Issue #2219 on NFD Redmine
+    <http://redmine.named-data.net/issues/2219>`_) and for the time being, we have ported the
+    old ndnSIM 1.0 content store implementations to the new code base.  These implementations
+    feature different cache replacement policies, but have very limited support for Interest
+    selectors.  If your scenario relies on proper selector processing, do not use these
+    implementations as the simulation results most likely be incorrect.
+
+    To select old content store implementations, use :ndnsim:`SetOldContentStore
+    <StackHelper::SetOldContentStore>` StackHelper method:
+
+          .. code-block:: c++
+
+             ndnHelper.SetOldContentStore("<content store implementation>",
+                                         ["<optional parameter>", "<optional parameter's value>" [, ...]]);
+             ...
+             ndnHelper.Install (nodes);
+
+    In simulation scenarios it is possible to select one of :ref:`the existing implementations
+    of the content store or implement your own <content store>`.
 
 
-Pending Interest Table
-++++++++++++++++++++++
+Application Helper
+------------------
 
-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.
-
-To select a particular forwarding strategy implementation and configure its parameters, use :ndnsim:`SetForwardingStrategy <ndn::StackHelper::SetForwardingStrategy>` helper method:
-
-      .. code-block:: c++
-
-         ndnHelper.SetForwardingStrategy ("<forwarding strategy implementation>",
-                                          ["<optional parameter>", "<optional parameter's value>" [, ...]]);
-	 ...
-	 ndnHelper.Install (nodes);
-
-In simulation scenarios it is possible to select one of :ref:`the existing implementations of the forwarding strategy or implement your own <forwarding strategies>`.
-
-
-.. 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
----------------
-
-:ndnsim:`AppHelper` simplifies task of creating, configuring, and installing ndnSIM applications.
+:ndnsim:`AppHelper` simplifies task of creating, configuring, and installing ndnSIM
+applications.
 
 
 The basic usage of the :ndnsim:`AppHelper`:
@@ -220,20 +198,21 @@
    .. code-block:: c++
 
       // Create helper for the consumer generating Interests with constant rate
-      ndn::AppHelper consumerHelper ("ns3::ndn::ConsumerCbr");
+      AppHelper consumerHelper("ns3::ndn::ConsumerCbr");
 
-* Assign prefix on which application operates (either generating Interests using this name or satisfying Interests for this name) using :ndnsim:`AppHelper::SetPrefix`:
+* Assign prefix on which application operates (either generating Interests using this name
+  or satisfying Interests for this name) using :ndnsim:`AppHelper::SetPrefix`:
 
    .. code-block:: c++
 
-      consumerHelper.SetPrefix (prefix);
+      consumerHelper.SetPrefix(prefix);
 
 * Assign application-specific attributes using :ndnsim:`AppHelper::SetAttribute`:
 
    .. code-block:: c++
 
       // Set frequency parameter
-      consumerHelper.SetAttribute ("Frequency", StringValue ("10")); // 10 interests a second
+      consumerHelper.SetAttribute("Frequency", StringValue ("10")); // 10 interests a second
 
 * Install application on one or more nodes:
 
@@ -241,7 +220,29 @@
 
       NodeContainer nodes;
       ...
-      consumerHelper.Install (nodes)
+      consumerHelper.Install(nodes)
+
+.. _Link Control Helper:
+
+Link Control Helper
+-------------------
+
+Some scenarios require failing certain links between NDN nodes at certain times.  NS-3 does not
+provide ability to actually "break" the link between nodes.  However, it provides facility to
+set up a loss model to simulate packet drops in the channel.  Using the properly set up loss
+model on both sides of the point-to-point link, it is possible to emulate link breakage.
+
+To simplify these operations, ndnSIM includes :ndnsim:`ndn::LinkControlHelper` that allows
+scheduling of link failures and failure recoveries:
 
 
-In simulation scenarios it is possible to select one of :ref:`the existing applications or implement your own <applications>`.
+    .. code-block:: c++
+
+        #include "ns3/ndnSIM/helper/ndn-link-control-helper.hpp"
+
+        ...
+
+        Simulator::Schedule(Seconds(10.0), ndn::LinkControlHelper::FailLink, node1, node2);
+        Simulator::Schedule(Seconds(15.0), ndn::LinkControlHelper::UpLink, node1, node2);
+
+Usage of this helper is demonstrated in :ref:`Simple scenario with link failures`.
diff --git a/docs/source/intro.rst b/docs/source/intro.rst
index eb001fa..c152ad4 100644
--- a/docs/source/intro.rst
+++ b/docs/source/intro.rst
@@ -7,47 +7,69 @@
 
 .. sidebar:: ndnSIM components
 
-    .. image:: _static/ndnsim-components.*
+    .. image:: _static/ndnSIM-structure.*
         :width: 100%
 
-The ndnSIM is NS-3 module that implements Named Data Networking (NDN) communication model, the clean slate Internet design. ndnSIM is specially optimized for simulation purposes and has a cleaner and more extensible internal structure comparing to the existing NDN implementation (NDNx).
+ndnSIM 2.0 is a new release of `NS-3 based Named Data Networking (NDN) simulator
+<http://ndnsim.net/1.0/>`_ that went through extensive refactoring and rewriting.  The key
+new features of the new version:
 
-Following the NDN architecture, ndnSIM is implemented as a new network-layer protocol model, which can run on top of any available link-layer protocol model (point-to-point, CSMA, wireless, etc.).
+- ndnSIM no longer re-implements basic NDN primitives and directly uses implementation
+  from `ndn-cxx library (NDN C++ library with eXperimental eXtensions)
+  <http://named-data.net/doc/ndn-cxx/>`_.
+- All NDN forwarding and management is implemented directly using source code of `Named
+  Data Networking Forwarding Daemon (NFD) <http://named-data.net/doc/NFD/>`_
+- Packet format changed to `NDN-TLV <http://named-data.net/doc/ndn-tlv/>`_
 
 .. note::
-    It will also be possible to run ndnSIM on top of network-layer (IPv4, IPv6) and transport-layer (TCP, UDP) protocols.
-    However, it is not yet implemented and patches are welcome.
+   Please note that ndnSIM 2.0 has major refactoring and simulation scenario written for
+   previous releases most likely would need to be changed to run on ndnSIM 2.0 platform.
 
-.. This flexibility allows ndnSIM to simulate scenarios of various homogeneous and heterogeneous networks (e.g., NDN-only, NDN-over-IP, etc.).
+Such integration with ndn-cxx and NFD ensures that the simulations are maximally realistic
+and can be reproduced in real environments with virtually no changes to the source code.
+In addition to that, any experiments with NDN forwarding (e.g., custom forwarding
+strategies) inside ndnSIM can be directly used within the real NFD implementation.
 
-The simulator is implemented in a modular fashion, using separate C++ classes to model behavior of each network-layer entity in NDN: :ndnsim:`pending Interest table (PIT) <Pit>`, :ndnsim:`forwarding information base (FIB) <Fib>`, :ndnsim:`content store <ContentStore>`, :ndnsim:`network <NetDeviceFace>` and :ndnsim:`application <AppFace>` interfaces, :ndnsim:`Interest forwarding strategies <ForwardingStrategy>`, etc.
-This modular structure allows any component to be easily modified or replaced with no or minimal impact on other components.
-In addition, the simulator provides an extensive collection of interfaces and helpers to perform detailed tracing behavior of every component, as well as NDN traffic flow.
+Specifically, the simulator directly uses NFD implementations of :nfd:`pending Interest
+table (PIT) <nfd::Pit>`, :nfd:`forwarding information base (FIB) <nfd::Fib>`, and
+:nfd:`content store <nfd::Cs>` data structures.  In addition to that, ndnSIM allows
+experimentation with :ndnSIM:`ndnSIM-specific content store <ndn::ContentStore>` along
+with its cache replacement policies ported from the previous version of ndnSIM.
 
-The current wire format for the Interest and Data packets used by ndnSIM is defined in :ref:`ndnSIM packet format`.
-ndnSIM also has an option to be compatible to wire format used by `NDNx implementation <http://named-data.net/>`_ (NDNx binary XML encoding).  However currently, this option is deprecated, but can be reintroduced in the future as an optional wire format.
+ndnSIM is implemented as a new network-layer protocol model and can run on top of any
+available link-layer protocol model (point-to-point, CSMA, wireless, etc.).
+In addition, the simulator provides an extensive collection of interfaces and helpers to
+perform detailed tracing behavior of every component, as well as NDN traffic flow.
+
 
 More documentation
 ------------------
 
-Overall structure of ndnSIM is described in our `technical report <http://lasr.cs.ucla.edu/afanasyev/data/files/Afanasyev/ndnSIM-TR.pdf>`_.
+Overall structure of ndnSIM is described in our `technical report
+<http://lasr.cs.ucla.edu/afanasyev/data/files/Afanasyev/ndnSIM-TR.pdf>`_.
 
 `ndnSIM API documentation <doxygen/index.html>`_
 
-Also, you can `join our mailing list <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ to see and participate in discussions about ndnSIM implementation and simulations in general.   
-Do not forget to check mailling list `archives <http://www.lists.cs.ucla.edu/pipermail/ndnsim/>`_.  
+Also, you can `join our mailing list
+<http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ to see and participate in
+discussions about ndnSIM implementation and simulations in general.  Do not forget to
+check mailling list `archives <http://www.lists.cs.ucla.edu/pipermail/ndnsim/>`_.
 
 
 Support
 -------
 
-The code of ndnSIM is in active development.  Bug reports (issues) as well as new feature implementation are always welcome. 
+The code of ndnSIM is in active development.  Bug reports (issues) as well as new feature
+implementation are always welcome.
 
-To file a bug report, please use `GitHub Issues <https://github.com/NDN-Routing/ndnSIM/issues>`_.
+To file a bug report, please use `NDN Redmine
+<http://redmine.named-data.net/projects/ndnsim>`_.
 
 To create new feature, please fork the code and submit Pull Request on GitHub.
 
-And of course, `our mailing list <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ is the best way to communicate with and get support from ndnSIM team and other users of ndnSIM.
+And of course, `our mailing list <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_
+is the best way to communicate with and get support from ndnSIM team and other users of
+ndnSIM.
 
 A very short guide to the code
 ------------------------------
@@ -58,36 +80,50 @@
 | Folder          | Description                                                         |
 +=================+=====================================================================+
 | ``model/``      | implementation of NDN base: :ndnsim:`L3Protocol`, faces             |
-|                 | (:ndnsim:`Face`, :ndnsim:`NetDeviceFace`, forwarding                |
+|                 | (:ndnsim:`Face`, :ndnsim:`NetDeviceFace`,                           |
 |                 | :ndnsim:`AppFace`),                                                 |
-|                 | strategies (:ndnsim:`ForwardingStrategy`,                           |
-|                 | :ndnsim:`Flooding`, :ndnsim:`SmartFlooding`, :ndnsim:`BestRoute`),  |
 |                 | etc.                                                                |
 +-----------------+---------------------------------------------------------------------+
+| ``NFD/``        | contains the `NFD`_ source code with few modifications to make it   |
+|                 | compatible with the simulator                                       |
++-----------------+---------------------------------------------------------------------+
 | ``apps/``       | applications (in NS-3 sense) that can be installed on the nodes.    |
 |                 | Right now we have one producer (:ndnsim:`Producer`) and a           |
-|                 | collection  of consumer (:ndnsim:`ConsumerCbr`,                     |
-|                 | :ndnsim:`ConsumerWindow`,                                           |
-|                 | :ndnsim:`ConsumerBatches`).  See doxygen documentation or           |
+|                 | collection  of consumer applications (:ndnsim:`ConsumerCbr`,        |
+|                 | :ndnsim:`ConsumerWindow`, :ndnsim:`ConsumerBatches`,                |
+|                 | :ndnsim:`ConsumerZipfMandelbrot`).  See doxygen documentation or    |
 |                 | source  code for details                                            |
 +-----------------+---------------------------------------------------------------------+
+| ``utils/``      | helper classes, including implementation of generalized data        |
+|                 | structures, topology readers and tracers                            |
++-----------------+---------------------------------------------------------------------+
 | ``helper/``     | a number of :doc:`useful helpers <helpers>`                         |
 +-----------------+---------------------------------------------------------------------+
 | ``examples/``   | contain :doc:`several example scenarios <examples>`                 |
 +-----------------+---------------------------------------------------------------------+
-| ``utils/``      | helper classes, including implementation of generalized data        |
-|                 | structures                                                          |
-+-----------------+---------------------------------------------------------------------+
-| ``plugins/``    | a number of plugins that may be helpful to run simulation scenarios |
-+-----------------+---------------------------------------------------------------------+
+
+.. _NFD: http://named-data.net/doc/NFD/
 
 Logging
 -------
 
-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::
+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.
+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.
 
+.. note::
+
+   Please remember that logging is enabled **only** in debug mode.  When simulator is
+   compiled in optimized mode (``./waf configure -d optimized``), logging will be
+   completely disabled as it significantly slows down execution.
+
+.. note::
+
+   A list of log components available in the current version of NS-3 and ndnSIM is listed
+   `in this page <doxygen/LogComponentList.html>`_.
diff --git a/docs/source/meta/bugs.rst b/docs/source/meta/bugs.rst
index 0b50a4c..85912b5 100644
--- a/docs/source/meta/bugs.rst
+++ b/docs/source/meta/bugs.rst
@@ -4,6 +4,6 @@
 Reporting bugs
 ==============
 
-To file a bug report, please use `GitHub Issues <https://github.com/NDN-Routing/ndnSIM/issues>`_ or `NDN Redmine <http://redmine.named-data.net/projects/ndnsim>`_.
+To file a bug report, please use `NDN Redmine <http://redmine.named-data.net/projects/ndnsim>`_.
 
 To create new feature, please fork the code and submit Pull Request on GitHub.
diff --git a/docs/source/meta/copyright.rst b/docs/source/meta/copyright.rst
index 20429d5..6a19d5c 100644
--- a/docs/source/meta/copyright.rst
+++ b/docs/source/meta/copyright.rst
@@ -4,9 +4,11 @@
 
 ndnSIM and this documentation is:
 
-Copyright © 2011-2013 University of California, Los Angeles
+Copyright © 2011-2015 University of California, Los Angeles
 
-Copyright © 2011-2013 Alexander Afanasyev
+Copyright © 2011-2015 Alexander Afanasyev
+
+Copyright © 2014-2015 Spyridon Mastorakis
 
 -------
 
diff --git a/docs/source/meta/license.rst b/docs/source/meta/license.rst
index 5f1087d..ae1718a 100644
--- a/docs/source/meta/license.rst
+++ b/docs/source/meta/license.rst
@@ -4,316 +4,560 @@
 License information
 ===================
 
-Most parts of ndnSIM code are licensed under GNU GPL License 2.0.
+Most parts of ndnSIM code are licensed under GNU GPL License 3.0.
 
 GNU GENERAL PUBLIC LICENSE
---------------------------
+==========================
 
-Version 2, June 1991
+Version 3, 29 June 2007
+=======================
 
-::
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
+    Copyright (C) 2007 Free Software Foundation, Inc. http://fsf.org/ Everyone is permitted to copy
+    and distribute verbatim copies of this license document, but changing it is not allowed.
 
 Preamble
-^^^^^^^^
+========
 
-The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
+The GNU General Public License is a free, copyleft license for software and other kinds of works.
 
-When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
+The licenses for most software and other practical works are designed to take away your freedom to
+share and change the works. By contrast, the GNU General Public License is intended to guarantee
+your freedom to share and change all versions of a program--to make sure it remains free software
+for all its users. We, the Free Software Foundation, use the GNU General Public License for most of
+our software; it applies also to any other work released this way by its authors. You can apply it
+to your programs, too.
 
-To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses
+are designed to make sure that you have the freedom to distribute copies of free software (and
+charge for them if you wish), that you receive source code or can get it if you want it, that you
+can change the software or use pieces of it in new free programs, and that you know you can do these
+things.
 
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
+To protect your rights, we need to prevent others from denying you these rights or asking you to
+surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the
+software, or if you modify it: responsibilities to respect the freedom of others.
 
-We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass
+on to the recipients the same freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they know their rights.
 
-Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
+Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the
+software, and (2) offer you this License giving you legal permission to copy, distribute and/or
+modify it.
 
-Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
+For the developers' and authors' protection, the GPL clearly explains that there is no warranty for
+this free software. For both users' and authors' sake, the GPL requires that modified versions be
+marked as changed, so that their problems will not be attributed erroneously to authors of previous
+versions.
 
-The precise terms and conditions for copying, distribution and
-modification follow.
+Some devices are designed to deny users access to install or run modified versions of the software
+inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the
+area of products for individuals to use, which is precisely where it is most unacceptable.
+Therefore, we have designed this version of the GPL to prohibit the practice for those products. If
+such problems arise substantially in other domains, we stand ready to extend this provision to those
+domains in future versions of the GPL, as needed to protect the freedom of users.
 
-GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Finally, every program is threatened constantly by software patents. States should not allow patents
+to restrict development and use of software on general-purpose computers, but in those that do, we
+wish to avoid the special danger that patents applied to a free program could make it effectively
+proprietary. To prevent this, the GPL assures that patents cannot be used to render the program
+non-free.
 
-0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
+The precise terms and conditions for copying, distribution and modification follow.
 
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
+TERMS AND CONDITIONS
+====================
 
-1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
+0. Definitions.
+---------------
 
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
+*"This License"* refers to version 3 of the GNU General Public License.
 
-2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
+*"Copyright"* also means copyright-like laws that apply to other kinds of works, such as
+semiconductor masks.
 
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
+*"The Program"* refers to any copyrightable work licensed under this License. Each licensee is
+addressed as *"you"*. *"Licensees"* and "recipients" may be individuals or organizations.
 
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
+To *"modify"* a work means to copy from or adapt all or part of the work in a fashion requiring
+copyright permission, other than the making of an exact copy. The resulting work is called a
+*"modified version"* of the earlier work or a work *"based on"* the earlier work.
 
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
+A *"covered work"* means either the unmodified Program or a work based on the Program.
 
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
+To *"propagate"* a work means to do anything with it that, without permission, would make you
+directly or secondarily liable for infringement under applicable copyright law, except executing it
+on a computer or modifying a private copy. Propagation includes copying, distribution (with or
+without modification), making available to the public, and in some countries other activities as
+well.
 
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
+To *"convey"* a work means any kind of propagation that enables other parties to make or receive
+copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not
+conveying.
 
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
+An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a
+convenient and prominently visible feature that (1) displays an appropriate copyright notice, and
+(2) tells the user that there is no warranty for the work (except to the extent that warranties are
+provided), that licensees may convey the work under this License, and how to view a copy of this
+License. If the interface presents a list of user commands or options, such as a menu, a prominent
+item in the list meets this criterion.
 
-3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
+1. Source Code.
+---------------
 
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
+The *"source code"* for a work means the preferred form of the work for making modifications to it.
+*"Object code"* means any non-source form of a work.
 
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
+A *"Standard Interface"* means an interface that either is an official standard defined by a
+recognized standards body, or, in the case of interfaces specified for a particular programming
+language, one that is widely used among developers working in that language.
 
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
+The *"System Libraries"* of an executable work include anything, other than the work as a whole,
+that (a) is included in the normal form of packaging a Major Component, but which is not part of
+that Major Component, and (b) serves only to enable use of the work with that Major Component, or to
+implement a Standard Interface for which an implementation is available to the public in source code
+form. A "Major Component", in this context, means a major essential component (kernel, window
+system, and so on) of the specific operating system (if any) on which the executable work runs, or a
+compiler used to produce the work, or an object code interpreter used to run it.
 
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
+The *"Corresponding Source"* for a work in object code form means all the source code needed to
+generate, install, and (for an executable work) run the object code and to modify the work,
+including scripts to control those activities. However, it does not include the work's System
+Libraries, or general-purpose tools or generally available free programs which are used unmodified
+in performing those activities but which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for the work, and the source code
+for shared libraries and dynamically linked subprograms that the work is specifically designed to
+require, such as by intimate data communication or control flow between those subprograms and other
+parts of the work.
 
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
+The Corresponding Source need not include anything that users can regenerate automatically from
+other parts of the Corresponding Source.
 
-4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
+The Corresponding Source for a work in source code form is that same work.
 
-5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
+2. Basic Permissions.
+---------------------
 
-6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
+All rights granted under this License are granted for the term of copyright on the Program, and are
+irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a covered work is covered by this
+License only if the output, given its content, constitutes a covered work. This License acknowledges
+your rights of fair use or other equivalent, as provided by copyright law.
 
-7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
+You may make, run and propagate covered works that you do not convey, without conditions so long as
+your license otherwise remains in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you with facilities for running
+those works, provided that you comply with the terms of this License in conveying all material for
+which you do not control copyright. Those thus making or running the covered works for you must do
+so exclusively on your behalf, under your direction and control, on terms that prohibit them from
+making any copies of your copyrighted material outside their relationship with you.
 
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
+Conveying under any other circumstances is permitted solely under the conditions stated below.
+Sublicensing is not allowed; section 10 makes it unnecessary.
 
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
+3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+--------------------------------------------------------------
 
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
+No covered work shall be deemed part of an effective technological measure under any applicable law
+fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such measures.
 
-8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
+When you convey a covered work, you waive any legal power to forbid circumvention of technological
+measures to the extent such circumvention is effected by exercising rights under this License with
+respect to the covered work, and you disclaim any intention to limit operation or modification of
+the work as a means of enforcing, against the work's users, your or third parties' legal rights to
+forbid circumvention of technological measures.
 
-9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
+4. Conveying Verbatim Copies.
+-----------------------------
 
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
+You may convey verbatim copies of the Program's source code as you receive it, in any medium,
+provided that you conspicuously and appropriately publish on each copy an appropriate copyright
+notice; keep intact all notices stating that this License and any non-permissive terms added in
+accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and
+give all recipients a copy of this License along with the Program.
+
+You may charge any price or no price for each copy that you convey, and you may offer support or
+warranty protection for a fee.
+
+5. Conveying Modified Source Versions.
+--------------------------------------
+
+You may convey a work based on the Program, or the modifications to produce it from the Program, in
+the form of source code under the terms of section 4, provided that you also meet all of these
+conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+A compilation of a covered work with other separate and independent works, which are not by their
+nature extensions of the covered work, and which are not combined with it such as to form a larger
+program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the
+compilation and its resulting copyright are not used to limit the access or legal rights of the
+compilation's users beyond what the individual works permit. Inclusion of a covered work in an
+aggregate does not cause this License to apply to the other parts of the aggregate.
+
+6. Conveying Non-Source Forms.
+------------------------------
+
+You may convey a covered work in object code form under the terms of sections 4 and 5, provided that
+you also convey the machine-readable Corresponding Source under the terms of this License, in one of
+these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+A separable portion of the object code, whose source code is excluded from the Corresponding Source
+as a System Library, need not be included in conveying the object code work.
+
+A *"User Product"* is either (1) a *"consumer product"*, which means any tangible personal property
+which is normally used for personal, family, or household purposes, or (2) anything designed or sold
+for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful
+cases shall be resolved in favor of coverage. For a particular product received by a particular
+user, "normally used" refers to a typical or common use of that class of product, regardless of the
+status of the particular user or of the way in which the particular user actually uses, or expects
+or is expected to use, the product. A product is a consumer product regardless of whether the
+product has substantial commercial, industrial or non-consumer uses, unless such uses represent the
+only significant mode of use of the product.
+
+*"Installation Information"* for a User Product means any methods, procedures, authorization keys,
+or other information required to install and execute modified versions of a covered work in that
+User Product from a modified version of its Corresponding Source. The information must suffice to
+ensure that the continued functioning of the modified object code is in no case prevented or
+interfered with solely because modification has been made.
+
+If you convey an object code work under this section in, or with, or specifically for use in, a User
+Product, and the conveying occurs as part of a transaction in which the right of possession and use
+of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of
+how the transaction is characterized), the Corresponding Source conveyed under this section must be
+accompanied by the Installation Information. But this requirement does not apply if neither you nor
+any third party retains the ability to install modified object code on the User Product (for
+example, the work has been installed in ROM).
+
+The requirement to provide Installation Information does not include a requirement to continue to
+provide support service, warranty, or updates for a work that has been modified or installed by the
+recipient, or for the User Product in which it has been modified or installed. Access to a network
+may be denied when the modification itself materially and adversely affects the operation of the
+network or violates the rules and protocols for communication across the network.
+
+Corresponding Source conveyed, and Installation Information provided, in accord with this section
+must be in a format that is publicly documented (and with an implementation available to the public
+in source code form), and must require no special password or key for unpacking, reading or copying.
+
+7. Additional Terms.
+--------------------
+
+*"Additional permissions"* are terms that supplement the terms of this License by making exceptions
+from one or more of its conditions. Additional permissions that are applicable to the entire Program
+shall be treated as though they were included in this License, to the extent that they are valid
+under applicable law. If additional permissions apply only to part of the Program, that part may be
+used separately under those permissions, but the entire Program remains governed by this License
+without regard to the additional permissions.
+
+When you convey a copy of a covered work, you may at your option remove any additional permissions
+from that copy, or from any part of it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place additional permissions on
+material, added by you to a covered work, for which you have or can give appropriate copyright
+permission.
+
+Notwithstanding any other provision of this License, for material you add to a covered work, you may
+(if authorized by the copyright holders of that material) supplement the terms of this License with
+terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+All other non-permissive additional terms are considered "further restrictions" within the meaning
+of section 10. If the Program as you received it, or any part of it, contains a notice stating that
+it is governed by this License along with a term that is a further restriction, you may remove that
+term. If a license document contains a further restriction but permits relicensing or conveying
+under this License, you may add to a covered work material governed by the terms of that license
+document, provided that the further restriction does not survive such relicensing or conveying.
+
+If you add terms to a covered work in accord with this section, you must place, in the relevant
+source files, a statement of the additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+Additional terms, permissive or non-permissive, may be stated in the form of a separately written
+license, or stated as exceptions; the above requirements apply either way.
+
+8. Termination.
+---------------
+
+You may not propagate or modify a covered work except as expressly provided under this License. Any
+attempt otherwise to propagate or modify it is void, and will automatically terminate your rights
+under this License (including any patent licenses granted under the third paragraph of section 11).
+
+However, if you cease all violation of this License, then your license from a particular copyright
+holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder fails to notify you of the
+violation by some reasonable means prior to 60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is reinstated permanently if the copyright
+holder notifies you of the violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that copyright holder, and you cure
+the violation prior to 30 days after your receipt of the notice.
+
+Termination of your rights under this section does not terminate the licenses of parties who have
+received copies or rights from you under this License. If your rights have been terminated and not
+permanently reinstated, you do not qualify to receive new licenses for the same material under
+section 10.
+
+9. Acceptance Not Required for Having Copies.
+---------------------------------------------
+
+You are not required to accept this License in order to receive or run a copy of the Program.
+Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer
+transmission to receive a copy likewise does not require acceptance. However, nothing other than
+this License grants you permission to propagate or modify any covered work. These actions infringe
+copyright if you do not accept this License. Therefore, by modifying or propagating a covered work,
+you indicate your acceptance of this License to do so.
+
+10. Automatic Licensing of Downstream Recipients.
+-------------------------------------------------
+
+Each time you convey a covered work, the recipient automatically receives a license from the
+original licensors, to run, modify and propagate that work, subject to this License. You are not
+responsible for enforcing compliance by third parties with this License.
+
+An *"entity transaction"* is a transaction transferring control of an organization, or substantially
+all assets of one, or subdividing an organization, or merging organizations. If propagation of a
+covered work results from an entity transaction, each party to that transaction who receives a copy
+of the work also receives whatever licenses to the work the party's predecessor in interest had or
+could give under the previous paragraph, plus a right to possession of the Corresponding Source of
+the work from the predecessor in interest, if the predecessor has it or can get it with reasonable
+efforts.
+
+You may not impose any further restrictions on the exercise of the rights granted or affirmed under
+this License. For example, you may not impose a license fee, royalty, or other charge for exercise
+of rights granted under this License, and you may not initiate litigation (including a cross-claim
+or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling,
+offering for sale, or importing the Program or any portion of it.
+
+11. Patents.
+------------
+
+A *"contributor"* is a copyright holder who authorizes use under this License of the Program or a
+work on which the Program is based. The work thus licensed is called the contributor's "contributor
+version".
+
+A contributor's *"essential patent claims"* are all patent claims owned or controlled by the
+contributor, whether already acquired or hereafter acquired, that would be infringed by some manner,
+permitted by this License, of making, using, or selling its contributor version, but do not include
+claims that would be infringed only as a consequence of further modification of the contributor
+version. For purposes of this definition, "control" includes the right to grant patent sublicenses
+in a manner consistent with the requirements of this License.
+
+Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the
+contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run,
+modify and propagate the contents of its contributor version.
+
+In the following three paragraphs, a "patent license" is any express agreement or commitment,
+however denominated, not to enforce a patent (such as an express permission to practice a patent or
+covenant not to sue for patent infringement). To "grant" such a patent license to a party means to
+make such an agreement or commitment not to enforce a patent against the party.
+
+If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of
+the work is not available for anyone to copy, free of charge and under the terms of this License,
+through a publicly available network server or other readily accessible means, then you must either
+(1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the
+benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with
+the requirements of this License, to extend the patent license to downstream recipients. "Knowingly
+relying" means you have actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work in a country, would infringe
+one or more identifiable patents in that country that you have reason to believe are valid.
+
+If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate
+by procuring conveyance of, a covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of
+the covered work, then the patent license you grant is automatically extended to all recipients of
+the covered work and works based on it.
+
+A patent license is "discriminatory" if it does not include within the scope of its coverage,
+prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that
+are specifically granted under this License. You may not convey a covered work if you are a party to
+an arrangement with a third party that is in the business of distributing software, under which you
+make payment to the third party based on the extent of your activity of conveying the work, and
+under which the third party grants, to any of the parties who would receive the covered work from
+you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by
+you (or copies made from those copies), or (b) primarily for and in connection with specific
+products or compilations that contain the covered work, unless you entered into that arrangement, or
+that patent license was granted, prior to 28 March 2007.
+
+Nothing in this License shall be construed as excluding or limiting any implied license or other
+defenses to infringement that may otherwise be available to you under applicable patent law.
+
+12. No Surrender of Others' Freedom.
+------------------------------------
+
+If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict
+the conditions of this License, they do not excuse you from the conditions of this License. If you
+cannot convey a covered work so as to satisfy simultaneously your obligations under this License and
+any other pertinent obligations, then as a consequence you may not convey it at all. For example, if
+you agree to terms that obligate you to collect a royalty for further conveying from those to whom
+you convey the Program, the only way you could satisfy both those terms and this License would be to
+refrain entirely from conveying the Program.
+
+13. Use with the GNU Affero General Public License.
+---------------------------------------------------
+
+Notwithstanding any other provision of this License, you have permission to link or combine any
+covered work with a work licensed under version 3 of the GNU Affero General Public License into a
+single combined work, and to convey the resulting work. The terms of this License will continue to
+apply to the part which is the covered work, but the special requirements of the GNU Affero General
+Public License, section 13, concerning interaction through a network will apply to the combination
+as such.
+
+14. Revised Versions of this License.
+-------------------------------------
+
+The Free Software Foundation may publish revised and/or new versions of the GNU General Public
+License from time to time. Such new versions will be similar in spirit to the present version, but
+may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies that a certain
+numbered version of the GNU General Public License "or any later version" applies to it, you have
+the option of following the terms and conditions either of that numbered version or of any later
+version published by the Free Software Foundation. If the Program does not specify a version number
+of the GNU General Public License, you may choose any version ever published by the Free Software
 Foundation.
 
-10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
+If the Program specifies that a proxy can decide which future versions of the GNU General Public
+License can be used, that proxy's public statement of acceptance of a version permanently authorizes
+you to choose that version for the Program.
 
-NO WARRANTY
-+++++++++++
+Later license versions may give you additional or different permissions. However, no additional
+obligations are imposed on any author or copyright holder as a result of your choosing to follow a
+later version.
 
-11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
+15. Disclaimer of Warranty.
+---------------------------
 
-12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO
+THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU
+ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 
-END OF TERMS AND CONDITIONS
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+16. Limitation of Liability.
+----------------------------
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR
+ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
+DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
+OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
+ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+17. Interpretation of Sections 15 and 16.
+-----------------------------------------
+
+If the disclaimer of warranty and limitation of liability provided above cannot be given local legal
+effect according to their terms, reviewing courts shall apply local law that most closely
+approximates an absolute waiver of all civil liability in connection with the Program, unless a
+warranty or assumption of liability accompanies a copy of the Program in return for a fee.
+
+# END OF TERMS AND CONDITIONS
+-----------------------------
 
 How to Apply These Terms to Your New Programs
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+=============================================
 
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
+If you develop a new program, and you want it to be of the greatest possible use to the public, the
+best way to achieve this is to make it free software which everyone can redistribute and change
+under these terms.
 
-To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
+To do so, attach the following notices to the program. It is safest to attach them to the start of
+each source file to most effectively state the exclusion of warranty; and each file should have at
+least the "copyright" line and a pointer to where the full notice is found.
 
 ::
 
     <one line to give the program's name and a brief idea of what it does.>
     Copyright (C) <year>  <name of author>
 
-    This program is free software; you can redistribute it and/or modify
+    This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
+    the Free Software Foundation, either version 3 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
@@ -321,41 +565,31 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 Also add information on how to contact you by electronic and paper mail.
 
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
+If the program does terminal interaction, make it output a short notice like this when it starts in
+an interactive mode:
 
 ::
 
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
     This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
+    under certain conditions; type 'show c' for details.
 
-The hypothetical commands ``show w`` and ``show c`` should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than ``show w`` and ``show c``; they could even be
-mouse-clicks or menu items--whatever suits your program.
+The hypothetical commands *'show w'* and *'show c'* should show the appropriate parts of the General
+Public License. Of course, your program's commands might be different; for a GUI interface, you
+would use an "about box".
 
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
+You should also get your employer (if you work as a programmer) or school, if any, to sign a
+"copyright disclaimer" for the program, if necessary. For more information on this, and how to apply
+and follow the GNU GPL, see http://www.gnu.org/licenses/.
 
-::
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
+The GNU General Public License does not permit incorporating your program into proprietary programs.
+If your program is a subroutine library, you may consider it more useful to permit linking
+proprietary applications with the library. If this is what you want to do, use the GNU Lesser
+General Public License instead of this License. But first, please read
+http://www.gnu.org/philosophy/why-not-lgpl.html.
diff --git a/docs/source/metric.rst b/docs/source/metric.rst
index a5b2667..2476d43 100644
--- a/docs/source/metric.rst
+++ b/docs/source/metric.rst
@@ -11,55 +11,6 @@
 Packet-level trace helpers
 --------------------------
 
-- :ndnsim:`ndn::L3AggregateTracer`
-
-    Tracing the aggregate number of Interests/Data packets forwarded by an NDN node
-
-    The following example enables tracing on all simulation nodes:
-
-    .. code-block:: c++
-
-        // the following should be put just before calling Simulator::Run in the scenario
-
-        ndn::L3AggregateTracer::InstallAll ("aggregate-trace.txt", Seconds (1.0));
-
-        Simulator::Run ();
-
-        ...
-
-
-    Output file format is tab-separated values, with first row specifying names of the columns.  Refer to the following table for the description of the columns:
-
-    +------------------+---------------------------------------------------------------------+
-    | Column           | Description                                                         |
-    +==================+=====================================================================+
-    | ``Time``         | simulation time                                                     |
-    +------------------+---------------------------------------------------------------------+
-    | ``Node``         | node id, globally unique                                            |
-    +------------------+---------------------------------------------------------------------+
-    | ``FaceId``       | interface ID (-1 for combined metric)                               |
-    +------------------+---------------------------------------------------------------------+
-    | ``Type``         | Type of measurements:                                               |
-    |                  |                                                                     |
-    |                  | - ``InInterests``  measurements of incoming Interests               |
-    |                  | - ``OutInterests``  measurements of outgoing Interests              |
-    |                  | - ``DropInterests``  measurements of dropped Interests              |
-    |                  | - ``InData``  measurements of incoming Data                         |
-    |                  | - ``OutData``  measurements of outgoing Data                        |
-    |                  | - ``DropData``  measurements of dropped Data                        |
-    |                  | - ``InNacks``  measurements of incoming NACKs                       |
-    |                  | - ``OutNacks``  measurements of outgoing NACKs                      |
-    |                  | - ``DropNacks``  measurements of dropped NACKs                      |
-    |                  | - ``SatisfiedInterests`` measurements of satisfied Interests        |
-    |                  | - ``TimedOutInterests`` measurements of timed out Interests         |
-    +------------------+---------------------------------------------------------------------+
-    | ``Packets``      | absolute number of packets within last averaging period             |
-    |                  | (number of packets).                                                |
-    +------------------+---------------------------------------------------------------------+
-    | ``Kilobytes``    | absolute number of kilobytes transferred within the last averaging  |
-    |                  | period  (number of packets).                                        |
-    +------------------+---------------------------------------------------------------------+
-
 - :ndnsim:`ndn::L3RateTracer`
 
     Tracing the rate in bytes and in number of packets of Interest/Data packets forwarded by an NDN node
@@ -70,9 +21,9 @@
 
         // the following should be put just before calling Simulator::Run in the scenario
 
-        ndn::L3RateTracer::InstallAll ("rate-trace.txt", Seconds (1.0));
+        L3RateTracer::InstallAll("rate-trace.txt", Seconds(1.0));
 
-        Simulator::Run ();
+        Simulator::Run();
 
         ...
 
@@ -91,21 +42,20 @@
     |                  |                                                                     |
     |                  | - ``InInterests``  measurements of incoming Interests               |
     |                  | - ``OutInterests``  measurements of outgoing Interests              |
-    |                  | - ``DropInterests``  measurements of dropped Interests              |
     |                  | - ``InData``  measurements of incoming Data                         |
     |                  | - ``OutData``  measurements of outgoing Data                        |
-    |                  | - ``DropData``  measurements of dropped Data                        |
-    |                  | - ``InNacks``  measurements of incoming NACKs                       |
-    |                  | - ``OutNacks``  measurements of outgoing NACKs                      |
-    |                  | - ``DropNacks``  measurements of dropped NACKs                      |
+    |                  | - ``SatisfiedInterests`` measurements of satisfied Interests        |
+    |                  |   (totals for all faces)                                            |
+    |                  | - ``TimedOutInterests`` measurements of timed out Interests         |
+    |                  |   (totals for all faces)                                            |
     |                  | - ``InSatisfiedInterests`` measurements of incoming satisfied       |
-    |                  |   Interests                                                         |
+    |                  |   Interests (per incoming face)                                     |
     |                  | - ``InTimedOutInterests`` measurements of incoming timed out        |
-    |                  |   Interests                                                         |
+    |                  |   Interests (per incoming face)                                     |
     |                  | - ``OutSatisfiedInterests`` measurements of outgoing satisfied      |
-    |                  |   Interests                                                         |
+    |                  |   Interests (per outgoing face)                                     |
     |                  | - ``OutTimedOutInterests`` measurements of outgoing satisfied       |
-    |                  |   Interests                                                         |
+    |                  |   Interests (per outgoing face)                                     |
     +------------------+---------------------------------------------------------------------+
     | ``Packets``      | estimated rate (EWMA average) of packets within the last averaging  |
     |                  | period (number of packets/s).                                       |
@@ -131,9 +81,9 @@
 
         // the following should be put just before calling Simulator::Run in the scenario
 
-        L2RateTracer::InstallAll ("drop-trace.txt", Seconds (0.5));
+        L2RateTracer::InstallAll("drop-trace.txt", Seconds(0.5));
 
-        Simulator::Run ();
+        Simulator::Run();
 
         ...
 
@@ -175,7 +125,7 @@
 Example of packet-level trace helpers
 +++++++++++++++++++++++++++++++++++++
 
-This example (``ndn-tree-tracers.cc``) demonstrates basic usage of :ref:`trace classes`.
+This example (``ndn-tree-tracers.cpp``) demonstrates basic usage of :ref:`trace classes`.
 
 In this scenario we will use a tree-like topology, where consumers are installed on leaf nodes and producer is in the root of the tree:
 
@@ -215,33 +165,34 @@
     :linenos:
     :lines: 1-2,27-
 
-Example simulation (``ndn-tree-tracers.cc``) scenario that utilizes trace helpers:
+Example simulation (``ndn-tree-tracers.cpp``) scenario that utilizes trace helpers:
 
-.. literalinclude:: ../../examples/ndn-tree-tracers.cc
+.. literalinclude:: ../../examples/ndn-tree-tracers.cpp
     :language: c++
     :linenos:
-    :lines: 21-28,61-
-    :emphasize-lines: 57-58
+    :lines: 20-27,60-
+    :emphasize-lines: 58
 
 To run this scenario, use the following command::
 
         ./waf --run=ndn-tree-tracers
 
-The successful run will create ``rate-trace.txt`` and ``aggregate-trace.txt`` files in the current directly, which can be analyzed manually or used as input to some graph/stats packages.
+The successful run will create ``rate-trace.txt`` files in the current directly, which can be analyzed manually or used as input to some graph/stats packages.
 
 .. sidebar:: Graph build using the `R script <http://www.r-project.org/>`_
 
     .. image:: _static/root-rates.png
         :alt: Interest/Data packet rates at the root node
 
-    .. image:: _static/root-5sec-counts.png
-        :alt: Interest/Data packet counts at the root node in 5-second intervals
-
 .. literalinclude:: ../../examples/graphs/rate-graph.R
     :language: r
     :linenos:
 
-For more information about R and ggplot2, please refer to `R language manual <http://cran.r-project.org/manuals.html>`_, `ggplot2 module manual <http://docs.ggplot2.org/current/>`_.
+For more information about R and ggplot2, please refer to `R language manual <http://cran.r-project.org/manuals.html>`_ and `ggplot2 module manual <http://docs.ggplot2.org/current/>`_.
+
+    ::
+
+        Rscript src/ndnSIM/examples/graphs/rate-graph.R
 
 .. _Example of packet drop tracer (L2Tracer):
 
@@ -254,7 +205,7 @@
         :alt: 25-node tree topology
         :width: 550px
 
-This example (``ndn-tree-with-l2tracer.cc``) demonstrates basic usage of :ref:`trace classes`.
+This example (``ndn-tree-with-l2tracer.cpp``) demonstrates basic usage of :ref:`trace classes`.
 
 The corresponding topology file (``topo-tree-25-node.txt``):
 
@@ -263,13 +214,13 @@
     :linenos:
     :lines: 2-
 
-Example simulation (``ndn-tree-with-l2tracer.cc``) scenario that utilizes trace helpers:
+Example simulation (``ndn-tree-with-l2tracer.cpp``) scenario that utilizes trace helpers:
 
-.. literalinclude:: ../../examples/ndn-tree-with-l2tracer.cc
+.. literalinclude:: ../../examples/ndn-tree-with-l2tracer.cpp
     :language: c++
     :linenos:
-    :lines: 1-
-    :emphasize-lines: 16,135
+    :lines: 20-
+    :emphasize-lines: 16,134
 
 To run this scenario, use the following command::
 
@@ -283,6 +234,10 @@
     :language: r
     :linenos:
 
+Run R script::
+
+    Rscript src/ndnSIM/examples/graphs/drop-graph.R
+
 .. image:: _static/l2-rate-tracer.png
    :alt: Packet drop rates on routers
 
@@ -291,6 +246,8 @@
 Content store trace helper
 --------------------------
 
+NOTE: This tracer works ONLY when the content store structure of ndnSIM is used!
+
 - :ndnsim:`ndn::CsTracer`
 
     With the use of :ndnsim:`ndn::CsTracer` it is possible to obtain statistics of cache hits/cache misses on simulation nodes.
@@ -301,9 +258,9 @@
 
         // the following should be put just before calling Simulator::Run in the scenario
 
-        ndn::CsTracer::InstallAll ("cs-trace.txt", Seconds (1));
+        CsTracer::InstallAll("cs-trace.txt", Seconds(1));
 
-        Simulator::Run ();
+        Simulator::Run();
 
         ...
 
@@ -317,18 +274,18 @@
 Example of content store trace helper
 +++++++++++++++++++++++++++++++++++++
 
-This example (``ndn-tree-cs-tracers.cc``) demonstrates basic usage of content store tracer.
+This example (``ndn-tree-cs-tracers.cpp``) demonstrates basic usage of content store tracer.
 
 In this scenario we will use the same tree-like topology as in :ref:`previous example <packet trace helper example>`, where consumers are installed on leaf nodes and producer is in the root of the tree.
 The main difference is that each client request data from the same namespace: /root/1, /root/2, ...  Another small difference is that in this scenario we start our application not at the same time, but 10 ms apart.
 
-Example simulation (``ndn-tree-cs-tracers.cc``) scenario that utilizes trace helpers:
+Example simulation (``ndn-tree-cs-tracers.cpp``) scenario that utilizes trace helpers:
 
-.. literalinclude:: ../../examples/ndn-tree-cs-tracers.cc
+.. literalinclude:: ../../examples/ndn-tree-cs-tracers.cpp
     :language: c++
     :linenos:
-    :lines: 21-28,61-
-    :emphasize-lines: 59
+    :lines: 20-27,60-
+    :emphasize-lines: 61
 
 
 To run this scenario, use the following command::
@@ -351,9 +308,9 @@
 
         // the following should be put just before calling Simulator::Run in the scenario
 
-        ndn::AppDelayTracer::InstallAll ("app-delays-trace.txt");
+        AppDelayTracer::InstallAll("app-delays-trace.txt");
 
-        Simulator::Run ();
+        Simulator::Run();
 
         ...
 
@@ -384,14 +341,8 @@
     +-----------------+---------------------------------------------------------------------+
     | ``RetxCount``   | number of Interest retransmissions (for LastDelay always equal to 1)|
     +-----------------+---------------------------------------------------------------------+
-    | ``HopCount``    | combined number of number of hops for Interest and Data packet.     |
-    |                 | Note that HopCount is increased anytime somebody calls Send method  |
-    |                 | on a face, including delivery of Interest/Data to application via   |
-    |                 | an AppFace (but not from application to ndn::L3Protocol!).          |
-    |                 |                                                                     |
-    |                 | One consequence is that Interests satisfied by an app will have     |
-    |                 | even hop count (min hop count = 2), and Interests satisfied from    |
-    |                 | caches will have odd hop count (min hop count = 1)                  |
+    | ``HopCount``    | the number of hops that the retrieved Data packet traveled on the   |
+    |                 | way back from producer application or cache.                        |
     +-----------------+---------------------------------------------------------------------+
 
 .. _app delay trace helper example:
@@ -399,42 +350,22 @@
 Example of application-level trace helper
 +++++++++++++++++++++++++++++++++++++++++
 
-This example (``ndn-tree-app-delay-tracer.cc``) demonstrates basic usage of application-level Interest-Data delay tracer.
+This example (``ndn-tree-app-delay-tracer.cpp``) demonstrates basic usage of application-level Interest-Data delay tracer.
 
 In this scenario we will use the same tree-like topology as in :ref:`packet trace helper example <packet trace helper example>`, where consumers are installed on leaf nodes and producer is in the root of the tree and clients request data from the same namespace: /root/1, /root/2, ...
 
-Example simulation (``ndn-tree-app-delay-tracer.cc``) scenario that utilizes trace helpers:
+Example simulation (``ndn-tree-app-delay-tracer.cpp``) scenario that utilizes trace helpers:
 
-.. literalinclude:: ../../examples/ndn-tree-app-delay-tracer.cc
+.. literalinclude:: ../../examples/ndn-tree-app-delay-tracer.cpp
     :language: c++
     :linenos:
-    :lines: 21-28,61-
-    :emphasize-lines: 59
-
+    :lines: 20-27,60-
+    :emphasize-lines: 60
 
 To run this scenario, use the following command::
 
         ./waf --run=ndn-tree-app-delay-tracer
 
-The successful run will create ``app-delays-trace.txt``, which similarly to trace file from the :ref:`packet trace helper example <packet trace helper example>` can be analyzed manually or used as input to some graph/stats packages.
-
-
-Other types of stats
---------------------
-
-.. _periodic tracing of Pending Interest Table (PIT) size:
-
-Periodic tracing of Pending Interest Table (PIT) size
-+++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-This example (``ndn-simple-with-pit-count-stats.cc``) shows how you can periodically print out current size of PIT on the selected nodes.
-
-.. literalinclude:: ../../examples/ndn-simple-with-pit-count-stats.cc
-    :language: c++
-    :linenos:
-    :lines: 20-26,47-
-    :emphasize-lines: 9-20,43-46,59-61
-
-To run this scenario, use the following command::
-
-        ./waf --run=ndn-simple-with-pit-count-stats
+The successful run will create ``app-delays-trace.txt``, which similarly to trace file from the
+:ref:`packet trace helper example <packet trace helper example>` can be analyzed manually or used as
+input to some graph/stats packages.
diff --git a/docs/source/ndnsim-packet-formats.rst b/docs/source/ndnsim-packet-formats.rst
deleted file mode 100644
index 666eca0..0000000
--- a/docs/source/ndnsim-packet-formats.rst
+++ /dev/null
@@ -1,389 +0,0 @@
-.. _ndnSIM packet format:
-
-ndnSIM packet format
-====================
-
-Basic field types
-+++++++++++++++++
-
-::
-
-	uint8_t ::= 8-bit unsigned integer
-
-	uint16_t ::= 16-bit unsigned integer
-
-	uint32_t ::= 32-bit unsigned integer
-
-	CHAR ::= 8-bit binary data
-
-	Blob ::= Length CHAR{Length}
-
-	Length ::= uint16_t
-
-NDN Packet Type
-+++++++++++++++
-
-::
-
-	Packet ::= Version 
-		   PacketType
-                   Length
-		   (Interest | ContentObject)
-
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |    Version    |   PacketType  |            Length             |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-For ccnb-encoding compatibility, ``Version`` / ``PacketType`` has two reserved values to denote ccnb-encoded packet:
-
-Version 0x01, PacketType 0xD2 --- ccnb-encoded ``Interest`` packet
-Version 0x04, PacketType 0x82 --- ccnb-encoded ``ContentObject`` packet
-
-
-Version
-~~~~~~~
-
-::
-
-	Version ::= uint8_t 
-
-The current version of the packet format.  Right only value 0x80 is allowed.
-
-PacketType
-~~~~~~~~~~
-
-::
-
-	PacketType ::= uint8_t  
-
-In the current version, two packet types are defined:
-
-- ``Interest`` (``PacketType`` = 0)
-- ``ContentObject`` (``PacketType`` = 1)
-
-Any other value of PacketType is invalid and such a packet should be discarded.
-
-Interest
-++++++++
-
-The objective of the new format is to optimize encoding/decoding operations.
-
-::
-
-	Interest ::= Nonce 
-	     	     Scope
-                     NackType
-		     InterestLifetime 
-	     	     Name 
-	     	     Selectors 
-	     	     Options
-
-Minumum size of the Interest packet: 1 + 4 + 2 + 1 + (2 + 0) + (2 + 0) + (2 + 0) = 14
-
-Maximum size of the Interest packet: 1 + 4 + 2 + 1 + (2 + 65535) + (2 + 65535) + (2 + 65535) = 196619
-
-::
-
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                          Nonce                                |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |     Scope     |   NackType    |      InterestLifetime         |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |            Length             |                               |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
-        ~                                                               ~
-        ~                            Name                               ~
-        |							        |	
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |            Length             |                               |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
-        ~                                                               ~
-        ~                          Selectors                            ~
-        |							        |	
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |            Length             |                               |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
-        ~                                                               ~
-        ~                          Options                              ~
-        |							        |	
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-Nonce
-~~~~~
-
-::
-
-	Nonce ::= uint32_t
-
-NackType
-~~~~~~~~
-
-::
-
-	NackType := uint8_t
-
-Currently, ndnSIM defines following NackTypes:
-
-- 0: NORMAL_INTEREST
-- 10: NACK_LOOP
-- 11: NACK_CONGESTION
-- 12: NACK_GIVEUP_PIT
-
-Values 128-255 are reserved for any application-specific and experimental purposes.
-
-
-InterestLifetime
-~~~~~~~~~~~~~~~~
-
-::
-
-	InterestLifetime := uint16_t 
-
-Interest lifetime is specified in seconds.  Max value is about 18 hours.
-
-Scope
-~~~~~
-
-::
-
-	Scope ::= uint8_t 
-
-Scope 0 prevents propagation beyond the local ccnd (even to other applications on the same host). Scope 1 limits propagation to the applications on the originating host. Scope 2 limits propagation to no further than the next host.
-
-Name
-~~~~
-
-::
-
-	Name ::= Length (NameComponent)*
-
-	NameComponent ::= Blob
-
-
-Selectors
-~~~~~~~~~
-
-::
-
-	Selectors ::= Length (SelectorType Selector)*
-
-        SelectorType ::= uint8_t
-
-	Selector ::= MinSuffixComponents | MaxSuffixComponents | Publisher | Exclude | ChildSelector | AnswerOriginKind
-
-Currently, ndnSIM defines following SelectorTypes:
-
-- 0x01: Exclude
-
-Other types are currently undefined
-
-Exclude
-~~~~~~~
-
-::
-
-	Exclude ::= Length (ExcludeComponent)*
-
-        ExcludeComponent ::= ExcludeNameType NameComponent ExcludeAnyType? |
-                             ExcludeAnyType
-
-        ExcludeNameType ::= uint8_t  (==0x01)
-
-        ExcludeAnyType ::= uint8_t   (==0x02)
-
-Options
-~~~~~~~
-
-::
-
-	Options ::= Length (Option)*
-
-
-.. .................................................................................................. ..
-.. .................................................................................................. ..
-.. .................................................................................................. ..
-.. .................................................................................................. ..
-
-
-ContentObject
-+++++++++++++
-
-::
-
-	ContentObject ::= Name
-                   	  Content
-                          Signature
-
-::
-
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |            Length             |                               |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
-        ~                                                               ~
-        ~                             Name                              ~
-        |							        |	
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |            Length             |                               |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
-        ~                                                               ~
-        ~                           Content                             ~
-        |							        |	
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |            Length             |                               |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
-        ~                                                               ~
-        ~                           Signature                           ~
-        |							        |	
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-Signature
-~~~~~~~~~
-
-::
-
-	Signature ::= Length 
-		      SignatureType
-		      <type-dependeds signature data>
-
-Length specifies cumulative size of SignatureInfo and SignatureBits.  If SignatureType is not recognized, the received can either discard the packet or ignore the signature using Length field, specified combined length of SignatureType and SignatureType-dependent fields.
-
-::
-
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |           Length              |         SignatureType         |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        ~                                                               ~
-        ~               <type-dependeds signature data>                 ~
-        |							        |	
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-SignatureType
-^^^^^^^^^^^^^
-
-::
-
-	SignatureType ::= uint16_t
-
-The current version specifies three type of signatures:
-
-- 0x0000: empty signature
-- 0x0001: SHA256 (not a real signature, but just a digest of the content)
-- 0x0002: SHA256withRSA (real public-key signature based on SHA-256 digest)
-
-Other values may be defined in future.
-
-- Values greater or equal to 0xFF00 are for experimental purposes (e.g., for simulations)
-
-<type-dependeds signature data>
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-+-------------------+---------------------------+
-| SignatureType     |  SignatureData definition |
-+===================+===========================+
-| 0 (empty)         |  empty sequence           |
-+-------------------+---------------------------+
-| 1 (sha256)        |  CHAR{32}                 |
-+-------------------+---------------------------+
-| 2 (SHA256withRSA) |  CHAR{32} KeyLocator      |
-+-------------------+---------------------------+
-
-KeyLocator
-^^^^^^^^^^
-
-::
-
-	KeyLocator ::= CertName
-		       
-	CertName ::= Name
-
-
-Content
-^^^^^^^
-
-::
-
-	Content ::= Length
-		    ContentInfo
-		    ContentData
-
-Content length can be computed as:  Length - (1 - ContentInfo.Length)
-
-::
-
-        0                   1                   2                   3
-        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |            Length             |       Length (content Info)   |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |                           Timestamp                           |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |           Freshness           |           Reserved            |
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        |  Length (ContentInfoOptions)  |                               |
-	|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
-        ~                                                               ~
-        ~                       ContentInfoOptions                      ~
-        |							        |	
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-        ~                                                               ~
-        ~                         ContentData                           ~
-        |							        |	
-        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-
-ContentInfo
-^^^^^^^^^^^
-
-::
-
-	ContentInfo ::= Length 
-			Timestamp
-			Freshness
-			ContentOptions
-
-Timestamp
-~~~~~~~~~
-
-::
-
-	Timestamp ::= uint32_t
-
-Timestamp specifies content generation time as Unix time timestamp (number of seconds since midnight 1/1/1970).
-
-Freshness
-~~~~~~~~~
-
-::
-
-	Freshness ::= uint16_t
-
-Freshness specifies time in seconds (since Timestamp) for which the content is considered valid.  
-
-Value 0xFFFF means that content is always valid.
-
-
-ContentOptions
-~~~~~~~~~~~~~~
-
-::
-
-	ContentOptions ::= Length
-			   ContentOption*
-
-	ContentOption ::= Type |
-			  FinalBlockID
-
-
-Not currently defined
-
diff --git a/docs/source/new-packet-formats.rst b/docs/source/new-packet-formats.rst
deleted file mode 100644
index 52bb816..0000000
--- a/docs/source/new-packet-formats.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-.. toctree::
-   :maxdepth: 4
-
-   ndnsim-packet-formats
diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst
index 088f15d..ac809c1 100644
--- a/docs/source/tutorial.rst
+++ b/docs/source/tutorial.rst
@@ -3,9 +3,15 @@
 Welcome
 =======
 
-The ndnSIM is NS-3 module that implements Named Data Networking (NDN) communication model, the clean slate Internet design. ndnSIM is specially optimized for simulation purposes and has a cleaner and more extensible internal structure comparing to the existing NDN implementation (NDNx).
+The ndnSIM 2.0 is NS-3 module that implements Named Data Networking (NDN) communication
+model, the clean slate Internet design. ndnSIM is specially optimized for simulation
+purposes and has a cleaner and more extensible internal structure comparing to the
+existing NDN implementation (NDNx).
 
-We invite you to `join our mailing list <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ to see and participate in discussions about ndnSIM implementation and simulations in general (`mailing list archives <http://www.lists.cs.ucla.edu/pipermail/ndnsim/>`_).
+We invite you to `join our mailing list
+<http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ to see and participate in
+discussions about ndnSIM implementation and simulations in general (`mailing list archives
+<http://www.lists.cs.ucla.edu/pipermail/ndnsim/>`_).
 
 Contents:
 
@@ -24,7 +30,6 @@
 
     examples
     metric
-    ndnsim-packet-formats
     faq
     ndnsim-research-papers
 
@@ -32,7 +37,6 @@
     :hidden:
     :glob:
 
-    new-packet-formats
     meta/*
 
 
diff --git a/examples/graphs/drop-graph.R b/examples/graphs/drop-graph.R
index 0f28f6e..bb04161 100755
--- a/examples/graphs/drop-graph.R
+++ b/examples/graphs/drop-graph.R
@@ -1,30 +1,30 @@
 #!/usr/bin/env Rscript
-# Copyright (c) 2012-2013  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+# Copyright (c) 2012-2015  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
 
 
 # install.packages ('ggplot2')
-library (ggplot2)
+library(ggplot2)
 ## # install.packages ('scales')
 ## library (scales)
 
 #########################
 # Rate trace processing #
 #########################
-data = read.table ("drop-trace.txt", header=T)
-data$Node = factor (data$Node)
+data = read.table("drop-trace.txt", header=T)
+data$Node = factor(data$Node)
 data$Kilobits <- data$Kilobytes * 8
-data$Type = factor (data$Type)
+data$Type = factor(data$Type)
 
 ## data.rtr = data[grep("Rtr", data$Node),]
 
 # graph rates on all nodes in Kilobits
-g.all <- ggplot (data, aes (x=Time, y=Kilobits, color=Type)) +
-  geom_point (size=2) +
-  geom_line () +
-  ylab ("Packet drop rate [Kbits/s]") +
-  facet_wrap (~ Node) +
-  theme_bw ()
+g.all <- ggplot(data, aes(x=Time, y=Kilobits, color=Type)) +
+  geom_point(size=2) +
+  geom_line() +
+  ylab("Packet drop rate [Kbits/s]") +
+  facet_wrap(~ Node) +
+  theme_bw()
 
-png ("drop-trace-all-nodes.png", width=800, height=500)
-print (g.all)
-x = dev.off ()
+png("src/ndnSIM/docs/source/_static/l2-rate-tracer.png", width=800, height=500)
+print(g.all)
+x = dev.off()
diff --git a/examples/graphs/rate-graph.R b/examples/graphs/rate-graph.R
index 6d63298..cbacf49 100755
--- a/examples/graphs/rate-graph.R
+++ b/examples/graphs/rate-graph.R
@@ -1,88 +1,47 @@
-# Copyright (c) 2012  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+# Copyright (c) 2012,2015  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
 
-# install.packages ('ggplot2')  
-library (ggplot2)
-# install.packages ('scales')  
-library (scales)
+# install.packages('ggplot2')
+library(ggplot2)
+# install.packages('scales')
+library(scales)
 
-# install.packages ('doBy')
-library (doBy)
+# install.packages('doBy')
+library(doBy)
 
 #########################
 # Rate trace processing #
 #########################
-data = read.table ("rate-trace.txt", header=T)
-data$Node = factor (data$Node)
+data = read.table("rate-trace.txt", header=T)
+data$Node = factor(data$Node)
 data$FaceId <- factor(data$FaceId)
 data$Kilobits <- data$Kilobytes * 8
-data$Type = factor (data$Type)
+data$Type = factor(data$Type)
 
 # exlude irrelevant types
-data = subset (data, Type %in% c("InInterests", "OutInterests", "InData", "OutData"))
+data = subset(data, Type %in% c("InInterests", "OutInterests", "InData", "OutData"))
 
 # combine stats from all faces
-data.combined = summaryBy (. ~ Time + Node + Type, data=data, FUN=sum)
-  
+data.combined = summaryBy(. ~ Time + Node + Type, data=data, FUN=sum)
+
 data.root = subset (data.combined, Node == "root")
-data.leaves = subset (data.combined, Node %in% c("leaf-1", "leaf-2", "leaf-3", "leaf-4"))
+data.leaves = subset(data.combined, Node %in% c("leaf-1", "leaf-2", "leaf-3", "leaf-4"))
 
 # graph rates on all nodes in Kilobits
-g.all <- ggplot (data.combined) +
-  geom_point (aes (x=Time, y=Kilobits.sum, color=Type), size=1) +
-  ylab ("Rate [Kbits/s]") +
-  facet_wrap (~ Node)
+g.all <- ggplot(data.combined) +
+  geom_point(aes (x=Time, y=Kilobits.sum, color=Type), size=1) +
+  ylab("Rate [Kbits/s]") +
+  facet_wrap(~ Node)
 
-print (g.all)
-  
+print(g.all)
+
 # graph rates on the root nodes in Packets
-g.root <- ggplot (data.root) +
-  geom_point (aes (x=Time, y=Kilobits.sum, color=Type), size=2) +
-  geom_line (aes (x=Time, y=Kilobits.sum, color=Type), size=0.5) +
-  ylab ("Rate [Kbits/s]")
+g.root <- ggplot(data.root) +
+  geom_point(aes (x=Time, y=Kilobits.sum, color=Type), size=2) +
+  geom_line(aes (x=Time, y=Kilobits.sum, color=Type), size=0.5) +
+  ylab("Rate [Kbits/s]")
 
-print (g.root)
+print(g.root)
 
-png ("root-rates.png", width=500, height=250)
-print (g.root)
-dev.off ()
-
-###############################
-# Aggreagate trace processing #
-###############################
-
-data = read.table ("aggregate-trace.txt", header=T)
-data$Node = factor (data$Node)
-data$FaceId <- factor(data$FaceId)
-data$Type = factor (data$Type)
-
-# exlude irrelevant types
-data = subset (data, Type %in% c("InInterests", "OutInterests", "InData", "OutData"))
-
-# Aggregate packet stats in 5-second intervals
-data$Time5Sec = 5 * ceiling (data$Time / 5)
-data.combined = summaryBy (. ~ Time5Sec + Node + Type, data=data, FUN=sum)
-
-data.root = subset (data.combined, Node == "root")
-data.leaves = subset (data.combined, Node %in% c("leaf-1", "leaf-2", "leaf-3", "leaf-4"))
-
-# graph rates on all nodes in Packets
-g.all <- ggplot (data.combined) +
-  geom_point (aes (x=Time5Sec, y=Packets.sum, color=Type), size=2) +
-  geom_line (aes (x=Time5Sec, y=Packets.sum, color=Type), size=0.5) +
-  ylab ("Number of transitted packets in 5 secon intervals") +
-  facet_wrap (~ Node)
-
-print (g.all)
-  
-# graph rates on the root nodes in Packets
-g.root <- ggplot (data.root) +
-  geom_point (aes (x=Time5Sec, y=Packets.sum, color=Type), size=2) +
-  geom_line (aes (x=Time5Sec, y=Packets.sum, color=Type), size=0.5) +
-  ylab ("Number of transitted packets in 5 secon intervals") +
-  ylim (c(0,2000))
-
-print (g.root)
-
-png ("root-5sec-counts.png", width=500, height=250)
-print (g.root)
-dev.off ()
+png("src/ndnSIM/docs/source/_static/root-rates.png", width=500, height=250)
+print(g.root)
+retval <- dev.off()
diff --git a/examples/ndn-different-strategy-per-prefix.cpp b/examples/ndn-different-strategy-per-prefix.cpp
index 1609f7b..54789e6 100644
--- a/examples/ndn-different-strategy-per-prefix.cpp
+++ b/examples/ndn-different-strategy-per-prefix.cpp
@@ -30,7 +30,6 @@
 using ns3::ndn::AppHelper;
 using ns3::ndn::GlobalRoutingHelper;
 using ns3::ndn::StrategyChoiceHelper;
-;
 
 /**
  * This scenario simulates a grid topology (using PointToPointGrid module)
@@ -95,9 +94,8 @@
   std::string prefix2 = "/prefix2";
 
   // Install different forwarding strategies for prefix1, prefix2
-  StrategyChoiceHelper strategyChoiceHelper;
-  strategyChoiceHelper.InstallAll(prefix1, "/localhost/nfd/strategy/broadcast");
-  strategyChoiceHelper.InstallAll(prefix2, "/localhost/nfd/strategy/best-route");
+  StrategyChoiceHelper::InstallAll(prefix1, "/localhost/nfd/strategy/broadcast");
+  StrategyChoiceHelper::InstallAll(prefix2, "/localhost/nfd/strategy/best-route");
 
   // Install NDN applications
   AppHelper consumerHelper("ns3::ndn::ConsumerCbr");
diff --git a/examples/ndn-grid-multiple-strategies.cpp b/examples/ndn-grid-multiple-strategies.cpp
index 4b6f193..06f3a1c 100644
--- a/examples/ndn-grid-multiple-strategies.cpp
+++ b/examples/ndn-grid-multiple-strategies.cpp
@@ -30,7 +30,6 @@
 using ns3::ndn::AppHelper;
 using ns3::ndn::GlobalRoutingHelper;
 using ns3::ndn::StrategyChoiceHelper;
-;
 
 /**
  * This scenario simulates a grid topology (using PointToPointGrid module)
@@ -93,15 +92,14 @@
   std::string prefix = "/prefix";
 
   // Install different forwarding strategies
-  StrategyChoiceHelper strategyChoiceHelper;
   for (int row = 0; row < 3; row++) {
     for (int column = 0; column < 3; column++) {
       if (row < 2)
-        strategyChoiceHelper.Install(grid.GetNode(row, column), "/prefix",
-                                     "/localhost/nfd/strategy/best-route");
+        StrategyChoiceHelper::Install(grid.GetNode(row, column), "/prefix",
+                                      "/localhost/nfd/strategy/best-route");
       else
-        strategyChoiceHelper.Install(grid.GetNode(row, column), "/prefix",
-                                     "/localhost/nfd/strategy/broadcast");
+        StrategyChoiceHelper::Install(grid.GetNode(row, column), "/prefix",
+                                      "/localhost/nfd/strategy/broadcast");
     }
   }
 
diff --git a/examples/ndn-load-balancer.cpp b/examples/ndn-load-balancer.cpp
index 46ea740..8db76ce 100644
--- a/examples/ndn-load-balancer.cpp
+++ b/examples/ndn-load-balancer.cpp
@@ -85,6 +85,11 @@
   // Install NDN applications
   std::string prefix = "/ucla/hello";
 
+  // Install random-load-balancer forwarding strategy in
+  // node UCLA-HUB
+  StrategyChoiceHelper::Install<nfd::fw::RandomLoadBalancerStrategy>(Names::Find<Node>("UCLA-HUB"),
+                                                                     prefix);
+
   AppHelper consumerHelper("ns3::ndn::ConsumerCbr");
   consumerHelper.SetPrefix(prefix);
   consumerHelper.SetAttribute("Frequency", StringValue("100")); // 100 interests a second
@@ -96,12 +101,6 @@
   producerHelper.Install(producer1);
   producerHelper.Install(producer2);
 
-  // Install random-load-balancer forwarding strategy in
-  // node UCLA-HUB
-  StrategyChoiceHelper strategyChoiceHelper;
-  strategyChoiceHelper.Install<nfd::fw::RandomLoadBalancerStrategy>(Names::Find<Node>("UCLA-HUB"),
-                                                                    prefix);
-
   // Add /prefix origins to ndn::GlobalRouter
   ndnGlobalRoutingHelper.AddOrigins(prefix, producer1);
   ndnGlobalRoutingHelper.AddOrigins(prefix, producer2);
diff --git a/helper/ndn-app-helper.hpp b/helper/ndn-app-helper.hpp
index 2b65f18..88051d4 100644
--- a/helper/ndn-app-helper.hpp
+++ b/helper/ndn-app-helper.hpp
@@ -33,8 +33,8 @@
 
 /**
  * @ingroup ndn-helpers
- * \brief A helper to make it easier to instantiate an ns3::NdnConsumer Application
- * on a set of nodes.
+ * @brief A helper to make it easier to instantiate an ns3::ndn::App applications
+ *        on a set of nodes
  */
 class AppHelper {
 public:
diff --git a/helper/ndn-face-container.hpp b/helper/ndn-face-container.hpp
index 02ce59c..84d8e7f 100644
--- a/helper/ndn-face-container.hpp
+++ b/helper/ndn-face-container.hpp
@@ -34,12 +34,12 @@
 
 /**
  * @ingroup ndn-helpers
- * \brief A pool for Ndn faces
+ * @brief A pool for Ndn faces
  *
- * Provides tools to perform basic manipulation on faces, such as
- * setting metrics and states on faces
+ * Provides tools to perform basic manipulation on faces, such as setting metrics and
+ * states on faces
  *
- * \see NdnStackHelper
+ * @see ndn::StackHelper
  */
 class FaceContainer : public SimpleRefCount<FaceContainer> {
 private:
diff --git a/helper/ndn-fib-helper.hpp b/helper/ndn-fib-helper.hpp
index 3819049..1385e31 100644
--- a/helper/ndn-fib-helper.hpp
+++ b/helper/ndn-fib-helper.hpp
@@ -34,6 +34,14 @@
 
 using ::ndn::nfd::ControlParameters;
 
+/**
+ * @ingroup ndn-helpers
+ * @brief Forwarding Information Base (FIB) helper
+ *
+ * The FIB helper interacts with the FIB manager of NFD by sending special Interest
+ * commands to the manager in order to add/remove a next hop from FIB entries or add
+ * routes to the FIB manually (manual configuration of FIB).
+ */
 class FibHelper {
 public:
   /**
diff --git a/helper/ndn-link-control-helper.hpp b/helper/ndn-link-control-helper.hpp
index 9d8c800..326aede 100644
--- a/helper/ndn-link-control-helper.hpp
+++ b/helper/ndn-link-control-helper.hpp
@@ -31,7 +31,7 @@
 /**
  * @ingroup ndn-helpers
  * @brief Helper class to control the up or down statuss of an NDN link connecting two specific
- * nodes
+ *        nodes
  */
 class LinkControlHelper {
 public:
diff --git a/helper/ndn-stack-helper.hpp b/helper/ndn-stack-helper.hpp
index 836a6b4..a05e520 100644
--- a/helper/ndn-stack-helper.hpp
+++ b/helper/ndn-stack-helper.hpp
@@ -41,25 +41,12 @@
 class L3Protocol;
 
 /**
- * \ingroup ndn
- * \defgroup ndn-helpers Helpers
+ * @ingroup ndn
+ * @defgroup ndn-helpers Helpers
  */
 /**
- * \ingroup ndn-helpers
- * \brief Adding Ndn functionality to existing Nodes.
- *
- * This helper enables pcap and ascii tracing of events in the ndn stack
- * associated with a node.  This is substantially similar to the tracing that
- * happens in device helpers, but the important difference is that, well, there
- * is no device.  This means that the creation of output file names will change,
- * and also the user-visible methods will not reference devices and therefore
- * the number of trace enable methods is reduced.
- *
- * Normally we eschew multiple inheritance, however, the classes
- * PcapUserHelperForNdn and AsciiTraceUserHelperForNdn are treated as
- * "mixins".  A mixin is a self-contained class that encapsulates a general
- * attribute or a set of functionality that may be of interest to many other
- * classes.
+ * @ingroup ndn-helpers
+ * @brief Helper class to install NDN stack and configure its parameters
  */
 class StackHelper : boost::noncopyable {
 public:
@@ -83,8 +70,16 @@
                      const std::string& attr4 = "", const std::string& value4 = "");
 
   /**
-   * @brief Set content store class and its attributes
+   * @brief Set maximum size for NFD's Content Store (in number of packets)
+   */
+  void
+  setCsSize(size_t maxSize);
+
+  /**
+   * @brief Set ndnSIM 1.0 content store implementation and its attributes
    * @param contentStoreClass string, representing class of the content store
+   * @note ndnSIM 1.0 content store implementation have limited support for Interest selectors
+   *       Do not use these implementations if your scenario relies on proper selector processing.
    */
   void
   SetOldContentStore(const std::string& contentStoreClass, const std::string& attr1 = "",
@@ -93,9 +88,6 @@
                   const std::string& value3 = "", const std::string& attr4 = "",
                   const std::string& value4 = "");
 
-  void
-  setCsSize(size_t maxSize);
-
   typedef Callback<shared_ptr<NetDeviceFace>, Ptr<Node>, Ptr<L3Protocol>, Ptr<NetDevice>>
     NetDeviceFaceCreateCallback;
 
diff --git a/helper/ndn-strategy-choice-helper.hpp b/helper/ndn-strategy-choice-helper.hpp
index 8e7e32f..29d16ae 100644
--- a/helper/ndn-strategy-choice-helper.hpp
+++ b/helper/ndn-strategy-choice-helper.hpp
@@ -48,6 +48,14 @@
 
 using ::ndn::nfd::ControlParameters;
 
+/**
+ * @ingroup ndn-helpers
+ * @brief NFD Strategy Choice Helper (FIB) helper
+ *
+ * The Strategy Choice helper interacts with the Strategy Choice manager of NFD by sending
+ * special Interest commands to the manager in order to specify the desired per-name
+ * prefix forwarding strategy for one, more or all the nodes of a topology.
+ */
 class StrategyChoiceHelper {
 public:
   static void
diff --git a/model/cs/content-store-with-probability.hpp b/model/cs/content-store-with-probability.hpp
index eabe12d..5ba9b58 100644
--- a/model/cs/content-store-with-probability.hpp
+++ b/model/cs/content-store-with-probability.hpp
@@ -35,7 +35,8 @@
 
 /**
  * @ingroup ndn-cs
- * @brief Special content store realization that honors Freshness parameter in Data packets
+ * @brief Special content store realization that probabilistically accepts data packet
+ *        into CS (placement policy)
  */
 template<class Policy>
 class ContentStoreWithProbability
diff --git a/model/cs/custom-policies/freshness-policy.hpp b/model/cs/custom-policies/freshness-policy.hpp
index 8963bd7..415ab0b 100644
--- a/model/cs/custom-policies/freshness-policy.hpp
+++ b/model/cs/custom-policies/freshness-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef FRESHNESS_POLICY_H_
 #define FRESHNESS_POLICY_H_
 
+/// @cond include_hidden
+
 #include "ns3/ndnSIM/model/ndn-common.hpp"
 
 #include <boost/intrusive/options.hpp>
@@ -166,4 +168,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // LIFETIME_STATS_POLICY_H
diff --git a/model/cs/custom-policies/lifetime-stats-policy.hpp b/model/cs/custom-policies/lifetime-stats-policy.hpp
index eb8a3ee..6e81618 100644
--- a/model/cs/custom-policies/lifetime-stats-policy.hpp
+++ b/model/cs/custom-policies/lifetime-stats-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef LIFETIME_STATS_POLICY_H_
 #define LIFETIME_STATS_POLICY_H_
 
+/// @cond include_hidden
+
 #include "ns3/ndnSIM/model/ndn-common.hpp"
 
 #include <boost/intrusive/options.hpp>
@@ -160,4 +162,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // LIFETIME_STATS_POLICY_H
diff --git a/model/cs/custom-policies/probability-policy.hpp b/model/cs/custom-policies/probability-policy.hpp
index 3fb93a5..7ad6fd0 100644
--- a/model/cs/custom-policies/probability-policy.hpp
+++ b/model/cs/custom-policies/probability-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef PROBABILITY_POLICY_H_
 #define PROBABILITY_POLICY_H_
 
+/// @cond include_hidden
+
 #include "ns3/ndnSIM/model/ndn-common.hpp"
 
 #include <boost/intrusive/options.hpp>
@@ -145,4 +147,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // PROBABILITY_POLICY_H
diff --git a/model/ndn-global-router.hpp b/model/ndn-global-router.hpp
index 76eb8f8..4713a5b 100644
--- a/model/ndn-global-router.hpp
+++ b/model/ndn-global-router.hpp
@@ -38,7 +38,7 @@
 class L3Protocol;
 
 /**
- * @ingroup ndn
+ * @ingroup ndn-helpers
  * @brief Class representing global router interface for ndnSIM
  */
 class GlobalRouter : public Object {
diff --git a/utils/topology/annotated-topology-reader.cpp b/utils/topology/annotated-topology-reader.cpp
index a10cf2f..c62b7e5 100644
--- a/utils/topology/annotated-topology-reader.cpp
+++ b/utils/topology/annotated-topology-reader.cpp
@@ -495,6 +495,8 @@
   }
 }
 
+/// @cond include_hidden
+
 template<class Names>
 class name_writer {
 public:
@@ -522,6 +524,8 @@
   return name_writer<Names>(n);
 }
 
+/// @endcond
+
 void
 AnnotatedTopologyReader::SaveGraphviz(const std::string& file)
 {
@@ -560,4 +564,5 @@
   boost::property_map<Graph, boost::vertex_name_t>::type names = get(boost::vertex_name, graph);
   write_graphviz(of, graph, make_name_writer(names));
 }
+
 }
diff --git a/utils/topology/rocketfuel-map-reader.cpp b/utils/topology/rocketfuel-map-reader.cpp
index f5a424e..b53b03b 100644
--- a/utils/topology/rocketfuel-map-reader.cpp
+++ b/utils/topology/rocketfuel-map-reader.cpp
@@ -560,6 +560,8 @@
   }
 }
 
+/// @cond include_hidden
+
 template<class Names, class Colors>
 class name_color_writer {
 public:
@@ -589,6 +591,8 @@
   return name_color_writer<Names, Colors>(n, c);
 }
 
+/// @endcond
+
 void
 RocketfuelMapReader::SaveGraphviz(const std::string& file)
 {
diff --git a/utils/trie/aggregate-stats-policy.hpp b/utils/trie/aggregate-stats-policy.hpp
index 3628cc6..4d2673b 100644
--- a/utils/trie/aggregate-stats-policy.hpp
+++ b/utils/trie/aggregate-stats-policy.hpp
@@ -27,6 +27,8 @@
 namespace ndn {
 namespace ndnSIM {
 
+/// @cond include_hidden
+
 /**
  * @brief Traits for policy that just keeps track of number of elements
  * It's doing a rather expensive job, but just in case it needs to be extended later
@@ -159,4 +161,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // AGGREGATE_STATS_POLICY_H_
diff --git a/utils/trie/counting-policy.hpp b/utils/trie/counting-policy.hpp
index 4a74036..71331b7 100644
--- a/utils/trie/counting-policy.hpp
+++ b/utils/trie/counting-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef COUNTING_POLICY_H_
 #define COUNTING_POLICY_H_
 
+/// @cond include_hidden
+
 #include <boost/intrusive/options.hpp>
 #include <boost/intrusive/list.hpp>
 
@@ -108,4 +110,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // COUNTING_POLICY_H_
diff --git a/utils/trie/detail/functor-hook.hpp b/utils/trie/detail/functor-hook.hpp
index a638e59..17542ba 100644
--- a/utils/trie/detail/functor-hook.hpp
+++ b/utils/trie/detail/functor-hook.hpp
@@ -20,6 +20,8 @@
 #ifndef FUNCTOR_HOOK_H_
 #define FUNCTOR_HOOK_H_
 
+/// @cond include_hidden
+
 #include <boost/intrusive/parent_from_member.hpp>
 
 namespace ns3 {
@@ -73,4 +75,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // FUNCTOR_HOOK_H_
diff --git a/utils/trie/detail/multi-policy-container.hpp b/utils/trie/detail/multi-policy-container.hpp
index cf2634f..5c3450b 100644
--- a/utils/trie/detail/multi-policy-container.hpp
+++ b/utils/trie/detail/multi-policy-container.hpp
@@ -20,6 +20,8 @@
 #ifndef MULTI_POLICY_CONTAINER_H_
 #define MULTI_POLICY_CONTAINER_H_
 
+/// @cond include_hidden
+
 #include <boost/mpl/inherit_linearly.hpp>
 #include <boost/mpl/at.hpp>
 
@@ -207,4 +209,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // MULTI_POLICY_CONTAINER_H_
diff --git a/utils/trie/detail/multi-type-container.hpp b/utils/trie/detail/multi-type-container.hpp
index 84e2f55..f84f860 100644
--- a/utils/trie/detail/multi-type-container.hpp
+++ b/utils/trie/detail/multi-type-container.hpp
@@ -20,6 +20,8 @@
 #ifndef MULTI_TYPE_CONTAINER_H_
 #define MULTI_TYPE_CONTAINER_H_
 
+/// @cond include_hidden
+
 #include <boost/mpl/inherit_linearly.hpp>
 #include <boost/mpl/inherit.hpp>
 #include <boost/mpl/at.hpp>
@@ -79,4 +81,6 @@
 } // ndn
 } // ns3
 
+/// @cond include_hidden
+
 #endif // MULTI_TYPE_CONTAINER_H_
diff --git a/utils/trie/empty-policy.hpp b/utils/trie/empty-policy.hpp
index 404028f..237a647 100644
--- a/utils/trie/empty-policy.hpp
+++ b/utils/trie/empty-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef EMPTY_POLICY_H_
 #define EMPTY_POLICY_H_
 
+/// @cond include_hidden
+
 namespace ns3 {
 namespace ndn {
 namespace ndnSIM {
@@ -76,4 +78,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // EMPTY_POLICY_H_
diff --git a/utils/trie/fifo-policy.hpp b/utils/trie/fifo-policy.hpp
index d58de22..44f335e 100644
--- a/utils/trie/fifo-policy.hpp
+++ b/utils/trie/fifo-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef FIFO_POLICY_H_
 #define FIFO_POLICY_H_
 
+/// @cond include_hidden
+
 #include <boost/intrusive/options.hpp>
 #include <boost/intrusive/list.hpp>
 
@@ -125,4 +127,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif
diff --git a/utils/trie/lfu-policy.hpp b/utils/trie/lfu-policy.hpp
index 68137ad..6234961 100644
--- a/utils/trie/lfu-policy.hpp
+++ b/utils/trie/lfu-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef LFU_POLICY_H_
 #define LFU_POLICY_H_
 
+/// @cond include_hidden
+
 #include <boost/intrusive/options.hpp>
 #include <boost/intrusive/set.hpp>
 
@@ -158,4 +160,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // LFU_POLICY_H
diff --git a/utils/trie/lru-policy.hpp b/utils/trie/lru-policy.hpp
index fc790a3..a88b0f7 100644
--- a/utils/trie/lru-policy.hpp
+++ b/utils/trie/lru-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef LRU_POLICY_H_
 #define LRU_POLICY_H_
 
+/// @cond include_hidden
+
 #include <boost/intrusive/options.hpp>
 #include <boost/intrusive/list.hpp>
 
@@ -128,4 +130,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif
diff --git a/utils/trie/multi-policy.hpp b/utils/trie/multi-policy.hpp
index 534499f..01c8951 100644
--- a/utils/trie/multi-policy.hpp
+++ b/utils/trie/multi-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef MULTI_POLICY_H_
 #define MULTI_POLICY_H_
 
+/// @cond include_hidden
+
 #include "detail/multi-type-container.hpp"
 #include "detail/multi-policy-container.hpp"
 #include "detail/functor-hook.hpp"
@@ -189,4 +191,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // MULTI_POLICY_H_
diff --git a/utils/trie/payload-policy.hpp b/utils/trie/payload-policy.hpp
index cdf76c3..6df4e7c 100644
--- a/utils/trie/payload-policy.hpp
+++ b/utils/trie/payload-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef PAYLOAD_POLICY_H_
 #define PAYLOAD_POLICY_H_
 
+/// @cond include_hidden
+
 #include <boost/intrusive/options.hpp>
 #include <boost/intrusive/list.hpp>
 
@@ -122,4 +124,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // PAYLOAD_POLICY_H
diff --git a/utils/trie/payload-with-policy.hpp b/utils/trie/payload-with-policy.hpp
index e682fea..c4c904e 100644
--- a/utils/trie/payload-with-policy.hpp
+++ b/utils/trie/payload-with-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef PAYLOAD_WITH_INDEX_H_
 #define PAYLOAD_WITH_INDEX_H_
 
+/// @cond include_hidden
+
 namespace ns3 {
 namespace ndn {
 namespace ndnSIM {
@@ -100,4 +102,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // PAYLOAD_WITH_POLICY_H_
diff --git a/utils/trie/persistent-policy.hpp b/utils/trie/persistent-policy.hpp
index 49301f3..669b8b2 100644
--- a/utils/trie/persistent-policy.hpp
+++ b/utils/trie/persistent-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef PERSISTENT_POLICY_H_
 #define PERSISTENT_POLICY_H_
 
+/// @cond include_hidden
+
 #include <boost/intrusive/options.hpp>
 #include <boost/intrusive/list.hpp>
 
@@ -126,4 +128,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // PERSISTENT_POLICY_H_
diff --git a/utils/trie/random-policy.hpp b/utils/trie/random-policy.hpp
index 6beaeba..813dae5 100644
--- a/utils/trie/random-policy.hpp
+++ b/utils/trie/random-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef RANDOM_POLICY_H_
 #define RANDOM_POLICY_H_
 
+/// @cond include_hidden
+
 #include "ns3/random-variable.h"
 
 #include <boost/intrusive/options.hpp>
@@ -165,4 +167,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // RANDOM_POLICY_H
diff --git a/utils/trie/trie-with-policy.hpp b/utils/trie/trie-with-policy.hpp
index 2ef3bc4..d0d54f6 100644
--- a/utils/trie/trie-with-policy.hpp
+++ b/utils/trie/trie-with-policy.hpp
@@ -20,6 +20,8 @@
 #ifndef TRIE_WITH_POLICY_H_
 #define TRIE_WITH_POLICY_H_
 
+/// @cond include_hidden
+
 #include "trie.hpp"
 
 namespace ns3 {
@@ -299,4 +301,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // TRIE_WITH_POLICY_H_
diff --git a/utils/trie/trie.hpp b/utils/trie/trie.hpp
index 9ca8a28..28c075e 100644
--- a/utils/trie/trie.hpp
+++ b/utils/trie/trie.hpp
@@ -20,6 +20,8 @@
 #ifndef TRIE_H_
 #define TRIE_H_
 
+/// @cond include_hidden
+
 #include "ns3/ndnSIM/model/ndn-common.hpp"
 
 #include "ns3/ptr.h"
@@ -771,4 +773,6 @@
 } // ndn
 } // ns3
 
+/// @endcond
+
 #endif // TRIE_H_