diff --git a/doc/doxygen.conf b/doc/doxygen.conf
index 26021b1..851bd58 100644
--- a/doc/doxygen.conf
+++ b/doc/doxygen.conf
@@ -568,7 +568,7 @@
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT                  = doc model helper
+INPUT                  = doc src
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
diff --git a/examples/sync-example.cc b/examples/sync-example.cc
deleted file mode 100644
index 38edf4f..0000000
--- a/examples/sync-example.cc
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-
-#include <ns3/core-module.h>
-#include <ns3/network-module.h>
-#include <ns3/NDNabstraction-module.h>
-#include <ns3/point-to-point-module.h>
-
-#include "sync-logic.h"
-#include "sync-logic-helper.h"
-
-using namespace ns3;
-using namespace Sync;
-
-NS_LOG_COMPONENT_DEFINE ("SyncExample");
-
-void OnUpdate (const std::string &prefix, const SeqNo &newSeq, const SeqNo &/*oldSeq*/)
-{
-  NS_LOG_LOGIC (Simulator::Now ().ToDouble (Time::S) <<"s\tNode: " << Simulator::GetContext () << ", prefix: " << prefix << ", seqNo: " << newSeq);
-}
-
-void OnRemove (const std::string &prefix)
-{
-  NS_LOG_LOGIC (Simulator::Now ().ToDouble (Time::S) <<"s\tNode: " << Simulator::GetContext () << ", prefix: "<< prefix);
-}
-
-int 
-main (int argc, char *argv[])
-{
-  Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("1Mbps"));
-  Config::SetDefault ("ns3::PointToPointChannel::Delay", StringValue ("10ms"));
-  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("20"));
-  
-  Config::SetDefault ("ns3::CcnxFloodingStrategy::SmartFlooding", StringValue ("false"));
-
-  LogComponentEnable ("SyncExample", LOG_ALL);
-  
-  Time finishTime = Seconds (3.0); 
-
-  CommandLine cmd;
-  cmd.AddValue ("finish", "Finish time", finishTime);
-  cmd.Parse (argc, argv);
-
-  // Creating nodes
-  NodeContainer nodes;
-  nodes.Create (11);
-
-  // Connecting nodes using two links
-  PointToPointHelper p2p;
-  p2p.Install (nodes.Get (0), nodes.Get (4));
-  p2p.Install (nodes.Get (1), nodes.Get (2));
-  p2p.Install (nodes.Get (1), nodes.Get (4));
-  p2p.Install (nodes.Get (1), nodes.Get (5));
-  p2p.Install (nodes.Get (2), nodes.Get (6));
-  p2p.Install (nodes.Get (2), nodes.Get (7));
-  p2p.Install (nodes.Get (3), nodes.Get (4));
-  p2p.Install (nodes.Get (3), nodes.Get (8));
-  p2p.Install (nodes.Get (4), nodes.Get (5));
-  p2p.Install (nodes.Get (4), nodes.Get (8));
-  p2p.Install (nodes.Get (5), nodes.Get (6));
-  p2p.Install (nodes.Get (5), nodes.Get (9));
-  p2p.Install (nodes.Get (5), nodes.Get (10));
-  p2p.Install (nodes.Get (6), nodes.Get (10));
-  p2p.Install (nodes.Get (7), nodes.Get (10));
-  p2p.Install (nodes.Get (8), nodes.Get (9));
-  p2p.Install (nodes.Get (9), nodes.Get (10));
-
-  Names::Add ("0", nodes.Get (0));
-  Names::Add ("1", nodes.Get (1));
-  Names::Add ("2", nodes.Get (2));
-  Names::Add ("3", nodes.Get(3));
-  Names::Add ("4", nodes.Get(4));
-  Names::Add ("5", nodes.Get(5));
-  Names::Add ("6", nodes.Get(6));
-  Names::Add ("7", nodes.Get(7));
-  Names::Add ("8", nodes.Get(8));
-  Names::Add ("9", nodes.Get(9));
-  Names::Add ("10", nodes.Get(10));
-  
-  // Install CCNx stack on all nodes
-  NS_LOG_INFO ("Installing CCNx stack");
-  CcnxStackHelper ccnxHelper;
-  ccnxHelper.SetForwardingStrategy ("ns3::CcnxFloodingStrategy");
-  ccnxHelper.SetDefaultRoutes (false);
-  ccnxHelper.InstallAll ();
-
-  ccnxHelper.AddRoute ("0", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("1", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("1", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("1", "/sync", 2, 0);
-  ccnxHelper.AddRoute ("2", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("2", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("2", "/sync", 2, 0);
-  ccnxHelper.AddRoute ("3", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("3", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("4", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("4", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("4", "/sync", 2, 0);
-  ccnxHelper.AddRoute ("4", "/sync", 3, 0);
-  ccnxHelper.AddRoute ("4", "/sync", 4, 0);
-  ccnxHelper.AddRoute ("5", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("5", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("5", "/sync", 2, 0);
-  ccnxHelper.AddRoute ("5", "/sync", 3, 0);
-  ccnxHelper.AddRoute ("5", "/sync", 4, 0);
-  ccnxHelper.AddRoute ("6", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("6", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("6", "/sync", 2, 0);
-  ccnxHelper.AddRoute ("7", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("7", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("8", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("8", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("8", "/sync", 2, 0);
-  ccnxHelper.AddRoute ("9", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("9", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("9", "/sync", 2, 0);
-  ccnxHelper.AddRoute ("10", "/sync", 0, 0);
-  ccnxHelper.AddRoute ("10", "/sync", 1, 0);
-  ccnxHelper.AddRoute ("10", "/sync", 2, 0);
-  ccnxHelper.AddRoute ("10", "/sync", 3, 0);
-
-  SyncLogicHelper logicHelper;
-  logicHelper.SetPrefix ("/sync");
-  logicHelper.SetCallbacks (OnUpdate, OnRemove);
-  ApplicationContainer apps = logicHelper.Install (NodeContainer (nodes.Get (0), nodes.Get (1)));
-  
-  // one data
-  Simulator::ScheduleWithContext (0, Seconds (0.5), &SyncLogic::addLocalNames, DynamicCast<SyncLogic> (apps.Get (0)), "/0", 1, 1);
-
-  // two producers at the same time
-  Simulator::ScheduleWithContext (0, Seconds (1.001), &SyncLogic::addLocalNames, DynamicCast<SyncLogic> (apps.Get (0)), "/0", 1, 2);
-  Simulator::ScheduleWithContext (1, Seconds (1.001), &SyncLogic::addLocalNames, DynamicCast<SyncLogic> (apps.Get (1)), "/1", 1, 2);
-
-  logicHelper.Install (nodes.Get (2)).
-    Start (Seconds (2.001));
-  
-  Simulator::Stop (finishTime);
-  Simulator::Run ();
-  Simulator::Destroy ();
-  return 0;
-}
-
-
diff --git a/examples/wscript b/examples/wscript
deleted file mode 100644
index 3b46e2d..0000000
--- a/examples/wscript
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
-
-def build(bld):
-    obj = bld.create_ns3_program('sync-example', ['sync'])
-    obj.source = 'sync-example.cc'
-
diff --git a/libsync.pc.in b/libChronoSync.pc.in
similarity index 70%
rename from libsync.pc.in
rename to libChronoSync.pc.in
index b8bc57c..2e301fa 100644
--- a/libsync.pc.in
+++ b/libChronoSync.pc.in
@@ -2,8 +2,8 @@
 libdir=@LIBDIR@
 includedir=@INCLUDEDIR@
 
-Name: libsync 
-Description: Chronos library
+Name: libChronoSync
+Description: ChronoSync library
 Version: @VERSION@
 Libs: -L${libdir} -lsync
 Cflags: -I${includedir}
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;
diff --git a/wscript b/wscript
index ea47f7f..5afeee3 100644
--- a/wscript
+++ b/wscript
@@ -54,9 +54,9 @@
     libsync = bld (
         target=APPNAME,
         features=['cxx', 'cxxshlib'],
-        source =  ant_glob (['src/**/*.cc', 'src/**/*.proto']),
+        source =  bld.path.ant_glob (['src/**/*.cc', 'src/**/*.proto']),
         use = 'BOOST BOOST_IOSTREAMS BOOST_THREAD SSL NDNX',
-        includes = ['include', 'src'],
+        includes = ['src'],
         )
     
     # Unit tests
@@ -66,7 +66,7 @@
           source = bld.path.ant_glob(['tests/**/*.cc']),
           features=['cxx', 'cxxprogram'],
           use = 'BOOST_TEST sync',
-          includes = ['include', 'src'],
+          includes = ['src'],
           )
 
     if bld.get_define ("HAVE_LOG4CXX"):
@@ -74,17 +74,27 @@
         if bld.get_define("_TEST"):
             unittests.use += ' LOG4CXX'
 
-    headers = bld.path.ant_glob(['include/*.h'])
-    headers.extend (bld.path.get_bld().ant_glob(['model/sync-state.pb.h']))
-    bld.install_files ("%s/sync" % bld.env['INCLUDEDIR'], headers)
+    bld.install_files (
+        dest = "%s/ChronoSync" % bld.env['INCLUDEDIR'], 
+        files = bld.path.ant_glob(['src/**/*.h']), 
+        cwd = bld.path.find_dir ("src"),
+        relative_trick = True,
+        )
+
+    bld.install_files (
+        dest = "%s/ChronoSync" % bld.env['INCLUDEDIR'], 
+        files = bld.path.get_bld().ant_glob(['src/**/*.h']), 
+        cwd = bld.path.get_bld().find_dir ("src"),
+        relative_trick = True,
+        )
 
     pc = bld (
         features = "subst",
-        source='libsync.pc.in',
-        target='libsync.pc',
+        source='libChronoSync.pc.in',
+        target='libChronoSync.pc',
         install_path = '${LIBDIR}/pkgconfig',
         PREFIX       = bld.env['PREFIX'],
-        INCLUDEDIR   = "%s/sync" % bld.env['INCLUDEDIR'],
+        INCLUDEDIR   = "%s/ChronoSync" % bld.env['INCLUDEDIR'],
         VERSION      = VERSION,
         )
 
