diff --git a/src/ccnx/sync-app-socket.cc b/src/ccnx/sync-app-socket.cc
index 3bc6954..0e4e829 100644
--- a/src/ccnx/sync-app-socket.cc
+++ b/src/ccnx/sync-app-socket.cc
@@ -1,4 +1,4 @@
-/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/* -*- Mode: C32++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
 /*
  * Copyright (c) 2012 University of California, Los Angeles
  *
@@ -29,8 +29,8 @@
 {
 
 SyncAppSocket::SyncAppSocket (const string &syncPrefix, NewDataCallback dataCallback, RemoveCallback rmCallback )
-  : m_ccnxHandle (new CcnxWrapper())
-  , m_newDataCallback(dataCallback)
+  : m_newDataCallback(dataCallback)
+  , m_ccnxHandle (new CcnxWrapper())
   , m_syncLogic (syncPrefix,
                  bind(&SyncAppSocket::passCallback, this, _1),
                  rmCallback)
@@ -61,6 +61,7 @@
   m_sequenceLog[prefix] = s;
 
   m_syncLogic.addLocalNames (prefix, session, sequence);
+  return true;
 }
 
 bool 
@@ -75,6 +76,7 @@
   SeqNo s(session, sequence + 1);
   m_sequenceLog[prefix] = s;
   m_syncLogic.addLocalNames (prefix, session, sequence);
+  return true;
 }
 
 
diff --git a/src/ccnx/sync-ccnx-wrapper.cc b/src/ccnx/sync-ccnx-wrapper.cc
index b742548..c824e72 100644
--- a/src/ccnx/sync-ccnx-wrapper.cc
+++ b/src/ccnx/sync-ccnx-wrapper.cc
@@ -26,7 +26,7 @@
 #include <ccn/fetch.h>
 }
 
-#include "sync-log.h"
+#include "sync-logging.h"
 #include <poll.h>
 #include <boost/throw_exception.hpp>
 #include <boost/date_time/posix_time/posix_time.hpp>
@@ -245,7 +245,7 @@
 /// @endcond
 int
 CcnxWrapper::publishStringData (const string &name, const string &dataBuffer, int freshness) {
-  publishRawData(name, dataBuffer.c_str(), dataBuffer.length(), freshness);
+  return publishRawData(name, dataBuffer.c_str(), dataBuffer.length(), freshness);
 }
 
 int
@@ -384,13 +384,13 @@
 int CcnxWrapper::sendInterestForString (const string &strInterest, const StringDataCallback &strDataCallback, int retry)
 {
   DataClosurePass * pass = new DataClosurePass(STRING_FORM, retry, strDataCallback);
-  sendInterest(strInterest, pass);
+  return sendInterest(strInterest, pass);
 }
 
 int CcnxWrapper::sendInterest (const string &strInterest, const RawDataCallback &rawDataCallback, int retry)
 {
   RawDataClosurePass * pass = new RawDataClosurePass(RAW_DATA, retry, rawDataCallback);
-  sendInterest(strInterest, pass);
+  return sendInterest(strInterest, pass);
 }
 
 int CcnxWrapper::sendInterest (const string &strInterest, void *dataPass)
@@ -439,6 +439,8 @@
 
   m_registeredInterests.insert(pair<std::string, InterestCallback>(prefix, interestCallback));
   ccn_charbuf_destroy(&pname);
+
+  return 0;
 }
 
 void
diff --git a/src/sync-interest-table.cc b/src/sync-interest-table.cc
index b91dee3..6fbf784 100644
--- a/src/sync-interest-table.cc
+++ b/src/sync-interest-table.cc
@@ -21,7 +21,7 @@
  */
 
 #include "sync-interest-table.h"
-#include "sync-log.h"
+#include "sync-logging.h"
 using namespace std;
 using namespace boost;
 
diff --git a/src/sync-logging.cc b/src/sync-logging.cc
index e80bfc8..9048964 100644
--- a/src/sync-logging.cc
+++ b/src/sync-logging.cc
@@ -20,7 +20,7 @@
  *	   Alexander Afanasyev <alexander.afanasyev@ucla.edu>
  */
 
-#include "sync-log.h"
+#include "sync-logging.h"
 
 #ifdef HAVE_LOG4CXX
 
diff --git a/src/sync-logic.cc b/src/sync-logic.cc
index 25b51ce..98160b5 100644
--- a/src/sync-logic.cc
+++ b/src/sync-logic.cc
@@ -28,7 +28,7 @@
 #include "sync-logic.h"
 #include "sync-diff-leaf.h"
 #include "sync-full-leaf.h"
-#include "sync-log.h"
+#include "sync-logging.h"
 #include "sync-state.h"
 
 #include <boost/make_shared.hpp>
@@ -64,10 +64,9 @@
   , m_syncInterestTable (TIME_SECONDS (m_syncInterestReexpress))
   , m_syncPrefix (syncPrefix)
   , m_onUpdate (onUpdate)
-  , m_perBranch (false)
   , m_onRemove (onRemove)
+  , m_perBranch (false)
   , m_ccnxHandle(new CcnxWrapper ())
-  , m_recoveryRetransmissionInterval (m_defaultRecoveryRetransmitInterval)
 #ifndef NS3_MODULE
   , m_randomGenerator (static_cast<unsigned int> (std::time (0)))
   , m_rangeUniformRandom (m_randomGenerator, uniform_int<> (200,1000))
@@ -76,6 +75,7 @@
   , m_rangeUniformRandom (200,1000)
   , m_reexpressionJitter (10,500)
 #endif
+  , m_recoveryRetransmissionInterval (m_defaultRecoveryRetransmitInterval)
 { 
 #ifndef NS3_MODULE
   // In NS3 module these functions are moved to StartApplication method
@@ -97,7 +97,6 @@
   , m_onUpdateBranch (onUpdateBranch)
   , m_perBranch(true)
   , m_ccnxHandle(new CcnxWrapper())
-  , m_recoveryRetransmissionInterval (m_defaultRecoveryRetransmitInterval)
 #ifndef NS3_MODULE
   , m_randomGenerator (static_cast<unsigned int> (std::time (0)))
   , m_rangeUniformRandom (m_randomGenerator, uniform_int<> (200,1000))
@@ -106,6 +105,7 @@
   , m_rangeUniformRandom (200,1000)
   , m_reexpressionJitter (10,500)
 #endif
+  , m_recoveryRetransmissionInterval (m_defaultRecoveryRetransmitInterval)
 { 
 #ifndef NS3_MODULE
   // In NS3 module these functions are moved to StartApplication method
diff --git a/src/sync-logic.h b/src/sync-logic.h
index a4f2b41..1bc5984 100644
--- a/src/sync-logic.h
+++ b/src/sync-logic.h
@@ -29,7 +29,7 @@
 #include <memory>
 #include <map>
 
-#include "sync-ccnx-wrapper.h"
+#include "ccnx/sync-ccnx-wrapper.h"
 #include "sync-interest-table.h"
 #include "sync-diff-state.h"
 #include "sync-full-state.h"
diff --git a/src/sync-scheduler.cc b/src/sync-scheduler.cc
index 65739d5..fc0ca23 100644
--- a/src/sync-scheduler.cc
+++ b/src/sync-scheduler.cc
@@ -21,7 +21,7 @@
  */
 
 #include "sync-scheduler.h"
-#include "sync-log.h"
+#include "sync-logging.h"
 
 using namespace boost;
 using namespace std;
