diff --git a/src/clients/iterative-query-controller.cpp b/src/clients/iterative-query-controller.cpp
index ccb9451..e923e77 100644
--- a/src/clients/iterative-query-controller.cpp
+++ b/src/clients/iterative-query-controller.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2020, Regents of the University of California.
+ * Copyright (c) 2014-2022, Regents of the University of California.
  *
  * This file is part of NDNS (Named Data Networking Domain Name Service).
  * See AUTHORS.md for complete list of NDNS authors and contributors.
@@ -238,7 +238,7 @@
 
   // addLink
   if (m_lastLink.hasWire()) {
-    query.setDelegationListFromLink(Link(m_lastLink));
+    query.setForwardingHintFromLink(Link(m_lastLink));
   }
 
   switch (m_step) {
diff --git a/src/clients/query.cpp b/src/clients/query.cpp
index 9bc5c60..d008d3b 100644
--- a/src/clients/query.cpp
+++ b/src/clients/query.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.
  *
  * This file is part of NDNS (Named Data Networking Domain Name Service).
  * See AUTHORS.md for complete list of NDNS authors and contributors.
@@ -47,13 +47,7 @@
 
   m_zone = zone;
 
-  if (!interest.getForwardingHint().empty()) {
-    m_delegationList = interest.getForwardingHint();
-  }
-  else {
-    m_delegationList = DelegationList();
-  }
-
+  m_forwardingHint.assign(interest.getForwardingHint().begin(), interest.getForwardingHint().end());
 
   size_t len = zone.size();
   m_queryType = interest.getName().get(len);
@@ -75,17 +69,15 @@
   Interest interest(name);
   interest.setCanBePrefix(true);
   interest.setInterestLifetime(m_interestLifetime);
-  if (!m_delegationList.empty()) {
-    interest.setForwardingHint(m_delegationList);
-  }
+  interest.setForwardingHint(m_forwardingHint);
 
   return interest;
 }
 
 void
-Query::setDelegationListFromLink(const Link& link)
+Query::setForwardingHintFromLink(const Link& link)
 {
-  m_delegationList = link.getDelegationList();
+  m_forwardingHint.assign(link.getDelegationList().begin(), link.getDelegationList().end());
 }
 
 std::ostream&
diff --git a/src/clients/query.hpp b/src/clients/query.hpp
index bd7ff25..68f26ee 100644
--- a/src/clients/query.hpp
+++ b/src/clients/query.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2020, Regents of the University of California.
+ * Copyright (c) 2014-2022, Regents of the University of California.
  *
  * This file is part of NDNS (Named Data Networking Domain Name Service).
  * See AUTHORS.md for complete list of NDNS authors and contributors.
@@ -60,7 +60,7 @@
   fromInterest(const Name& zone, const Interest& interest);
 
   void
-  setDelegationListFromLink(const Link& link);
+  setForwardingHintFromLink(const Link& link);
 
   bool
   operator==(const Query& other) const
@@ -170,21 +170,21 @@
   }
 
   /**
-   * @brief set link object
+   * @brief set ForwardingHint
    */
   void
-  setDelegationList(const DelegationList& delegations)
+  setForwardingHint(std::vector<Name> forwardingHint)
   {
-    m_delegationList = delegations;
+    m_forwardingHint = std::move(forwardingHint);
   }
 
   /**
-   * @brief get Link object
+   * @brief get ForwardingHint
    */
-  const DelegationList&
-  getDelegationList() const
+  span<const Name>
+  getForwardingHint() const
   {
-    return m_delegationList;
+    return m_forwardingHint;
   }
 
 private:
@@ -193,7 +193,7 @@
   Name m_rrLabel;
   name::Component m_rrType;
   time::milliseconds m_interestLifetime;
-  DelegationList m_delegationList;
+  std::vector<Name> m_forwardingHint;
 };
 
 std::ostream&
