diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk
index 20989c2..762c358 100644
--- a/app/src/main/jni/Android.mk
+++ b/app/src/main/jni/Android.mk
@@ -5,7 +5,7 @@
 LOCAL_MODULE := nfd-wrapper
 LOCAL_SRC_FILES := nfd-wrapper.cpp
 LOCAL_SHARED_LIBRARIES := nfd-daemon ndn-cxx boost_system_shared boost_thread_shared
-LOCAL_LDLIBS := -llog
+LOCAL_LDLIBS := -llog -latomic
 include $(BUILD_SHARED_LIBRARY)
 
 include $(LOCAL_PATH_SAVED)/ndn-cxx.mk
diff --git a/app/src/main/jni/NFD b/app/src/main/jni/NFD
index 6701911..e5abc94 160000
--- a/app/src/main/jni/NFD
+++ b/app/src/main/jni/NFD
@@ -1 +1 @@
-Subproject commit 67019110d71d25d9acf1bb7791ad9828dbabd757
+Subproject commit e5abc94540a8987ab8c2fc83f28d6073e2be0b96
diff --git a/app/src/main/jni/cryptopp b/app/src/main/jni/cryptopp
deleted file mode 160000
index 5ac4019..0000000
--- a/app/src/main/jni/cryptopp
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5ac4019f0893bae2e40c2698427afc8ea374c1d3
diff --git a/app/src/main/jni/ndn-cxx b/app/src/main/jni/ndn-cxx
index 17c83c2..f2e7a03 160000
--- a/app/src/main/jni/ndn-cxx
+++ b/app/src/main/jni/ndn-cxx
@@ -1 +1 @@
-Subproject commit 17c83c2467dd468dfa8684cc9f5412dc1b7c59dd
+Subproject commit f2e7a0391eed1670691c1e0a7c644bc2430bb01c
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
index d7d1858..e79c69d 100644
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
+++ b/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
@@ -1,14 +1,18 @@
 #ifndef W_SRC_NDN_CXX_CONFIG_HPP_WAF
 #define W_SRC_NDN_CXX_CONFIG_HPP_WAF
 
+// Uncomment this after switch to clang/libc++
 // #define NDN_CXX_HAVE_STD_TO_STRING 1
+
 #define NDN_CXX_HAVE_VECTOR_INSERT_ERASE_CONST_ITERATOR 1
 #define NDN_CXX_HAVE_IS_DEFAULT_CONSTRUCTIBLE 1
 #define NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE 1
 #define NDN_CXX_HAVE_IS_NOTHROW_MOVE_ASSIGNABLE 1
-#define NDN_CXX_HAVE_RT
 #define NDN_CXX_HAVE_PTHREAD 1
+#define NDN_CXX_HAVE_RT 1
+#define NDN_CXX_HAVE_RTNETLINK 1
 #define NDN_CXX_HAVE_SQLITE3 1
+#define NDN_CXX_HAVE_OPENSSL 1
 #define NDN_CXX_SYSCONFDIR "./etc"
 #define NDN_CXX_NDEBUG 1
 #define NDEBUG 1
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp
index 892c1d5..c8595fe 100644
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp
+++ b/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2016 Regents of the University of California.
+ * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -23,6 +23,7 @@
 #define NFD_ANDROID_NDN_CXX_ANDROID_NDN_CXX_CUSTOM_LOGGER_HPP
 
 #include "common.hpp"
+#include <sstream>
 #include <atomic>
 #include <android/log.h>
 
diff --git a/app/src/main/jni/ndn-cxx-android/version.hpp b/app/src/main/jni/ndn-cxx-android/version.hpp
new file mode 100644
index 0000000..4ab8d5d
--- /dev/null
+++ b/app/src/main/jni/ndn-cxx-android/version.hpp
@@ -0,0 +1,68 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2013-2017 Regents of the University of California.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx library is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-cxx library 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 Lesser General Public License for more details.
+ *
+ * You should have received copies of the GNU General Public License and GNU Lesser
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ */
+
+#ifndef NDN_VERSION_HPP
+#define NDN_VERSION_HPP
+
+namespace ndn {
+
+/** ndn-cxx version follows Semantic Versioning 2.0.0 specification
+ *  http://semver.org/
+ */
+
+/** \brief ndn-cxx version represented as an integer
+ *
+ *  MAJOR*1000000 + MINOR*1000 + PATCH
+ */
+#define NDN_CXX_VERSION 6000
+
+/** \brief ndn-cxx version represented as a string
+ *
+ *  MAJOR.MINOR.PATCH
+ */
+#define NDN_CXX_VERSION_STRING "0.6.0"
+
+/** \brief ndn-cxx version string, including git commit information, if ndn-cxx is build from
+ *         specific git commit
+ *
+ * NDN_CXX_VERSION_BUILD_STRING is obtained using the following command (`ndn-cxx-` prefix is
+ * afterwards removed):
+ *
+ *    `git describe --match 'ndn-cxx-*'`
+ *
+ * When ndn-cxx is built not from git, NDN_CXX_VERSION_BUILD_STRING equals NDN_CXX_VERSION_STRING
+ *
+ * MAJOR.MINOR.PATCH(-release-candidate-tag)(-(number-of-commits-since-tag)-COMMIT-HASH)
+ *
+ * Example, 0.1.0-rc1-1-g5c86570
+ */
+#define NDN_CXX_VERSION_BUILD_STRING "0.6.0"
+
+/// MAJOR version
+#define NDN_CXX_VERSION_MAJOR 0
+/// MINOR version
+#define NDN_CXX_VERSION_MINOR 6
+/// PATCH version
+#define NDN_CXX_VERSION_PATCH 0
+
+} // namespace ndn
+
+#endif // NDN_VERSION_HPP
diff --git a/app/src/main/jni/ndn-cxx.mk b/app/src/main/jni/ndn-cxx.mk
index b47ea5c..d12a5b6 100644
--- a/app/src/main/jni/ndn-cxx.mk
+++ b/app/src/main/jni/ndn-cxx.mk
@@ -4,27 +4,33 @@
 include $(CLEAR_VARS)
 LOCAL_MODULE := ndn-cxx
 NDN_CXX_BOOST_LIBS = system filesystem date_time iostreams program_options chrono random
-LOCAL_SHARED_LIBRARIES := cryptopp_shared libcrypto_shared libssl_shared $(addsuffix _shared,$(addprefix boost_,$(NDN_CXX_BOOST_LIBS)))
+LOCAL_SHARED_LIBRARIES := libcrypto_shared libssl_shared $(addsuffix _shared,$(addprefix boost_,$(NDN_CXX_BOOST_LIBS)))
 LOCAL_STATIC_LIBRARIES := sqlite3_static boost_regex_static
 NDN_CXX_SRC_FILES := \
     data.cpp \
+    delegation-list.cpp \
+    delegation.cpp \
     encoding/block-helpers.cpp \
     encoding/block.cpp \
     encoding/buffer-stream.cpp \
     encoding/buffer.cpp \
-    encoding/cryptopp/asn_ext.cpp \
     encoding/encoder.cpp \
     encoding/estimator.cpp \
     encoding/nfd-constants.cpp \
-    encoding/oid.cpp \
+    encoding/tlv.cpp \
     exclude.cpp \
     face.cpp \
+    ims/in-memory-storage-entry.cpp \
+    ims/in-memory-storage-fifo.cpp \
+    ims/in-memory-storage-lfu.cpp \
+    ims/in-memory-storage-lru.cpp \
+    ims/in-memory-storage-persistent.cpp \
+    ims/in-memory-storage.cpp \
     interest-filter.cpp \
     interest.cpp \
     key-locator.cpp \
     link.cpp \
     lp/cache-policy.cpp \
-    lp/detail/field-info.cpp \
     lp/nack-header.cpp \
     lp/nack.cpp \
     lp/packet.cpp \
@@ -37,6 +43,7 @@
     mgmt/nfd/control-parameters.cpp \
     mgmt/nfd/controller.cpp \
     mgmt/nfd/face-event-notification.cpp \
+    mgmt/nfd/face-monitor.cpp \
     mgmt/nfd/face-query-filter.cpp \
     mgmt/nfd/face-status.cpp \
     mgmt/nfd/fib-entry.cpp \
@@ -47,33 +54,44 @@
     mgmt/status-dataset-context.cpp \
     name-component.cpp \
     name.cpp \
-    security/certificate-cache-ttl.cpp \
-    security/certificate-container.cpp \
-    security/command-interest-validator.cpp \
+    net/address-converter.cpp \
+    net/detail/link-type-helper.cpp \
+    net/detail/linux-if-constants.cpp \
+    net/detail/network-monitor-impl-rtnl.cpp \
+    net/dns.cpp \
+    net/ethernet.cpp \
+    net/face-uri.cpp \
+    net/network-address.cpp \
+    net/network-interface.cpp \
+    net/network-monitor-stub.cpp \
+    net/network-monitor.cpp \
+    packet-base.cpp \
+    security/command-interest-signer.cpp \
     security/detail/openssl-helper.cpp \
     security/digest-sha256.cpp \
-    security/identity-container.cpp \
-    security/identity.cpp \
-    security/key-chain.cpp \
-    security/key-container.cpp \
     security/key-params.cpp \
-    security/key.cpp \
-    security/pib-memory.cpp \
-    security/pib-sqlite3.cpp \
-    security/pib.cpp \
+    security/pib/certificate-container.cpp \
+    security/pib/detail/identity-impl.cpp \
+    security/pib/detail/key-impl.cpp \
+    security/pib/identity-container.cpp \
+    security/pib/identity.cpp \
+    security/pib/key-container.cpp \
+    security/pib/key.cpp \
+    security/pib/pib-memory.cpp \
+    security/pib/pib-sqlite3.cpp \
+    security/pib/pib.cpp \
     security/safe-bag.cpp \
-    security/sec-public-info-sqlite3.cpp \
-    security/sec-public-info.cpp \
-    security/sec-rule-relative.cpp \
-    security/sec-rule-specific.cpp \
-    security/sec-tpm-file.cpp \
-    security/sec-tpm.cpp \
-    security/secured-bag.cpp \
     security/security-common.cpp \
     security/signature-sha256-with-ecdsa.cpp \
     security/signature-sha256-with-rsa.cpp \
     security/signing-helpers.cpp \
     security/signing-info.cpp \
+    security/tpm/back-end-file.cpp \
+    security/tpm/back-end-mem.cpp \
+    security/tpm/back-end.cpp \
+    security/tpm/key-handle-mem.cpp \
+    security/tpm/key-handle.cpp \
+    security/tpm/tpm.cpp \
     security/transform/base64-decode.cpp \
     security/transform/base64-encode.cpp \
     security/transform/block-cipher.cpp \
@@ -92,16 +110,33 @@
     security/transform/strip-space.cpp \
     security/transform/transform-base.cpp \
     security/transform/verifier-filter.cpp \
-    security/v1/certificate-extension.cpp \
-    security/v1/certificate-subject-description.cpp \
-    security/v1/certificate.cpp \
-    security/v1/identity-certificate.cpp \
-    security/v1/public-key.cpp \
     security/v2/additional-description.cpp \
+    security/v2/certificate-bundle-fetcher.cpp \
+    security/v2/certificate-cache.cpp \
+    security/v2/certificate-fetcher-direct-fetch.cpp \
+    security/v2/certificate-fetcher-from-network.cpp \
+    security/v2/certificate-fetcher-offline.cpp \
+    security/v2/certificate-fetcher.cpp \
+    security/v2/certificate-storage.cpp \
+    security/v2/certificate.cpp \
+    security/v2/key-chain.cpp \
+    security/v2/trust-anchor-container.cpp \
+    security/v2/trust-anchor-group.cpp \
+    security/v2/validation-error.cpp \
+    security/v2/validation-policy-command-interest.cpp \
+    security/v2/validation-policy-config.cpp \
+    security/v2/validation-policy-simple-hierarchy.cpp \
+    security/v2/validation-policy.cpp \
+    security/v2/validation-state.cpp \
+    security/v2/validator-config/checker.cpp \
+    security/v2/validator-config/filter.cpp \
+    security/v2/validator-config/name-relation.cpp \
+    security/v2/validator-config/rule.cpp \
+    security/v2/validator.cpp \
     security/validator-config.cpp \
-    security/validator-regex.cpp \
-    security/validator.cpp \
+    security/validator-null.cpp \
     security/validity-period.cpp \
+    security/verification-helpers.cpp \
     selectors.cpp \
     signature-info.cpp \
     signature.cpp \
@@ -109,28 +144,18 @@
     transport/transport.cpp \
     transport/unix-transport.cpp \
     util/config-file.cpp \
-    util/crypto.cpp \
-    util/digest.cpp \
-    util/dns.cpp \
     util/dummy-client-face.cpp \
-    util/ethernet.cpp \
-    util/face-uri.cpp \
-    util/in-memory-storage-entry.cpp \
-    util/in-memory-storage-fifo.cpp \
-    util/in-memory-storage-lfu.cpp \
-    util/in-memory-storage-lru.cpp \
-    util/in-memory-storage-persistent.cpp \
-    util/in-memory-storage.cpp \
     util/indented-stream.cpp \
     util/io.cpp \
-    util/network-monitor.cpp \
+    util/notification-subscriber.cpp \
     util/random.cpp \
     util/regex/regex-top-matcher.cpp \
     util/scheduler-scoped-event-id.cpp \
     util/scheduler.cpp \
     util/segment-fetcher.cpp \
-    util/signal-connection.cpp \
-    util/signal-scoped-connection.cpp \
+    util/sha256.cpp \
+    util/signal/connection.cpp \
+    util/signal/scoped-connection.cpp \
     util/sqlite3-statement.cpp \
     util/string-helper.cpp \
     util/time-unit-test-clock.cpp \
@@ -140,11 +165,9 @@
 LOCAL_SRC_FILES := $(addprefix ndn-cxx/src/,$(NDN_CXX_SRC_FILES))
 LOCAL_CPPFLAGS := -I$(LOCAL_PATH)/ndn-cxx/src -I$(LOCAL_PATH)/ndn-cxx-android -I$(LOCAL_PATH)/../../../build/generated/source/ndn-cxx
 LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/ndn-cxx-android $(LOCAL_PATH)/../../../build/generated/source/include
-LOCAL_LDLIBS := -llog
+LOCAL_LDLIBS := -llog -latomic
 include $(BUILD_SHARED_LIBRARY)
 
-include $(LOCAL_PATH_SAVED)/cryptopp/extras/jni/Android.mk
-
 $(call import-module,../packages/boost/1.65.1)
 $(call import-module,../packages/sqlite/3.18.0)
 $(call import-module,../packages/openssl/1.0.2m)
diff --git a/app/src/main/jni/nfd-android/core/version.hpp b/app/src/main/jni/nfd-android/core/version.hpp
index 0b1f451..19a9d22 100644
--- a/app/src/main/jni/nfd-android/core/version.hpp
+++ b/app/src/main/jni/nfd-android/core/version.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -38,13 +38,13 @@
  *
  *  MAJOR*1000000 + MINOR*1000 + PATCH
  */
-#define NFD_VERSION 5000
+#define NFD_VERSION 6000
 
 /** \brief NFD version represented as a string
  *
  *  MAJOR.MINOR.PATCH
  */
-#define NFD_VERSION_STRING "0.5.0"
+#define NFD_VERSION_STRING "0.6.0"
 
 /** \brief NFD version string, including git commit information, if NFD is build from
  *         specific git commit
@@ -60,12 +60,12 @@
  *
  * Example, 0.1.0-rc1-1-g5c86570
  */
-#define NFD_VERSION_BUILD_STRING "0.5.0"
+#define NFD_VERSION_BUILD_STRING "0.6.0"
 
 /// MAJOR version
 #define NFD_VERSION_MAJOR 0
 /// MINOR version
-#define NFD_VERSION_MINOR 5
+#define NFD_VERSION_MINOR 6
 /// PATCH version
 #define NFD_VERSION_PATCH 0
 
diff --git a/app/src/main/jni/nfd-android/custom-logger-factory.cpp b/app/src/main/jni/nfd-android/custom-logger-factory.cpp
index c1d2157..436bdf1 100644
--- a/app/src/main/jni/nfd-android/custom-logger-factory.cpp
+++ b/app/src/main/jni/nfd-android/custom-logger-factory.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -25,6 +25,8 @@
 
 #include "custom-logger-factory.hpp"
 
+#include <boost/algorithm/string/case_conv.hpp>
+
 namespace nfd {
 
 NFD_LOG_INIT("LoggerFactory");
@@ -66,44 +68,36 @@
   // std::cerr << m_levelNames.begin()->first << std::endl;
 
   LevelMap::const_iterator levelIt = m_levelNames.find(upperLevel);
-  if (levelIt != m_levelNames.end())
-    {
-      return levelIt->second;
-    }
-  try
-    {
-      uint32_t levelNo = boost::lexical_cast<uint32_t>(level);
+  if (levelIt != m_levelNames.end()) {
+    return levelIt->second;
+  }
+  try {
+    uint32_t levelNo = boost::lexical_cast<uint32_t>(level);
 
-      if ((boost::lexical_cast<uint32_t>(LOG_NONE) <= levelNo &&
-           levelNo <= boost::lexical_cast<uint32_t>(LOG_TRACE)) ||
-          levelNo == LOG_ALL)
-        {
-          return static_cast<LogLevel>(levelNo);
-        }
+    if ((boost::lexical_cast<uint32_t>(LOG_NONE) <= levelNo &&
+         levelNo <= boost::lexical_cast<uint32_t>(LOG_TRACE)) ||
+        levelNo == LOG_ALL) {
+      return static_cast<LogLevel>(levelNo);
     }
-  catch (const boost::bad_lexical_cast& error)
-    {
-    }
-  throw LoggerFactory::Error("Unsupported logging level \"" +
-                             level + "\"");
+  }
+  catch (const boost::bad_lexical_cast& error) {
+  }
+  throw LoggerFactory::Error("Unsupported logging level \"" + level + "\"");
 }
 
 LogLevel
 LoggerFactory::extractLevel(const ConfigSection& item, const std::string& key)
 {
   std::string levelString;
-  try
-    {
-      levelString = item.get_value<std::string>();
-    }
-  catch (const boost::property_tree::ptree_error& error)
-    {
-    }
+  try {
+    levelString = item.get_value<std::string>();
+  }
+  catch (const boost::property_tree::ptree_error& error) {
+  }
 
-  if (levelString.empty())
-    {
-      throw LoggerFactory::Error("No logging level found for option \"" + key + "\"");
-    }
+  if (levelString.empty()) {
+    throw LoggerFactory::Error("No logging level found for option \"" + key + "\"");
+  }
 
   return parseLevel(levelString);
 }
@@ -127,45 +121,37 @@
 //   Forwarder WARN
 // }
 
-  if (!isDryRun)
-    {
-      ConfigSection::const_assoc_iterator item = section.find("default_level");
-      if (item != section.not_found())
-        {
-          LogLevel level = extractLevel(item->second, "default_level");
-          setDefaultLevel(level);
-        }
-      else
-        {
-          setDefaultLevel(LOG_INFO);
-        }
+  if (!isDryRun) {
+    ConfigSection::const_assoc_iterator item = section.find("default_level");
+    if (item != section.not_found()) {
+      LogLevel level = extractLevel(item->second, "default_level");
+      setDefaultLevel(level);
     }
+    else {
+      setDefaultLevel(LOG_INFO);
+    }
+  }
 
   for (ConfigSection::const_iterator item = section.begin();
        item != section.end();
-       ++item)
-    {
-      LogLevel level = extractLevel(item->second, item->first);
+       ++item) {
+    LogLevel level = extractLevel(item->second, item->first);
 
-      if (item->first == "default_level")
-        {
-          // do nothing
-        }
-      else
-        {
-          LoggerMap::iterator loggerIt = m_loggers.find(item->first);
-          if (loggerIt == m_loggers.end())
-            {
-              NFD_LOG_DEBUG("Failed to configure logging level for module \"" <<
-                            item->first << "\" (module not found)");
-            }
-          else if (!isDryRun)
-            {
-              // std::cerr << "changing level for module " << item->first << " to " << level << std::endl;
-              loggerIt->second.setLogLevel(level);
-            }
-        }
+    if (item->first == "default_level") {
+      // do nothing
     }
+    else {
+      LoggerMap::iterator loggerIt = m_loggers.find(item->first);
+      if (loggerIt == m_loggers.end()) {
+        NFD_LOG_DEBUG("Failed to configure logging level for module \"" <<
+                      item->first << "\" (module not found)");
+      }
+      else if (!isDryRun) {
+        // std::cerr << "changing level for module " << item->first << " to " << level << std::endl;
+        loggerIt->second.setLogLevel(level);
+      }
+    }
+  }
 }
 
 void
@@ -174,11 +160,10 @@
   // std::cerr << "changing to default_level " << level << std::endl;
 
   m_defaultLevel = level;
-  for (LoggerMap::iterator i = m_loggers.begin(); i != m_loggers.end(); ++i)
-    {
-      // std::cerr << "changing " << i->first << " to default " << m_defaultLevel << std::endl;
-      i->second.setLogLevel(m_defaultLevel);
-    }
+  for (LoggerMap::iterator i = m_loggers.begin(); i != m_loggers.end(); ++i) {
+    // std::cerr << "changing " << i->first << " to default " << m_defaultLevel << std::endl;
+    i->second.setLogLevel(m_defaultLevel);
+  }
 }
 
 Logger&
@@ -203,10 +188,9 @@
 LoggerFactory::getModules() const
 {
   std::list<std::string> modules;
-  for (LoggerMap::const_iterator i = m_loggers.begin(); i != m_loggers.end(); ++i)
-    {
-      modules.push_back(i->first);
-    }
+  for (LoggerMap::const_iterator i = m_loggers.begin(); i != m_loggers.end(); ++i) {
+    modules.push_back(i->first);
+  }
 
   return modules;
 }
diff --git a/app/src/main/jni/nfd-android/custom-logger.hpp b/app/src/main/jni/nfd-android/custom-logger.hpp
index 2033967..86ed64c 100644
--- a/app/src/main/jni/nfd-android/custom-logger.hpp
+++ b/app/src/main/jni/nfd-android/custom-logger.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -27,6 +27,7 @@
 #define NFD_ANDROID_CUSTOM_LOGGER_HPP
 
 #include "core/common.hpp"
+#include <sstream>
 #include <android/log.h>
 
 namespace nfd {
diff --git a/app/src/main/jni/nfd.mk b/app/src/main/jni/nfd.mk
index 77c27b8..a2c145e 100644
--- a/app/src/main/jni/nfd.mk
+++ b/app/src/main/jni/nfd.mk
@@ -6,22 +6,24 @@
 # nfd itself
 include $(CLEAR_VARS)
 LOCAL_MODULE := nfd-daemon
-LOCAL_SHARED_LIBRARIES := cryptopp_shared libcrypto_shared libssl_shared ndn-cxx $(addsuffix _shared,$(addprefix boost_,$(NFD_BOOST_LIBS)))
+LOCAL_SHARED_LIBRARIES := libssl_shared libcrypto_shared ndn-cxx $(addsuffix _shared,$(addprefix boost_,$(NFD_BOOST_LIBS)))
 NFD_DAEMON_SRC_FILES := \
     core/city-hash.cpp \
     core/config-file.cpp \
     core/global-io.cpp \
     core/manager-base.cpp \
-    core/network-interface.cpp \
+    core/network-interface-predicate.cpp \
     core/network.cpp \
     core/privilege-helper.cpp \
     core/random.cpp \
+    core/rtt-estimator.cpp \
     core/scheduler.cpp \
     ../nfd-android/custom-logger.cpp \
     ../nfd-android/custom-logger-factory.cpp \
     \
     daemon/face/channel.cpp \
     daemon/face/face-counters.cpp \
+    daemon/face/face-system.cpp \
     daemon/face/face.cpp \
     daemon/face/generic-link-service.cpp \
     daemon/face/internal-face.cpp \
@@ -29,8 +31,10 @@
     daemon/face/link-service.cpp \
     daemon/face/lp-fragmenter.cpp \
     daemon/face/lp-reassembler.cpp \
+    daemon/face/lp-reliability.cpp \
     daemon/face/multicast-udp-transport.cpp \
     daemon/face/null-face.cpp \
+    daemon/face/protocol-factory.cpp \
     daemon/face/tcp-channel.cpp \
     daemon/face/tcp-factory.cpp \
     daemon/face/tcp-transport.cpp \
@@ -43,6 +47,7 @@
     daemon/face/websocket-factory.cpp \
     daemon/face/websocket-transport.cpp \
     daemon/fw/access-strategy.cpp \
+    daemon/fw/algorithm.cpp \
     daemon/fw/asf-measurements.cpp \
     daemon/fw/asf-probing-module.cpp \
     daemon/fw/asf-strategy.cpp \
@@ -53,12 +58,9 @@
     daemon/fw/forwarder.cpp \
     daemon/fw/multicast-strategy.cpp \
     daemon/fw/ncc-strategy.cpp \
-    daemon/fw/pit-algorithm.cpp \
+    daemon/fw/process-nack-traits.cpp \
     daemon/fw/retx-suppression-exponential.cpp \
     daemon/fw/retx-suppression-fixed.cpp \
-    daemon/fw/retx-suppression.cpp \
-    daemon/fw/rtt-estimator.cpp \
-    daemon/fw/strategy-registry.cpp \
     daemon/fw/strategy.cpp \
     daemon/fw/unsolicited-data-policy.cpp \
     daemon/main.cpp \
@@ -104,6 +106,11 @@
     rib/fib-update.cpp \
     rib/fib-updater.cpp \
     rib/propagated-entry.cpp \
+    rib/readvertise/client-to-nlsr-readvertise-policy.cpp \
+    rib/readvertise/nfd-rib-readvertise-destination.cpp \
+    rib/readvertise/readvertise-destination.cpp \
+    rib/readvertise/readvertise.cpp \
+    rib/readvertise/readvertised-route.cpp \
     rib/rib-entry.cpp \
     rib/rib-manager.cpp \
     rib/rib-update-batch.cpp \
