Now everything suppose to work, but testing is necessary to determine how well it works.
diff --git a/model/ccnx-pit-impl.h b/model/ccnx-pit-impl.h
index 9dfd62b..d03134c 100644
--- a/model/ccnx-pit-impl.h
+++ b/model/ccnx-pit-impl.h
@@ -25,55 +25,13 @@
 #include "../utils/trie-with-policy.h"
 #include "../utils/empty-policy.h"
 #include "../utils/persistent-policy.h"
+
+#include "ccnx-pit-entry-impl.h"
+
 #include "ns3/ccnx-name-components.h"
 
 namespace ns3 {
 
-template<class Pit>
-class CcnxPitEntryImpl : public CcnxPitEntry
-{
-public:
-  CcnxPitEntryImpl (CcnxPit &pit,
-                    Ptr<const CcnxInterestHeader> header,
-                    Ptr<CcnxFibEntry> fibEntry)
-  : CcnxPitEntry (pit, header, fibEntry)
-  , item_ (0)
-  {
-    static_cast<Pit&> (m_container).i_time.insert (*this);    
-  }
-  
-  virtual ~CcnxPitEntryImpl ()
-  {
-    static_cast<Pit&> (m_container).i_time.erase (*this);
-  }
-
-  // to make sure policies work
-  void
-  SetTrie (typename Pit::super::iterator item) { item_ = item; }
-
-  typename Pit::super::iterator to_iterator () { return item_; }
-  typename Pit::super::const_iterator to_iterator () const { return item_; }
-
-public:
-  boost::intrusive::set_member_hook<> time_hook_;
-  
-private:
-  typename Pit::super::iterator item_;
-};
-
-template<class T>
-struct TimestampIndex
-{
-  bool
-  operator () (const T &a, const T &b) const
-  {
-    return a.GetExpireTime () < b.GetExpireTime ();
-  }
-};
-
-////////////////////////////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////
-
 /**
  * \ingroup ccnx
  * \brief Class implementing Pending Interests Table
@@ -91,8 +49,6 @@
                                    > super;
   typedef CcnxPitEntryImpl< CcnxPitImpl > entry;
 
-  // typedef CcnxPitEntryImpl::trie super;
-
   /**
    * \brief Interface ID
    *
@@ -136,8 +92,8 @@
   Next (Ptr<CcnxPitEntry>);
   
 protected:
-  // inherited from CcnxPit
-  virtual void DoCleanExpired ();
+  void RescheduleCleaning ();
+  void CleanExpired ();
   
   // inherited from Object class                                                                                                                                                        
   virtual void NotifyNewAggregate (); ///< @brief Even when object is aggregated to another Object
@@ -151,6 +107,7 @@
   SetMaxSize (uint32_t maxSize);
   
 private:
+  EventId m_cleanEvent;
   Ptr<CcnxFib> m_fib; ///< \brief Link to FIB table
 
   // indexes
@@ -160,8 +117,8 @@
                         boost::intrusive::member_hook< entry,
                                                        boost::intrusive::set_member_hook<>,
                                                        &entry::time_hook_>
-                        > expireTimeIndexType;
-  expireTimeIndexType i_time; 
+                        > time_index;
+  time_index i_time; 
                         
   friend class CcnxPitEntryImpl< CcnxPitImpl >;
 };