diff --git a/README b/README
index d0bf73d..2e0a069 100644
--- a/README
+++ b/README
@@ -1,2 +1,8 @@
 NDN module requires a number of patches to be applied on NS-3.
 Patches are in patches/ folder
+
+
+Depending on which base NS-3 is used, you may need to rescan python binding
+
+./waf --apiscan=ndnSIM
+
diff --git a/helper/ccnx-stack-helper.cc b/helper/ccnx-stack-helper.cc
index 4fdb8a5..a40e39a 100644
--- a/helper/ccnx-stack-helper.cc
+++ b/helper/ccnx-stack-helper.cc
@@ -40,7 +40,7 @@
 #include "../model/ccnx-fib.h"
 
 #include "ns3/node-list.h"
-#include "ns3/loopback-net-device.h"
+// #include "ns3/loopback-net-device.h"
 
 #include "ns3/data-rate.h"
 
@@ -135,8 +135,10 @@
   for (uint32_t index=0; index < node->GetNDevices (); index++)
     {
       Ptr<NetDevice> device = node->GetDevice (index);
-      if (DynamicCast<LoopbackNetDevice> (device) != 0)
-        continue; // don't create face for a LoopbackNetDevice
+      // This check does not make sense: LoopbackNetDevice is installed only if IP stack is installed,
+      // Normally, ndnSIM works without IP stack, so no reason to check
+      // if (DynamicCast<LoopbackNetDevice> (device) != 0)
+      //   continue; // don't create face for a LoopbackNetDevice
 
       Ptr<CcnxNetDeviceFace> face = CreateObject<CcnxNetDeviceFace> (node, device);
 
diff --git a/wscript b/wscript
index bded3d0..32428ca 100644
--- a/wscript
+++ b/wscript
@@ -24,7 +24,7 @@
         conf.report_optional_feature("ndn-abstract", "NDN abstraction", False,
                                      "Required boost libraries not found")
         conf.env['ENABLE_NDN_ABSTRACT']=False;
-        conf.env['MODULES_NOT_BUILT'].append('NDNabstraction')
+        conf.env['MODULES_NOT_BUILT'].append('ndnSIM')
         return
 
     conf.env['NDN_plugins'] = []
@@ -35,21 +35,23 @@
 
 
 def build(bld):
-    deps = ['core', 'network', 'point-to-point',
-            'topology-read','internet','applications',
-            'point-to-point-layout']
+    deps = ['core', 'network', 'point-to-point']
+    deps.append ('internet') # Until RttEstimator is moved to network module
     if bld.env['ENABLE_PYTHON_BINDINGS']:
         deps.append ('visualizer')
 
-    module = bld.create_ns3_module ('NDNabstraction', deps)
+    if 'topology' in bld.env['NDN_plugins']:
+        deps.append ('topology-read')
+
+    module = bld.create_ns3_module ('ndnSIM', deps)
     module.uselib = 'BOOST BOOST_IOSTREAMS'
 
-    tests = bld.create_ns3_module_test_library('NDNabstraction')
+    tests = bld.create_ns3_module_test_library('ndnSIM')
     headers = bld.new_task_gen(features=['ns3header'])
-    headers.module = 'NDNabstraction'
+    headers.module = 'ndnSIM'
 
     if not bld.env['ENABLE_NDN_ABSTRACT']:
-        bld.env['MODULES_NOT_BUILT'].append('NDNabstraction')
+        bld.env['MODULES_NOT_BUILT'].append('ndnSIM')
         return
    
     module.source = bld.path.ant_glob(['model/*.cc', 'apps/*.cc', 
@@ -90,10 +92,6 @@
 
         "utils/batches.h",
         # "utils/weights-path-stretch-tag.h",
-        # "utils/spring-mobility-model.h",
-        # "utils/spring-mobility-helper.h",
-        # "utils/rocketfuel-weights-reader.h",
-        # "utils/annotated-topology-reader.h",
         ]
 
     if 'topology' in bld.env['NDN_plugins']:
