diff --git a/docs/doxygen.conf.in b/docs/doxygen.conf.in
index 35c0fd7..92989c0 100644
--- a/docs/doxygen.conf.in
+++ b/docs/doxygen.conf.in
@@ -1782,18 +1782,6 @@
 
 XML_OUTPUT             = xml
 
-# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_SCHEMA             =
-
-# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
-# validating XML parser to check the syntax of the XML files.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-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
@@ -1888,7 +1876,7 @@
 # The default value is: NO.
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
-MACRO_EXPANSION        = NO
+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
@@ -1928,7 +1916,8 @@
 # recursively expanded use the := operator instead of the = operator.
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
-PREDEFINED             =
+PREDEFINED             = DOXYGEN=1 \
+                         CHRONOSYNC_PUBLIC_WITH_TESTS_ELSE_PRIVATE=private
 
 # 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
diff --git a/src/logic.hpp b/src/logic.hpp
index b07ba62..4f75085 100644
--- a/src/logic.hpp
+++ b/src/logic.hpp
@@ -111,10 +111,11 @@
    * @param defaultSigningId The signing Id of the default user
    * @param validator The validator for packet validation
    * @param resetTimer The timer to periodically send Reset Interest
-   * @param syncReplyFreshness The FreshnessPeriod of sync reply
-   * @param resetInterestLifetime The lifetime of sync interest
-   * @param resetInterestLifetime The lifetime of Reset Interest
    * @param cancelResetTimer The timer to exit from Reset state
+   * @param resetInterestLifetime The lifetime of Reset Interest
+   * @param syncInterestLifetime The lifetime of sync interest
+   * @param syncReplyFreshness The FreshnessPeriod of sync reply
+   * @param recoveryInterestLifetime The lifetime of recovery interest
    */
   Logic(ndn::Face& face,
         const Name& syncPrefix,
diff --git a/src/socket.hpp b/src/socket.hpp
index 09fee72..356b212 100644
--- a/src/socket.hpp
+++ b/src/socket.hpp
@@ -105,6 +105,7 @@
    * @param buf Pointer to the bytes in content
    * @param len size of the bytes in content
    * @param freshness FreshnessPeriod of the data packet.
+   * @param prefix The user prefix that will be used to publish the data.
    */
   void
   publishData(const uint8_t* buf, size_t len, const ndn::time::milliseconds& freshness,
@@ -123,6 +124,7 @@
    * @param len size of the bytes in content
    * @param freshness FreshnessPeriod of the data packet.
    * @param seqNo Sequence number of the data
+   * @param prefix The user prefix that will be used to publish the data.
    */
   void
   publishData(const uint8_t* buf, size_t len, const ndn::time::milliseconds& freshness,
@@ -139,6 +141,7 @@
    *
    * @param content Block that will be set as the content of the data packet.
    * @param freshness FreshnessPeriod of the data packet.
+   * @param prefix The user prefix that will be used to publish the data.
    */
   void
   publishData(const Block& content, const ndn::time::milliseconds& freshness,
@@ -156,6 +159,7 @@
    * @param content Block that will be set as the content of the data packet.
    * @param freshness FreshnessPeriod of the data packet.
    * @param seqNo Sequence number of the data
+   * @param prefix The user prefix that will be used to publish the data.
    */
   void
   publishData(const Block& content, const ndn::time::milliseconds& freshness,
@@ -180,6 +184,8 @@
    * @param sessionName The name of the target session.
    * @param seq The seqNo of the data packet.
    * @param onValidated The callback when the retrieved packet has been validated.
+   * @param onValidationFailed The callback when the retrieved packet failed validation.
+   * @param onTimeout The callback when data is not retrieved.
    * @param nRetries The number of retries.
    */
   void
diff --git a/src/state.cpp b/src/state.cpp
index 0b2c0c7..26a8944 100644
--- a/src/state.cpp
+++ b/src/state.cpp
@@ -117,9 +117,11 @@
   return totalLength;
 }
 
+//! \relates State
 template size_t
 State::wireEncode<true>(ndn::EncodingImpl<true>& block) const;
 
+//! \relates State
 template size_t
 State::wireEncode<false>(ndn::EncodingImpl<false>& block) const;
 
