diff --git a/ccnx/sync-ccnx-wrapper.h b/ccnx/sync-ccnx-wrapper.h
index b8c3c93..b51c629 100644
--- a/ccnx/sync-ccnx-wrapper.h
+++ b/ccnx/sync-ccnx-wrapper.h
@@ -37,6 +37,7 @@
 #include <boost/thread/thread.hpp>
 #include <boost/function.hpp>
 #include <string>
+#include <sstream>
 
 /**
  * \defgroup sync SYNC protocol
@@ -53,7 +54,7 @@
  */
 class CcnxWrapper {
 public:
-  typedef boost::function<void (std::string, std::string)> DataCallback;
+  typedef boost::function<void (std::string, std::string)> StringDataCallback;
   typedef boost::function<void (std::string, const char *buf, size_t len)> RawDataCallback;
   typedef boost::function<void (std::string)> InterestCallback;
   
@@ -78,10 +79,10 @@
    * @return the return code of ccn_express_interest
    */
   int
-  sendInterest (const std::string &strInterest, const DataCallback &dataCallback, int retry = 0);
+  sendInterestForString (const std::string &strInterest, const StringDataCallback &strDataCallback, int retry = 0);
 
   int 
-  sendInterestForRawData (const std::string &strInterest, const RawDataCallback &rawDataCallback, int retry = 0);
+  sendInterest (const std::string &strInterest, const RawDataCallback &rawDataCallback, int retry = 0);
 
   /**
    * @brief set Interest filter (specify what interest you want to receive)
@@ -110,7 +111,10 @@
    * @return code generated by ccnx library calls, >0 if success
    */
   int
-  publishData (const std::string &name, const std::string &dataBuffer, int freshness);
+  publishStringData (const std::string &name, const std::string &dataBuffer, int freshness);
+
+  int 
+  publishRawData (const std::string &name, const char *buf, size_t len, int freshness);
 
 private:
   /// @cond include_hidden 
@@ -165,11 +169,11 @@
 
 class DataClosurePass: public ClosurePass {
 public:
-  DataClosurePass(CallbackType type, int retry, const CcnxWrapper::DataCallback &dataCallback);
+  DataClosurePass(CallbackType type, int retry, const CcnxWrapper::StringDataCallback &strDataCallback);
   virtual ~DataClosurePass();
   virtual void runCallback(std::string name, const char *, size_t len);
 private:
-  CcnxWrapper::DataCallback * m_callback;  
+  CcnxWrapper::StringDataCallback * m_callback;  
 };
 
 class RawDataClosurePass: public ClosurePass {
