diff --git a/NFD b/NFD
index 3bebd11..0a30676 160000
--- a/NFD
+++ b/NFD
@@ -1 +1 @@
-Subproject commit 3bebd1190b1c45f8acaa0fe1d3a3100651a062e4
+Subproject commit 0a30676920b9d3f2b2c8bc68e583befc415210cc
diff --git a/model/ndn-l3-protocol.cpp b/model/ndn-l3-protocol.cpp
index 83081b5..efb14f3 100644
--- a/model/ndn-l3-protocol.cpp
+++ b/model/ndn-l3-protocol.cpp
@@ -311,7 +311,7 @@
   m_impl->m_authenticator->setConfigFile(config);
 
   // if (!this->getConfig().get<bool>("ndnSIM.disable_face_manager", false)) {
-  m_impl->m_faceManager->setConfigFile(config);
+  m_impl->m_faceSystem->setConfigFile(config);
   // }
 
   // apply config
diff --git a/ndn-cxx b/ndn-cxx
index e1ae096..c37bf16 160000
--- a/ndn-cxx
+++ b/ndn-cxx
@@ -1 +1 @@
-Subproject commit e1ae096efd8ad503ce7dbd616ee174afaed6c66b
+Subproject commit c37bf1633828ef6b69646a4989a9cef855e08248
diff --git a/tests/unit-tests/ndn-cxx/face.t.cpp b/tests/unit-tests/ndn-cxx/face.t.cpp
index 67f3333..df84a30 100644
--- a/tests/unit-tests/ndn-cxx/face.t.cpp
+++ b/tests/unit-tests/ndn-cxx/face.t.cpp
@@ -242,8 +242,8 @@
   size_t recvCount = 0;
 
   // Retrieve data from remote
-  FactoryCallbackApp::Install(getNode("A"), [this, &recvCount] () -> shared_ptr<void> {
-      return make_shared<MultipleInterest>("/test/prefix", [this, &recvCount] (const Name& data) {
+  FactoryCallbackApp::Install(getNode("A"), [&recvCount] () -> shared_ptr<void> {
+      return make_shared<MultipleInterest>("/test/prefix", [&recvCount] (const Name& data) {
           BOOST_CHECK_EQUAL(data, Name("/test/prefix").appendSegment(recvCount));
           ++recvCount;
         },
@@ -283,7 +283,7 @@
 BOOST_AUTO_TEST_CASE(FaceShutdownFromTimeoutCallback)
 {
   // This test case to check if Face.shutdown from an onTimeout callback doesn't cause segfaults
-  FactoryCallbackApp::Install(getNode("A"), [this] () -> shared_ptr<void> {
+  FactoryCallbackApp::Install(getNode("A"), [] () -> shared_ptr<void> {
       return make_shared<SingleInterestWithFaceShutdown>();
     })
     .Start(Seconds(1.01));
diff --git a/tests/unit-tests/utils/tracers/ndn-app-delay-tracer.t.cpp b/tests/unit-tests/utils/tracers/ndn-app-delay-tracer.t.cpp
index 9336fd8..b981cee 100644
--- a/tests/unit-tests/utils/tracers/ndn-app-delay-tracer.t.cpp
+++ b/tests/unit-tests/utils/tracers/ndn-app-delay-tracer.t.cpp
@@ -88,13 +88,14 @@
   buffer << t.rdbuf();
 
   BOOST_CHECK_EQUAL(buffer.str(),
-    "Time	Node	AppId	SeqNo	Type	DelayS	DelayUS	RetxCount	HopCount\n"
-    "0.0417664	1	0	0	LastDelay	0.0417664	41766.4	1	2\n"
-    "0.0417664	1	0	0	FullDelay	0.0417664	41766.4	1	2\n"
-    "2	2	0	0	LastDelay	0	0	1	0\n"
-    "2	2	0	0	FullDelay	0	0	1	0\n"
-    "3.02088	2	0	1	LastDelay	0.0208832	20883.2	1	1\n"
-    "3.02088	2	0	1	FullDelay	0.0208832	20883.2	1	1\n");
+                    R"STR(Time	Node	AppId	SeqNo	Type	DelayS	DelayUS	RetxCount	HopCount
+0.0417888	1	0	0	LastDelay	0.0417888	41788.8	1	2
+0.0417888	1	0	0	FullDelay	0.0417888	41788.8	1	2
+2	2	0	0	LastDelay	0	0	1	0
+2	2	0	0	FullDelay	0	0	1	0
+3.02089	2	0	1	LastDelay	0.0208944	20894.4	1	1
+3.02089	2	0	1	FullDelay	0.0208944	20894.4	1	1
+)STR");
 }
 
 BOOST_AUTO_TEST_CASE(InstallNodeContainer)
@@ -114,9 +115,10 @@
   buffer << t.rdbuf();
 
   BOOST_CHECK_EQUAL(buffer.str(),
-    "Time	Node	AppId	SeqNo	Type	DelayS	DelayUS	RetxCount	HopCount\n"
-    "0.0417664	1	0	0	LastDelay	0.0417664	41766.4	1	2\n"
-    "0.0417664	1	0	0	FullDelay	0.0417664	41766.4	1	2\n");
+    R"STR(Time	Node	AppId	SeqNo	Type	DelayS	DelayUS	RetxCount	HopCount
+0.0417888	1	0	0	LastDelay	0.0417888	41788.8	1	2
+0.0417888	1	0	0	FullDelay	0.0417888	41788.8	1	2
+)STR");
 }
 
 BOOST_AUTO_TEST_CASE(InstallNode)
@@ -133,11 +135,12 @@
   buffer << t.rdbuf();
 
   BOOST_CHECK_EQUAL(buffer.str(),
-    "Time	Node	AppId	SeqNo	Type	DelayS	DelayUS	RetxCount	HopCount\n"
-    "2	2	0	0	LastDelay	0	0	1	0\n"
-    "2	2	0	0	FullDelay	0	0	1	0\n"
-    "3.02088	2	0	1	LastDelay	0.0208832	20883.2	1	1\n"
-    "3.02088	2	0	1	FullDelay	0.0208832	20883.2	1	1\n");
+    R"STR(Time	Node	AppId	SeqNo	Type	DelayS	DelayUS	RetxCount	HopCount
+2	2	0	0	LastDelay	0	0	1	0
+2	2	0	0	FullDelay	0	0	1	0
+3.02089	2	0	1	LastDelay	0.0208944	20894.4	1	1
+3.02089	2	0	1	FullDelay	0.0208944	20894.4	1	1
+)STR");
 }
 
 BOOST_AUTO_TEST_CASE(InstallNodeDumpStream)
@@ -151,10 +154,11 @@
   tracer = nullptr; // destroy tracer
 
   BOOST_CHECK(output->is_equal(
-    "2	2	0	0	LastDelay	0	0	1	0\n"
-    "2	2	0	0	FullDelay	0	0	1	0\n"
-    "3.02088	2	0	1	LastDelay	0.0208832	20883.2	1	1\n"
-    "3.02088	2	0	1	FullDelay	0.0208832	20883.2	1	1\n"));
+    R"STR(2	2	0	0	LastDelay	0	0	1	0
+2	2	0	0	FullDelay	0	0	1	0
+3.02089	2	0	1	LastDelay	0.0208944	20894.4	1	1
+3.02089	2	0	1	FullDelay	0.0208944	20894.4	1	1
+)STR"));
 }
 
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/unit-tests/utils/tracers/ndn-l3-rate-tracer.t.cpp b/tests/unit-tests/utils/tracers/ndn-l3-rate-tracer.t.cpp
index 0bb895f..ae2dc8e 100644
--- a/tests/unit-tests/utils/tracers/ndn-l3-rate-tracer.t.cpp
+++ b/tests/unit-tests/utils/tracers/ndn-l3-rate-tracer.t.cpp
@@ -114,8 +114,8 @@
      << "1	1	257	appFace://	OutTimedOutInterests	0	0	0	0\n";
   BOOST_CHECK(os.match_pattern());
 
-  os << "1	1	-1	all	SatisfiedInterests	3.2	0	4	0\n"
-     << "1	1	-1	all	TimedOutInterests	0	0	0	0\n";
+  os << "1	1	-1	all	SatisfiedInterests	2.4	0	3	0\n"
+     << "1	1	-1	all	TimedOutInterests	0.8	0	1	0\n";
   BOOST_CHECK(os.match_pattern());
 }
 
