diff --git a/src/communication/sync-protocol-adapter.cpp b/src/communication/sync-protocol-adapter.cpp
index 2e09d2b..7e2dc92 100644
--- a/src/communication/sync-protocol-adapter.cpp
+++ b/src/communication/sync-protocol-adapter.cpp
@@ -58,7 +58,8 @@
                           chronosync::Logic::DEFAULT_RECOVERY_INTEREST_LIFETIME,
                           FIXED_SESSION);
     break;
-#endif
+#endif // HAVE_CHRONOSYNC
+#ifdef HAVE_PSYNC
   case SyncProtocol::PSYNC:
     NDN_LOG_DEBUG("Using PSync");
     m_psyncLogic = std::make_shared<psync::FullProducer>(face,
@@ -69,6 +70,15 @@
                      [this] (auto&&... args) { onPSyncUpdate(std::forward<decltype(args)>(args)...); },
                      syncInterestLifetime);
     break;
+#endif // HAVE_PSYNC
+#ifdef HAVE_SVS
+  case SyncProtocol::SVS:
+    NDN_LOG_DEBUG("Using SVS");
+    m_svsCore = std::make_shared<ndn::svs::SVSyncCore>(face,
+                    syncPrefix,
+                    [this] (auto&&... args) { onSvsUpdate(std::forward<decltype(args)>(args)...); });
+    break;
+#endif // HAVE_SVS
   default:
     NDN_CXX_UNREACHABLE;
   }
@@ -82,10 +92,16 @@
   case SyncProtocol::CHRONOSYNC:
     m_chronoSyncLogic->addUserNode(userPrefix, chronosync::Logic::DEFAULT_NAME, FIXED_SESSION);
     break;
-#endif
+#endif // HAVE_CHRONOSYNC
+#ifdef HAVE_PSYNC
   case SyncProtocol::PSYNC:
     m_psyncLogic->addUserNode(userPrefix);
     break;
+#endif // HAVE_PSYNC
+#ifdef HAVE_SVS
+  case SyncProtocol::SVS:
+    break;
+#endif // HAVE_SVS
   default:
     NDN_CXX_UNREACHABLE;
   }
@@ -99,10 +115,17 @@
   case SyncProtocol::CHRONOSYNC:
     m_chronoSyncLogic->updateSeqNo(seq, userPrefix);
     break;
-#endif
+#endif // HAVE_CHRONOSYNC
+#ifdef HAVE_PSYNC
   case SyncProtocol::PSYNC:
     m_psyncLogic->publishName(userPrefix, seq);
     break;
+#endif // HAVE_PSYNC
+#ifdef HAVE_SVS
+  case SyncProtocol::SVS:
+    m_svsCore->updateSeqNo(seq, userPrefix);
+    break;
+#endif // HAVE_SVS
   default:
     NDN_CXX_UNREACHABLE;
   }
@@ -119,8 +142,9 @@
     m_syncUpdateCallback(update.session.getPrefix(-1), update.high, 0);
   }
 }
-#endif
+#endif // HAVE_CHRONOSYNC
 
+#ifdef HAVE_PSYNC
 void
 SyncProtocolAdapter::onPSyncUpdate(const std::vector<psync::MissingDataInfo>& updates)
 {
@@ -130,5 +154,18 @@
     m_syncUpdateCallback(update.prefix, update.highSeq, update.incomingFace);
   }
 }
+#endif // HAVE_PSYNC
+
+#ifdef HAVE_SVS
+void
+SyncProtocolAdapter::onSvsUpdate(const std::vector<ndn::svs::MissingDataInfo>& updates)
+{
+  NLSR_LOG_TRACE("Received SVS update event");
+
+  for (const auto& update : updates) {
+    m_syncUpdateCallback(update.nodeId, update.high, 0);
+  }
+}
+#endif // HAVE_SVS
 
 } // namespace nlsr
diff --git a/src/communication/sync-protocol-adapter.hpp b/src/communication/sync-protocol-adapter.hpp
index fb5cdbe..e98fa53 100644
--- a/src/communication/sync-protocol-adapter.hpp
+++ b/src/communication/sync-protocol-adapter.hpp
@@ -30,7 +30,12 @@
 #ifdef HAVE_CHRONOSYNC
 #include <ChronoSync/logic.hpp>
 #endif
+#ifdef HAVE_PSYNC
 #include <PSync/full-producer.hpp>
+#endif
+#ifdef HAVE_SVS
+#include <ndn-svs/core.hpp>
+#endif
 
 namespace nlsr {
 
@@ -48,14 +53,14 @@
                       ndn::time::milliseconds syncInterestLifetime,
                       SyncUpdateCallback syncUpdateCallback);
 
-  /*! \brief Add user node to ChronoSync or PSync
+  /*! \brief Add user node to Sync
    *
    * \param userPrefix the Name under which the application will publishData
    */
   void
   addUserNode(const ndn::Name& userPrefix);
 
-  /*! \brief Publish update to ChronoSync or PSync
+  /*! \brief Publish update to Sync
    *
    * NLSR forces sequences number on the sync protocol
    * as it manages is its own sequence number by storing it in a file.
@@ -72,24 +77,36 @@
    *
    * This function packages the sync information into discrete updates
    * and passes those off to another function, m_syncUpdateCallback.
-   * \sa m_syncUpdateCallback
    *
-   * \param v A container with the new information sync has received
+   * \param updates A container with the new information sync has received
    */
   void
   onChronoSyncUpdate(const std::vector<chronosync::MissingDataInfo>& updates);
-#endif
+#endif // HAVE_CHRONOSYNC
 
+#ifdef HAVE_PSYNC
    /*! \brief Hook function to call whenever PSync detects new data.
    *
    * This function packages the sync information into discrete updates
    * and passes those off to another function, m_syncUpdateCallback.
-   * \sa m_syncUpdateCallback
    *
-   * \param v A container with the new information sync has received
+   * \param updates A container with the new information sync has received
    */
   void
   onPSyncUpdate(const std::vector<psync::MissingDataInfo>& updates);
+#endif // HAVE_PSYNC
+
+#ifdef HAVE_SVS
+  /*! \brief Hook function to call whenever SVS detects new data.
+   *
+   * This function packages the sync information into discrete updates
+   * and passes those off to another function, m_syncUpdateCallback.
+   *
+   * \param updates A container with the new information sync has received
+   */
+  void
+  onSvsUpdate(const std::vector<ndn::svs::MissingDataInfo>& updates);
+#endif // HAVE_SVS
 
 private:
   SyncProtocol m_syncProtocol;
@@ -98,7 +115,12 @@
 #ifdef HAVE_CHRONOSYNC
   std::shared_ptr<chronosync::Logic> m_chronoSyncLogic;
 #endif
+#ifdef HAVE_PSYNC
   std::shared_ptr<psync::FullProducer> m_psyncLogic;
+#endif
+#ifdef HAVE_SVS
+  std::shared_ptr<ndn::svs::SVSyncCore> m_svsCore;
+#endif
 };
 
 } // namespace nlsr
