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