diff --git a/model/forwarding-strategy/fw-stats.cc b/model/forwarding-strategy/fw-stats.cc
index 1c1c873..50c404e 100644
--- a/model/forwarding-strategy/fw-stats.cc
+++ b/model/forwarding-strategy/fw-stats.cc
@@ -28,6 +28,8 @@
 
 #include "ns3/assert.h"
 #include "ns3/log.h"
+#include "ns3/simulator.h"
+
 
 #include <boost/foreach.hpp>
 #include <boost/lambda/lambda.hpp>
@@ -57,6 +59,13 @@
 }
 
 void
+FwStats::DoDispose ()
+{
+  BestRoute::DoDispose ();
+  m_statsRefreshEvent.Cancel ();
+}
+
+void
 FwStats::DidCreatePitEntry (const Ptr<CcnxFace> &incomingFace,
                             Ptr<CcnxInterestHeader> header,
                             const Ptr<const Packet> &packet,
@@ -66,6 +75,8 @@
   
   m_stats.NewPitEntry (header->GetName ());
   m_stats.Incoming (header->GetName (), incomingFace);
+  
+  ScheduleRefreshingIfNecessary ();
 }
 
 void
@@ -74,7 +85,9 @@
 {
   super::WillSatisfyPendingInterest (incomingFace, pitEntry);
   
-  m_stats.Satisfy (pitEntry->GetPrefix ());  
+  m_stats.Satisfy (pitEntry->GetPrefix ());
+  
+  ScheduleRefreshingIfNecessary ();
 }
 
 void
@@ -85,6 +98,8 @@
   super::DidSendOutInterest (outgoingFace, header, pitEntry);
 
   m_stats.Outgoing (header->GetName (), outgoingFace);
+  
+  ScheduleRefreshingIfNecessary ();
 }
 
 void
@@ -93,8 +108,31 @@
   super::WillErasePendingInterest (pitEntry);
 
   m_stats.Timeout (pitEntry->GetPrefix ());
+  
+  ScheduleRefreshingIfNecessary ();
 }
 
+void
+FwStats::ScheduleRefreshingIfNecessary ()
+{
+  if (m_statsRefreshEvent.IsRunning ()) return;
+  m_statsRefreshEvent = Simulator::Schedule (Seconds (1.0), &FwStats::RefreshStats, this);
+}
+
+void
+FwStats::RefreshStats ()
+{
+  m_stats.Step ();
+  
+  NS_LOG_DEBUG (m_stats["/"]);
+
+  if (!m_stats["/"].IsZero ())
+    {
+      m_statsRefreshEvent = Simulator::Schedule (Seconds (1.0), &FwStats::RefreshStats, this);
+    }
+}
+
+
 
 } // namespace ndnSIM
 } // namespace ns3
diff --git a/model/forwarding-strategy/fw-stats.h b/model/forwarding-strategy/fw-stats.h
index e2432b0..2d9f1fc 100644
--- a/model/forwarding-strategy/fw-stats.h
+++ b/model/forwarding-strategy/fw-stats.h
@@ -22,6 +22,8 @@
 #ifndef NDNSIM_FW_STATS_H
 #define NDNSIM_FW_STATS_H
 
+#include "ns3/event-id.h"
+
 #include "best-route.h"
 #include "../../utils/stats-tree.h"
 
@@ -30,7 +32,7 @@
 
 /**
  * \ingroup ccnx
- * \brief Best route strategy
+ * \brief Strategy based on best route and adding statistics gathering capabilities
  */
 class FwStats :
     public BestRoute
@@ -62,9 +64,21 @@
 
   virtual void
   WillErasePendingInterest (Ptr<CcnxPitEntry> pitEntry);
-    
+
+  // from Object
+  void
+  DoDispose ();
+  
+private:
+  void
+  RefreshStats ();
+
+  void
+  ScheduleRefreshingIfNecessary ();
+  
 private:
   ::ndnSIM::StatsTree m_stats;
+  EventId m_statsRefreshEvent;
   
   typedef BestRoute super;
 };
diff --git a/model/pit/ccnx-pit-entry.cc b/model/pit/ccnx-pit-entry.cc
index aca735a..9e45258 100644
--- a/model/pit/ccnx-pit-entry.cc
+++ b/model/pit/ccnx-pit-entry.cc
@@ -69,7 +69,7 @@
   std::pair<in_iterator,bool> ret = 
     m_incoming.insert (CcnxPitEntryIncomingFace (face));
 
-  NS_ASSERT_MSG (ret.second, "Something is wrong");
+  // NS_ASSERT_MSG (ret.second, "Something is wrong");
 
   return ret.first;
 }
