diff --git a/NFD b/NFD
index bd8eea7..85d60eb 160000
--- a/NFD
+++ b/NFD
@@ -1 +1 @@
-Subproject commit bd8eea71137bc382fe1fb8225334b926a5484527
+Subproject commit 85d60ebaa89fb0a28cad336ff8576fb067847291
diff --git a/README.md b/README.md
index b815951..878e4fe 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
 
 [![Build Status](https://travis-ci.org/named-data-ndnSIM/ndnSIM.svg)](https://travis-ci.org/named-data-ndnSIM/ndnSIM)
 
-A new release of [NS-3 based Named Data Networking (NDN) simulator](http://ndnsim.net/1.0/)
+A new release of [NS-3 based Named Data Networking (NDN) simulator](http://ndnsim.net/)
 went through extensive refactoring and rewriting.  The key new features of the new
 version:
 
@@ -12,10 +12,14 @@
 - ndnSIM uses implementation of basic NDN primitives from
   [ndn-cxx library (NDN C++ library with eXperimental eXtensions)](http://named-data.net/doc/ndn-cxx/)
 
+  Based on version `0.4.1`
+
 - All NDN forwarding and management is implemented directly using source code of
   [Named Data Networking Forwarding Daemon (NFD)](http://named-data.net/doc/NFD/)
 
-- Allows [simulation of real applications](http://ndnsim.net/2.1/guide-to-simulate-real-apps.html)
+  Based on version `0.4.1-1-g704430c`
+
+- Allows [simulation of real applications](http://ndnsim.net/guide-to-simulate-real-apps.html)
   written against ndn-cxx library
 
 [ndnSIM documentation](http://ndnsim.net)
diff --git a/ndn-cxx b/ndn-cxx
index 36ec104..a47ed4f 160000
--- a/ndn-cxx
+++ b/ndn-cxx
@@ -1 +1 @@
-Subproject commit 36ec104e23ba5395a8b4df411b776cdbef9c5cd4
+Subproject commit a47ed4f3a0245ad0c44659905c8271e27af6124d
diff --git a/tests/unit-tests/empty.t.cpp b/tests/unit-tests/empty.t.cpp
new file mode 100644
index 0000000..4c56570
--- /dev/null
+++ b/tests/unit-tests/empty.t.cpp
@@ -0,0 +1,36 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2011-2016  Regents of the University of California.
+ *
+ * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
+ * contributors.
+ *
+ * ndnSIM is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * ndnSIM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ **/
+
+#include "boost-test.hpp"
+
+namespace ns3 {
+namespace ndn {
+namespace tests {
+
+BOOST_AUTO_TEST_SUITE(Empty)
+
+BOOST_AUTO_TEST_CASE(Nothing)
+{
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} // namespace tests
+} // namespace ndn
+} // namespace ns3
diff --git a/tests/wscript b/tests/wscript
index 26d020b..5bd65f4 100644
--- a/tests/wscript
+++ b/tests/wscript
@@ -6,14 +6,14 @@
 
     # Unit tests
     tests = bld.create_ns3_program('ndnSIM-unit-tests', all_modules)
-    tests.source = bld.path.ant_glob(['main.cpp', 'unit-tests/**/*.cpp'])
+    tests.source = bld.path.ant_glob(['main.cpp', 'unit-tests/**/*.cpp'],
+                                     excl=['unit-tests/*/**/*.cpp'])
     tests.includes = ['#', '.', '../NFD/', "../NFD/daemon", "../NFD/core", "../helper", "../model", "../apps", "../utils", "../examples"]
     tests.defines = 'TEST_CONFIG_PATH=\"%s/conf-test\"' %(bld.bldnode)
 
-    # Other tests
-    for i in bld.path.ant_glob(['other/*.cpp']):
-        name = str(i)[:-len(".cpp")]
-        obj = bld.create_ns3_program(name, all_modules)
-        obj.source = [i] + bld.path.ant_glob(['%s/**/*.cpp' % name])
-        obj.install_path = None
-
+    # # Other tests
+    # for i in bld.path.ant_glob(['other/*.cpp']):
+    #     name = str(i)[:-len(".cpp")]
+    #     obj = bld.create_ns3_program(name, all_modules)
+    #     obj.source = [i] + bld.path.ant_glob(['%s/**/*.cpp' % name])
+    #     obj.install_path = None
diff --git a/wscript b/wscript
index 71f2c9a..40f1468 100644
--- a/wscript
+++ b/wscript
@@ -110,13 +110,12 @@
                                         'ndn-cxx/src/util/dummy-client-face.cpp'])
 
     nfdSrc = bld.path.ant_glob(['%s/**/*.cpp' % dir for dir in ['NFD/core', 'NFD/daemon', 'NFD/rib']],
-                               excl=['NFD/core/network-interface.cpp',
-                                     'NFD/daemon/main.cpp',
+                               excl=['NFD/daemon/main.cpp',
                                      'NFD/daemon/nfd.cpp',
                                      'NFD/daemon/face/ethernet*',
                                      'NFD/daemon/face/multicast-udp*',
                                      'NFD/daemon/face/tcp*',
-                                     'NFD/daemon/face/udp*',
+                                     'NFD/daemon/face/*udp*',
                                      'NFD/daemon/face/unix-stream*',
                                      'NFD/daemon/face/websocket*',
                                      'NFD/rib/nrd.cpp'])
@@ -138,7 +137,12 @@
 
     module_dirs = ['apps', 'helper', 'model', 'utils']
     module.source = bld.path.ant_glob(['%s/**/*.cpp' % dir for dir in module_dirs],
-                                      excl=['model/ip-faces/*']) + ndnCxxSrc + nfdSrc
+                                      excl=[
+                                          'apps/*',
+                                          'model/**/*',
+                                          'helper/*',
+                                          'utils/**/*',
+                                          'model/ip-faces/*']) + ndnCxxSrc + nfdSrc
 
     module_dirs = ['NFD/core', 'NFD/daemon', 'NFD/rib', 'apps', 'helper', 'model', 'utils']
     module.full_headers = bld.path.ant_glob(['%s/**/*.hpp' % dir for dir in module_dirs])
@@ -146,13 +150,13 @@
 
     module.ndncxx_headers = bld.path.ant_glob(['ndn-cxx/src/**/*.hpp'],
                                               excl=['src/**/*-osx.hpp', 'src/detail/**/*'])
-    if bld.env.ENABLE_EXAMPLES:
-        bld.recurse('examples')
+    # if bld.env.ENABLE_EXAMPLES:
+    #     bld.recurse('examples')
 
     if bld.env.ENABLE_TESTS:
         bld.recurse('tests')
 
-    bld.ns3_python_bindings()
+    # bld.ns3_python_bindings()
 
 @TaskGen.feature('ns3fullmoduleheaders')
 @TaskGen.after_method('process_rule')
