diff --git a/model/ccnx-fib-impl.cc b/model/ccnx-fib-impl.cc
index ba970fd..9f9394e 100644
--- a/model/ccnx-fib-impl.cc
+++ b/model/ccnx-fib-impl.cc
@@ -91,12 +91,12 @@
 CcnxFib::iterator
 CcnxFibImpl::Add (const Ptr<const CcnxNameComponents> &prefix, Ptr<CcnxFace> face, int32_t metric)
 {
-  NS_LOG_FUNCTION (this);
-  // NS_LOG_FUNCTION(this->GetObject<Node> ()->GetId () << boost::cref(*prefix) << boost::cref(*face) << metric);
+  NS_LOG_FUNCTION (this->GetObject<Node> ()->GetId () << boost::cref(*prefix) << boost::cref(*face) << metric);
 
   // will add entry if doesn't exists, or just return an iterator to the existing entry
-  Ptr<CcnxFibEntry> newEntry = Create<CcnxFibEntry> (prefix);
+  Ptr<CcnxFibEntryImpl> newEntry = Create<CcnxFibEntryImpl> (prefix);
   std::pair< super::iterator, bool > result = super::insert (*prefix, newEntry);
+  newEntry->SetTrie (result.first);
   
   NS_ASSERT_MSG (face != NULL, "Trying to modify NULL face");
   
diff --git a/model/ccnx-fib-impl.h b/model/ccnx-fib-impl.h
index 5ef9610..071c07d 100644
--- a/model/ccnx-fib-impl.h
+++ b/model/ccnx-fib-impl.h
@@ -29,11 +29,39 @@
 
 namespace ns3 {
 
+class CcnxFibEntryImpl : public CcnxFibEntry
+{
+public:
+  typedef ndnSIM::trie_with_policy<
+    CcnxNameComponents,
+    ndnSIM::smart_pointer_payload_traits<CcnxFibEntryImpl>,
+    ndnSIM::empty_policy_traits
+    > trie;
+
+  CcnxFibEntryImpl (const Ptr<const CcnxNameComponents> &prefix)
+    : CcnxFibEntry (prefix)
+    , item_ (0)
+  {
+  }
+
+  void
+  SetTrie (trie::iterator item)
+  {
+    item_ = item;
+  }
+
+  trie::iterator to_iterator () { return item_; }
+  trie::const_iterator to_iterator () const { return item_; }
+  
+private:
+  trie::iterator item_;
+};
+
 struct CcnxFibEntryContainer
 {
   typedef ndnSIM::trie_with_policy<
     CcnxNameComponents,
-    ndnSIM::smart_pointer_payload_traits<CcnxFibEntry>,
+    ndnSIM::smart_pointer_payload_traits<CcnxFibEntryImpl>,
     ndnSIM::empty_policy_traits
     > type;
 };
@@ -140,14 +168,9 @@
    */
   template<typename Modifier>
   bool
-  modify (CcnxFib::iterator position, Modifier mod)
+  modify (CcnxFib::iterator item, Modifier mod)
   {
-    mod (*position);
-
-    return true;
-    // somehow we need to obtain trie iterator from the payload...    
-    // super::getPolicy ().
-    // return super::modify (position, mod);
+    return super::modify (StaticCast<CcnxFibEntryImpl> (item)->to_iterator (), mod);
   }
   
 protected:
@@ -162,7 +185,6 @@
    */
   void
   Remove (super::parent_trie &item, Ptr<CcnxFace> face);
-
   
 private:
   Ptr<Node> m_node;
