diff --git a/src/fetcher.cc b/src/fetcher.cc
index f009819..59a3b35 100644
--- a/src/fetcher.cc
+++ b/src/fetcher.cc
@@ -32,20 +32,23 @@
 using namespace std;
 using namespace Ccnx;
 
-Fetcher::Fetcher (CcnxWrapperPtr ccnx,
-                  OnDataSegmentCallback onDataSegment,
+Fetcher::Fetcher (Ccnx::CcnxWrapperPtr ccnx,
+                  const SegmentCallback &segmentCallback,
+                  const FinishCallback &finishCallback,
                   OnFetchCompleteCallback onFetchComplete, OnFetchFailedCallback onFetchFailed,
-                  const Ccnx::Name &name, int32_t minSeqNo, int32_t maxSeqNo,
+                  const Ccnx::Name &deviceName, const Ccnx::Name &name, int64_t minSeqNo, int64_t maxSeqNo,
                   boost::posix_time::time_duration timeout/* = boost::posix_time::seconds (30)*/,
                   const Ccnx::Name &forwardingHint/* = Ccnx::Name ()*/)
   : m_ccnx (ccnx)
 
-  , m_onDataSegment (onDataSegment)
+  , m_segmentCallback (segmentCallback)
   , m_onFetchComplete (onFetchComplete)
   , m_onFetchFailed (onFetchFailed)
+  , m_finishCallback (finishCallback)
 
   , m_active (false)
   , m_name (name)
+  , m_deviceName (deviceName)
   , m_forwardingHint (forwardingHint)
   , m_maximumNoActivityPeriod (timeout)
 
@@ -99,15 +102,19 @@
 }
 
 void
-Fetcher::OnData (uint32_t seqno, const Ccnx::Name &name, PcoPtr data)
+Fetcher::OnData (uint64_t seqno, const Ccnx::Name &name, PcoPtr data)
 {
   if (m_forwardingHint == Name ())
-    m_onDataSegment (*this, seqno, m_name, name, data);
+  {
+    // invoke callback
+    m_segmentCallback (m_deviceName, m_name, seqno, data);
+    // we don't have to tell FetchManager about this
+  }
   else
     {
       try {
         PcoPtr pco = make_shared<ParsedContentObject> (*data->contentPtr ());
-        m_onDataSegment (*this, seqno, m_name, pco->name (), pco);
+        m_segmentCallback (m_deviceName, m_name, seqno, pco);
       }
       catch (MisformedContentObjectException &e)
         {
@@ -122,7 +129,7 @@
 
   ////////////////////////////////////////////////////////////////////////////
   m_outOfOrderRecvSeqNo.insert (seqno);
-  set<int32_t>::iterator inOrderSeqNo = m_outOfOrderRecvSeqNo.begin ();
+  set<int64_t>::iterator inOrderSeqNo = m_outOfOrderRecvSeqNo.begin ();
   for (; inOrderSeqNo != m_outOfOrderRecvSeqNo.end ();
        inOrderSeqNo++)
     {
@@ -139,6 +146,9 @@
   if (m_maxInOrderRecvSeqNo == m_maxSeqNo)
     {
       m_active = false;
+      // invoke callback
+      m_finishCallback(m_deviceName, m_name);
+      // tell FetchManager that we have finish our job
       m_onFetchComplete (*this);
     }
   else
@@ -148,7 +158,7 @@
 }
 
 Closure::TimeoutCallbackReturnValue
-Fetcher::OnTimeout (uint32_t seqno, const Ccnx::Name &name)
+Fetcher::OnTimeout (uint64_t seqno, const Ccnx::Name &name)
 {
   // cout << "Fetcher::OnTimeout: " << name << endl;
   // cout << "Last: " << m_lastPositiveActivity << ", config: " << m_maximumNoActivityPeriod
