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)
