diff --git a/tests/chunks/consumer.t.cpp b/tests/chunks/consumer.t.cpp
index d0a37fd..126f13a 100644
--- a/tests/chunks/consumer.t.cpp
+++ b/tests/chunks/consumer.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2016-2022, Regents of the University of California,
+ * Copyright (c) 2016-2023, Regents of the University of California,
  *                          Colorado State University,
  *                          University Pierre & Marie Curie, Sorbonne University.
  *
@@ -59,7 +59,7 @@
       "consequat massa Donec pede justo,"
   };
 
-  util::DummyClientFace face;
+  DummyClientFace face;
   output_test_stream output("");
   Consumer cons(security::getAcceptAllValidator(), output);
 
@@ -94,7 +94,7 @@
       "consequat massa Donec pede justo,"
   };
 
-  util::DummyClientFace face;
+  DummyClientFace face;
   output_test_stream output("");
   Consumer cons(security::getAcceptAllValidator(), output);
 
@@ -148,7 +148,7 @@
 
 BOOST_FIXTURE_TEST_CASE(RunBasic, IoFixture)
 {
-  util::DummyClientFace face(m_io);
+  DummyClientFace face(m_io);
   Options options;
   Consumer consumer(security::getAcceptAllValidator());
 
diff --git a/tests/chunks/discover-version.t.cpp b/tests/chunks/discover-version.t.cpp
index a07ecce..01e360e 100644
--- a/tests/chunks/discover-version.t.cpp
+++ b/tests/chunks/discover-version.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2016-2022, Regents of the University of California,
+ * Copyright (c) 2016-2023, Regents of the University of California,
  *                          Colorado State University,
  *                          University Pierre & Marie Curie, Sorbonne University.
  *
@@ -60,7 +60,7 @@
 protected:
   const Name name = "/ndn/chunks/test";
   const uint64_t version = 1449227841747;
-  util::DummyClientFace face{m_io};
+  DummyClientFace face{m_io};
   Options opt;
   unique_ptr<DiscoverVersion> discover;
   std::optional<Name> discoveredName;
diff --git a/tests/chunks/pipeline-interests-fixture.hpp b/tests/chunks/pipeline-interests-fixture.hpp
index ddfc82b..215f544 100644
--- a/tests/chunks/pipeline-interests-fixture.hpp
+++ b/tests/chunks/pipeline-interests-fixture.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2016-2022, Regents of the University of California,
+ * Copyright (c) 2016-2023, Regents of the University of California,
  *                          Colorado State University,
  *                          University Pierre & Marie Curie, Sorbonne University.
  *
@@ -77,7 +77,7 @@
   }
 
 protected:
-  util::DummyClientFace face{m_io};
+  DummyClientFace face{m_io};
   Name name{"/ndn/chunks/test"};
   uint64_t nDataSegments = 0;
   bool hasFailed = false;
diff --git a/tests/chunks/producer.t.cpp b/tests/chunks/producer.t.cpp
index fec11c6..34e601b 100644
--- a/tests/chunks/producer.t.cpp
+++ b/tests/chunks/producer.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2016-2022,  Regents of the University of California,
+ * Copyright (c) 2016-2023,  Regents of the University of California,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University.
  *
@@ -51,7 +51,7 @@
   }
 
 protected:
-  util::DummyClientFace face{m_io, {true, true}};
+  DummyClientFace face{m_io, {true, true}};
   Name prefix = "/ndn/chunks/test";
   Producer::Options options;
   uint64_t version = 1449227841747;
diff --git a/tests/peek/ndnpeek.t.cpp b/tests/peek/ndnpeek.t.cpp
index 6e8869f..e7162b0 100644
--- a/tests/peek/ndnpeek.t.cpp
+++ b/tests/peek/ndnpeek.t.cpp
@@ -68,7 +68,7 @@
   }
 
 protected:
-  ndn::util::DummyClientFace face{m_io};
+  DummyClientFace face{m_io};
   output_test_stream output;
   unique_ptr<NdnPeek> peek;
 };
diff --git a/tests/peek/ndnpoke.t.cpp b/tests/peek/ndnpoke.t.cpp
index 14fe305..b20f377 100644
--- a/tests/peek/ndnpoke.t.cpp
+++ b/tests/peek/ndnpoke.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,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -59,7 +59,7 @@
   }
 
 protected:
-  ndn::util::DummyClientFace face{m_io, m_keyChain, {true, WANT_PREFIX_REG_REPLY}};
+  DummyClientFace face{m_io, m_keyChain, {true, WANT_PREFIX_REG_REPLY}};
   std::stringstream payload{"Hello, world!\n"};
   unique_ptr<NdnPoke> poke;
 };
diff --git a/tests/ping/client/ping.t.cpp b/tests/ping/client/ping.t.cpp
index a008271..b414fa0 100644
--- a/tests/ping/client/ping.t.cpp
+++ b/tests/ping/client/ping.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  Arizona Board of Regents.
+ * Copyright (c) 2014-2023,  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.
@@ -35,7 +35,7 @@
 
 BOOST_FIXTURE_TEST_CASE(Basic, IoFixture)
 {
-  util::DummyClientFace face(m_io, {true, true});
+  DummyClientFace face(m_io, {true, true});
   Options pingOptions;
   pingOptions.prefix = "/test-prefix";
   pingOptions.shouldAllowStaleData = false;
diff --git a/tests/ping/client/statistics-collector.t.cpp b/tests/ping/client/statistics-collector.t.cpp
index 9d5423a..5d3e0d3 100644
--- a/tests/ping/client/statistics-collector.t.cpp
+++ b/tests/ping/client/statistics-collector.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  Arizona Board of Regents.
+ * Copyright (c) 2014-2023,  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.
@@ -44,7 +44,7 @@
   }
 
 protected:
-  util::DummyClientFace face;
+  DummyClientFace face;
   Options pingOptions{makeOptions()};
   Ping pingProgram{face, pingOptions};
   StatisticsCollector sc{pingProgram, pingOptions};
diff --git a/tests/ping/integrated.t.cpp b/tests/ping/integrated.t.cpp
index 0b95ba3..6994beb 100644
--- a/tests/ping/integrated.t.cpp
+++ b/tests/ping/integrated.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2015-2022,  Arizona Board of Regents.
+ * Copyright (c) 2015-2023,  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.
@@ -51,7 +51,7 @@
 
   template<typename Packet>
   void
-  receive(util::DummyClientFace& face, const Packet& pkt)
+  receive(DummyClientFace& face, const Packet& pkt)
   {
     m_io.post([=, &face] {
       if (!wantLoss) {
@@ -69,8 +69,8 @@
   }
 
 protected:
-  util::DummyClientFace serverFace{m_io, m_keyChain, {false, true}};
-  util::DummyClientFace clientFace{m_io, m_keyChain, {false, true}};
+  DummyClientFace serverFace{m_io, m_keyChain, {false, true}};
+  DummyClientFace clientFace{m_io, m_keyChain, {false, true}};
   std::unique_ptr<server::PingServer> server;
   std::unique_ptr<client::Ping> client;
   bool wantLoss = false;
diff --git a/tests/ping/server/ping-server.t.cpp b/tests/ping/server/ping-server.t.cpp
index b5c9948..05a7d84 100644
--- a/tests/ping/server/ping-server.t.cpp
+++ b/tests/ping/server/ping-server.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  Arizona Board of Regents.
+ * Copyright (c) 2014-2023,  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.
@@ -59,7 +59,7 @@
   }
 
 protected:
-  util::DummyClientFace face{m_io, m_keyChain, {false, true}};
+  DummyClientFace face{m_io, m_keyChain, {false, true}};
   Options pingOptions{makeOptions()};
   PingServer pingServer{face, m_keyChain, pingOptions};
 };
diff --git a/tools/chunks/catchunks/discover-version.hpp b/tools/chunks/catchunks/discover-version.hpp
index 6a05727..3f6620e 100644
--- a/tools/chunks/catchunks/discover-version.hpp
+++ b/tools/chunks/catchunks/discover-version.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2016-2022, Regents of the University of California,
+ * Copyright (c) 2016-2023, Regents of the University of California,
  *                          Colorado State University,
  *                          University Pierre & Marie Curie, Sorbonne University.
  *
@@ -51,12 +51,12 @@
   /**
    * @brief Signal emitted when the versioned name of Data is found.
    */
-  util::Signal<DiscoverVersion, Name> onDiscoverySuccess;
+  signal::Signal<DiscoverVersion, Name> onDiscoverySuccess;
 
   /**
    * @brief Signal emitted when a failure occurs.
    */
-  util::Signal<DiscoverVersion, std::string> onDiscoveryFailure;
+  signal::Signal<DiscoverVersion, std::string> onDiscoveryFailure;
 
   void
   run();
diff --git a/tools/chunks/catchunks/pipeline-interests-adaptive.hpp b/tools/chunks/catchunks/pipeline-interests-adaptive.hpp
index 7b7aad8..28e6207 100644
--- a/tools/chunks/catchunks/pipeline-interests-adaptive.hpp
+++ b/tools/chunks/catchunks/pipeline-interests-adaptive.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2016-2022, Regents of the University of California,
+ * Copyright (c) 2016-2023, Regents of the University of California,
  *                          Colorado State University,
  *                          University Pierre & Marie Curie, Sorbonne University.
  *
@@ -94,7 +94,7 @@
    * The callback function should be: `void(nanoseconds age, double cwnd)`, where `age` is the
    * time since the pipeline started and `cwnd` is the new congestion window size (in segments).
    */
-  util::Signal<PipelineInterestsAdaptive, time::nanoseconds, double> afterCwndChange;
+  signal::Signal<PipelineInterestsAdaptive, time::nanoseconds, double> afterCwndChange;
 
   struct RttSample
   {
@@ -108,7 +108,7 @@
   /**
    * @brief Signals when a new RTT sample has been taken.
    */
-  util::Signal<PipelineInterestsAdaptive, RttSample> afterRttMeasurement;
+  signal::Signal<PipelineInterestsAdaptive, RttSample> afterRttMeasurement;
 
 protected:
   DECLARE_SIGNAL_EMIT(afterCwndChange)
diff --git a/tools/chunks/putchunks/producer.cpp b/tools/chunks/putchunks/producer.cpp
index 6b305cd..ab07517 100644
--- a/tools/chunks/putchunks/producer.cpp
+++ b/tools/chunks/putchunks/producer.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2016-2022, Regents of the University of California,
+ * Copyright (c) 2016-2023, Regents of the University of California,
  *                          Colorado State University,
  *                          University Pierre & Marie Curie, Sorbonne University.
  *
@@ -53,7 +53,7 @@
   if (!m_options.isQuiet) {
     std::cerr << "Loading input ...\n";
   }
-  util::Segmenter segmenter(m_keyChain, m_options.signingInfo);
+  Segmenter segmenter(m_keyChain, m_options.signingInfo);
   m_store = segmenter.segment(is, m_versionedPrefix, m_options.maxSegmentSize, m_options.freshnessPeriod);
 
   // register m_prefix without Interest handler
diff --git a/tools/ping/client/ping.hpp b/tools/ping/client/ping.hpp
index f78d761..b2e4bfd 100644
--- a/tools/ping/client/ping.hpp
+++ b/tools/ping/client/ping.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2015-2022,  Arizona Board of Regents.
+ * Copyright (c) 2015-2023,  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.
@@ -62,7 +62,7 @@
    * @param seq ping sequence number
    * @param rtt round trip time
    */
-  util::Signal<Ping, uint64_t, Rtt> afterData;
+  signal::Signal<Ping, uint64_t, Rtt> afterData;
 
   /**
    * @brief Signals on the return of a Nack
@@ -71,19 +71,19 @@
    * @param rtt round trip time
    * @param header the received Network NACK header
    */
-  util::Signal<Ping, uint64_t, Rtt, lp::NackHeader> afterNack;
+  signal::Signal<Ping, uint64_t, Rtt, lp::NackHeader> afterNack;
 
   /**
    * @brief Signals on timeout of a packet
    *
    * @param seq ping sequence number
    */
-  util::Signal<Ping, uint64_t> afterTimeout;
+  signal::Signal<Ping, uint64_t> afterTimeout;
 
   /**
    * @brief Signals when finished pinging
    */
-  util::Signal<Ping> afterFinish;
+  signal::Signal<Ping> afterFinish;
 
   /**
    * @brief Start sending ping interests
diff --git a/tools/ping/server/ping-server.hpp b/tools/ping/server/ping-server.hpp
index e9127c0..0289da2 100644
--- a/tools/ping/server/ping-server.hpp
+++ b/tools/ping/server/ping-server.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2015-2022,  Arizona Board of Regents.
+ * Copyright (c) 2015-2023,  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.
@@ -55,12 +55,12 @@
    *
    * @param name incoming interest name
    */
-  util::Signal<PingServer, Name> afterReceive;
+  signal::Signal<PingServer, Name> afterReceive;
 
   /**
    * @brief Signals when finished pinging
    */
-  util::Signal<PingServer> afterFinish;
+  signal::Signal<PingServer> afterFinish;
 
   /** @brief starts ping server
    *
