diff --git a/daemon/fw/strategy.cpp b/daemon/fw/strategy.cpp
index 8762e24..7212c52 100644
--- a/daemon/fw/strategy.cpp
+++ b/daemon/fw/strategy.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  Regents of the University of California,
+ * Copyright (c) 2014-2022,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -297,7 +297,7 @@
 
   const fib::Entry* fibEntry = nullptr;
   for (const auto& delegation : fh) {
-    fibEntry = &fib.findLongestPrefixMatch(delegation.name);
+    fibEntry = &fib.findLongestPrefixMatch(delegation);
     if (fibEntry->hasNextHops()) {
       if (fibEntry->getPrefix().size() == 0) {
         // in consumer region, return the default route
@@ -305,7 +305,7 @@
       }
       else {
         // in default-free zone, use the first delegation that finds a FIB entry
-        NFD_LOG_TRACE("lookupFib delegation=" << delegation.name << " found=" << fibEntry->getPrefix());
+        NFD_LOG_TRACE("lookupFib delegation=" << delegation << " found=" << fibEntry->getPrefix());
       }
       return *fibEntry;
     }
diff --git a/daemon/table/network-region-table.cpp b/daemon/table/network-region-table.cpp
index 4ede386..5869d18 100644
--- a/daemon/table/network-region-table.cpp
+++ b/daemon/table/network-region-table.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  Regents of the University of California,
+ * Copyright (c) 2014-2022,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -28,11 +28,11 @@
 namespace nfd {
 
 bool
-NetworkRegionTable::isInProducerRegion(const ndn::DelegationList& forwardingHint) const
+NetworkRegionTable::isInProducerRegion(span<const Name> forwardingHint) const
 {
   for (const Name& regionName : *this) {
     for (const auto& delegation : forwardingHint) {
-      if (delegation.name.isPrefixOf(regionName)) {
+      if (delegation.isPrefixOf(regionName)) {
         return true;
       }
     }
diff --git a/daemon/table/network-region-table.hpp b/daemon/table/network-region-table.hpp
index e531a45..96acf87 100644
--- a/daemon/table/network-region-table.hpp
+++ b/daemon/table/network-region-table.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2021,  Regents of the University of California,
+ * Copyright (c) 2014-2022,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -28,8 +28,6 @@
 
 #include "core/common.hpp"
 
-#include <ndn-cxx/delegation-list.hpp>
-
 namespace nfd {
 
 /** \brief stores a collection of producer region names
@@ -48,11 +46,11 @@
    *  \retval false the Interest has not reached a producer region
    *
    *  If any delegation name in the forwarding hint is a prefix of any region name,
-   *  the Interest has reached the producer region and should be forwarded according to ‎its Name;
+   *  the Interest has reached the producer region and should be forwarded according to its Name;
    *  otherwise, the Interest should be forwarded according to the forwarding hint.
    */
   bool
-  isInProducerRegion(const ndn::DelegationList& forwardingHint) const;
+  isInProducerRegion(span<const Name> forwardingHint) const;
 };
 
 } // namespace nfd
