diff --git a/model/ccnx-bestroute-strategy.h b/model/ccnx-bestroute-strategy.h
index 8abaae9..d6f9a5a 100644
--- a/model/ccnx-bestroute-strategy.h
+++ b/model/ccnx-bestroute-strategy.h
@@ -45,16 +45,17 @@
 class CcnxBestRouteStrategy : public CcnxForwardingStrategy
 {
 public:
-    static TypeId GetTypeId (void);
+  static TypeId GetTypeId (void);
         
-    CcnxBestRouteStrategy ();
+  CcnxBestRouteStrategy ();
         
-    bool PropagateInterest  (CcnxPitEntryContainer::type::iterator pitEntry,
-                             CcnxFibEntryContainer::type::iterator fibEntry,
-                             const Ptr<CcnxFace> &incomingFace,
-                             Ptr<CcnxInterestHeader> &header,
-                             const Ptr<const Packet> &packet,
-                             SendCallback ucb);
+  virtual bool
+  PropagateInterest  (CcnxPitEntryContainer::type::iterator pitEntry,
+                      CcnxFibEntryContainer::type::iterator fibEntry,
+                      const Ptr<CcnxFace> &incomingFace,
+                      Ptr<CcnxInterestHeader> &header,
+                      const Ptr<const Packet> &packet,
+                      SendCallback ucb);
 };
 
 } //namespace ns3
diff --git a/model/ccnx-fib.cc b/model/ccnx-fib.cc
index d473197..8daa034 100644
--- a/model/ccnx-fib.cc
+++ b/model/ccnx-fib.cc
@@ -198,6 +198,7 @@
 void 
 CcnxFib::DoDispose (void)
 {
+  clear ();
   m_node = 0;
   clear ();
   Object::DoDispose ();
diff --git a/model/ccnx-flooding-strategy.h b/model/ccnx-flooding-strategy.h
index 5eb7a5d..b6c309d 100644
--- a/model/ccnx-flooding-strategy.h
+++ b/model/ccnx-flooding-strategy.h
@@ -18,7 +18,6 @@
  * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
  */
 
-
 #ifndef CCNX_FLOODING_STRATEGY_H
 #define CCNX_FLOODING_STRATEGY_H
 
@@ -38,23 +37,24 @@
 class CcnxInterestHeader;
     
 /**
-* \ingroup ccnx
-* \brief Flooding strategy
-*/
+ * \ingroup ccnx
+ * \brief Flooding strategy
+ */
 
 class CcnxFloodingStrategy : public CcnxForwardingStrategy
 {
 public:
-    static TypeId GetTypeId (void);
+  static TypeId GetTypeId (void);
         
-    CcnxFloodingStrategy ();
-          
-    bool PropagateInterest  (CcnxPitEntryContainer::type::iterator pitEntry,
-                             CcnxFibEntryContainer::type::iterator fibEntry,
-                             const Ptr<CcnxFace> &incomingFace,
-                             Ptr<CcnxInterestHeader> &header,
-                             const Ptr<const Packet> &packet,
-                             SendCallback ucb);
+  CcnxFloodingStrategy ();
+
+  virtual bool
+  PropagateInterest (CcnxPitEntryContainer::type::iterator pitEntry,
+                     CcnxFibEntryContainer::type::iterator fibEntry,
+                     const Ptr<CcnxFace> &incomingFace,
+                     Ptr<CcnxInterestHeader> &header,
+                     const Ptr<const Packet> &packet,
+                     SendCallback ucb);
 };
     
 } //namespace ns3
diff --git a/model/ccnx-forwarding-strategy.cc b/model/ccnx-forwarding-strategy.cc
index f048e6e..64fef94 100644
--- a/model/ccnx-forwarding-strategy.cc
+++ b/model/ccnx-forwarding-strategy.cc
@@ -41,6 +41,10 @@
 {
 }
 
+CcnxForwardingStrategy::~CcnxForwardingStrategy ()
+{
+}
+
 void
 CcnxForwardingStrategy::SetPit(Ptr<CcnxPit> pit)
 {
diff --git a/model/ccnx-forwarding-strategy.h b/model/ccnx-forwarding-strategy.h
index 3f0f8ae..cdf9576 100644
--- a/model/ccnx-forwarding-strategy.h
+++ b/model/ccnx-forwarding-strategy.h
@@ -45,19 +45,22 @@
   static TypeId GetTypeId (void);
 
   CcnxForwardingStrategy ();
+  virtual ~CcnxForwardingStrategy ();
     
-  void SetPit(Ptr<CcnxPit> pit);
+  void
+  SetPit (Ptr<CcnxPit> pit);
     
   typedef
   Callback<void, const Ptr<CcnxFace> &, const Ptr<CcnxInterestHeader> &, const Ptr<Packet> &>
   SendCallback;
 
-  virtual bool PropagateInterest  (CcnxPitEntryContainer::type::iterator pitEntry, 
-                                   CcnxFibEntryContainer::type::iterator fibEntry,
-                                   const Ptr<CcnxFace> &incomingFace,
-                                   Ptr<CcnxInterestHeader> &header,
-                                   const Ptr<const Packet> &packet,
-                                   SendCallback ucb) = 0;
+  virtual bool
+  PropagateInterest (CcnxPitEntryContainer::type::iterator pitEntry, 
+                     CcnxFibEntryContainer::type::iterator fibEntry,
+                     const Ptr<CcnxFace> &incomingFace,
+                     Ptr<CcnxInterestHeader> &header,
+                     const Ptr<const Packet> &packet,
+                     SendCallback ucb) = 0;
   Ptr<CcnxPit> GetPit();
     
 private:  
diff --git a/model/ccnx.cc b/model/ccnx.cc
index 0fe4b31..af551a6 100644
--- a/model/ccnx.cc
+++ b/model/ccnx.cc
@@ -38,4 +38,8 @@
   return tid;
 }
 
+Ccnx::~Ccnx ()
+{
+}
+
 } // namespace ns3
diff --git a/model/ccnx.h b/model/ccnx.h
index cafa354..32e2f57 100644
--- a/model/ccnx.h
+++ b/model/ccnx.h
@@ -94,6 +94,7 @@
    * \return interface ID
    */
   static TypeId GetTypeId ();
+  virtual ~Ccnx ();
 
   /**
    * \brief Send an Interest packet to a specified face
