diff --git a/model/fw/per-fib-limits.cc b/model/fw/per-fib-limits.cc
index a50124a..a8fc46a 100644
--- a/model/fw/per-fib-limits.cc
+++ b/model/fw/per-fib-limits.cc
@@ -92,28 +92,6 @@
     {
       return false;
     }
-
-  // check stats
-  Ptr<Face> inFace = pitEntry->GetIncoming ().begin ()->m_face;
-  // const ndnSIM::LoadStatsFace &stats = GetStatsTree ()[header->GetName ()].incoming ().find (inFace)->second;
-  const ndnSIM::LoadStatsFace &stats = GetStatsTree ()["/"].incoming ().find (inFace)->second;
-
-  if (stats.count ().GetStats ().get<0> () >= m_threshold * pitEntry->GetFibEntry ()->GetLimits ().GetMaxLimit ())
-  {
-    double ratio = std::min (1.0, stats.GetSatisfiedRatio ().get<0> ());
-    // NS_ASSERT_MSG (ratio > 0, "If count is a reasonable value, ratio cannot be negative");
-    UniformVariable randAccept (0, 1);
-    double dice = randAccept.GetValue ();
-    if (ratio < 0 || dice < ratio + m_graceAcceptProbability)
-      {
-        // ok, accepting the interests
-      }
-    else
-      {
-        // boo. bad luck
-        return false;
-      }
-  }
   
   if (pitEntry->GetFibEntry ()->GetLimits ().IsBelowLimit ())
     {
diff --git a/model/ndn-interest-header.cc b/model/ndn-interest-header.cc
index 240bc48..46cbf25 100644
--- a/model/ndn-interest-header.cc
+++ b/model/ndn-interest-header.cc
@@ -78,7 +78,7 @@
 }
 
 void
-InterestHeader::SetName (const Ptr<NameComponents> &name)
+InterestHeader::SetName (Ptr<NameComponents> name)
 {
   m_name = name;
 }
@@ -121,7 +121,7 @@
 }
 
 void
-InterestHeader::SetExclude (const Ptr<NameComponents> &exclude)
+InterestHeader::SetExclude (Ptr<NameComponents> exclude)
 {
   m_exclude = exclude;
 }
diff --git a/model/ndn-interest-header.h b/model/ndn-interest-header.h
index 95d9c39..df48fb0 100644
--- a/model/ndn-interest-header.h
+++ b/model/ndn-interest-header.h
@@ -148,7 +148,7 @@
    * @param[in] name const pointer to ndnNameComponents object that contains an interest name
    **/
   void
-  SetName (const Ptr<NameComponents> &name);
+  SetName (Ptr<NameComponents> name);
 
 
   /**
@@ -215,7 +215,7 @@
    * @param[in] exclude const pointer to ndnNameComponents to be excluded 
    **/
   void
-  SetExclude (const Ptr<NameComponents> &exclude);
+  SetExclude (Ptr<NameComponents> exclude);
 
   /**
    * \brief Check if interest conatins exclude filter
diff --git a/model/pit/ndn-pit-impl.cc b/model/pit/ndn-pit-impl.cc
index 2c6e0bf..04acd0f 100644
--- a/model/pit/ndn-pit-impl.cc
+++ b/model/pit/ndn-pit-impl.cc
@@ -254,6 +254,7 @@
 Ptr<Entry>
 PitImpl<Policy>::Create (Ptr<const InterestHeader> header)
 {
+  NS_LOG_DEBUG (header->GetName ());
   Ptr<fib::Entry> fibEntry = m_fib->LongestPrefixMatch (*header);
   if (fibEntry == 0)
     return 0;
