diff --git a/src/handles/read-handle.hpp b/src/handles/read-handle.hpp
index 753e3d4..780a9c6 100644
--- a/src/handles/read-handle.hpp
+++ b/src/handles/read-handle.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2019, Regents of the University of California.
+ * Copyright (c) 2014-2023, Regents of the University of California.
  *
  * This file is part of NDN repo-ng (Next generation of NDN repository).
  * See AUTHORS.md for complete list of repo-ng authors and contributors.
@@ -81,8 +81,8 @@
 private:
   size_t m_prefixSubsetLength;
   std::map<ndn::Name, RegisteredDataPrefix> m_insertedDataPrefixes;
-  ndn::util::signal::ScopedConnection afterDataDeletionConnection;
-  ndn::util::signal::ScopedConnection afterDataInsertionConnection;
+  ndn::signal::ScopedConnection afterDataDeletionConnection;
+  ndn::signal::ScopedConnection afterDataInsertionConnection;
   Face& m_face;
   RepoStorage& m_storageHandle;
 };
diff --git a/src/handles/write-handle.cpp b/src/handles/write-handle.cpp
index 1e30b5e..b9c51f0 100644
--- a/src/handles/write-handle.cpp
+++ b/src/handles/write-handle.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022, Regents of the University of California.
+ * Copyright (c) 2014-2023, Regents of the University of California.
  *
  * This file is part of NDN repo-ng (Next generation of NDN repository).
  * See AUTHORS.md for complete list of repo-ng authors and contributors.
@@ -148,10 +148,10 @@
   fetchName.appendSegment(startBlockId);
   Interest interest(fetchName);
 
-  ndn::util::SegmentFetcher::Options options;
+  ndn::SegmentFetcher::Options options;
   options.initCwnd = initialCredit;
   options.interestLifetime = m_interestLifetime;
-  auto fetcher = ndn::util::SegmentFetcher::start(face, interest, m_validator, options);
+  auto fetcher = ndn::SegmentFetcher::start(face, interest, m_validator, options);
   fetcher->onError.connect([] (uint32_t, const auto& errorMsg) {
     NDN_LOG_ERROR("Error: " << errorMsg);
   });
@@ -164,7 +164,7 @@
 }
 
 void
-WriteHandle::onSegmentData(ndn::util::SegmentFetcher& fetcher, const Data& data, ProcessId processId)
+WriteHandle::onSegmentData(ndn::SegmentFetcher& fetcher, const Data& data, ProcessId processId)
 {
   auto it = m_processes.find(processId);
   if (it == m_processes.end()) {
@@ -210,7 +210,7 @@
 }
 
 void
-WriteHandle::onSegmentTimeout(ndn::util::SegmentFetcher& fetcher, ProcessId processId)
+WriteHandle::onSegmentTimeout(ndn::SegmentFetcher& fetcher, ProcessId processId)
 {
   NDN_LOG_DEBUG("SegTimeout");
   if (m_processes.count(processId) == 0) {
diff --git a/src/handles/write-handle.hpp b/src/handles/write-handle.hpp
index 04ed3f5..50cd335 100644
--- a/src/handles/write-handle.hpp
+++ b/src/handles/write-handle.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022, Regents of the University of California.
+ * Copyright (c) 2014-2023, Regents of the University of California.
  *
  * This file is part of NDN repo-ng (Next generation of NDN repository).
  * See AUTHORS.md for complete list of repo-ng authors and contributors.
@@ -124,13 +124,13 @@
    * @brief fetch segmented data
    */
   void
-  onSegmentData(ndn::util::SegmentFetcher& fetcher, const Data& data, ProcessId processId);
+  onSegmentData(ndn::SegmentFetcher& fetcher, const Data& data, ProcessId processId);
 
   /**
    * @brief handle when fetching segmented data timeout
    */
   void
-  onSegmentTimeout(ndn::util::SegmentFetcher& fetcher, ProcessId processId);
+  onSegmentTimeout(ndn::SegmentFetcher& fetcher, ProcessId processId);
 
   /**
    * @brief initiate fetching segmented data
diff --git a/src/storage/repo-storage.hpp b/src/storage/repo-storage.hpp
index 62d8fa4..597daa8 100644
--- a/src/storage/repo-storage.hpp
+++ b/src/storage/repo-storage.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022, Regents of the University of California.
+ * Copyright (c) 2014-2023, Regents of the University of California.
  *
  * This file is part of NDN repo-ng (Next generation of NDN repository).
  * See AUTHORS.md for complete list of repo-ng authors and contributors.
@@ -84,8 +84,8 @@
   readData(const Interest& interest) const;
 
 public:
-  ndn::util::Signal<RepoStorage, ndn::Name> afterDataInsertion;
-  ndn::util::Signal<RepoStorage, ndn::Name> afterDataDeletion;
+  ndn::signal::Signal<RepoStorage, ndn::Name> afterDataInsertion;
+  ndn::signal::Signal<RepoStorage, ndn::Name> afterDataDeletion;
 
 private:
   Storage& m_storage;
diff --git a/tests/unit/read-handle.t.cpp b/tests/unit/read-handle.t.cpp
index a6bfed5..9d36b18 100644
--- a/tests/unit/read-handle.t.cpp
+++ b/tests/unit/read-handle.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  Regents of the University of California.
+ * Copyright (c) 2014-2023,  Regents of the University of California.
  *
  * This file is part of NDN repo-ng (Next generation of NDN repository).
  * See AUTHORS.md for complete list of repo-ng authors and contributors.
@@ -66,7 +66,7 @@
   }
 
 public:
-  ndn::util::DummyClientFace face;
+  ndn::DummyClientFace face;
   ndn::KeyChain keyChain;
   ndn::Scheduler scheduler;
 
