Be more careful during final cleanup process (all ccnx objects are now properly destroyed)
diff --git a/model/ccnx-fib.cc b/model/ccnx-fib.cc
index f8c5956..d473197 100644
--- a/model/ccnx-fib.cc
+++ b/model/ccnx-fib.cc
@@ -199,6 +199,7 @@
 CcnxFib::DoDispose (void)
 {
   m_node = 0;
+  clear ();
   Object::DoDispose ();
 }
 
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index 823ddbe..63c9049 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -133,10 +133,12 @@
   m_node = 0;
 
   // Force delete on objects
+  m_forwardingStrategy = 0; // there is a reference to PIT stored in here
   m_rit = 0;
   m_pit = 0;
   m_contentStore = 0;
-  
+  m_fib = 0;
+
   // m_forwardingStrategy = 0;
   Object::DoDispose ();
 }
diff --git a/model/ccnx-pit.cc b/model/ccnx-pit.cc
index 86484ef..f51aa33 100644
--- a/model/ccnx-pit.cc
+++ b/model/ccnx-pit.cc
@@ -61,6 +61,20 @@
   clear ();
 }
 
+void 
+CcnxPit::NotifyNewAggregate ()
+{
+}
+
+void 
+CcnxPit::DoDispose ()
+{
+  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 fb437a9..16a3283 100644
--- a/model/ccnx-pit.h
+++ b/model/ccnx-pit.h
@@ -180,6 +180,11 @@
    */
   void SetFib (Ptr<CcnxFib> fib);
 
+protected:
+  // inherited from Object class                                                                                                                                                        
+  virtual void NotifyNewAggregate ();
+  virtual void DoDispose ();
+
 public:
    PitBucket				 maxBucketsPerFace; // maximum number of buckets. Automatically computed based on link capacity
   // // averaging over 1 second (bandwidth * 1second)
diff --git a/model/ccnx-rit.cc b/model/ccnx-rit.cc
index 3536ab5..32c9ddb 100644
--- a/model/ccnx-rit.cc
+++ b/model/ccnx-rit.cc
@@ -86,6 +86,20 @@
 }
 
 void
+CcnxRit::NotifyNewAggregate ()
+{
+}
+
+void
+CcnxRit::DoDispose ()
+{
+  if (m_cleanupEvent.IsRunning ())
+    m_cleanupEvent.Cancel (); // cancel any scheduled cleanup events                                                                                                                     
+
+  clear ();
+}
+
+void
 CcnxRit::SetRitTimeout (const Time &timeout)
 {
   m_ritTimeout = timeout;
diff --git a/model/ccnx-rit.h b/model/ccnx-rit.h
index ba5a133..501f409 100644
--- a/model/ccnx-rit.h
+++ b/model/ccnx-rit.h
@@ -188,6 +188,11 @@
    */
   Time GetCleanupTimeout () const;
 
+protected:
+  // inherited from Object class                                                                                                                                                        
+  virtual void NotifyNewAggregate ();
+  virtual void DoDispose ();
+
 private:
   /**
    * \brief Periodic even to clean up stalled entries