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/*
 
 
