diff --git a/daemon/fw/forwarder.cpp b/daemon/fw/forwarder.cpp
index b53b82d..f4e5ac9 100644
--- a/daemon/fw/forwarder.cpp
+++ b/daemon/fw/forwarder.cpp
@@ -176,7 +176,7 @@
   ++m_counters.nCsMisses;
 
   // insert in-record
-  pitEntry->insertOrUpdateInRecord(const_cast<Face&>(inFace), interest);
+  pitEntry->insertOrUpdateInRecord(const_cast<Face&>(inFace), 0, interest);
 
   // set PIT expiry timer to the time that the last PIT in-record expires
   auto lastExpiring = std::max_element(pitEntry->in_begin(), pitEntry->in_end(), &compare_InRecord_expiry);
@@ -230,7 +230,7 @@
                 " interest=" << pitEntry->getName());
 
   // insert out-record
-  pitEntry->insertOrUpdateOutRecord(outFace, interest);
+  pitEntry->insertOrUpdateOutRecord(outFace, 0, interest);
 
   // send Interest
   outFace.sendInterest(interest);
@@ -309,7 +309,7 @@
     this->insertDeadNonceList(*pitEntry, &inFace);
 
     // delete PIT entry's out-record
-    pitEntry->deleteOutRecord(inFace);
+    pitEntry->deleteOutRecord(inFace, 0);
   }
   // when more than one PIT entry is matched, trigger strategy: before satisfy Interest,
   // and send Data to all matched out faces
@@ -343,7 +343,7 @@
 
       // clear PIT entry's in and out records
       pitEntry->clearInRecords();
-      pitEntry->deleteOutRecord(inFace);
+      pitEntry->deleteOutRecord(inFace, 0);
     }
 
     // foreach pending downstream
@@ -425,7 +425,7 @@
   }
 
   // has out-record?
-  pit::OutRecordCollection::iterator outRecord = pitEntry->getOutRecord(inFace);
+  pit::OutRecordCollection::iterator outRecord = pitEntry->getOutRecord(inFace, 0);
   // if no out-record found, drop
   if (outRecord == pitEntry->out_end()) {
     NFD_LOG_DEBUG("onIncomingNack face=" << inFace.getId() <<
@@ -472,7 +472,7 @@
   }
 
   // has in-record?
-  pit::InRecordCollection::iterator inRecord = pitEntry->getInRecord(outFace);
+  pit::InRecordCollection::iterator inRecord = pitEntry->getInRecord(outFace, 0);
 
   // if no in-record found, drop
   if (inRecord == pitEntry->in_end()) {
@@ -499,7 +499,7 @@
   nackPkt.setHeader(nack);
 
   // erase in-record
-  pitEntry->deleteInRecord(outFace);
+  pitEntry->deleteInRecord(outFace, 0);
 
   // send Nack on face
   const_cast<Face&>(outFace).sendNack(nackPkt);
@@ -548,7 +548,7 @@
   }
   else {
     // insert outgoing Nonce of a specific face
-    auto outRecord = pitEntry.getOutRecord(*upstream);
+    auto outRecord = pitEntry.getOutRecord(*upstream, 0);
     if (outRecord != pitEntry.getOutRecords().end()) {
       m_deadNonceList.add(pitEntry.getName(), outRecord->getLastNonce());
     }
