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()
