diff --git a/tools/ping/client/statistics-collector.hpp b/tools/ping/client/statistics-collector.hpp
index ee67f80..9622717 100644
--- a/tools/ping/client/statistics-collector.hpp
+++ b/tools/ping/client/statistics-collector.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2015-2016,  Arizona Board of Regents.
+/*
+ * Copyright (c) 2015-2021,  Arizona Board of Regents.
  *
  * This file is part of ndn-tools (Named Data Networking Essential Tools).
  * See AUTHORS.md for complete list of ndn-tools authors and contributors.
@@ -16,9 +16,9 @@
  * You should have received a copy of the GNU General Public License along with
  * ndn-tools, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
  *
- * @author: Eric Newberry <enewberry@email.arizona.edu>
- * @author: Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
- * @author: Teng Liang <philoliang@email.arizona.edu>
+ * @author Eric Newberry <enewberry@email.arizona.edu>
+ * @author Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
+ * @author Teng Liang <philoliang@email.arizona.edu>
  */
 
 #ifndef NDN_TOOLS_PING_CLIENT_STATISTICS_COLLECTOR_HPP
@@ -41,7 +41,7 @@
   int nSent;                                    //!< number of pings sent
   int nReceived;                                //!< number of pings received
   int nNacked;                                  //!< number of nacks received
-  time::steady_clock::TimePoint pingStartTime;  //!< time pings started
+  time::steady_clock::time_point pingStartTime; //!< time pings started
   double minRtt;                                //!< minimum round trip time
   double maxRtt;                                //!< maximum round trip time
   double packetLossRate;                        //!< packet loss rate
@@ -67,16 +67,14 @@
   StatisticsCollector(Ping& ping, const Options& options);
 
   /**
-   * @brief Compute ping statistics as structure
+   * @brief Compute and return ping statistics as structure
    */
   Statistics
-  computeStatistics();
+  computeStatistics() const;
 
 PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   /**
    * @brief Called when a Data packet is received
-   *
-   * @param rtt round trip time
    */
   void
   recordData(Rtt rtt);
@@ -99,7 +97,7 @@
   int m_nSent;
   int m_nReceived;
   int m_nNacked;
-  time::steady_clock::TimePoint m_pingStartTime;
+  time::steady_clock::time_point m_pingStartTime;
   double m_minRtt;
   double m_maxRtt;
   double m_sumRtt;
