diff --git a/model/sync-ccnx-wrapper.h b/model/sync-ccnx-wrapper.h
index 11d0878..fb552a2 100644
--- a/model/sync-ccnx-wrapper.h
+++ b/model/sync-ccnx-wrapper.h
@@ -46,8 +46,8 @@
  */
  class DataBuffer {
 private:
-	unsigned char *buffer;
-	size_t len;
+	unsigned char *m_buffer;
+	size_t m_len;
 public:
 	DataBuffer(const unsigned char *buffer, size_t len);
 	DataBuffer(const DataBuffer &dataBuffer);
@@ -64,11 +64,11 @@
  */
 class CcnxWrapper { 
 private:
-	ccn* handle;
-	ccn_keystore *keyStore;
-	ccn_charbuf *keyLoactor;
-	boost::mutex mutex;
-	boost::shared_ptr<boos::thread> thread;
+	ccn* m_handle;
+	ccn_keystore *m_keyStore;
+	ccn_charbuf *m_keyLoactor;
+	boost::mutex m_mutex;
+	boost::shared_ptr<boos::thread> m_thread;
 
 private:
 	void createKeyLocator();
diff --git a/model/sync-interest-table.cc b/model/sync-interest-table.cc
new file mode 100644
index 0000000..2680859
--- /dev/null
+++ b/model/sync-interest-table.cc
@@ -0,0 +1,21 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2012 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Zhenkai Zhu <zhenkai@cs.ucla.edu>
+ *         卞超轶 Chaoyi Bian <bcy@pku.edu.cn>
+ *	   Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
diff --git a/model/sync-interest-table.h b/model/sync-interest-table.h
new file mode 100644
index 0000000..4993cd4
--- /dev/null
+++ b/model/sync-interest-table.h
@@ -0,0 +1,51 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2012 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Zhenkai Zhu <zhenkai@cs.ucla.edu>
+ *         卞超轶 Chaoyi Bian <bcy@pku.edu.cn>
+ *	   Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef SYNC_STATE_H
+#define SYNC_STATE_H
+#include <string>
+#include <boost/unordered_map.hpp>
+
+/**
+ * \defgroup sync SYNC protocol
+ *
+ * Implementation of SYNC protocol
+ */
+namespace Sync {
+
+/**
+ * \ingroup sync
+ * @brief A table to keep unanswered Sync Interest
+ */
+class SyncInterestTable
+{
+private:
+	boost::unordered_map<std::string, std::string> m_table;
+public:
+	bool insert(std::string interest);
+	boost::unordered_map<std::string, std::string> fetchAll();
+
+};
+
+} // Sync
+
+#endif // SYNC_STATE_H
