diff --git a/model/sync-logic.h b/model/sync-logic.h
index 98adf17..62bf485 100644
--- a/model/sync-logic.h
+++ b/model/sync-logic.h
@@ -17,7 +17,7 @@
  *
  * Author: Zhenkai Zhu <zhenkai@cs.ucla.edu>
  *         卞超轶 Chaoyi Bian <bcy@pku.edu.cn>
- *	   Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ *         Alexander Afanasyev <alexander.afanasyev@ucla.edu>
  */
 
 #ifndef SYNC_LOGIC_H
@@ -30,6 +30,8 @@
 #include "sync-full-state.h"
 #include "sync-std-name-info.h"
 
+#include "sync-diff-state-container.h"
+
 namespace Sync {
 
 /**
@@ -40,42 +42,46 @@
 class SyncLogic
 {
 public:
-	/**
-	 * @brief constructor for this class;
-	 * @param syncPrefix the name prefix to use for the Sync Interest
-	 * @param fetch the fetch function, which will be called to actually fetch
-	 * the app data when new remote names are learned
-	 */
-	SyncLogic(std::string syncPrefix, boost::function<void (std::string,
-	uint32_t, uint32_t)> fetch, boost::shared_ptr<CcnxWrapper> ccnxHandle);
+  typedef boost::function<void (const std::string &,uint32_t, uint32_t)> SyncCallback;
+  
+  /**
+   * @brief constructor for this class;
+   * @param syncPrefix the name prefix to use for the Sync Interest
+   * @param fetch the fetch function, which will be called to actually fetch
+   * the app data when new remote names are learned
+   */
+  SyncLogic (const std::string &syncPrefix, SyncCallback fetch, CcnxWrapperPtr ccnxHandle);
 
-	~SyncLogic();
-	/**
-	 * a wrapper for the same func in SyncApp
-	 */
-	void addLocalNames(std::string prefix, uint32_t session, uint32_t seq);
+  ~SyncLogic ();
+  
+  /**
+   * a wrapper for the same func in SyncApp
+   */
+  void addLocalNames (const std::string &prefix, uint32_t session, uint32_t seq);
 
-	/**
-	 * @brief respond to the Sync Interest; a lot of logic needs to go in here
-	 * @param interest the Sync Interest in string format
-	 */
-	void respondSyncInterest(std::string interest);
+  /**
+   * @brief respond to the Sync Interest; a lot of logic needs to go in here
+   * @param interest the Sync Interest in string format
+   */
+  void respondSyncInterest (const std::string &interest);
 
-	/**
-	 * @brief process the fetched sync data
-	 * @param dataBuffer the sync data
-	 */
-	void processSyncData(std::string name, std::string dataBuffer);
+  /**
+   * @brief process the fetched sync data
+   * @param dataBuffer the sync data
+   */
+  void processSyncData (const std::string &name, const std::string &dataBuffer);
 
 private:
-	void sendSyncInterest();
+  void sendSyncInterest ();
 
 private:
-	boost::shared_ptr<CcnxWrapper> m_ccnxHandle;
-	FullState m_state;
-	boost::function<void (std::string, uint32_t, uint32_t)> m_fetch;
-	SyncInterestTable m_syncInterestTable;
-	std::string m_syncPrefix;
+  FullState m_state;
+  DiffStateContainer m_log;  
+  SyncInterestTable m_syncInterestTable;
+
+  std::string m_syncPrefix;
+  SyncCallback m_fetch;
+  CcnxWrapperPtr m_ccnxHandle;
 };
 
 
