diff --git a/helper/ccnx-stack-helper.cc b/helper/ccnx-stack-helper.cc
index e045dcd..7215c63 100644
--- a/helper/ccnx-stack-helper.cc
+++ b/helper/ccnx-stack-helper.cc
@@ -233,7 +233,9 @@
     }
     
   m_forwardingHelper.SetForwarding (ccnx, pit);
-  
+
+  ccnx->ScheduleLeakage ();
+    
   return faces;
 }
 
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index 87217bc..6a4fae6 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -284,6 +284,25 @@
   NS_LOG_LOGIC ("Receiving interest from " << &incomingFace);
   m_receivedInterestsTrace (header, m_node->GetObject<Ccnx> (), incomingFace);
 
+    
+    if( header->IsNack () )
+    {
+        NS_LOG_INFO("============");
+        NS_LOG_INFO("NACK");
+        NS_LOG_INFO("==========");
+        /*if( header->IsCongested () == false )
+            m_pit->LeakBucket(incomingFace,1);
+        
+        
+        m_droppedInterestsTrace (header, DROP_CONGESTION,
+                                 m_node->GetObject<Ccnx> (), incomingFace);
+        
+        m_pit->modify(pitEntry, CcnxPitEntry::DeleteOutgoing(incomingFace));*/
+    }
+
+    
+    
+    
   // Lookup of Pit and Fib entries for this Interest 
   CcnxFibEntryContainer::type::iterator fibEntry;
   CcnxPitEntryContainer::type::iterator pitEntry = m_pit->Lookup (*header, fibEntry);  
@@ -300,19 +319,21 @@
     }
     
     NS_LOG_INFO("Before WasRecentlySatisfied");
-    if (m_rit->WasRecentlySatisfied (*header))
+    /*if (m_rit->WasRecentlySatisfied (*header))
     {
         return;
-    }
-  /*if (m_rit->WasRecentlySatisfied (*header))
+    }*/
+  if (m_rit->WasRecentlySatisfied (*header))
     {
+        NS_LOG_INFO("------------");
         NS_LOG_INFO("Entering WasRecentlySatisfied");
+        NS_LOG_INFO("------------");
       // duplicate interests (same nonce) from applications are just ignored
       if (incomingFace->IsLocal() == true) 
           return;
         
       // Update metric status for the incoming interface in the corresponding FIB entry
-      if (fibEntry != m_fib->end())
+      /*if (fibEntry != m_fib->end())
         m_fib->modify (m_fib->iterator_to (pitEntry->m_fibEntry),
                        CcnxFibEntry::UpdateStatus(incomingFace, CcnxFibFaceMetric::NDN_FIB_YELLOW));
       
@@ -444,8 +465,11 @@
         }
         
       if(pitEntry->m_fibEntry.m_faces.size() == 0)  
+        return;*/
         return;
-    }*/
+    }
+    
+    
     
   // Otherwise,
   // propagate the interest
@@ -482,10 +506,12 @@
             NS_LOG_INFO("in face is null");
         if(outFace->m_face == NULL)
             NS_LOG_INFO("outface is null");
+        if(outFace == pitEntry->m_outgoing.end())
+            NS_LOG_INFO("OUTFACE = END");
         
         // If we're expecting data from the interface we got the interest from ("producer" asks us for "his own" data)
         // Give up this interface, but keep a small hope when the returned packet doesn't have PRUNE status
-        if( outFace != pitEntry->m_outgoing.end())
+        if(outFace != pitEntry->m_outgoing.end()) // this is correct
         {
             NS_LOG_INFO("Entering outFace != pitEntry->m_outgoing.end()");
             if( header->IsCongested() == true )
@@ -598,13 +624,13 @@
     // If interest wasn't propagated further (probably, a limit is reached),
     // prune and delete PIT entry if there are no outstanding interests.
     // Stop processing otherwise.
-    if( (!propagated) && (pitEntry->m_outgoing.size() == 0))
+    if( (!propagated) && (pitEntry->m_outgoing.size() == 0)) // this line works
       {
         BOOST_FOREACH (const CcnxPitEntryIncomingFace face, pitEntry->m_incoming)
           {
             header->SetNack(true);
             header->SetCongested(true);
-              NS_LOG_INFO("Sending CONGESTION packet");
+            NS_LOG_INFO("Sending CONGESTION packet");
             SendInterest (face.m_face, header, packet->Copy());
                 
             m_droppedInterestsTrace (header, DROP_CONGESTION,
@@ -742,4 +768,12 @@
 {
     return m_pit;
 }
+
+void
+CcnxL3Protocol::ScheduleLeakage()
+{
+    m_pit->LeakBuckets();
+    Time interval = MilliSeconds (NDN_INTEREST_RESET_PERIOD);
+    Simulator::Schedule (interval, &CcnxL3Protocol::ScheduleLeakage, this);
+}
 } //namespace ns3
diff --git a/model/ccnx-l3-protocol.h b/model/ccnx-l3-protocol.h
index 5b57ee0..3e2c870 100644
--- a/model/ccnx-l3-protocol.h
+++ b/model/ccnx-l3-protocol.h
@@ -27,6 +27,8 @@
 #include "ns3/ptr.h"
 #include "ns3/net-device.h"
 #include "ns3/traced-callback.h"
+#include "ns3/nstime.h"
+#include "ns3/simulator.h"
 
 #include "ns3/ccnx-producer-helper.h"
 #include "ccnx-content-store.h"
@@ -149,6 +151,8 @@
   GetFaceByNetDevice (Ptr<NetDevice> netDevice) const;
   
   Ptr<CcnxPit> GetPit();
+  
+  void ScheduleLeakage();
 protected:
   /**
    * \brief Actual processing of incoming CCNx interests. Note, interests do not have payload
