diff --git a/src/publisher/dataset-interest-handler.cpp b/src/publisher/dataset-interest-handler.cpp
index 15a1eea..6e2e7d1 100644
--- a/src/publisher/dataset-interest-handler.cpp
+++ b/src/publisher/dataset-interest-handler.cpp
@@ -139,43 +139,51 @@
   context.end();
 }
 
-void
-DatasetInterestHandler::publishRtStatus(const ndn::Name& topPrefix, const ndn::Interest& interest,
-                                        ndn::mgmt::StatusDatasetContext& context)
-{
-  NLSR_LOG_DEBUG("Received interest for routing table:  " << interest);
-  tlv::RoutingTable tlvRoutingTable;
 
+std::vector<tlv::RoutingTable>
+DatasetInterestHandler::getTlvRTEntries()
+{
+  std::vector<tlv::RoutingTable> rtable;
   for (const auto& rte : m_routingTableEntries) {
+    tlv::RoutingTable tlvRoutingTable;
     std::shared_ptr<tlv::Destination> tlvDes = tlv::makeDes(rte);
     tlvRoutingTable.setDestination(*tlvDes);
-
     for (const auto& nh : rte.getNexthopList().getNextHops()) {
       tlv::NextHop tlvNexthop;
       tlvNexthop.setUri(nh.getConnectingFaceUri());
       tlvNexthop.setCost(nh.getRouteCost());
       tlvRoutingTable.addNexthops(tlvNexthop);
     }
-
-    const ndn::Block& wire = tlvRoutingTable.wireEncode();
-    context.append(wire);
+    rtable.push_back(tlvRoutingTable);
   }
   if (!m_dryRoutingTableEntries.empty()) {
-    for (const auto& dry_rte : m_dryRoutingTableEntries ) {
-        std::shared_ptr<tlv::Destination> tlvDes = tlv::makeDes(dry_rte);
-        tlvRoutingTable.setDestination(*tlvDes);
-
-        for (const auto& nh : dry_rte.getNexthopList().getNextHops()) {
-          tlv::NextHop tlvNexthop;
-          tlvNexthop.setUri(nh.getConnectingFaceUri());
-          tlvNexthop.setCost(nh.getRouteCost());
-          tlvRoutingTable.addNexthops(tlvNexthop);
-        }
-        const ndn::Block& wire = tlvRoutingTable.wireEncode();
-        context.append(wire);
+    for (const auto& dryRte : m_dryRoutingTableEntries) {
+      tlv::RoutingTable tlvRoutingTable;
+      std::shared_ptr<tlv::Destination> tlvDes = tlv::makeDes(dryRte);
+      tlvRoutingTable.setDestination(*tlvDes);
+      for (const auto& nh : dryRte.getNexthopList().getNextHops()) {
+        tlv::NextHop tlvNexthop;
+        tlvNexthop.setUri(nh.getConnectingFaceUri());
+        tlvNexthop.setCost(nh.getRouteCost());
+        tlvRoutingTable.addNexthops(tlvNexthop);
       }
+      rtable.push_back(tlvRoutingTable);
+    }
   }
+  return rtable;
+}
 
+void
+DatasetInterestHandler::publishRtStatus(const ndn::Name& topPrefix, const ndn::Interest& interest,
+                                        ndn::mgmt::StatusDatasetContext& context)
+{
+  NLSR_LOG_DEBUG("Received interest:  " << interest);
+  tlv::RoutingTableStatus rtStatus;
+  for (const tlv::RoutingTable& rt : getTlvRTEntries()) {
+    rtStatus.addRoutingTable(rt);
+  }
+  const ndn::Block& wire = rtStatus.wireEncode();
+  context.append(wire);
   context.end();
 }
 
@@ -200,7 +208,6 @@
       tlvAdj.setCost(adj.getLinkCost());
       tlvLsa.addAdjacency(tlvAdj);
     }
-
     lsas.push_back(tlvLsa);
   }
 
diff --git a/src/publisher/dataset-interest-handler.hpp b/src/publisher/dataset-interest-handler.hpp
index 00d8c1d..6e5169d 100644
--- a/src/publisher/dataset-interest-handler.hpp
+++ b/src/publisher/dataset-interest-handler.hpp
@@ -96,6 +96,11 @@
   void
   setDispatcher(ndn::mgmt::Dispatcher& dispatcher);
 
+  /*! \brief generate a TLV-format of routing table entry
+   */
+  std::vector<tlv::RoutingTable>
+  getTlvRTEntries();
+
   /*! \brief provide routing-table dataset
   */
   void
