diff --git a/src/util/digest.hpp b/src/util/digest.hpp
index 0fdb3a3..ea1538e 100644
--- a/src/util/digest.hpp
+++ b/src/util/digest.hpp
@@ -64,7 +64,7 @@
   Digest();
 
   /**
-   * @brief Create digest of the input stream @p
+   * @brief Create digest of the input stream @p is
    * @param is input stream
    */
   explicit
diff --git a/src/util/ethernet.cpp b/src/util/ethernet.cpp
index c128d37..40d9391 100644
--- a/src/util/ethernet.cpp
+++ b/src/util/ethernet.cpp
@@ -45,7 +45,7 @@
   data()[5] = a6;
 }
 
-Address::Address(const uint8_t octets[])
+Address::Address(const uint8_t octets[ADDR_LEN])
 {
   std::copy(octets, octets + size(), begin());
 }
@@ -137,10 +137,8 @@
 } // namespace ndn
 
 
-using ndn::util::ethernet::Address;
-
 std::size_t
-std::hash<Address>::operator()(const Address& a) const noexcept
+std::hash<ndn::util::ethernet::Address>::operator()(const ndn::util::ethernet::Address& a) const noexcept
 {
   return boost::hash_range(a.cbegin(), a.cend());
 }
diff --git a/src/util/face-uri.hpp b/src/util/face-uri.hpp
index 0e51012..f7cbe41 100644
--- a/src/util/face-uri.hpp
+++ b/src/util/face-uri.hpp
@@ -164,9 +164,10 @@
    *  \param onSuccess function to call after this FaceUri is converted to canonical form
    *  \note A new FaceUri in canonical form will be created; this FaceUri is unchanged.
    *  \param onFailure function to call if this FaceUri cannot be converted to canonical form
-   *  \param timeout maximum allowable duration of the operations.
-   *                 It's intentional not to provide a default value: the caller should set
-   *                 a reasonable value in balance between network delay and user experience.
+   *  \param io        reference to `boost::asio::io_service` instance
+   *  \param timeout   maximum allowable duration of the operations.
+   *                   It's intentional not to provide a default value: the caller should set
+   *                   a reasonable value in balance between network delay and user experience.
    */
   void
   canonize(const CanonizeSuccessCallback& onSuccess,
diff --git a/src/util/in-memory-storage.hpp b/src/util/in-memory-storage.hpp
index 9bec775..5e800c2 100644
--- a/src/util/in-memory-storage.hpp
+++ b/src/util/in-memory-storage.hpp
@@ -157,7 +157,8 @@
   find(const Name& name);
 
   /** @brief Deletes in-memory storage entry by prefix by default.
-   *  @param[in] isPrefix If it is clear, the function will only delete the
+   *  @param prefix Exact name of a prefix of the data to remove
+   *  @param isPrefix If false, the function will only delete the
    *  entry completely matched with the prefix according to canonical ordering.
    *  For this case, user should substitute the prefix with full name.
    *
diff --git a/src/util/segment-fetcher.hpp b/src/util/segment-fetcher.hpp
index f2fbe38..fb8f6d7 100644
--- a/src/util/segment-fetcher.hpp
+++ b/src/util/segment-fetcher.hpp
@@ -47,31 +47,31 @@
 /**
  * @brief Utility class to fetch latest version of the segmented data
  *
- * SegmentFetcher assumes that the data is named /<prefix>/<version>/<segment>,
+ * SegmentFetcher assumes that the data is named `/<prefix>/<version>/<segment>`,
  * where:
- * - <prefix> is the specified prefix,
- * - <version> is an unknown version that needs to be discovered, and
- * - <segment> is a segment number (number of segments is unknown and is controlled
+ * - `<prefix>` is the specified prefix,
+ * - `<version>` is an unknown version that needs to be discovered, and
+ * - `<segment>` is a segment number (number of segments is unknown and is controlled
  *   by `FinalBlockId` field in at least the last Data packet
  *
  * The following logic is implemented in SegmentFetcher:
  *
  * 1. Express first interest to discover version:
  *
- *    >> Interest: /<prefix>?ChildSelector=1&MustBeFresh=yes
+ *    >> Interest: `/<prefix>?ChildSelector=1&MustBeFresh=yes`
  *
- * 2. Infer the latest version of Data:  <version> = Data.getName().get(-2)
+ * 2. Infer the latest version of Data:  `<version> = Data.getName().get(-2)`
  *
  * 3. If segment number in the retrieved packet == 0, go to step 5.
  *
  * 4. Send Interest for segment 0:
  *
- *    >> Interest: /<prefix>/<version>/<segment=0>
+ *    >> Interest: `/<prefix>/<version>/<segment=0>`
  *
  * 5. Keep sending Interests for the next segment while the retrieved Data does not have
  *    FinalBlockId or FinalBlockId != Data.getName().get(-1).
  *
- *    >> Interest: /<prefix>/<version>/<segment=(N+1))>
+ *    >> Interest: `/<prefix>/<version>/<segment=(N+1))>`
  *
  * 6. Fire onCompletion callback with memory block that combines content part from all
  *    segmented objects.
