diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..f06b3d2
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "ChronoSync"]
+	path = ChronoSync
+	url = https://github.com/named-data/ChronoSync.git
+	branch = dev
diff --git a/ChronoSync b/ChronoSync
new file mode 160000
index 0000000..d95c231
--- /dev/null
+++ b/ChronoSync
@@ -0,0 +1 @@
+Subproject commit d95c2312e02732e182897170b17ae08fd2859f54
diff --git a/src/addcontactpanel.cpp b/src/addcontactpanel.cpp
index 8e90f66..78f6102 100644
--- a/src/addcontactpanel.cpp
+++ b/src/addcontactpanel.cpp
@@ -173,7 +173,7 @@
     return;
   }
 
-  m_currentCollectEndorseReady = NULL;
+  m_currentCollectEndorseReady = false;
 
   displayContactInfo();
 }
diff --git a/src/chatdialog.h b/src/chatdialog.h
index b59a5a4..d7a1520 100644
--- a/src/chatdialog.h
+++ b/src/chatdialog.h
@@ -28,7 +28,7 @@
 #include "invitation-policy-manager.h"
 #include "contact-item.h"
 
-#include <ccnx/sync-socket.h>
+#include <sync-socket.h>
 #include <sync-seq-no.h>
 #include "chatbuf.pb.h"
 #include "digesttreescene.h"
diff --git a/src/digesttreescene.h b/src/digesttreescene.h
index 7266ecb..e7600e8 100644
--- a/src/digesttreescene.h
+++ b/src/digesttreescene.h
@@ -23,7 +23,7 @@
 #include <sync-logic.h>
 #include <ctime>
 #include <vector>
-#include <tr1/memory>
+#include <boost/shared_ptr.hpp>
 #endif
 
 const int FRESHNESS = 60;
@@ -32,7 +32,7 @@
 
 class User;
 class DisplayUser;
-typedef std::tr1::shared_ptr<DisplayUser> DisplayUserPtr;
+typedef boost::shared_ptr<DisplayUser> DisplayUserPtr;
 static DisplayUserPtr DisplayUserNullPtr;
 
 class DigestTreeScene : public QGraphicsScene
diff --git a/wscript b/wscript
index 17f7170..9b48e6d 100644
--- a/wscript
+++ b/wscript
@@ -6,6 +6,7 @@
 
 def options(opt):
     opt.add_option('--debug',action='store_true',default=False,dest='debug',help='''debugging mode''')
+    opt.add_option('--no-log4cxx',action='store_false',default=True,dest='log4cxx',help='''Disable log4cxx''')
     
     opt.load('compiler_c compiler_cxx boost protoc qt4')
 
@@ -17,6 +18,7 @@
 
     if conf.options.debug:
         conf.define ('_DEBUG', 1)
+        conf.env.DEBUG = 1
         conf.add_supported_cxxflags (cxxflags = ['-O0',
                                                  '-Wall',
                                                  '-Wno-unused-variable',
@@ -31,9 +33,9 @@
     # conf.check_tinyxml(path=conf.options.tinyxml_dir)
     conf.check_cfg(package='libndn.cxx', args=['--cflags', '--libs'], uselib_store='NDNCXX', mandatory=True)
     conf.check_cfg(package='sqlite3', args=['--cflags', '--libs'], uselib_store='SQLITE3', mandatory=True)
-    conf.check_cfg(package='liblog4cxx', args=['--cflags', '--libs'], uselib_store='LOG4CXX', mandatory=True)
+    if conf.options.log4cxx:
+        conf.check_cfg(package='liblog4cxx', args=['--cflags', '--libs'], uselib_store='LOG4CXX', mandatory=True)
     conf.check_cfg (package='ChronoSync', args=['ChronoSync >= 0.1', '--cflags', '--libs'], uselib_store='SYNC', mandatory=True)
-    conf.define ("HAVE_LOG4CXX", 1)
 
     conf.check_boost(lib='system random thread filesystem')
 
@@ -46,18 +48,19 @@
         features = "qt4 cxx cxxprogram",
         defines = "WAF",
         source = bld.path.ant_glob(['src/*.cpp', 'src/*.ui', 'logging.cc', 'src/*.proto']),
-        includes = ".",
+        includes = "src .",
         use = "QTCORE QTGUI QTSQL SQLITE3 NDNCXX BOOST BOOST_FILESYSTEM LOG4CXX CRYPTOPP SYNC",
         )
 
-    cert_publish = bld (
-        target = "CertPublish",
-        features = "cxx cxxprogram",
-        defines = "WAF",
-        source = bld.path.ant_glob(['tmp/cert-publish.cpp']),
-        includes = ".",
-        use = "SQLITE3 NDNCXX BOOST BOOST_FILESYSTEM LOG4CXX",
-        )
+    # if bld.env['DEBUG']:
+    #     cert_publish = bld (
+    #         target = "CertPublish",
+    #         features = "cxx cxxprogram",
+    #         defines = "WAF",
+    #         source = bld.path.ant_glob(['tmp/cert-publish.cpp']),
+    #         includes = ". src",
+    #         use = "SQLITE3 NDNCXX BOOST BOOST_FILESYSTEM LOG4CXX",
+    #         )
 
     if Utils.unversioned_sys_platform () == "darwin":
         app_plist = '''<?xml version="1.0" encoding="UTF-8"?>
@@ -78,8 +81,6 @@
     <string>THIS IS A GENERATED FILE, DO NOT MODIFY</string>
     <key>CFBundleExecutable</key>
     <string>%s</string>
-    <key>LSUIElement</key>
-    <string>1</string>
     <key>SUPublicDSAKeyFile</key>
     <string>dsa_pub.pem</string>
     <key>CFBundleIconFile</key>
@@ -87,6 +88,9 @@
 </dict>
 </plist>'''
 
+    # <key>LSUIElement</key>
+    # <string>1</string>
+
         qt.mac_app = "ChronoChat.app"
         qt.mac_plist = app_plist % "ChronoChat"
         qt.mac_resources = 'demo.icns'
@@ -112,13 +116,3 @@
 
     self.end_msg (' '.join (supportedFlags))
     self.env.CXXFLAGS += supportedFlags
-
-from waflib.TaskGen import feature, before_method, after_method
-@feature('cxx')
-@after_method('process_source')
-@before_method('apply_incpaths')
-def add_includes_paths(self):
-    incs = set(self.to_list(getattr(self, 'includes', '')))
-    for x in self.compiled_tasks:
-        incs.add(x.inputs[0].parent.path_from(self.path))
-        self.includes = list(incs)
