diff --git a/ccnx/ccnx-wrapper.cpp b/ccnx/ccnx-wrapper.cpp
index bdb40e7..d584be4 100644
--- a/ccnx/ccnx-wrapper.cpp
+++ b/ccnx/ccnx-wrapper.cpp
@@ -61,7 +61,7 @@
   //}
 
   m_handle = ccn_create ();
-  UniqueRecLock lock(m_mutex);
+  //UniqueRecLock lock(m_mutex);
   if (ccn_connect(m_handle, NULL) < 0)
   {
     BOOST_THROW_EXCEPTION (CcnxOperationException() << errmsg_info_str("connection to ccnd failed"));
@@ -343,12 +343,14 @@
 int CcnxWrapper::sendInterest (const Name &interest, const Closure &closure, const Selectors &selectors)
 {
   _LOG_TRACE (">> sendInterest");
-  UniqueRecLock lock(m_mutex);
-  if (!m_running || !m_connected)
-    {
-      _LOG_ERROR ("<< sendInterest: not running or connected");
-      return -1;
-    }
+  {
+    UniqueRecLock lock(m_mutex);
+    if (!m_running || !m_connected)
+      {
+        _LOG_ERROR ("<< sendInterest: not running or connected");
+        return -1;
+      }
+  }
 
   CcnxCharbufPtr namePtr = interest.toCcnxCharbuf();
   ccn_charbuf *pname = namePtr->getBuf();
@@ -366,6 +368,7 @@
     templ = selectorsPtr->getBuf();
   }
 
+  UniqueRecLock lock(m_mutex);
   if (ccn_express_interest (m_handle, pname, dataClosure, templ) < 0)
   {
     _LOG_ERROR ("<< sendInterest: ccn_express_interest FAILED!!!");
@@ -382,6 +385,7 @@
   UniqueRecLock lock(m_mutex);
   if (!m_running || !m_connected)
     return -1;
+  }
 
   CcnxCharbufPtr ptr = prefix.toCcnxCharbuf();
   ccn_charbuf *pname = ptr->getBuf();
@@ -389,6 +393,8 @@
 
   interestClosure->data = new InterestCallback (interestCallback); // should be removed when closure is removed
   interestClosure->p = &incomingInterest;
+
+  UniqueRecLock lock(m_mutex);
   int ret = ccn_set_interest_filter (m_handle, pname, interestClosure);
   if (ret < 0)
   {
