diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk
index 248db74..6237abf 100644
--- a/app/src/main/jni/Android.mk
+++ b/app/src/main/jni/Android.mk
@@ -4,9 +4,9 @@
 include $(CLEAR_VARS)
 LOCAL_MODULE := nfd-wrapper
 LOCAL_SRC_FILES := nfd-wrapper.cpp
-LOCAL_SHARED_LIBRARIES := nfd_shared ndn_cxx_shared boost_system_shared boost_thread_shared boost_log_shared
+LOCAL_SHARED_LIBRARIES := nfd_shared ndn_cxx_shared boost_system_shared boost_thread_shared boost_log_shared boost_stacktrace_basic_shared
 LOCAL_LDLIBS := -llog -latomic
-LOCAL_CFLAGS := -DBOOST_LOG_DYN_LINK=1
+LOCAL_CFLAGS := -DBOOST_LOG_DYN_LINK -DBOOST_STACKTRACE_DYN_LINK
 include $(BUILD_SHARED_LIBRARY)
 
 $(call import-module,../packages/nfd/0.6.6)
diff --git a/app/src/main/jni/nfd-wrapper.cpp b/app/src/main/jni/nfd-wrapper.cpp
index d7ebed5..7b72430 100644
--- a/app/src/main/jni/nfd-wrapper.cpp
+++ b/app/src/main/jni/nfd-wrapper.cpp
@@ -19,19 +19,20 @@
 
 #include "nfd-wrapper.hpp"
 
-#include <nfd.hpp>
-#include <rib/service.hpp>
+#include <daemon/common/config-file.hpp>
+#include <daemon/common/global.hpp>
+#include <daemon/common/logger.hpp>
+#include <daemon/common/privilege-helper.hpp>
+#include <daemon/nfd.hpp>
+#include <daemon/rib/service.hpp>
 
-#include <common/config-file.hpp>
-#include <common/global.hpp>
-#include <common/logger.hpp>
-#include <common/privilege-helper.hpp>
+#include <ndn-cxx/util/exception.hpp>
+#include <ndn-cxx/util/logging.hpp>
 
 #include <boost/property_tree/info_parser.hpp>
-#include <boost/thread.hpp>
+
+#include <thread>
 #include <mutex>
-#include <ndn-cxx/util/logging.hpp>
-#include <stdlib.h>
 
 NFD_LOG_INIT(NfdWrapper);
 
@@ -108,6 +109,12 @@
     std::istringstream input(initialConfig);
     boost::property_tree::read_info(input, m_config);
 
+    // now, the start procedure can update config if needed
+  }
+
+  void
+  finishInit()
+  {
     m_nfd.reset(new Nfd(m_config, m_keyChain));
     m_ribService.reset(new rib::Service(m_config, m_keyChain));
 
@@ -144,6 +151,12 @@
     }
   }
 
+  nfd::ConfigSection&
+  getConfig()
+  {
+    return m_config;
+  }
+
 private:
   std::mutex m_pointerMutex;
   boost::asio::io_service* m_io;
@@ -155,7 +168,7 @@
 };
 
 static unique_ptr<Runner> g_runner;
-static boost::thread g_thread;
+static std::thread g_thread;
 static std::map<std::string, std::string> g_params;
 
 } // namespace nfd
@@ -212,16 +225,25 @@
     ::setenv("HOME", nfd::g_params["homePath"].c_str(), true);
     NFD_LOG_INFO("Use [" << nfd::g_params["homePath"] << "] as a security storage");
 
-    nfd::g_thread = boost::thread([] {
+    nfd::g_thread = std::thread([] {
         nfd::resetGlobalIoService();
 
         NFD_LOG_INFO("Starting NFD...");
         try {
           nfd::g_runner.reset(new nfd::Runner());
+          // update config
+          for (const auto& pair : nfd::g_params) {
+            if (pair.first == "homePath")
+              continue;
+
+            nfd::g_runner->getConfig().put(pair.first, pair.second);
+          }
+          nfd::g_runner->finishInit();
+
           nfd::g_runner->run();
         }
         catch (const std::exception& e) {
-          NFD_LOG_FATAL(e.what());
+          NFD_LOG_FATAL(boost::diagnostic_information(e));
         }
         catch (const nfd::PrivilegeHelper::Error& e) {
           NFD_LOG_FATAL("PrivilegeHelper: " << e.what());
