diff --git a/model/sync-ccnx-wrapper.h b/model/sync-ccnx-wrapper.h
index eaa86cf..4153606 100644
--- a/model/sync-ccnx-wrapper.h
+++ b/model/sync-ccnx-wrapper.h
@@ -31,7 +31,8 @@
 #include <ccn/bloom.h>
 }
 
-#include <boost/thread.hpp>
+#include <boost/thread/recursive_mutex.hpp>
+#include <boost/thread/thread.hpp>
 #include <boost/shared_ptr.hpp>
 #include <string>
 #include "sync-data-buffer.h"
@@ -52,7 +53,8 @@
 	ccn* m_handle;
 	ccn_keystore *m_keyStore;
 	ccn_charbuf *m_keyLoactor;
-	boost::mutex m_mutex;
+	// to lock, use "boost::recursive_mutex::scoped_lock scoped_lock(mutex);
+	boost::recursive_mutex m_mutex;
 	boost::shared_ptr<boos::thread> m_thread;
 
 private:
@@ -65,19 +67,43 @@
 
 public:
   
-
+  /**
+   * @brief initialize the wrapper; a lot of things needs to be done. 1) init
+   * keystore 2) init keylocator 3) start a thread to hold a loop of ccn_run 
+   *
+   */
    CcnxWrapper();
    ~CcnxWrapper();
+
   /**
-   * @brief send Interest 
+   * @brief send Interest; need to grab lock m_mutex first
    *
    * @param strInterest the Interest name
-   * @param callback the callback function to deal with the returned data
+   * @param dataCallback the callback function to deal with the returned data
+   * @return the return code of ccn_express_interest 
    */
    int sendInterest(std::string strInterest, boost::function<void
-   (boost::shared_ptr<DataBuffer>)> processData);
+   (boost::shared_ptr<DataBuffer>)> dataCallback);
+
+  /**
+   * @brief set Interest filter (specify what interest you want to receive 
+   *
+   * @param prefix the prefix of Interest
+   * @param interestCallback the callback function to deal with the returned data
+   * @return the return code of ccn_set_interest_filter
+   */
    int sendInterestFilter(std::string prefix, boost::function<void (std::string)>
-   processInterest);
+   interestCallback);
+
+  /**
+   * @brief publish data and put it to local ccn content store; need to grab
+   * lock m_mutex first
+   *
+   * @param name the name for the data object
+   * @param dataBuffer the data to be published
+   * @param freshness the freshness time for the data object
+   * @return code generated by ccnx library calls, >0 if success
+   */
    int publishData(std::string name, boost::shared_ptr<DataBuffer> dataBuffer,
    int freshness);
 
