diff --git a/daemon/common/config-file.hpp b/daemon/common/config-file.hpp
index 39cc2ed..fac8da8 100644
--- a/daemon/common/config-file.hpp
+++ b/daemon/common/config-file.hpp
@@ -32,27 +32,32 @@
 
 namespace nfd {
 
-/** \brief a config file section
+/**
+ * \brief A configuration file section.
  */
 using ConfigSection = boost::property_tree::ptree;
 
-/** \brief an optional config file section
+/**
+ * \brief An optional configuration file section.
  */
 using OptionalConfigSection = boost::optional<const ConfigSection&>;
 
-/** \brief callback to process a config file section
+/**
+ * \brief Callback to process a configuration file section.
  */
 using ConfigSectionHandler = std::function<void(const ConfigSection& section, bool isDryRun,
                                                 const std::string& filename)>;
 
-/** \brief callback to process a config file section without a \p ConfigSectionHandler
+/**
+ * \brief Callback to process a configuration file section without a #ConfigSectionHandler.
  */
 using UnknownConfigSectionHandler = std::function<void(const std::string& filename,
                                                        const std::string& sectionName,
                                                        const ConfigSection& section,
                                                        bool isDryRun)>;
 
-/** \brief configuration file parsing utility
+/**
+ * \brief Configuration file parsing utility.
  */
 class ConfigFile : noncopyable
 {
@@ -80,7 +85,7 @@
                        bool isDryRun);
 
 public: // parse helpers
-  /** \brief parse a config option that can be either "yes" or "no"
+  /** \brief Parse a config option that can be either "yes" or "no".
    *  \retval true "yes"
    *  \retval false "no"
    *  \throw Error the value is neither "yes" nor "no"
@@ -95,7 +100,7 @@
   }
 
   /**
-   * \brief parse a numeric (integral or floating point) config option
+   * \brief Parse a numeric (integral or floating point) config option.
    * \tparam T an arithmetic type
    *
    * \return the numeric value of the parsed option
@@ -125,7 +130,7 @@
   }
 
   /**
-   * \brief check that a value is within the inclusive range [min, max]
+   * \brief Check that a value is within the inclusive range [min, max].
    * \throw Error the value is out of the acceptable range
    */
   template<typename T>
@@ -142,7 +147,7 @@
   }
 
 public: // setup and parsing
-  /// \brief setup notification of configuration file sections
+  /// \brief Setup notification of configuration file sections.
   void
   addSectionHandler(const std::string& sectionName,
                     ConfigSectionHandler subscriber);
diff --git a/daemon/common/counter.hpp b/daemon/common/counter.hpp
index 4619b35..805ebdf 100644
--- a/daemon/common/counter.hpp
+++ b/daemon/common/counter.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2019,  Regents of the University of California,
+ * Copyright (c) 2014-2022,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -30,24 +30,27 @@
 
 namespace nfd {
 
-/** \brief represents a counter that encloses an integer value
+/**
+ * \brief Represents a counter that encloses an integer value.
  *
- *  SimpleCounter is noncopyable, because increment should be called on the counter,
- *  not a copy of it; it's implicitly convertible to an integral type to be observed
+ * SimpleCounter is noncopyable, because increment should be called on the counter,
+ * not a copy of it; it's implicitly convertible to an integral type to be observed.
  */
 class SimpleCounter : noncopyable
 {
 public:
   typedef uint64_t rep;
 
-  /** \brief observe the counter
+  /**
+   * \brief Observe the counter's value.
    */
   operator rep() const noexcept
   {
     return m_value;
   }
 
-  /** \brief replace the counter value
+  /**
+   * \brief Replace the counter's value.
    */
   void
   set(rep value) noexcept
@@ -59,14 +62,14 @@
   rep m_value = 0;
 };
 
-/** \brief represents a counter of number of packets
+/** \brief Represents a counter of number of packets.
  *
  *  \warning The counter value may wrap after exceeding the range of underlying integer type.
  */
 class PacketCounter : public SimpleCounter
 {
 public:
-  /** \brief increment the counter by one
+  /** \brief Increment the counter by one.
    */
   PacketCounter&
   operator++() noexcept
@@ -77,14 +80,14 @@
   // postfix ++ operator is not provided because it's not needed
 };
 
-/** \brief represents a counter of number of bytes
+/** \brief Represents a counter of number of bytes.
  *
  *  \warning The counter value may wrap after exceeding the range of underlying integer type.
  */
 class ByteCounter : public SimpleCounter
 {
 public:
-  /** \brief increase the counter
+  /** \brief Increase the counter.
    */
   ByteCounter&
   operator+=(rep n) noexcept
@@ -94,7 +97,7 @@
   }
 };
 
-/** \brief provides a counter that observes the size of a table
+/** \brief Provides a counter that observes the size of a table.
  *  \tparam T a type that provides a size() const member function
  *
  *  if table not specified in constructor, it can be added later by invoking observe()
@@ -117,7 +120,7 @@
     m_table = table;
   }
 
-  /** \brief observe the counter
+  /** \brief Observe the counter.
    */
   operator Rep() const
   {
diff --git a/daemon/common/privilege-helper.hpp b/daemon/common/privilege-helper.hpp
index b26dce6..cdd4d05 100644
--- a/daemon/common/privilege-helper.hpp
+++ b/daemon/common/privilege-helper.hpp
@@ -35,10 +35,12 @@
 class PrivilegeHelper
 {
 public:
-  /** \brief represents a serious seteuid/gid failure
+  /**
+   * \brief Indicates a serious seteuid/setegid failure.
    *
-   *  This should only be caught by main as part of a graceful program termination.
-   *  \note This is not an std::exception and NDN_THROW should not be used.
+   * This should only be caught by main as part of a graceful program termination.
+   *
+   * \note This is not an std::exception and NDN_THROW should not be used.
    */
   class Error
   {
