diff --git a/cmd/dump-db.cc b/cmd/dump-db.cc
index 5be8719..568c3db 100644
--- a/cmd/dump-db.cc
+++ b/cmd/dump-db.cc
@@ -45,7 +45,7 @@
     sqlite3_prepare_v2 (m_db,
                         "SELECT device_name, seq_no, action, filename, version, file_hash, file_seg_num, parent_device_name, parent_seq_no "
                         "   FROM ActionLog "
-                        "   ORDER BY filename,version", -1, &stmt, 0);
+                        /*"   ORDER BY filename,version"*/, -1, &stmt, 0);
 
     cout.setf(std::ios::left, std::ios::adjustfield);
     cout << ">> ACTION LOG <<" << endl;
diff --git a/log4cxx.properties b/log4cxx.properties
index a3663c4..d5e1569 100644
--- a/log4cxx.properties
+++ b/log4cxx.properties
@@ -1,5 +1,5 @@
 # Set root logger level to DEBUG and its only appender to A1.
-log4j.rootLogger=TRACE, A1
+log4j.rootLogger=TRACE, A1, rollingFile
 
 # A1 is set to be a ConsoleAppender.
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
@@ -11,10 +11,20 @@
 #log4j.appender.A1.layout.ConversionPattern=%d{hh:mm:ss,SSS} %-14t %-14c  %m%n
 log4j.appender.A1.layout.ConversionPattern=%d{ss,SSS} %-5p %-12c  %m%n
 
-log4j.logger.Executor = ERROR
-log4j.logger.Sync.Log = ERROR
-log4j.logger.Sync.Core = DEBUG
-log4j.logger.Scheduler = ERROR
+log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
+log4j.appender.rollingFile.File=logfile.txt
+log4j.appender.rollingFile.MaxFileSize=10MB
+log4j.appender.rollingFile.MaxBackupIndex=9
+log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout
+log4j.appender.rollingFile.layout.ConversionPattern=%d{ss,SSS} %-5p %-12c  %m%n
+
+#log4j.logger.Executor = ERROR
+#log4j.logger.Sync.Log = ERROR
+#log4j.logger.Sync.Core = TRACE
+#log4j.logger.Scheduler = ERROR
+#
+#log4j.logger.Fetcher = TRACE
+#log4j.logger.FetchManager = TRACE
 
 #log4j.logger.Sync = DEBUG
 #log4j.logger.Sync.Log = ERROR
diff --git a/src/fetcher.cc b/src/fetcher.cc
index 2192fd7..b7f6e35 100644
--- a/src/fetcher.cc
+++ b/src/fetcher.cc
@@ -99,6 +99,11 @@
       if (m_outOfOrderRecvSeqNo.find (m_minSendSeqNo+1) != m_outOfOrderRecvSeqNo.end ())
         continue;
 
+      if (m_inActivePipeline.find (m_minSendSeqNo+1) != m_inActivePipeline.end ())
+        continue;
+
+      m_inActivePipeline.insert (m_minSendSeqNo+1);
+
       _LOG_DEBUG (" >>> i " << Name (m_forwardingHint)(m_name) << ", seq = " << (m_minSendSeqNo + 1 ));
 
       // cout << ">>> " << m_minSendSeqNo+1 << endl;
@@ -148,26 +153,37 @@
 
   ////////////////////////////////////////////////////////////////////////////
   m_outOfOrderRecvSeqNo.insert (seqno);
+  m_inActivePipeline.erase (seqno);
+  _LOG_DEBUG ("Total segments received: " << m_outOfOrderRecvSeqNo.size ());
   set<int64_t>::iterator inOrderSeqNo = m_outOfOrderRecvSeqNo.begin ();
   for (; inOrderSeqNo != m_outOfOrderRecvSeqNo.end ();
        inOrderSeqNo++)
     {
+      _LOG_TRACE ("Checking " << *inOrderSeqNo << " and " << m_maxInOrderRecvSeqNo+1);
       if (*inOrderSeqNo == m_maxInOrderRecvSeqNo+1)
         {
           m_maxInOrderRecvSeqNo = *inOrderSeqNo;
         }
+      else if (*inOrderSeqNo < m_maxInOrderRecvSeqNo+1) // not possible anymore, but just in case
+        {
+          continue;
+        }
       else
         break;
     }
   m_outOfOrderRecvSeqNo.erase (m_outOfOrderRecvSeqNo.begin (), inOrderSeqNo);
   ////////////////////////////////////////////////////////////////////////////
 
+  _LOG_TRACE ("Max in order received: " << m_maxInOrderRecvSeqNo << ", max seqNo to request: " << m_maxSeqNo);
+
   if (m_maxInOrderRecvSeqNo == m_maxSeqNo)
     {
+      _LOG_TRACE ("Fetch finished");
       m_active = false;
       // invoke callback
       if (!m_finishCallback.empty ())
         {
+          _LOG_TRACE ("Notifying callback");
           m_finishCallback(m_deviceName, m_name);
         }
 
@@ -194,10 +210,13 @@
   if (m_lastPositiveActivity <
       (date_time::second_clock<boost::posix_time::ptime>::universal_time() - m_maximumNoActivityPeriod))
     {
+      m_inActivePipeline.erase (seqno);
       m_activePipeline --;
       if (m_activePipeline == 0)
         {
           _LOG_DEBUG ("Telling that fetch failed");
+          _LOG_DEBUG ("Active pipeline size should be zero: " << m_inActivePipeline.size ());
+
           m_active = false;
           m_onFetchFailed (*this);
           // this is not valid anymore, but we still should be able finish work
@@ -205,7 +224,7 @@
     }
   else
     {
-      _LOG_DEBUG ("Asking to reexpress");
+      _LOG_DEBUG ("Asking to reexpress seqno: " << seqno);
       m_ccnx->sendInterest (name, closure, selectors);
     }
 }
diff --git a/src/fetcher.h b/src/fetcher.h
index 7ab08c9..53d8562 100644
--- a/src/fetcher.h
+++ b/src/fetcher.h
@@ -112,6 +112,7 @@
   int64_t m_minSendSeqNo;
   int64_t m_maxInOrderRecvSeqNo;
   std::set<int64_t> m_outOfOrderRecvSeqNo;
+  std::set<int64_t> m_inActivePipeline;
 
   int64_t m_minSeqNo;
   int64_t m_maxSeqNo;
