diff --git a/wscript b/wscript
index eee1d9a..700e955 100644
--- a/wscript
+++ b/wscript
@@ -9,6 +9,7 @@
     conf.load("compiler_cxx")
     conf.check_cfg(atleast_pkgconfig_version='0.20')
     conf.check_cfg(package='openssl', args=['--cflags', '--libs'], uselib_store='SSL')
+    conf.define ('STANDALONE', 1)
 
     conf.check_tool('boost')
     conf.check_boost(lib='signals filesystem iostreams regex')
@@ -16,39 +17,39 @@
         conf.check_boost(lib='signals filesystem iostreams regex', libpath="/usr/lib64")
 
 def build (bld):
-    module = bld.new_task_gen(features=['cxx', 'cxxshlib'])
+    module = bld.new_task_gen(target="sync", features=['cxx', 'cxxshlib'])
     module.source = bld.path.ant_glob(['model/*.cc',
                                        'helper/*.cc'])
     module.uselib = 'BOOST BOOST_IOSTREAMS SSL'
 
-def build_ns3 (bld):
-    deps = ['core', 'network', 'NDNabstraction']
-    if bld.env['ENABLE_PYTHON_BINDINGS']:
-        deps.append ('visualizer')
+# def build_ns3 (bld):
+#     deps = ['core', 'network', 'NDNabstraction']
+#     if bld.env['ENABLE_PYTHON_BINDINGS']:
+#         deps.append ('visualizer')
 
-    module = bld.create_ns3_module ('sync', deps)
-    module.uselib = 'BOOST BOOST_IOSTREAMS SSL'
+#     module = bld.create_ns3_module ('sync', deps)
+#     module.uselib = 'BOOST BOOST_IOSTREAMS SSL'
 
-    # tests = bld.create_ns3_module_test_library('sync')
-    # tests.source = [
-    #     'test/sync-test-suite.cc',
-    #     ]
+#     # tests = bld.create_ns3_module_test_library('sync')
+#     # tests.source = [
+#     #     'test/sync-test-suite.cc',
+#     #     ]
 
-    headers = bld.new_task_gen(features=['ns3header'])
-    headers.module = 'sync'
-    headers.source = [
-        'model/sync-app.h',
-        ]
+#     headers = bld.new_task_gen(features=['ns3header'])
+#     headers.module = 'sync'
+#     headers.source = [
+#         'model/sync-app.h',
+#         ]
 
-    # if not bld.env['ENABLE_NDN_ABSTRACT']:
-    #     bld.env['MODULES_NOT_BUILT'].append('NDNabstraction')
-    #     return
+#     # if not bld.env['ENABLE_NDN_ABSTRACT']:
+#     #     bld.env['MODULES_NOT_BUILT'].append('NDNabstraction')
+#     #     return
    
-    module.source = bld.path.ant_glob(['model/*.cc',
-                                       'helper/*.cc'])
+#     module.source = bld.path.ant_glob(['model/*.cc',
+#                                        'helper/*.cc'])
 
-    # if bld.env.ENABLE_EXAMPLES:
-    #     bld.add_subdirs('examples')
+#     # if bld.env.ENABLE_EXAMPLES:
+#     #     bld.add_subdirs('examples')
 
-    # bld.ns3_python_bindings()
+#     # bld.ns3_python_bindings()
 
