diff --git a/src/fetch-manager.cc b/src/fetch-manager.cc
index 931d2c1..2b43c62 100644
--- a/src/fetch-manager.cc
+++ b/src/fetch-manager.cc
@@ -90,7 +90,7 @@
 }
 
 void
-FetchManager::NoDataTimeout (Fetcher &fetcher)
+FetchManager::DidNoDataTimeout (Fetcher &fetcher)
 {
   fetcher.m_forwardingHint = Ccnx::Name ("/ndn/broadcast");
   fetcher.m_active = false;
@@ -99,19 +99,18 @@
     m_currentParallelFetches --;
     // no need to do anything with the m_fetchList
   }
-  
+
   ScheduleFetches ();
 }
 
 void
-FetchManager::FetchComplete (Fetcher &fetcher)
+FetchManager::DidFetchComplete (Fetcher &fetcher)
 {
-  fetcher.m_active = false;
   {
     unique_lock<mutex> lock (m_parellelFetchMutex);
     m_currentParallelFetches --;
     m_fetchList.erase_and_dispose (FetchList::s_iterator_to (fetcher), fetcher_disposer ());
   }
-  
+
   // ? do something else
 }
diff --git a/src/fetch-manager.h b/src/fetch-manager.h
index b200318..73a0699 100644
--- a/src/fetch-manager.h
+++ b/src/fetch-manager.h
@@ -57,19 +57,19 @@
   inline SchedulerPtr
   GetScheduler ();
 
-private:
-  void
-  ScheduleFetches ();  
-  
   // Events called from Fetcher
   void
-  NoDataTimeout (Fetcher &fetcher);
+  DidNoDataTimeout (Fetcher &fetcher);
 
   void
-  FetchComplete (Fetcher &fetcher);
+  DidFetchComplete (Fetcher &fetcher);
 
 private:
-  
+  void
+  ScheduleFetches ();
+
+private:
+
 private:
   Ccnx::CcnxWrapperPtr m_ccnx;
   SyncLogPtr m_sync; // to access forwarding hints
@@ -83,7 +83,7 @@
   typedef boost::intrusive::member_hook< Fetcher,
                                          boost::intrusive::list_member_hook<>, &Fetcher::m_managerListHook> MemberOption;
   typedef boost::intrusive::list<Fetcher, MemberOption> FetchList;
-  
+
   FetchList m_fetchList;
 };
 
@@ -99,7 +99,7 @@
   return m_scheduler;
 }
 
-typedef boost::error_info<struct tag_errmsg, std::string> errmsg_info_str; 
+typedef boost::error_info<struct tag_errmsg, std::string> errmsg_info_str;
 namespace Error {
 struct FetchManager : virtual boost::exception, virtual std::exception { };
 }
diff --git a/src/fetcher.cc b/src/fetcher.cc
index c015407..6745518 100644
--- a/src/fetcher.cc
+++ b/src/fetcher.cc
@@ -20,6 +20,8 @@
  */
 
 #include "fetcher.h"
+#include "fetch-manager.h"
+
 #include <boost/make_shared.hpp>
 #include <boost/ref.hpp>
 #include <boost/throw_exception.hpp>
@@ -52,3 +54,19 @@
 {
   m_active = true;
 }
+
+void
+Fetcher::OnData (uint32_t seqno, const Ccnx::Name &name, const Ccnx::Bytes &)
+{
+  // bla bla
+  if (0)
+    {
+      m_active = false;
+      m_fetchManager.DidFetchComplete (*this);
+    }
+}
+
+void
+Fetcher::OnTimeout (uint32_t seqno, const Ccnx::Name &name)
+{
+}
diff --git a/src/fetcher.h b/src/fetcher.h
index 5cb3977..c6bc883 100644
--- a/src/fetcher.h
+++ b/src/fetcher.h
@@ -23,6 +23,8 @@
 #define FETCHER_H
 
 #include "ccnx-wrapper.h"
+#include "ccnx-name.h"
+
 #include "scheduler.h"
 #include <boost/intrusive/list.hpp>
 
@@ -39,20 +41,20 @@
 private:
   void
   RestartPipeline ();
-  
-  void
-  OnData ();
 
   void
-  OnTimeout ();
-  
+  OnData (uint32_t seqno, const Ccnx::Name &name, const Ccnx::Bytes &);
+
+  void
+  OnTimeout (uint32_t seqno, const Ccnx::Name &name);
+
 private:
   FetchManager &m_fetchManager;
   bool m_active;
-  
+
   Ccnx::Name m_name;
   Ccnx::Name m_forwardingHint;
-  
+
   int32_t m_minSendSeqNo;
   int32_t m_maxSendSeqNo;
   int32_t m_minSeqNo;
@@ -60,11 +62,14 @@
 
   uint32_t m_pipeline;
 
-  boost::intrusive::list_member_hook<> m_managerListHook;  
+  // Ccnx::Closure m_onDataClosure;
+  // Ccnx::Closure m_onTimeoutClosure;
+
+  boost::intrusive::list_member_hook<> m_managerListHook;
   friend class FetchManager;
 };
 
-typedef boost::error_info<struct tag_errmsg, std::string> errmsg_info_str; 
+typedef boost::error_info<struct tag_errmsg, std::string> errmsg_info_str;
 
 namespace Error {
 struct Fetcher : virtual boost::exception, virtual std::exception { };
diff --git a/src/sync-core.cc b/src/sync-core.cc
index 1e9a947..4ddf47f 100644
--- a/src/sync-core.cc
+++ b/src/sync-core.cc
@@ -64,11 +64,14 @@
          , m_localPrefix(localPrefix)
          , m_syncPrefix(syncPrefix)
          , m_handle(handle)
+         , m_syncClosure (boost::bind(&SyncCore::handleSyncData, this, _1, _2),
+                          boost::bind(&SyncCore::handleSyncInterestTimeout, this, _1))
+         , m_recoverClosure (boost::bind(&SyncCore::handleRecoverData, this, _1, _2),
+                             boost::bind(&SyncCore::handleRecoverInterestTimeout, this, _1))
          , m_recoverWaitGenerator(new RandomIntervalGenerator(WAIT, RANDOM_PERCENT, RandomIntervalGenerator::UP))
 {
   m_rootHash = m_log->RememberStateInStateLog();
-  m_syncClosure = new Closure(boost::bind(&SyncCore::handleSyncData, this, _1, _2), boost::bind(&SyncCore::handleSyncInterestTimeout, this, _1));
-  m_recoverClosure = new Closure(boost::bind(&SyncCore::handleRecoverData, this, _1, _2), boost::bind(&SyncCore::handleRecoverInterestTimeout, this, _1));
+
   m_handle->setInterestFilter(m_syncPrefix, boost::bind(&SyncCore::handleInterest, this, _1));
   m_log->initYP(m_yp);
   m_scheduler->start();
@@ -77,17 +80,7 @@
 
 SyncCore::~SyncCore()
 {
-  if (m_syncClosure != 0)
-  {
-    delete m_syncClosure;
-    m_syncClosure = 0;
-  }
-
-  if (m_recoverClosure != 0)
-  {
-    delete m_recoverClosure;
-    m_recoverClosure = 0;
-  }
+  // need to "deregister" closures
 }
 
 Name
diff --git a/src/sync-core.h b/src/sync-core.h
index d6dbd32..cb44398 100644
--- a/src/sync-core.h
+++ b/src/sync-core.h
@@ -126,8 +126,8 @@
   YellowPage m_yp;
   Mutex m_ypMutex;
   CcnxWrapperPtr m_handle;
-  Closure *m_syncClosure;
-  Closure *m_recoverClosure;
+  Closure m_syncClosure;
+  Closure m_recoverClosure;
 
   IntervalGeneratorPtr m_recoverWaitGenerator;
 
