diff --git a/COPYING.md b/COPYING.md
index a3872f1..3c7c3bf 100644
--- a/COPYING.md
+++ b/COPYING.md
@@ -19,9 +19,6 @@
 - ndn-cxx is licensed under the conditions of
   [LGPL 3.0](https://github.com/named-data/ndn-cxx/blob/master/COPYING.md)
 
-- protobuf is licensed under the conditions of
-  [BSD license](https://github.com/google/protobuf/blob/master/LICENSE)
-
 - SQLite is in [public domain](http://www.sqlite.org/copyright.html)
 
 - waf build system is licensed under the conditions of
diff --git a/src/communication/sync-logic-handler.cpp b/src/communication/sync-logic-handler.cpp
index 11330b5..acfeae9 100644
--- a/src/communication/sync-logic-handler.cpp
+++ b/src/communication/sync-logic-handler.cpp
@@ -77,7 +77,7 @@
 
 
   m_syncSocket = std::make_shared<chronosync::Socket>(m_syncPrefix, m_nameLsaUserPrefix, *facePtr,
-                                                      bind(&SyncLogicHandler::onNsyncUpdate, this, _1));
+                                                      bind(&SyncLogicHandler::onChronoSyncUpdate, this, _1));
 
   if (m_confParam.getHyperbolicState() == HYPERBOLIC_STATE_OFF) {
     m_syncSocket->addSyncNode(m_adjLsaUserPrefix);
@@ -88,9 +88,9 @@
 }
 
 void
-SyncLogicHandler::onNsyncUpdate(const vector<chronosync::MissingDataInfo>& v)
+SyncLogicHandler::onChronoSyncUpdate(const vector<chronosync::MissingDataInfo>& v)
 {
-  _LOG_DEBUG("Received Nsync update event");
+  _LOG_DEBUG("Received ChronoSync update event");
 
   for (size_t i = 0; i < v.size(); i++){
     ndn::Name updateName = v[i].session.getPrefix(-1);
diff --git a/src/communication/sync-logic-handler.hpp b/src/communication/sync-logic-handler.hpp
index 2b7dd94..72a5487 100644
--- a/src/communication/sync-logic-handler.hpp
+++ b/src/communication/sync-logic-handler.hpp
@@ -61,7 +61,7 @@
     \param v The information that Sync has acquired.
    */
   void
-  onNsyncUpdate(const std::vector<chronosync::MissingDataInfo>& v);
+  onChronoSyncUpdate(const std::vector<chronosync::MissingDataInfo>& v);
 
   /*! \brief Wrapper function to call publishSyncUpdate with correct LSA type
 
diff --git a/tests-integrated/wscript b/tests-integrated/wscript
index a7e6075..ce1ee26 100644
--- a/tests-integrated/wscript
+++ b/tests-integrated/wscript
@@ -31,15 +31,6 @@
             use='nlsr-objects',
           )
 
-        integrated_test_nsync = bld.program (
-            target="../integrated-tests-nsync",
-            features="cxx cxxprogram",
-            source=bld.path.ant_glob(['nsync/**/*.cc']),
-            use='nsync-objects integrated-tests-main',
-            includes='.',
-            install_path=None,
-            )
-
         integrated_test_nlsr = bld.program (
             target="../integrated-tests-nlsr",
             features="cxx cxxprogram",
diff --git a/tests/test-sync-logic-handler.cpp b/tests/test-sync-logic-handler.cpp
index f41412b..a6b054a 100644
--- a/tests/test-sync-logic-handler.cpp
+++ b/tests/test-sync-logic-handler.cpp
@@ -59,7 +59,7 @@
     face->processEvents(ndn::time::milliseconds(1));
     face->sentInterests.clear();
 
-    p_sync.onNsyncUpdate(updates);
+    p_sync.onChronoSyncUpdate(updates);
 
     face->processEvents(ndn::time::milliseconds(1));
   }
diff --git a/tests/wscript b/tests/wscript
index d01a821..b7b1933 100644
--- a/tests/wscript
+++ b/tests/wscript
@@ -28,7 +28,7 @@
             target='unit-tests-main',
             name='unit-tests-main',
             features='cxx',
-            source=bld.path.ant_glob(['**/*.cpp'], excl=['nsync/**/*']),
+            source=bld.path.ant_glob(['**/*.cpp']),
             use='nlsr-objects',
           )
 
diff --git a/wscript b/wscript
index e59953e..c469a62 100644
--- a/wscript
+++ b/wscript
@@ -69,7 +69,7 @@
         Logs.error("Please upgrade your distribution or install custom boost libraries")
         return
 
-    conf.check_cfg(package='ChronoSync', args=['ChronoSync >= 0.1', '--cflags', '--libs'],
+    conf.check_cfg(package='ChronoSync', args=['ChronoSync >= 0.3', '--cflags', '--libs'],
                    uselib_store='SYNC', mandatory=True)
 
     conf.load('coverage')
