diff --git a/model/ccnx-content-store.cc b/model/ccnx-content-store.cc
index 57bb414..bb8c613 100644
--- a/model/ccnx-content-store.cc
+++ b/model/ccnx-content-store.cc
@@ -53,8 +53,6 @@
   return tid;
 }
 
-CcnxContentObjectTail CcnxContentStoreEntry::m_tail;
-
 //////////////////////////////////////////////////////////////////////
 // Helper classes
 //////////////////////////////////////////////////////////////////////
@@ -103,17 +101,21 @@
 CcnxContentStoreEntry::CcnxContentStoreEntry (Ptr<CcnxContentObjectHeader> header, Ptr<const Packet> packet)
   : m_header (header)
 {
+  static CcnxContentObjectTail tail; ///< \internal for optimization purposes
+
   m_packet = packet->Copy ();
   m_packet->RemoveHeader (*header);
-  m_packet->RemoveTrailer (m_tail);
+  m_packet->RemoveTrailer (tail);
 }
 
 Ptr<Packet>
 CcnxContentStoreEntry::GetFullyFormedCcnxPacket () const
 {
+  static CcnxContentObjectTail tail; ///< \internal for optimization purposes
+
   Ptr<Packet> packet = m_packet->Copy ();
   packet->AddHeader (*m_header);
-  packet->AddTrailer (m_tail);
+  packet->AddTrailer (tail);
   return packet;
 }
 
diff --git a/model/ccnx-content-store.h b/model/ccnx-content-store.h
index 7f75e92..0bd8fb9 100644
--- a/model/ccnx-content-store.h
+++ b/model/ccnx-content-store.h
@@ -106,8 +106,6 @@
 private:
   Ptr<CcnxContentObjectHeader> m_header; ///< \brief non-modifiable CcnxContentObjectHeader
   Ptr<Packet> m_packet; ///< \brief non-modifiable content of the ContentObject packet
-
-  static CcnxContentObjectTail m_tail; ///< \internal for optimization purposes
 };
 
 /**
diff --git a/model/ccnx-fib.h b/model/ccnx-fib.h
index ef5d5ad..23e5323 100644
--- a/model/ccnx-fib.h
+++ b/model/ccnx-fib.h
@@ -291,7 +291,7 @@
    * \todo Implement exclude filters
    *
    * \param interest Interest packet header
-   * \returns If entry found a pair <valid_iterator, true> will be returned, otherwise <invalid_iterator, false>
+   * \returns If entry found a valid iterator will be returned, otherwise end ()
    */
   CcnxFibEntryContainer::type::iterator
   LongestPrefixMatch (const CcnxInterestHeader &interest) const;
diff --git a/model/ccnx-pit-entry.cc b/model/ccnx-pit-entry.cc
index a79f6b7..ddc471e 100644
--- a/model/ccnx-pit-entry.cc
+++ b/model/ccnx-pit-entry.cc
@@ -123,9 +123,12 @@
   entry.m_incoming.clear ();
 }
 
-CcnxPitEntry::UpdateFibStatus::UpdateFibStatus (Ptr<CcnxFace> face, CcnxFibFaceMetric::Status status)
+CcnxPitEntry::UpdateFibStatus::UpdateFibStatus (Ptr<CcnxFace> face,
+                                                CcnxFibFaceMetric::Status status,
+                                                Ptr<CcnxFib> fib)
   : m_face (face)
   , m_status (status)
+  , m_fib (fib)
 {
 }
 
@@ -133,7 +136,8 @@
 CcnxPitEntry::UpdateFibStatus::operator() (CcnxPitEntry &entry)
 {
   NS_ASSERT_MSG (false, "Broken");
-  // entry.m_fib->UpdateStatus (m_face, m_status);
+  m_fib->modify (m_fib->iterator_to (entry.m_fibEntry),
+                 CcnxFibEntry::UpdateStatus (m_face, m_status));
 }
 
 void
diff --git a/model/ccnx-pit-entry.h b/model/ccnx-pit-entry.h
index ac16c21..fa89b5e 100644
--- a/model/ccnx-pit-entry.h
+++ b/model/ccnx-pit-entry.h
@@ -189,11 +189,12 @@
    */
   struct UpdateFibStatus
   {
-    UpdateFibStatus (Ptr<CcnxFace> face, CcnxFibFaceMetric::Status status);
+    UpdateFibStatus (Ptr<CcnxFace> face, CcnxFibFaceMetric::Status status, Ptr<CcnxFib> fib);
     void operator() (CcnxPitEntry &entry);
   private:
     Ptr<CcnxFace> m_face;
     CcnxFibFaceMetric::Status m_status;
+    Ptr<CcnxFib> m_fib;
   };
 
   /**
