diff --git a/src/clients/query.hpp b/src/clients/query.hpp
index 7b6de33..d1bba0b 100644
--- a/src/clients/query.hpp
+++ b/src/clients/query.hpp
@@ -29,8 +29,11 @@
 namespace ndns {
 
 /**
- * @brief NDNS Query abstraction. Query is an Interest whose name follows the format:
- * <hint> /xF0. <zone> [<KEY>|<NDNS>|<NDNS-R>] <rrLabel> <rrType>
+ * @brief NDNS Query abstraction
+ *
+ * Query is an Interest whose name follows the format:
+ *
+ *     <hint> /xF0. <zone> [<KEY>|<NDNS>|<NDNS-R>] <rrLabel> <rrType>
  */
 class Query : noncopyable
 {
@@ -47,8 +50,11 @@
 
   /**
    * @brief extract the query information (rrLabel, rrType) from a Interest
-   * @param[in] interest The Interest to parse; the Interest must have correct hint and zone,
-   *  otherwise it's undefined behavior
+   *
+   * @param hint     Forwarding hint
+   * @param zone     NDNS zone
+   * @param interest The Interest to parse; the Interest must have correct hint and zone,
+   *                 otherwise it's undefined behavior
    */
   bool
   fromInterest(const Name& hint, const Name& zone, const Interest& interest);
diff --git a/src/clients/response.hpp b/src/clients/response.hpp
index 240659b..62e88ed 100644
--- a/src/clients/response.hpp
+++ b/src/clients/response.hpp
@@ -56,10 +56,13 @@
 
   /**
    * @brief fill the attributes from Data packet.
-   * @param[in] data Data.getName() must the same hint (if has) and zone as its prefix,
-   * otherwise it's undefined behavior
+   *
+   * @param hint Forwarding hint
+   * @param zone NDNS zone name
+   * @param data Data.getName() must the same hint (if has) and zone as its prefix,
+   *             otherwise it's undefined behavior
    * @return false if Data.getName() does not follow the structure of NDNS Response without
-   * changing any attributes, otherwise return true and fill the attributes
+   *         changing any attributes, otherwise return true and fill the attributes
    */
   bool
   fromData(const Name& hint, const Name& zone, const Data& data);
@@ -72,8 +75,9 @@
 
   /**
    * @brief add Block which contains string information and its tlv type is ndns::tlv::RrData
-   * Response is service level information, the encoding level abstraction,
-   * i.e., Block is not very convenient.
+   *
+   * @return Response that is service level information, the encoding level abstraction,
+   *         i.e., Block is not very convenient.
    */
   Response&
   addRr(const std::string& rr);
diff --git a/src/mgmt/management-tool.hpp b/src/mgmt/management-tool.hpp
index bb13c1e..64968c7 100644
--- a/src/mgmt/management-tool.hpp
+++ b/src/mgmt/management-tool.hpp
@@ -63,8 +63,11 @@
     }
   };
 
-  /** @param certDir Path to the directory to store certificates
-   *  @param dbFile Path to the local database
+  /**
+   * @brief Create instance of the tool
+   *
+   * @param dbFile   Path to the local database
+   * @param keyChain Keychain instance
    */
   ManagementTool(const std::string& dbFile, KeyChain& keyChain);
 
@@ -116,7 +119,7 @@
   /** @brief Export the certificate to file system
    *
    *  @param certName the name of the certificate to be exported
-   *  @param output the path to output to-be exported file, including the file name
+   *  @param outFile the path to output to-be exported file, including the file name
    */
   void
   exportCertificate(const Name& certName, const std::string& outFile = DEFAULT_IO);
@@ -132,10 +135,10 @@
    *  @param type the rrset type
    *  @param ndnsType the ndnsType of the response, for user-defined type, just set it NDNS_RAW
    *  @param version the version of the response and rrset, default is Unix Timestamp
-   *  @param content the content of the response
-   *  @param dskName the DSK to signed the response, default is the zone's DSK
+   *  @param contents the content of the response
+   *  @param dskCertName the DSK to signed the response, default is the zone's DSK
    *  @param ttl the ttl of the rrset
-    */
+   */
   void
   addRrSet(const Name& zoneName,
            const Name& label,
@@ -155,11 +158,11 @@
    *  For other cases, the data will be added directly without any modification.
    *
    *  @param zoneName the name of the zone to hold the rrset
-   *  @param dataPath the path to the supplied data
+   *  @param inFile the path to the supplied data
    *  @param ttl the ttl of the rrset
-   *  @param dskName the DSK to signed the special case, default is the zone's DSK
+   *  @param dskCertName the DSK to signed the special case, default is the zone's DSK
    *  @param encoding the encoding of the input file
-    */
+   */
   void
   addRrSet(const Name& zoneName,
            const std::string& inFile = DEFAULT_IO,
@@ -169,16 +172,16 @@
 
   /** @brief remove rrset from the NDNS local database
    *
-   *  @param zonName the name of the zone holding the rrset
+   *  @param zoneName the name of the zone holding the rrset
    *  @param label rrset's label
    *  @param type rrset's type
-    */
+   */
   void
   removeRrSet(const Name& zoneName, const Name& label, const name::Component& type);
 
   /** @brief output the raw data of the selected rrset
    *
-   *  @param zonName the name of the zone holding the rrset
+   *  @param zoneName the name of the zone holding the rrset
    *  @param label rrset's label
    *  @param type rrset's type
    *  @param os the ostream to print information to
@@ -203,23 +206,23 @@
   /** @brief lists all existing zones within this name server.
    *
    *  @param os the ostream to print information to
-    */
+   */
   void
   listAllZones(std::ostream& os);
 
 private:
   /** @brief add ID-CERT to the NDNS local database
-    */
+   */
   void
   addIdCert(Zone& zone, shared_ptr<IdentityCertificate> cert, const time::seconds& ttl);
 
   /** @brief add zone to the NDNS local database
-    */
+   */
   void
   addZone(Zone& zone);
 
   /** @brief remove zone from the NDNS local database
-    */
+   */
   void
   removeZone(Zone& zone);
 
diff --git a/src/validator.hpp b/src/validator.hpp
index dc7f656..030c1fb 100644
--- a/src/validator.hpp
+++ b/src/validator.hpp
@@ -51,8 +51,6 @@
 
   /**
    * @brief the callback function which is called after validation finishes
-   * @param[in] callback The function is called after validation finishes, no matter validation
-   * succeeds or fails
    */
   explicit
   Validator(Face& face, const std::string& confFile = VALIDATOR_CONF_FILE);
