diff --git a/src/ccnx-wrapper.cpp b/src/ccnx-wrapper.cpp
index 3f82889..c818cd2 100644
--- a/src/ccnx-wrapper.cpp
+++ b/src/ccnx-wrapper.cpp
@@ -60,7 +60,7 @@
 
   m_thread.join ();
   ccn_disconnect (m_handle);
-  ccn_destroy (&m_handle);
+  //ccn_destroy (&m_handle);
 }
 
 void
diff --git a/src/sync-core.cc b/src/sync-core.cc
index 32a1243..e37a367 100644
--- a/src/sync-core.cc
+++ b/src/sync-core.cc
@@ -38,13 +38,13 @@
   m_recoverClosure = new Closure(0, 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();
+  //m_scheduler->start();
   sendSyncInterest();
 }
 
 SyncCore::~SyncCore()
 {
-  m_scheduler->shutdown();
+  //m_scheduler->shutdown();
   if (m_syncClosure != 0)
   {
     delete m_syncClosure;
@@ -153,6 +153,9 @@
   else if (m_log.LookupSyncLog(*hash) > 0)
   {
     // we know something more
+    cout << "SyncInterest: " << name << endl;
+    cout << "hash: " << *hash << endl;
+    cout << "root hash: " << *m_rootHash << endl;
     SyncStateMsgPtr msg = m_log.FindStateDifferences(*hash, *m_rootHash);
 
     Bytes syncData;
diff --git a/test/test-sync-core.cc b/test/test-sync-core.cc
new file mode 100644
index 0000000..cdec04d
--- /dev/null
+++ b/test/test-sync-core.cc
@@ -0,0 +1,86 @@
+#include "sync-core.h"
+
+#include <boost/test/unit_test.hpp>
+#include <boost/filesystem.hpp>
+
+using namespace std;
+using namespace Ccnx;
+using namespace boost::filesystem;
+
+BOOST_AUTO_TEST_SUITE(SyncCoreTests)
+
+SyncStateMsgPtr msg1;
+SyncStateMsgPtr msg2;
+
+void callback1(const SyncStateMsgPtr &ptr)
+{
+  msg1 = ptr;
+}
+
+void callback2(const SyncStateMsgPtr &ptr)
+{
+  msg2 = ptr;
+}
+
+BOOST_AUTO_TEST_CASE(SyncCoreTest)
+{
+  string dir = "./SyncCoreTest";
+  Name user1("/joker");
+  Name loc1("/gotham1");
+  Name user2("/darkknight");
+  Name loc2("/gotham2");
+  Name syncPrefix("/broadcast/darkknight");
+  CcnxWrapperPtr c1(new CcnxWrapper());
+  CcnxWrapperPtr c2(new CcnxWrapper());
+  SchedulerPtr scheduler(new Scheduler());
+  scheduler->start();
+
+  // clean the test dir
+  path d(dir);
+  if (exists(d))
+  {
+    remove_all(d);
+  }
+
+  SyncCore *core1 = new SyncCore(dir, user1, loc1, syncPrefix, bind(callback1, _1), c1, scheduler);
+  usleep(10000);
+  SyncCore *core2 = new SyncCore(dir, user2, loc2, syncPrefix, bind(callback2, _1), c2, scheduler);
+  usleep(10000);
+
+  SyncState state;
+
+  core1->updateLocalState(1);
+  usleep(100000);
+  BOOST_CHECK_EQUAL(msg2->state_size(), 1);
+  state = msg2->state(0);
+  BOOST_CHECK_EQUAL(state.seq(), 1);
+  BOOST_CHECK_EQUAL(user1, state.name());
+  BOOST_CHECK_EQUAL(loc1, state.locator());
+
+  core1->updateLocalState(5);
+  usleep(100000);
+  state = msg2->state(0);
+  BOOST_CHECK_EQUAL(state.seq(), 5);
+
+  core2->updateLocalState(10);
+  usleep(100000);
+  state = msg1->state(0);
+  BOOST_CHECK_EQUAL(state.seq(), 10);
+
+  // simple simultaneous data generation
+  core1->updateLocalState(11);
+  core2->updateLocalState(12);
+  usleep(100000);
+  state = msg1->state(0);
+  BOOST_CHECK_EQUAL(state.seq(), 12);
+  state = msg2->state(0);
+  BOOST_CHECK_EQUAL(state.seq(), 11);
+
+  // clean the test dir
+  if (exists(d))
+  {
+    remove_all(d);
+  }
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/wscript b/wscript
index 69e49b9..92949b7 100644
--- a/wscript
+++ b/wscript
@@ -111,7 +111,7 @@
           target="unit-tests",
           source = bld.path.ant_glob(['test/**/*.cc']),
           features=['cxx', 'cxxprogram'],
-          use = 'BOOST_TEST ccnxx database',
+          use = 'BOOST_TEST BOOST_FILESYSTEM ccnxx database',
           includes = ['include', 'src'],
           )
 
