diff --git a/model/fw/fw-stats.cc b/model/fw/fw-stats.cc
index 3ff136e..e7be6bb 100644
--- a/model/fw/fw-stats.cc
+++ b/model/fw/fw-stats.cc
@@ -227,7 +227,8 @@
                               uint32_t nackCode,
                               Ptr<pit::Entry> pitEntry)
 {
-  m_stats.Satisfy (pitEntry->GetPrefix ().cut (1));
+  // m_stats.Satisfy (pitEntry->GetPrefix ().cut (1));
+  m_stats.RemoveFromStats (pitEntry->GetPrefix ().cut (1));
   ScheduleRefreshingIfNecessary ();
   
   // m_stats.UndoNewPitEntry (header->GetName ().cut (1));
diff --git a/model/fw/per-fib-limits.cc b/model/fw/per-fib-limits.cc
index 5c2d3a2..ba9e81a 100644
--- a/model/fw/per-fib-limits.cc
+++ b/model/fw/per-fib-limits.cc
@@ -53,6 +53,11 @@
     .SetGroupName ("Ndn")
     .SetParent <super> ()
     .AddConstructor <PerFibLimits> ()
+
+    .AddAttribute ("AnnounceLimits", "Enable limit announcement using scope 0 interests",
+                   BooleanValue (false),
+                   MakeBooleanAccessor (&PerFibLimits::m_announceLimits),
+                   MakeBooleanChecker ())
     ;
   return tid;
 }
@@ -74,10 +79,13 @@
 {
   super::NotifyNewAggregate ();
 
-  if (m_pit != 0 && m_fib != 0)
+  if (m_announceLimits)
     {
-      m_announceEvent = Simulator::Schedule (Seconds (1.0),
-                                             &PerFibLimits::AnnounceLimits, this);
+      if (m_pit != 0 && m_fib != 0)
+        {
+          m_announceEvent = Simulator::Schedule (Seconds (1.0),
+                                                 &PerFibLimits::AnnounceLimits, this);
+        }
     }
 }
 
@@ -125,7 +133,7 @@
   
   if (header->GetInterestLifetime () < Seconds (0.1))
     {
-      NS_LOG_DEBUG( "What the fuck? Why interest lifetime is so short? [" << header->GetInterestLifetime ().ToDouble (Time::S) << "s]");
+      NS_LOG_DEBUG( "??? Why interest lifetime is so short? [" << header->GetInterestLifetime ().ToDouble (Time::S) << "s]");
     }
   
   pit::Entry::out_iterator outgoing =
@@ -180,32 +188,38 @@
 PerFibLimits::WillEraseTimedOutPendingInterest (Ptr<pit::Entry> pitEntry)
 {
   NS_LOG_FUNCTION (this << pitEntry->GetPrefix ());
-  super::WillEraseTimedOutPendingInterest (pitEntry);
 
-  // if (pitEntry->GetOutgoing ().size () == 0)
-  //   {
-  //     Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
+  if (pitEntry->GetOutgoing ().size () == 0)
+    {
+      super::DidReceiveValidNack (0, 0, pitEntry); // semi safe
       
-  //     NS_ASSERT (pitEntry->GetFwTag<PitQueueTag> () != boost::shared_ptr<PitQueueTag> ());
-  //     if (pitEntry->GetFwTag<PitQueueTag> ()->IsLastOneInQueues ())
-  //       {
-  //         nackHeader->SetNack (100);
-  //       }
-  //     else
-  //       {
-  //         nackHeader->SetNack (101);
-  //       }
+      Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
+      
+      NS_ASSERT (pitEntry->GetFwTag<PitQueueTag> () != boost::shared_ptr<PitQueueTag> ());
+      if (pitEntry->GetFwTag<PitQueueTag> ()->IsLastOneInQueues ())
+        {
+          nackHeader->SetNack (100);
+        }
+      else
+        {
+          nackHeader->SetNack (101);
+        }
           
-  //     Ptr<Packet> pkt = Create<Packet> ();
-  //     pkt->AddHeader (*nackHeader);
+      Ptr<Packet> pkt = Create<Packet> ();
+      pkt->AddHeader (*nackHeader);
       
-  //     for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
-  //          face != pitEntry->GetIncoming ().end ();
-  //          face ++)
-  //       {
-  //         face->m_face->Send (pkt->Copy ());
-  //       }
-  //   }
+      for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
+           face != pitEntry->GetIncoming ().end ();
+           face ++)
+        {
+          face->m_face->Send (pkt->Copy ());
+        }
+    }
+  else
+    {
+      // make bad stats only for "legitimately" timed out interests
+      super::WillEraseTimedOutPendingInterest (pitEntry);
+    }    
 
   PitQueue::Remove (pitEntry);
   
@@ -295,36 +309,33 @@
                                    uint32_t nackCode,
                                    Ptr<pit::Entry> pitEntry)
 {
-//   super::DidReceiveValidNack (inFace, nackCode, pitEntry);
+  super::DidReceiveValidNack (inFace, nackCode, pitEntry); // will reset count stats
   
-//   // NS_LOG_FUNCTION (this << pitEntry->GetPrefix ());
-//   PitQueue::Remove (pitEntry);
+  // NS_LOG_FUNCTION (this << pitEntry->GetPrefix ());
+  PitQueue::Remove (pitEntry);
  
+  Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
+  nackHeader->SetNack (100);
+  Ptr<Packet> pkt = Create<Packet> ();
+  pkt->AddHeader (*nackHeader);
 
-//   Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
-//   // nackHeader->SetNack (100);
-//   Ptr<Packet> pkt = Create<Packet> ();
-//   pkt->AddHeader (*nackHeader);
-
-//   for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
-//        face != pitEntry->GetIncoming ().end ();
-//        face ++)
-//     {
-//       face->m_face->Send (pkt->Copy ());
-//     }
-
-
+  for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
+       face != pitEntry->GetIncoming ().end ();
+       face ++)
+    {
+      face->m_face->Send (pkt->Copy ());
+    }
   
-//   for (pit::Entry::out_container::iterator face = pitEntry->GetOutgoing ().begin ();
-//        face != pitEntry->GetOutgoing ().end ();
-//        face ++)
-//     {
-//       face->m_face->GetLimits ().RemoveOutstanding ();
-//     }
+  for (pit::Entry::out_container::iterator face = pitEntry->GetOutgoing ().begin ();
+       face != pitEntry->GetOutgoing ().end ();
+       face ++)
+    {
+      face->m_face->GetLimits ().RemoveOutstanding ();
+    }
 
-//   m_pit->MarkErased (pitEntry);
+  m_pit->MarkErased (pitEntry);
   
-//   ProcessFromQueue ();
+  ProcessFromQueue ();
 }
 
 void
diff --git a/model/fw/per-fib-limits.h b/model/fw/per-fib-limits.h
index 4088ae2..b00173a 100644
--- a/model/fw/per-fib-limits.h
+++ b/model/fw/per-fib-limits.h
@@ -100,6 +100,8 @@
   typedef std::map< Ptr<Face>, PitQueue > PitQueueMap;
   PitQueueMap m_pitQueues; // per-outgoing face pit queue
 
+  bool    m_announceLimits;
+
   EventId m_announceEvent;
 };
 
diff --git a/utils/stats/load-stats-node.cc b/utils/stats/load-stats-node.cc
index 39e9d60..743f764 100644
--- a/utils/stats/load-stats-node.cc
+++ b/utils/stats/load-stats-node.cc
@@ -93,6 +93,26 @@
 }
 
 void
+LoadStatsNode::RemoveFromStats ()
+{
+  m_pit.count ()--;
+  
+  for (stats_container::iterator item = m_incoming.begin ();
+       item != m_incoming.end ();
+       item ++)
+    {
+      item->second.count ()--;
+    }
+
+  for (stats_container::iterator item = m_outgoing.begin ();
+       item != m_outgoing.end ();
+       item ++)
+    {
+      item->second.count ()--;
+    }
+}
+
+void
 LoadStatsNode::Timeout ()
 {
   m_pit.unsatisfied ()++;
diff --git a/utils/stats/load-stats-node.h b/utils/stats/load-stats-node.h
index 365db55..135c5f0 100644
--- a/utils/stats/load-stats-node.h
+++ b/utils/stats/load-stats-node.h
@@ -71,6 +71,12 @@
   Satisfy ();
 
   /**
+   * Remove a packet from all stats
+   */
+  void
+  RemoveFromStats ();
+
+  /**
    * Increment counter to both incoming and outgoing lists, for all faces
    */
   void
diff --git a/utils/stats/load-stats.cc b/utils/stats/load-stats.cc
index d785845..4bc1e5b 100644
--- a/utils/stats/load-stats.cc
+++ b/utils/stats/load-stats.cc
@@ -66,6 +66,13 @@
 }
 
 LoadStats &
+LoadStats::operator -- (int)
+{
+  counter_ --;
+  return *this;
+}
+
+LoadStats &
 LoadStats::operator += (uint32_t amount)
 {
   counter_ += amount;
diff --git a/utils/stats/load-stats.h b/utils/stats/load-stats.h
index 3e71753..d07c548 100644
--- a/utils/stats/load-stats.h
+++ b/utils/stats/load-stats.h
@@ -45,6 +45,9 @@
 
   LoadStats &
   operator ++ (int);
+
+  LoadStats &
+  operator -- (int);
   
   // uint32_t
   // GetCounter () const;
diff --git a/utils/stats/stats-tree.cc b/utils/stats/stats-tree.cc
index f84d902..f27281a 100644
--- a/utils/stats/stats-tree.cc
+++ b/utils/stats/stats-tree.cc
@@ -79,6 +79,14 @@
 }
 
 void
+StatsTree::RemoveFromStats (const NameComponents &key)
+{
+  std::pair<tree_type::iterator, bool> item = m_tree.insert (key, LoadStatsNode ());
+
+  item.first->payload ().RemoveFromStats ();
+}
+
+void
 StatsTree::Timeout (const NameComponents &key)
 {
   std::pair<tree_type::iterator, bool> item = m_tree.insert (key, LoadStatsNode ());
diff --git a/utils/stats/stats-tree.h b/utils/stats/stats-tree.h
index 955f798..bcab66d 100644
--- a/utils/stats/stats-tree.h
+++ b/utils/stats/stats-tree.h
@@ -54,6 +54,9 @@
   Satisfy (const NameComponents &key);
 
   void
+  RemoveFromStats (const NameComponents &key);
+
+  void
   Timeout (const NameComponents &key);
 
   void
