diff --git a/model/ccnx-fib-impl.h b/model/ccnx-fib-impl.h
index 09bd237..cd42ae0 100644
--- a/model/ccnx-fib-impl.h
+++ b/model/ccnx-fib-impl.h
@@ -118,15 +118,15 @@
   virtual Ptr<const CcnxFibEntry>
   Next (Ptr<const CcnxFibEntry> item);
   
-  /**
-   * @brief Modify element in container
-   */
-  template<typename Modifier>
-  bool
-  modify (Ptr<CcnxFibEntry> item, Modifier mod)
-  {
-    return super::modify (StaticCast<CcnxFibEntryImpl> (item)->to_iterator (), mod);
-  }
+  // /**
+  //  * @brief Modify element in container
+  //  */
+  // template<typename Modifier>
+  // bool
+  // modify (Ptr<CcnxFibEntry> item, Modifier mod)
+  // {
+  //   return super::modify (StaticCast<CcnxFibEntryImpl> (item)->to_iterator (), mod);
+  // }
   
 protected:
   // inherited from Object class
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index d5f4438..928d015 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -335,9 +335,10 @@
                      ll::bind (&CcnxPitEntry::RemoveIncoming, ll::_1, incomingFace));
     }
 
-  StaticCast<CcnxFibImpl> (m_fib)->modify (pitEntry->m_fibEntry,
-                                            ll::bind (&CcnxFibEntry::UpdateStatus,
-                                                      ll::_1, incomingFace, CcnxFibFaceMetric::NDN_FIB_YELLOW));
+  pitEntry->m_fibEntry->UpdateStatus (incomingFace, CcnxFibFaceMetric::NDN_FIB_YELLOW);
+  // StaticCast<CcnxFibImpl> (m_fib)->modify (pitEntry->m_fibEntry,
+  //                                           ll::bind (&CcnxFibEntry::UpdateStatus,
+  //                                                     ll::_1, incomingFace, CcnxFibFaceMetric::NDN_FIB_YELLOW));
 
   if (pitEntry->m_incoming.size () == 0) // interest was actually satisfied
     {
@@ -486,9 +487,10 @@
 
       // ?? not sure if we need to do that ?? ...
       
-      StaticCast<CcnxFibImpl> (m_fib)->modify(pitEntry->m_fibEntry,
-                                               ll::bind (&CcnxFibEntry::UpdateStatus,
-                                                         ll::_1, incomingFace, CcnxFibFaceMetric::NDN_FIB_YELLOW));
+      pitEntry->m_fibEntry->UpdateStatus (incomingFace, CcnxFibFaceMetric::NDN_FIB_YELLOW);
+      // StaticCast<CcnxFibImpl> (m_fib)->modify(pitEntry->m_fibEntry,
+      //                                          ll::bind (&CcnxFibEntry::UpdateStatus,
+      //                                                    ll::_1, incomingFace, CcnxFibFaceMetric::NDN_FIB_YELLOW));
     }
   else
     if (!isNew && !isRetransmitted)
@@ -590,11 +592,12 @@
       // If we have sent interest for this data via this face, then update stats.
       if (out != pitEntry->m_outgoing.end ())
         {
-          StaticCast<CcnxFibImpl> (m_fib)->modify (pitEntry->m_fibEntry,
-                                                   ll::bind (&CcnxFibEntry::UpdateFaceRtt,
-                                                             ll::_1,
-                                                             incomingFace,
-                                                             Simulator::Now () - out->m_sendTime));
+          pitEntry->m_fibEntry->UpdateFaceRtt (incomingFace, Simulator::Now () - out->m_sendTime);
+          // StaticCast<CcnxFibImpl> (m_fib)->modify (pitEntry->m_fibEntry,
+          //                                          ll::bind (&CcnxFibEntry::UpdateFaceRtt,
+          //                                                    ll::_1,
+          //                                                    incomingFace,
+          //                                                    Simulator::Now () - out->m_sendTime));
         }
       else
         {
@@ -617,9 +620,10 @@
         }
 
       // Update metric status for the incoming interface in the corresponding FIB entry
-      StaticCast<CcnxFibImpl>(m_fib)->modify (pitEntry->m_fibEntry,
-                                               ll::bind (&CcnxFibEntry::UpdateStatus, ll::_1,
-                                                         incomingFace, CcnxFibFaceMetric::NDN_FIB_GREEN));
+      pitEntry->m_fibEntry->UpdateStatus (incomingFace, CcnxFibFaceMetric::NDN_FIB_GREEN);
+      // StaticCast<CcnxFibImpl>(m_fib)->modify (pitEntry->m_fibEntry,
+      //                                          ll::bind (&CcnxFibEntry::UpdateStatus, ll::_1,
+      //                                                    incomingFace, CcnxFibFaceMetric::NDN_FIB_GREEN));
   
       // Add or update entry in the content store
       m_contentStore->Add (header, payload);
diff --git a/model/ccnx-pit-impl.h b/model/ccnx-pit-impl.h
index e5a7f33..3f5fdfc 100644
--- a/model/ccnx-pit-impl.h
+++ b/model/ccnx-pit-impl.h
@@ -67,6 +67,8 @@
                   , protected CcnxPitEntryImpl::trie
 {
 public:
+  typedef CcnxPitEntryImpl::trie super;
+
   /**
    * \brief Interface ID
    *
@@ -102,6 +104,16 @@
 
   virtual void
   Print (std::ostream &os) const;
+
+  // /**
+  //  * @brief Modify element in container
+  //  */
+  // template<typename Modifier>
+  // bool
+  // modify (Ptr<CcnxPitEntry> item, Modifier mod)
+  // {
+  //   return super::modify (StaticCast<CcnxPitEntryImpl> (item)->to_iterator (), mod);
+  // }
   
 protected:
   // inherited from CcnxPit
