diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index 6a4fae6..823ddbe 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -131,6 +131,12 @@
     }
   m_faces.clear ();
   m_node = 0;
+
+  // Force delete on objects
+  m_rit = 0;
+  m_pit = 0;
+  m_contentStore = 0;
+  
   // m_forwardingStrategy = 0;
   Object::DoDispose ();
 }
@@ -497,14 +503,14 @@
   CcnxPitEntryIncomingFaceContainer::type::iterator inFace = pitEntry->m_incoming.find (incomingFace);
   CcnxPitEntryOutgoingFaceContainer::type::iterator outFace = pitEntry->m_outgoing.find (incomingFace);
     
-     NS_LOG_INFO("Before (pitEntry != m_pit->end()) && (pitEntry->m_timerExpired == false)");
+  NS_LOG_INFO("Before (pitEntry != m_pit->end()) && (pitEntry->m_timerExpired == false)");
   if ((pitEntry != m_pit->end()) && (pitEntry->m_timerExpired == false))
     {
         NS_LOG_INFO("Entering (pitEntry != m_pit->end()) && (pitEntry->m_timerExpired == false)");
         
-        if(inFace->m_face == NULL)
+        if(inFace->m_face == 0)
             NS_LOG_INFO("in face is null");
-        if(outFace->m_face == NULL)
+        if(outFace->m_face == 0)
             NS_LOG_INFO("outface is null");
         if(outFace == pitEntry->m_outgoing.end())
             NS_LOG_INFO("OUTFACE = END");
diff --git a/model/ccnx-pit.cc b/model/ccnx-pit.cc
index 7e57b19..86484ef 100644
--- a/model/ccnx-pit.cc
+++ b/model/ccnx-pit.cc
@@ -28,28 +28,10 @@
 
 namespace ns3 {
 
-// NS_OBJECT_ENSURE_REGISTERED (CcnxPit);
+NS_OBJECT_ENSURE_REGISTERED (CcnxPit);
 
 using namespace __ccnx_private;
 
-// size_t
-// PitEntry::numberOfPromisingInterests(e_pi ) const
-// {
-//   size_t count = 0;
-
-//   BOOST_FOREACH (const CcnxPitOutgoingInterest &interest, m_outgoingInterests)
-//     {
-//     }
-//   for( PitOutgoingConstIterator i = outgoingInterests.begin();
-// 	   i!=outgoingInterests.end();
-// 	   i++ )
-// 	{
-// 	  if( !i->waitingInVain ) count++;
-// 	}
-
-//   return count;
-// }
-
 TypeId 
 CcnxPit::GetTypeId ()
 {
@@ -71,6 +53,14 @@
 {
 }
 
+CcnxPit::~CcnxPit ()
+{
+  if (m_cleanupEvent.IsRunning ())
+    m_cleanupEvent.Cancel (); // cancel any scheduled cleanup events
+
+  clear ();
+}
+
 void
 CcnxPit::SetCleanupTimeout (const Time &timeout)
 {
diff --git a/model/ccnx-pit.h b/model/ccnx-pit.h
index ed724fe..fb437a9 100644
--- a/model/ccnx-pit.h
+++ b/model/ccnx-pit.h
@@ -117,6 +117,11 @@
    */
   CcnxPit ();
 
+  /**
+   * \brief Destructor
+   */
+  virtual ~CcnxPit ();
+
   /*CcnxPitEntryContainer::type::iterator
   Add (const CcnxInterestHeader &header, CcnxFibEntryContainer::type::iterator fibEntry, Ptr<CcnxFace> face);*/
   
@@ -191,7 +196,7 @@
   EventId m_cleanupEvent;   ///< \brief Cleanup event
 
   Ptr<CcnxFib> m_fib; ///< \brief Link to FIB table
-  PitBucket	m_bucketsPerFace;	///< \brief pending interface counter per face
+  PitBucket    m_bucketsPerFace; ///< \brief pending interface counter per face
 };
 
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/model/ccnx-rit.cc b/model/ccnx-rit.cc
index 6a7e556..3536ab5 100644
--- a/model/ccnx-rit.cc
+++ b/model/ccnx-rit.cc
@@ -75,7 +75,15 @@
 {
 }
 
-CcnxRit::~CcnxRit( ) { }
+CcnxRit::~CcnxRit( )
+{
+  NS_LOG_FUNCTION_NOARGS ();
+  
+  if (m_cleanupEvent.IsRunning ())
+    m_cleanupEvent.Cancel (); // cancel any scheduled cleanup events
+
+  clear ();
+}
 
 void
 CcnxRit::SetRitTimeout (const Time &timeout)
@@ -111,7 +119,7 @@
 CcnxRit::WasRecentlySatisfied (const CcnxInterestHeader &header)
 {
   NS_LOG_FUNCTION_NOARGS ();
-    std::pair<CcnxRitByNonce::type::iterator,CcnxRitByNonce::type::iterator>
+  std::pair<CcnxRitByNonce::type::iterator,CcnxRitByNonce::type::iterator>
     entries = get<nonce> ().equal_range (header.GetNonce ());
   
   if (entries.first == end ())
