diff --git a/core/scheduler.hpp b/core/scheduler.hpp
index 199a8e2..491408a 100644
--- a/core/scheduler.hpp
+++ b/core/scheduler.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2018,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -27,6 +27,7 @@
 #define NFD_CORE_SCHEDULER_HPP
 
 #include "common.hpp"
+
 #include <ndn-cxx/util/scheduler.hpp>
 
 namespace nfd {
@@ -34,40 +35,40 @@
 
 using ndn::Scheduler;
 
-/** \class EventId
- *  \brief Opaque type (shared_ptr) representing ID of a scheduled event
+/** \class nfd::scheduler::EventId
+ *  \brief Opaque handle for a scheduled event.
  */
 using ndn::EventId;
 
 using ndn::util::scheduler::EventCallback;
 
-/** \brief schedule an event
+/** \brief Schedule an event.
  */
 EventId
 schedule(time::nanoseconds after, const EventCallback& event);
 
-/** \brief cancel a scheduled event
+/** \brief Cancel a scheduled event.
  */
 void
 cancel(const EventId& eventId);
 
-/** \brief cancels an event automatically upon destruction
+/** \brief Cancels an event automatically upon destruction.
  */
 class ScopedEventId : noncopyable
 {
 public:
   ScopedEventId();
 
-  /** \brief implicit constructor from EventId
+  /** \brief Implicit constructor from EventId.
    *  \param event the event to be cancelled upon destruction
    */
   ScopedEventId(const EventId& event);
 
-  /** \brief move constructor
+  /** \brief Move constructor.
    */
   ScopedEventId(ScopedEventId&& other);
 
-  /** \brief assigns an event
+  /** \brief Assigns an event.
    *
    *  If a different event has been assigned to this instance previously,
    *  that event will be cancelled immediately.
@@ -75,17 +76,16 @@
   ScopedEventId&
   operator=(const EventId& event);
 
-  /** \brief cancels the event
+  /** \brief Cancels the event.
    */
   ~ScopedEventId();
 
-  /** \brief cancels the event manually
+  /** \brief Cancels the event manually.
    */
   void
   cancel();
 
-  /** \brief releases the event so that it won't be disconnected
-   *         when this ScopedEventId is destructed
+  /** \brief Releases the event so that it won't be cancelled when this ScopedEventId is destructed.
    */
   void
   release();
@@ -95,7 +95,6 @@
 };
 
 } // namespace scheduler
-
 } // namespace nfd
 
 #endif // NFD_CORE_SCHEDULER_HPP
diff --git a/daemon/table/fib-entry.hpp b/daemon/table/fib-entry.hpp
index cf372ac..24489b9 100644
--- a/daemon/table/fib-entry.hpp
+++ b/daemon/table/fib-entry.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2018,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -36,15 +36,15 @@
 
 namespace fib {
 
-/** \class NextHopList
- *  \brief represents a collection of nexthops
+/** \class nfd::fib::NextHopList
+ *  \brief Represents a collection of nexthops.
  *
- *  This type has these methods as public API:
- *    iterator<NextHop> begin()
- *    iterator<NextHop> end()
- *    size_t size()
+ *  This type has the following member functions:
+ *  - `iterator<NextHop> begin()`
+ *  - `iterator<NextHop> end()`
+ *  - `size_t size()`
  */
-typedef std::vector<fib::NextHop> NextHopList;
+using NextHopList = std::vector<NextHop>;
 
 /** \brief represents a FIB entry
  */
diff --git a/daemon/table/pit.hpp b/daemon/table/pit.hpp
index cfebb0a..6e8af8a 100644
--- a/daemon/table/pit.hpp
+++ b/daemon/table/pit.hpp
@@ -32,15 +32,15 @@
 namespace nfd {
 namespace pit {
 
-/** \class DataMatchResult
- *  \brief an unordered iterable of all PIT entries matching Data
+/** \class nfd::pit::DataMatchResult
+ *  \brief An unordered iterable of all PIT entries matching Data.
  *
- *  This type shall support:
+ *  This type has the following member functions:
  *  - `iterator<shared_ptr<Entry>> begin()`
  *  - `iterator<shared_ptr<Entry>> end()`
  *  - `size_t size() const`
  */
-typedef std::vector<shared_ptr<Entry>> DataMatchResult;
+using DataMatchResult = std::vector<shared_ptr<Entry>>;
 
 /** \brief represents the Interest Table
  */
