diff --git a/src/dispatcher.cc b/src/dispatcher.cc
index 26e6e89..ba11b67 100644
--- a/src/dispatcher.cc
+++ b/src/dispatcher.cc
@@ -37,7 +37,7 @@
 Dispatcher::Dispatcher(const filesystem::path &path, const std::string &localUserName,
                        const std::string &sharedFolder,
                        const filesystem::path &rootDir, Ccnx::CcnxWrapperPtr ccnx,
-                       SchedulerPtr scheduler, int poolSize)
+                       int poolSize)
            : m_ccnx(ccnx)
            , m_core(NULL)
            , m_rootDir(rootDir)
@@ -59,7 +59,7 @@
   m_server->registerPrefix(syncPrefix);
 
   m_core = new SyncCore (m_syncLog, localUserName, Name ("/"), syncPrefix,
-                         bind(&Dispatcher::Did_SyncLog_StateChange, this, _1), ccnx, scheduler);
+                         bind(&Dispatcher::Did_SyncLog_StateChange, this, _1), ccnx);
 
   m_actionFetcher = make_shared<FetchManager> (m_ccnx, bind (&SyncLog::LookupLocator, &*m_syncLog, _1), 3);
   m_fileFetcher   = make_shared<FetchManager> (m_ccnx, bind (&SyncLog::LookupLocator, &*m_syncLog, _1), 3);
diff --git a/src/dispatcher.h b/src/dispatcher.h
index 3bb01b9..769723e 100644
--- a/src/dispatcher.h
+++ b/src/dispatcher.h
@@ -48,7 +48,7 @@
   // rootDir is the shared folder dir in local file system;
   Dispatcher(const boost::filesystem::path &path, const std::string &localUserName,
              const std::string &sharedFolder, const boost::filesystem::path &rootDir,
-             Ccnx::CcnxWrapperPtr ccnx, SchedulerPtr scheduler, int poolSize = 2);
+             Ccnx::CcnxWrapperPtr ccnx, int poolSize = 2);
   ~Dispatcher();
 
   // ----- Callbacks, they only submit the job to executor and immediately return so that event processing thread won't be blocked for too long -------
diff --git a/src/sync-core.cc b/src/sync-core.cc
index 9d2003d..8c653f1 100644
--- a/src/sync-core.cc
+++ b/src/sync-core.cc
@@ -36,13 +36,13 @@
 using namespace Ccnx;
 
 SyncCore::SyncCore(SyncLogPtr syncLog, const Name &userName, const Name &localPrefix, const Name &syncPrefix,
-                   const StateMsgCallback &callback, CcnxWrapperPtr ccnx, SchedulerPtr scheduler)
+                   const StateMsgCallback &callback, CcnxWrapperPtr ccnx)
   : m_ccnx (ccnx)
   , m_log(syncLog)
-         , m_scheduler(scheduler)
-         , m_stateMsgCallback(callback)
-         , m_syncPrefix(syncPrefix)
-         , m_recoverWaitGenerator(new RandomIntervalGenerator(WAIT, RANDOM_PERCENT, RandomIntervalGenerator::UP))
+  , m_scheduler(new Scheduler ())
+  , m_stateMsgCallback(callback)
+  , m_syncPrefix(syncPrefix)
+  , m_recoverWaitGenerator(new RandomIntervalGenerator(WAIT, RANDOM_PERCENT, RandomIntervalGenerator::UP))
 {
   m_rootHash = m_log->RememberStateInStateLog();
 
@@ -56,6 +56,7 @@
 
 SyncCore::~SyncCore()
 {
+  m_scheduler->shutdown ();
   // need to "deregister" closures
 }
 
diff --git a/src/sync-core.h b/src/sync-core.h
index bd7c5e8..48332da 100644
--- a/src/sync-core.h
+++ b/src/sync-core.h
@@ -44,8 +44,7 @@
            , const Ccnx::Name &localPrefix      // routable name used by the local user
            , const Ccnx::Name &syncPrefix       // the prefix for the sync collection
            , const StateMsgCallback &callback   // callback when state change is detected
-           , Ccnx::CcnxWrapperPtr ccnx
-           , SchedulerPtr scheduler);
+           , Ccnx::CcnxWrapperPtr ccnx);
   ~SyncCore();
 
   void
diff --git a/test/test-sync-core.cc b/test/test-sync-core.cc
index a7ab3c0..d18d4d4 100644
--- a/test/test-sync-core.cc
+++ b/test/test-sync-core.cc
@@ -61,13 +61,9 @@
   SyncLogPtr log1(new SyncLog(dir1, user1.toString()));
   SyncLogPtr log2(new SyncLog(dir2, user2.toString()));
 
-  // should not have used the same scheduler...
-  SchedulerPtr scheduler1 = make_shared<Scheduler> ();
-  SchedulerPtr scheduler2 = make_shared<Scheduler> ();
-
-  SyncCore *core1 = new SyncCore(log1, user1, loc1, syncPrefix, bind(callback, _1), c1, scheduler1);
+  SyncCore *core1 = new SyncCore(log1, user1, loc1, syncPrefix, bind(callback, _1), c1);
   usleep(10000);
-  SyncCore *core2 = new SyncCore(log2, user2, loc2, syncPrefix, bind(callback, _1), c2, scheduler2);
+  SyncCore *core2 = new SyncCore(log2, user2, loc2, syncPrefix, bind(callback, _1), c2);
   usleep(1000000);
   checkRoots(core1->root(), core2->root());
 
