diff --git a/apps/ndn-consumer-window.cc b/apps/ndn-consumer-window.cc
index bc42f67..f214a9e 100644
--- a/apps/ndn-consumer-window.cc
+++ b/apps/ndn-consumer-window.cc
@@ -134,12 +134,11 @@
 {
   if (m_window == static_cast<uint32_t> (0))
     {
-      if (!m_sendEvent.IsRunning ())
-        {
-          m_sendEvent = Simulator::Schedule (Seconds (m_rtt->RetransmitTimeout ().ToDouble (Time::S) * 0.1),
-                                             &Consumer::SendPacket, this);
-          // m_rtt->IncreaseMultiplier ();
-        }
+      Simulator::Remove (m_sendEvent);
+
+      NS_LOG_DEBUG ("Next event in " << (std::min<double> (0.5, m_rtt->RetransmitTimeout ().ToDouble (Time::S))) << " sec");
+      m_sendEvent = Simulator::Schedule (Seconds (std::min<double> (0.5, m_rtt->RetransmitTimeout ().ToDouble (Time::S))),
+                                         &Consumer::SendPacket, this);
     }
   else if (m_inFlight >= m_window)
     {
@@ -189,7 +188,9 @@
       m_window = std::max<uint32_t> (0, m_window - 1);
     }
 
-  // NS_LOG_DEBUG ("Window: " << m_window);
+  NS_LOG_DEBUG ("Window: " << m_window << ", InFlight: " << m_inFlight);
+
+  ScheduleNextPacket ();
 }
 
 void
@@ -202,6 +203,8 @@
       // m_window = std::max<uint32_t> (0, m_window - 1);
       m_window = m_initialWindow;
     }
+
+  NS_LOG_DEBUG ("Window: " << m_window << ", InFlight: " << m_inFlight);
   Consumer::OnTimeout (sequenceNumber);
 }
 
diff --git a/model/ndn-face.cc b/model/ndn-face.cc
index 4ae7ee9..b3a43b0 100644
--- a/model/ndn-face.cc
+++ b/model/ndn-face.cc
@@ -65,12 +65,12 @@
   return tid;
 }
 
-/** 
+/**
  * By default, Ndn face are created in the "down" state
- *  with no IP addresses.  Before becoming useable, the user must 
+ *  with no IP addresses.  Before becoming useable, the user must
  * invoke SetUp on them once an Ndn address and mask have been set.
  */
-Face::Face (Ptr<Node> node) 
+Face::Face (Ptr<Node> node)
   : m_node (node)
   , m_protocolHandler (MakeNullCallback<void,const Ptr<Face>&,const Ptr<const Packet>&> ())
   , m_ifup (false)
@@ -156,7 +156,7 @@
 
   m_rxTrace (packet);
   m_protocolHandler (this, packet);
-  
+
   return true;
 }
 
@@ -175,19 +175,19 @@
 }
 
 /**
- * These are face states and may be distinct from 
+ * These are face states and may be distinct from
  * NetDevice states, such as found in real implementations
  * (where the device may be down but face state is still up).
  */
 
-bool 
+bool
 Face::IsUp (void) const
 {
   NS_LOG_FUNCTION_NOARGS ();
   return m_ifup;
 }
 
-void 
+void
 Face::SetUp (bool up/* = true*/)
 {
   NS_LOG_FUNCTION_NOARGS ();
@@ -198,7 +198,7 @@
 Face::operator== (const Face &face) const
 {
   NS_ASSERT_MSG (m_node->GetId () == face.m_node->GetId (),
-                 "Faces of different nodes should not be compared to each other");
+                 "Faces of different nodes should not be compared to each other: " << *this << " == " << face);
 
   return (m_id == face.m_id);
 }
@@ -207,7 +207,7 @@
 Face::operator< (const Face &face) const
 {
   NS_ASSERT_MSG (m_node->GetId () == face.m_node->GetId (),
-                 "Faces of different nodes should not be compared to each other");
+                 "Faces of different nodes should not be compared to each other: " << *this << " == " << face);
 
   return (m_id < face.m_id);
 }
