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_
