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 >;
 };
