diff --git a/.gitmodules b/.gitmodules
index 63535e6..f06b3d2 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,4 +1,4 @@
 [submodule "ChronoSync"]
 	path = ChronoSync
-	url = git://github.com/named-data/ChronoSync
-	branch = new-release
+	url = https://github.com/named-data/ChronoSync.git
+	branch = dev
diff --git a/ChronoSync b/ChronoSync
index 7804c23..d95c231 160000
--- a/ChronoSync
+++ b/ChronoSync
@@ -1 +1 @@
-Subproject commit 7804c2329bf53bcdd3b32aa028edcb665db0079c
+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)
