diff --git a/src/hello-protocol.hpp b/src/hello-protocol.hpp
index c1664bd..a50c2b5 100644
--- a/src/hello-protocol.hpp
+++ b/src/hello-protocol.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -83,7 +83,7 @@
   void
   processInterest(const ndn::Name& name, const ndn::Interest& interest);
 
-  ndn::util::signal::Signal<HelloProtocol, Statistics::PacketType> hpIncrementSignal;
+  ndn::util::Signal<HelloProtocol, Statistics::PacketType> hpIncrementSignal;
 
 private:
   /*! \brief Try to contact a neighbor via Hello protocol again
diff --git a/src/lsa/adj-lsa.cpp b/src/lsa/adj-lsa.cpp
index e6d2f6e..38edb63 100644
--- a/src/lsa/adj-lsa.cpp
+++ b/src/lsa/adj-lsa.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -25,7 +25,7 @@
 namespace nlsr {
 
 AdjLsa::AdjLsa(const ndn::Name& originRouter, uint64_t seqNo,
-               const ndn::time::system_clock::TimePoint& timepoint,
+               const ndn::time::system_clock::time_point& timepoint,
                uint32_t noLink, AdjacencyList& adl)
   : Lsa(originRouter, seqNo, timepoint)
   , m_noLink(noLink)
diff --git a/src/lsa/adj-lsa.hpp b/src/lsa/adj-lsa.hpp
index 43562a6..0c784b9 100644
--- a/src/lsa/adj-lsa.hpp
+++ b/src/lsa/adj-lsa.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -42,7 +42,7 @@
   AdjLsa() = default;
 
   AdjLsa(const ndn::Name& originR, uint64_t seqNo,
-         const ndn::time::system_clock::TimePoint& timepoint,
+         const ndn::time::system_clock::time_point& timepoint,
          uint32_t noLink, AdjacencyList& adl);
 
   AdjLsa(const ndn::Block& block);
diff --git a/src/lsa/coordinate-lsa.cpp b/src/lsa/coordinate-lsa.cpp
index fb268b2..b94d173 100644
--- a/src/lsa/coordinate-lsa.cpp
+++ b/src/lsa/coordinate-lsa.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -27,7 +27,7 @@
 namespace nlsr {
 
 CoordinateLsa::CoordinateLsa(const ndn::Name& originRouter, uint64_t seqNo,
-                             const ndn::time::system_clock::TimePoint& timepoint,
+                             const ndn::time::system_clock::time_point& timepoint,
                              double radius, std::vector<double> angles)
   : Lsa(originRouter, seqNo, timepoint)
   , m_hyperbolicRadius(radius)
diff --git a/src/lsa/coordinate-lsa.hpp b/src/lsa/coordinate-lsa.hpp
index c1d3a13..112e7d5 100644
--- a/src/lsa/coordinate-lsa.hpp
+++ b/src/lsa/coordinate-lsa.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -39,7 +39,7 @@
   CoordinateLsa() = default;
 
   CoordinateLsa(const ndn::Name& originRouter, uint64_t seqNo,
-                const ndn::time::system_clock::TimePoint& timepoint,
+                const ndn::time::system_clock::time_point& timepoint,
                 double radius, std::vector<double> angles);
 
   CoordinateLsa(const ndn::Block& block);
diff --git a/src/lsa/lsa.cpp b/src/lsa/lsa.cpp
index 66e5b2d..7d557dd 100644
--- a/src/lsa/lsa.cpp
+++ b/src/lsa/lsa.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -28,7 +28,7 @@
 namespace nlsr {
 
 Lsa::Lsa(const ndn::Name& originRouter, uint64_t seqNo,
-         ndn::time::system_clock::TimePoint expirationTimePoint)
+         ndn::time::system_clock::time_point expirationTimePoint)
   : m_originRouter(originRouter)
   , m_seqNo(seqNo)
   , m_expirationTimePoint(expirationTimePoint)
diff --git a/src/lsa/lsa.hpp b/src/lsa/lsa.hpp
index 89ddb85..7dc225a 100644
--- a/src/lsa/lsa.hpp
+++ b/src/lsa/lsa.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -56,7 +56,7 @@
 
 protected:
   Lsa(const ndn::Name& originRouter, uint64_t seqNo,
-      ndn::time::system_clock::TimePoint expirationTimePoint);
+      ndn::time::system_clock::time_point expirationTimePoint);
 
   Lsa() = default;
 
@@ -94,14 +94,14 @@
     return m_originRouter;
   }
 
-  const ndn::time::system_clock::TimePoint&
+  const ndn::time::system_clock::time_point&
   getExpirationTimePoint() const
   {
     return m_expirationTimePoint;
   }
 
   void
-  setExpirationTimePoint(const ndn::time::system_clock::TimePoint& lt)
+  setExpirationTimePoint(const ndn::time::system_clock::time_point& lt)
   {
     m_expirationTimePoint = lt;
     m_wire.reset();
@@ -138,7 +138,7 @@
 PUBLIC_WITH_TESTS_ELSE_PROTECTED:
   ndn::Name m_originRouter;
   uint64_t m_seqNo = 0;
-  ndn::time::system_clock::TimePoint m_expirationTimePoint;
+  ndn::time::system_clock::time_point m_expirationTimePoint;
   ndn::scheduler::ScopedEventId m_expiringEventId;
 
   mutable ndn::Block m_wire;
diff --git a/src/lsa/name-lsa.cpp b/src/lsa/name-lsa.cpp
index f578a06..90f946f 100644
--- a/src/lsa/name-lsa.cpp
+++ b/src/lsa/name-lsa.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -25,7 +25,7 @@
 namespace nlsr {
 
 NameLsa::NameLsa(const ndn::Name& originRouter, uint64_t seqNo,
-                 const ndn::time::system_clock::TimePoint& timepoint,
+                 const ndn::time::system_clock::time_point& timepoint,
                  const NamePrefixList& npl)
   : Lsa(originRouter, seqNo, timepoint)
 {
diff --git a/src/lsa/name-lsa.hpp b/src/lsa/name-lsa.hpp
index 5d6e02b..1705abc 100644
--- a/src/lsa/name-lsa.hpp
+++ b/src/lsa/name-lsa.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -38,7 +38,7 @@
   NameLsa() = default;
 
   NameLsa(const ndn::Name& originRouter, uint64_t seqNo,
-          const ndn::time::system_clock::TimePoint& timepoint,
+          const ndn::time::system_clock::time_point& timepoint,
           const NamePrefixList& npl);
 
   NameLsa(const ndn::Block& block);
diff --git a/src/lsdb.cpp b/src/lsdb.cpp
index 16d4a02..9467870 100644
--- a/src/lsdb.cpp
+++ b/src/lsdb.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -408,7 +408,7 @@
 
 void
 Lsdb::expressInterest(const ndn::Name& interestName, uint32_t timeoutCount, uint64_t incomingFaceId,
-                      ndn::time::steady_clock::TimePoint deadline)
+                      ndn::time::steady_clock::time_point deadline)
 {
   // increment SENT_LSA_INTEREST
   lsaIncrementSignal(Statistics::PacketType::SENT_LSA_INTEREST);
@@ -478,7 +478,7 @@
 
 void
 Lsdb::onFetchLsaError(uint32_t errorCode, const std::string& msg, const ndn::Name& interestName,
-                      uint32_t retransmitNo, const ndn::time::steady_clock::TimePoint& deadline,
+                      uint32_t retransmitNo, const ndn::time::steady_clock::time_point& deadline,
                       ndn::Name lsaName, uint64_t seqNo)
 {
   NLSR_LOG_DEBUG("Failed to fetch LSA: " << lsaName << ", Error code: " << errorCode
diff --git a/src/lsdb.hpp b/src/lsdb.hpp
index ec2e4a9..634b793 100644
--- a/src/lsdb.hpp
+++ b/src/lsdb.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -48,7 +48,7 @@
 
 namespace bmi = boost::multi_index;
 
-static constexpr ndn::time::seconds GRACE_PERIOD = 10_s;
+inline constexpr ndn::time::seconds GRACE_PERIOD = 10_s;
 
 enum class LsdbUpdate {
   INSTALLED,
diff --git a/src/publisher/dataset-interest-handler.cpp b/src/publisher/dataset-interest-handler.cpp
index 46b1ab8..60acd84 100644
--- a/src/publisher/dataset-interest-handler.cpp
+++ b/src/publisher/dataset-interest-handler.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -30,10 +30,10 @@
 
 INIT_LOGGER(DatasetInterestHandler);
 
-const ndn::PartialName ADJACENCIES_DATASET = ndn::PartialName("lsdb/adjacencies");
-const ndn::PartialName COORDINATES_DATASET = ndn::PartialName("lsdb/coordinates");
-const ndn::PartialName NAMES_DATASET = ndn::PartialName("lsdb/names");
-const ndn::PartialName RT_DATASET = ndn::PartialName("routing-table");
+const ndn::PartialName ADJACENCIES_DATASET{"lsdb/adjacencies"};
+const ndn::PartialName COORDINATES_DATASET{"lsdb/coordinates"};
+const ndn::PartialName NAMES_DATASET{"lsdb/names"};
+const ndn::PartialName RT_DATASET{"routing-table"};
 
 DatasetInterestHandler::DatasetInterestHandler(ndn::mgmt::Dispatcher& dispatcher,
                                                const Lsdb& lsdb,
diff --git a/src/route/routing-table-calculator.cpp b/src/route/routing-table-calculator.cpp
index 34bcfb6..a7419ce 100644
--- a/src/route/routing-table-calculator.cpp
+++ b/src/route/routing-table-calculator.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -35,12 +35,12 @@
 
 INIT_LOGGER(route.RoutingTableCalculator);
 
-const int EMPTY_PARENT = -12345;
-const double INF_DISTANCE = 2147483647;
-const int NO_MAPPING_NUM = -1;
-const int NO_NEXT_HOP = -12345;
-const double UNKNOWN_DISTANCE = -1.0;
-const double UNKNOWN_RADIUS   = -1.0;
+constexpr int EMPTY_PARENT = -12345;
+constexpr double INF_DISTANCE = 2147483647;
+constexpr int NO_MAPPING_NUM = -1;
+constexpr int NO_NEXT_HOP = -12345;
+constexpr double UNKNOWN_DISTANCE = -1.0;
+constexpr double UNKNOWN_RADIUS   = -1.0;
 
 void
 RoutingTableCalculator::allocateAdjMatrix()
diff --git a/tests/route/test-hyperbolic-calculator.cpp b/tests/route/test-hyperbolic-calculator.cpp
index f830c94..18a7d21 100644
--- a/tests/route/test-hyperbolic-calculator.cpp
+++ b/tests/route/test-hyperbolic-calculator.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -35,7 +35,8 @@
 
 using std::shared_ptr;
 using ndn::time::system_clock;
-static const system_clock::TimePoint MAX_TIME = system_clock::TimePoint::max();
+
+constexpr system_clock::time_point MAX_TIME = system_clock::time_point::max();
 
 class HyperbolicCalculatorFixture : public IoKeyChainFixture
 {
diff --git a/tests/route/test-link-state-calculator.cpp b/tests/route/test-link-state-calculator.cpp
index 46c27fe..397f779 100644
--- a/tests/route/test-link-state-calculator.cpp
+++ b/tests/route/test-link-state-calculator.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -34,8 +34,7 @@
 namespace nlsr {
 namespace test {
 
-static const ndn::time::system_clock::TimePoint MAX_TIME =
-  ndn::time::system_clock::TimePoint::max();
+constexpr ndn::time::system_clock::time_point MAX_TIME = ndn::time::system_clock::time_point::max();
 
 class LinkStateCalculatorFixture : public IoKeyChainFixture
 {
diff --git a/tests/route/test-name-prefix-table.cpp b/tests/route/test-name-prefix-table.cpp
index 9c9833f..1425603 100644
--- a/tests/route/test-name-prefix-table.cpp
+++ b/tests/route/test-name-prefix-table.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -315,7 +315,7 @@
 
 BOOST_FIXTURE_TEST_CASE(UpdateFromLsdb, NamePrefixTableFixture)
 {
-  ndn::time::system_clock::TimePoint testTimePoint =  ndn::time::system_clock::now();
+  auto testTimePoint = ndn::time::system_clock::now();
   NamePrefixList npl1;
   ndn::Name n1("name1");
   ndn::Name n2("name2");
diff --git a/tests/route/test-routing-table.cpp b/tests/route/test-routing-table.cpp
index 6bbe475..1e689a7 100644
--- a/tests/route/test-routing-table.cpp
+++ b/tests/route/test-routing-table.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California
  *
  * This file is part of NLSR (Named-data Link State Routing).
@@ -118,7 +118,7 @@
 
 BOOST_FIXTURE_TEST_CASE(UpdateFromLsdb, RoutingTableFixture)
 {
-  ndn::time::system_clock::TimePoint testTimePoint = ndn::time::system_clock::now() + 3600_s;
+  auto testTimePoint = ndn::time::system_clock::now() + 3600_s;
   ndn::Name router2("/router2");
   AdjLsa adjLsa(router2, 12, testTimePoint, 2, conf.getAdjacencyList());
   std::shared_ptr<Lsa> lsaPtr = std::make_shared<AdjLsa>(adjLsa);
diff --git a/tests/test-lsdb.cpp b/tests/test-lsdb.cpp
index add6706..bec64cb 100644
--- a/tests/test-lsdb.cpp
+++ b/tests/test-lsdb.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -147,8 +147,7 @@
   BOOST_CHECK(didFindInterest);
   interests.clear();
 
-  ndn::time::steady_clock::TimePoint deadline = ndn::time::steady_clock::now() +
-    ndn::time::seconds(LSA_REFRESH_TIME_MAX);
+  auto deadline = ndn::time::steady_clock::now() + ndn::time::seconds(LSA_REFRESH_TIME_MAX);
 
   // Simulate an LSA interest timeout
   lsdb.onFetchLsaError(ndn::util::SegmentFetcher::ErrorCode::INTEREST_TIMEOUT, "Timeout",
@@ -299,7 +298,7 @@
 
 BOOST_AUTO_TEST_CASE(LsdbRemoveAndExists)
 {
-  ndn::time::system_clock::TimePoint testTimePoint =  ndn::time::system_clock::now();
+  auto testTimePoint = ndn::time::system_clock::now();
   NamePrefixList npl1;
 
   std::string s1 = "name1";
@@ -336,7 +335,7 @@
   prefixes.insert(name2);
 
   std::string otherRouter("/ndn/site/%C1.router/other-router");
-  ndn::time::system_clock::TimePoint MAX_TIME = ndn::time::system_clock::TimePoint::max();
+  const auto MAX_TIME = ndn::time::system_clock::time_point::max();
 
   NameLsa lsa(otherRouter, 1, MAX_TIME, prefixes);
   lsdb.installLsa(std::make_shared<NameLsa>(lsa));
@@ -397,7 +396,7 @@
 
   // Install Name LSA
   NamePrefixList nameList;
-  NameLsa lsa(originRouter, 999, ndn::time::system_clock::TimePoint::max(), nameList);
+  NameLsa lsa(originRouter, 999, ndn::time::system_clock::time_point::max(), nameList);
 
   lsdb.installLsa(std::make_shared<NameLsa>(lsa));
 
diff --git a/tests/test-statistics.cpp b/tests/test-statistics.cpp
index f66fd10..5aa9855 100644
--- a/tests/test-statistics.cpp
+++ b/tests/test-statistics.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  The University of Memphis,
+ * Copyright (c) 2014-2023,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -104,7 +104,7 @@
     size_t sentBefore = collector.getStatistics().get(statsType);
 
     lsdb.expressInterest(ndn::Name(prefix + lsaType).appendNumber(seqNo), 0, 0,
-                         ndn::time::steady_clock::TimePoint::min());
+                         ndn::time::steady_clock::time_point::min());
     this->advanceClocks(ndn::time::milliseconds(1), 10);
 
     BOOST_CHECK_EQUAL(collector.getStatistics().get(statsType), sentBefore + 1);
@@ -293,7 +293,7 @@
 {
   ndn::Name routerName("/ndn/cs/%C1.Router/router1");
   uint32_t seqNo = 1;
-  ndn::time::system_clock::TimePoint MAX_TIME = ndn::time::system_clock::TimePoint::max();
+  const auto MAX_TIME = ndn::time::system_clock::time_point::max();
 
   // adjacency lsa
   ndn::Name adjInterest("/localhop/ndn/nlsr/LSA/cs/%C1.Router/router1/ADJACENCY/");
