diff --git a/apps/ndn-app.cc b/apps/ndn-app.cc
index ab119d1..5b362d0 100644
--- a/apps/ndn-app.cc
+++ b/apps/ndn-app.cc
@@ -155,7 +155,7 @@
   GetNode ()->GetObject<ForwardingStrategy> ()->RemoveFace (m_face); // notify that face is removed
 
   // step 3. Destroy face
-  NS_ASSERT_MSG (m_face->GetReferenceCount ()==1,
+  NS_ASSERT_MSG (m_face->GetReferenceCount ()==2,
                  "At this point, nobody else should have referenced this face, but we have "
                  << m_face->GetReferenceCount () << " references");
   m_face = 0;
diff --git a/model/fw/nacks.cc b/model/fw/nacks.cc
index 6ad5066..4a4245c 100644
--- a/model/fw/nacks.cc
+++ b/model/fw/nacks.cc
@@ -88,8 +88,6 @@
                Ptr<const InterestHeader> header,
                Ptr<const Packet> origPacket)
 {
-  NS_ASSERT (m_nacksEnabled);
-
   // NS_LOG_FUNCTION (inFace << header << origPacket);
   m_inNacks (header, inFace);
 
@@ -106,29 +104,29 @@
   //
   // inFace->LeakBucketByOnePacket ();
 
-  pitEntry->SetWaitingInVain (inFace);
+  // pitEntry->SetWaitingInVain (inFace);
 
   DidReceiveValidNack (inFace, header->GetNack (), pitEntry);
   
-  if (!pitEntry->AreAllOutgoingInVain ()) // not all ougtoing are in vain
-    {
-      NS_LOG_DEBUG ("Not all outgoing are in vain");
-      // suppress
-      // Don't do anything, we are still expecting data from some other face
-      m_dropNacks (header, inFace);
-      return;
-    }
+  // if (!pitEntry->AreAllOutgoingInVain ()) // not all ougtoing are in vain
+  //   {
+  //     NS_LOG_DEBUG ("Not all outgoing are in vain");
+  //     // suppress
+  //     // Don't do anything, we are still expecting data from some other face
+  //     m_dropNacks (header, inFace);
+  //     return;
+  //   }
   
-  Ptr<Packet> nonNackInterest = Create<Packet> ();
-  Ptr<InterestHeader> nonNackHeader = Create<InterestHeader> (*header);
-  nonNackHeader->SetNack (InterestHeader::NORMAL_INTEREST);
-  nonNackInterest->AddHeader (*nonNackHeader);
+  // Ptr<Packet> nonNackInterest = Create<Packet> ();
+  // Ptr<InterestHeader> nonNackHeader = Create<InterestHeader> (*header);
+  // nonNackHeader->SetNack (InterestHeader::NORMAL_INTEREST);
+  // nonNackInterest->AddHeader (*nonNackHeader);
   
-  bool propagated = DoPropagateInterest (inFace, nonNackHeader, nonNackInterest, pitEntry);
-  if (!propagated)
-    {
-      DidExhaustForwardingOptions (inFace, nonNackHeader, nonNackInterest, pitEntry);
-    }  
+  // bool propagated = DoPropagateInterest (inFace, nonNackHeader, nonNackInterest, pitEntry);
+  // if (!propagated)
+  //   {
+  //     DidExhaustForwardingOptions (inFace, nonNackHeader, nonNackInterest, pitEntry);
+  //   }  
 }
 
 void
diff --git a/model/fw/per-fib-limits.cc b/model/fw/per-fib-limits.cc
index d56d48c..9703bd7 100644
--- a/model/fw/per-fib-limits.cc
+++ b/model/fw/per-fib-limits.cc
@@ -68,8 +68,6 @@
 void
 PerFibLimits::RemoveFace (Ptr<Face> face)
 {  
-  super::RemoveFace (face);
-
   for (PitQueueMap::iterator item = m_pitQueues.begin ();
        item != m_pitQueues.end ();
        item ++)
@@ -77,6 +75,8 @@
       item->second.Remove (face);
     }
   m_pitQueues.erase (face);
+
+  super::RemoveFace (face);
 }
 
 
@@ -117,6 +117,10 @@
       NS_LOG_DEBUG ("Face limit for " << header->GetName ());
     }
 
+  // hack
+  // offset lifetime, so we don't keep entries in queue for too long
+  pitEntry->OffsetLifetime (Seconds (- 0.9 * pitEntry->GetInterest ()->GetInterestLifetime ().ToDouble (Time::S)));
+  
   bool enqueued = m_pitQueues[outFace].Enqueue (inFace, pitEntry);
   if (enqueued)
     {
@@ -133,6 +137,18 @@
   NS_LOG_FUNCTION (this << pitEntry->GetPrefix ());
   super::WillEraseTimedOutPendingInterest (pitEntry);
 
+  Ptr<Packet> pkt = Create<Packet> ();
+  Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
+  nackHeader->SetNack (99);
+  pkt->AddHeader (*nackHeader);
+
+  for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
+       face != pitEntry->GetIncoming ().end ();
+       face ++)
+    {
+      face->m_face->Send (pkt->Copy ());
+    }
+  
   PitQueue::Remove (pitEntry);
   
   for (pit::Entry::out_container::iterator face = pitEntry->GetOutgoing ().begin ();
@@ -184,8 +200,9 @@
           // now we have enqueued packet and have slot available. Send out delayed packet
           Ptr<pit::Entry> pitEntry = queue->second.Pop ();
 
-          // wrong, but for experimental purposes
-          // pitEntry->UpdateLifetime (pitEntry->GetInterest ()->GetInterestLifetime ());
+          // hack
+          // offset lifetime back, so PIT entry wouldn't prematurely expire
+          pitEntry->OffsetLifetime (Seconds (0.7 * pitEntry->GetInterest ()->GetInterestLifetime ().ToDouble (Time::S)));
           
           NS_ASSERT_MSG (pitEntry != 0, "There *have to* be an entry in queue");
           
@@ -201,15 +218,39 @@
     }
 }
 
-// void
-// PerFibLimits::DidReceiveValidNack (Ptr<Face> inFace,
-//                                    uint32_t nackCode,
-//                                    Ptr<pit::Entry> pitEntry)
-// {
-//   // super::DidReceiveValidNack (inFace, nackCode, pitEntry);
+void
+PerFibLimits::DidReceiveValidNack (Ptr<Face> inFace,
+                                   uint32_t nackCode,
+                                   Ptr<pit::Entry> pitEntry)
+{
+  // super::DidReceiveValidNack (inFace, nackCode, pitEntry);
+  // NS_LOG_FUNCTION (this << pitEntry->GetPrefix ());
 
-//   // ??
-// }
+  Ptr<Packet> pkt = Create<Packet> ();
+  Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
+  nackHeader->SetNack (99);
+  pkt->AddHeader (*nackHeader);
+
+  for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
+       face != pitEntry->GetIncoming ().end ();
+       face ++)
+    {
+      face->m_face->Send (pkt->Copy ());
+    }
+  
+  PitQueue::Remove (pitEntry);
+
+  for (pit::Entry::out_container::iterator face = pitEntry->GetOutgoing ().begin ();
+       face != pitEntry->GetOutgoing ().end ();
+       face ++)
+    {
+      face->m_face->GetLimits ().RemoveOutstanding ();
+    }
+
+  m_pit->MarkErased (pitEntry);
+  
+  ProcessFromQueue ();
+}
 
 
 } // namespace fw
diff --git a/model/fw/per-fib-limits.h b/model/fw/per-fib-limits.h
index 3f23992..298c9ee 100644
--- a/model/fw/per-fib-limits.h
+++ b/model/fw/per-fib-limits.h
@@ -68,6 +68,11 @@
   WillSatisfyPendingInterest (Ptr<Face> inFace,
                               Ptr<pit::Entry> pitEntry);
 
+  virtual void
+  DidReceiveValidNack (Ptr<Face> inFace,
+                       uint32_t nackCode,
+                       Ptr<pit::Entry> pitEntry);
+  
 private:
   void
   ProcessFromQueue ();
diff --git a/model/ndn-interest-header.cc b/model/ndn-interest-header.cc
index 46cbf25..39c87e9 100644
--- a/model/ndn-interest-header.cc
+++ b/model/ndn-interest-header.cc
@@ -67,7 +67,7 @@
   : m_name                (Create<NameComponents> (interest.GetName ()))
   , m_minSuffixComponents (interest.m_minSuffixComponents)
   , m_maxSuffixComponents (interest.m_maxSuffixComponents)
-  , m_exclude             (Create<NameComponents> (interest.GetExclude ()))
+  , m_exclude             (interest.IsEnabledExclude () ? Create<NameComponents> (interest.GetExclude ()) : 0)
   , m_childSelector       (interest.m_childSelector)
   , m_answerOriginKind    (interest.m_answerOriginKind)
   , m_scope               (interest.m_scope)
diff --git a/model/pit/ndn-pit-entry-impl.h b/model/pit/ndn-pit-entry-impl.h
index 85c94f1..6af9cc5 100644
--- a/model/pit/ndn-pit-entry-impl.h
+++ b/model/pit/ndn-pit-entry-impl.h
@@ -62,6 +62,15 @@
     CONTAINER.RescheduleCleaning ();
   }
 
+  virtual void
+  OffsetLifetime (const Time &offsetTime)
+  {
+    CONTAINER.i_time.erase (Pit::time_index::s_iterator_to (*this));
+    super::OffsetLifetime (offsetTime);
+    CONTAINER.i_time.insert (*this);
+
+    CONTAINER.RescheduleCleaning ();
+  }
   
   // to make sure policies work
   void
diff --git a/model/pit/ndn-pit-entry.cc b/model/pit/ndn-pit-entry.cc
index 4dcf6d0..af66570 100644
--- a/model/pit/ndn-pit-entry.cc
+++ b/model/pit/ndn-pit-entry.cc
@@ -70,6 +70,18 @@
   NS_LOG_INFO ("Updated lifetime to " << m_expireTime.ToDouble (Time::S));
 }
 
+void
+Entry::OffsetLifetime (const Time &offsetTime)
+{
+  m_expireTime += offsetTime;
+  if (m_expireTime < Simulator::Now ())
+    {
+      m_expireTime = Simulator::Now ();
+    }
+  NS_LOG_INFO ("Offsetting lifetime to " << m_expireTime.ToDouble (Time::S));
+}
+
+
 const NameComponents &
 Entry::GetPrefix () const
 {
diff --git a/model/pit/ndn-pit-entry.h b/model/pit/ndn-pit-entry.h
index ecec2a6..7f4ef0e 100644
--- a/model/pit/ndn-pit-entry.h
+++ b/model/pit/ndn-pit-entry.h
@@ -119,12 +119,21 @@
    * This function will update PIT entry lifetime to the maximum of the current lifetime and
    * the lifetime Simulator::Now () + offsetTime
    *
-   * @param offsetTime Relative time to the current moment, representing PIT entry lifetime
+   * @param lifetime Relative time to the current moment, representing PIT entry lifetime
    */
   virtual void
-  UpdateLifetime (const Time &offsetTime);
+  UpdateLifetime (const Time &lifetime);
 
   /**
+   * @brief Offset the currently set PIT lifetime (allowed both negative and positive offsets)
+   * @param offsetTime positive or negative offset for the PIT lifetime.
+   *
+   * If PIT expire time becomes less than Simulator::Now, then it is adjusted to Simulator::Now.
+   */
+  virtual void
+  OffsetLifetime (const Time &offsetTime);
+  
+  /**
    * @brief Get prefix of the PIT entry
    */
   const NameComponents &
diff --git a/test/generic-tests.cc b/test/generic-tests.cc
index 652a7f8..6fdc1a7 100644
--- a/test/generic-tests.cc
+++ b/test/generic-tests.cc
@@ -39,6 +39,9 @@
 namespace ns3 {
 namespace ndn {
 
+struct Bla {
+};
+
 void
 GenericTests::DoRun ()
 {
@@ -90,9 +93,6 @@
 
   cerr << "===========\n\n";
 
-  struct Bla {
-  };
-
   shared_ptr<Bla> p1 = make_shared <Bla> ();
   shared_ptr<Bla> p2 = make_shared <Bla> ();
 
@@ -100,6 +100,10 @@
     {
       cerr << "They are equal\n";
     }
+
+
+  Time x = Seconds (-1);
+  cout << x << endl;
 }
 
 } // namespace ndn
