diff --git a/apps/ndn-consumer-batches.cc b/apps/ndn-consumer-batches.cc
index c4e93fb..398ec02 100644
--- a/apps/ndn-consumer-batches.cc
+++ b/apps/ndn-consumer-batches.cc
@@ -55,6 +55,7 @@
 }
 
 ConsumerBatches::ConsumerBatches ()
+  : m_initial (true)
 {
 }
 
@@ -74,6 +75,7 @@
   // std::cout << Simulator::Now () << " adding batch of " << amount << "\n";
   m_seqMax += amount;
   m_rtt->ClearSent (); // this is important, otherwise RTT estimation for the new batch will be affected by previous batch history
+  m_initial = true;
   ScheduleNextPacket ();
 }
 
@@ -81,7 +83,13 @@
 ConsumerBatches::ScheduleNextPacket ()
 {
   if (!m_sendEvent.IsRunning ())
-    m_sendEvent = Simulator::Schedule (Seconds (m_rtt->RetransmitTimeout ().ToDouble (Time::S)), &Consumer::SendPacket, this);
+    {
+      Time delay = Seconds (0);
+      if (!m_initial) delay = m_rtt->RetransmitTimeout ();
+      
+      m_initial = false;
+      m_sendEvent = Simulator::Schedule (delay, &Consumer::SendPacket, this);
+    }
 }
 
 ///////////////////////////////////////////////////
diff --git a/apps/ndn-consumer-batches.h b/apps/ndn-consumer-batches.h
index c7479da..fc7b322 100644
--- a/apps/ndn-consumer-batches.h
+++ b/apps/ndn-consumer-batches.h
@@ -71,6 +71,9 @@
    */
   virtual void
   ScheduleNextPacket ();
+
+private:
+  bool m_initial;
 };
 
 } // namespace ndn
diff --git a/test/fw-per-fib-limits.cc b/test/fw-per-fib-limits.cc
index d66856e..859160a 100644
--- a/test/fw-per-fib-limits.cc
+++ b/test/fw-per-fib-limits.cc
@@ -105,8 +105,14 @@
 
   ok = nodes.Get (0)->GetObject<L3Protocol> ()->GetFace (0)->GetLimits ()->TraceConnect ("CurMaxLimit", "face.curMax", MakeCallback (PrintTracedValue<double>));
   NS_TEST_ASSERT_MSG_EQ (ok, true, "");
+  nodes.Get (0)->GetObject<L3Protocol> ()->GetFace (0)->GetLimits ()->TraceDisconnect ("CurMaxLimit", "face.curMax", MakeCallback (PrintTracedValue<double>));
+
   ok = nodes.Get (0)->GetObject<L3Protocol> ()->GetFace (0)->GetLimits ()->TraceConnect ("Outstanding", "face.out",    MakeCallback (PrintTracedValue<uint32_t>));
   NS_TEST_ASSERT_MSG_EQ (ok, true, "");
+  nodes.Get (0)->GetObject<L3Protocol> ()->GetFace (0)->GetLimits ()->TraceDisconnect ("Outstanding", "face.out",    MakeCallback (PrintTracedValue<uint32_t>));
+
+  Config::Connect ("/NodeList/0/$ns3::ndn::L3Protocol/FaceList/*/Limits/CurMaxLimit", MakeCallback (PrintTracedValue<double>));
+  Config::Connect ("/NodeList/0/$ns3::ndn::L3Protocol/FaceList/*/Limits/Outstanding", MakeCallback (PrintTracedValue<uint32_t>));
 
   nodes.Get (0)->GetObject<L3Protocol> ()->GetFace (0)->GetLimits ()->SetMaxLimit (100);
   
@@ -137,16 +143,20 @@
   Simulator::Schedule (Seconds (102.5), &FwPerFibLimits::CheckOutstanding, this, entry, 0);
   Simulator::Schedule (Seconds (102.5), &FwPerFibLimits::CheckCurMaxLimit, this, entry, 41.75);
 
-  // Config::Connect ("/NodeList/*/$ns3::ndn::L3Protocol/FaceList/*/Limits/CurMaxLimit", MakeCallback (PrintTracedValue<double>));
-  // Config::Connect ("/NodeList/*/$ns3::ndn::L3Protocol/FaceList/*/Limits/Outstanding", MakeCallback (PrintTracedValue<uint32_t>));
-
   AppHelper consumer ("ns3::ndn::ConsumerBatches");
   consumer.SetPrefix ("/bla");
   consumer.SetAttribute ("Batches", StringValue ("105 1"));
   consumer.SetAttribute ("LifeTime", StringValue ("1s"));
-  consumer.Install (nodes.Get (0));
+  consumer.Install (nodes.Get (0))
+    .Stop (Seconds (110.0));
+
+  Simulator::Schedule (Seconds (105.1), &FwPerFibLimits::CheckOutstanding, this, entry, 1);
+  Simulator::Schedule (Seconds (106.7), &FwPerFibLimits::CheckOutstanding, this, entry, 0);
+
+  Simulator::Schedule (Seconds (109.0), &FwPerFibLimits::CheckCurMaxLimit, this, entry, 14.27);
+  Simulator::Schedule (Seconds (119.9), &FwPerFibLimits::CheckCurMaxLimit, this, entry, 16.32);
   
-  Simulator::Stop (Seconds (110.0));
+  Simulator::Stop (Seconds (120.0));
   Simulator::Run ();
  
   Simulator::Destroy ();
