add doxygen comments
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);