diff --git a/app/build.gradle b/app/build.gradle
index dadd233..3b23efb 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,8 +9,8 @@
         applicationId "net.named_data.nfd"
         minSdkVersion 23
         targetSdkVersion 26
-        versionCode 4009
-        versionName "0.6.2-1 (NFD 0.6.2-11-gd657d53)"
+        versionCode 4010
+        versionName "0.6.5-1 (NFD 0.6.5)"
         multiDexEnabled true
     }
     compileOptions {
@@ -148,14 +148,14 @@
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
-    implementation 'com.android.support:support-v4:28.0.0-alpha3'
+    implementation 'com.android.support:appcompat-v7:28.0.0'
+    implementation 'com.android.support:support-v4:28.0.0'
     implementation 'com.android.volley:volley:1.1.1'
 
     implementation('net.named-data.jndn-extra:jndn-management:1.2.0') {
       exclude group: 'net.named-data', module: 'jndn'
     }
-    implementation('net.named-data:jndn-android:0.17') {
+    implementation('net.named-data:jndn-android:0.20') {
       exclude group: 'org.xerial'
       exclude group: 'com.google.android'
     }
diff --git a/app/src/main/java/net/named_data/nfd/PingClient.java b/app/src/main/java/net/named_data/nfd/PingClient.java
index 70abdfc..bdeb046 100644
--- a/app/src/main/java/net/named_data/nfd/PingClient.java
+++ b/app/src/main/java/net/named_data/nfd/PingClient.java
@@ -1,6 +1,6 @@
 /* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2015-2016 Regents of the University of California
+ * Copyright (c) 2015-2019 Regents of the University of California
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
  * See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -187,7 +187,12 @@
   private void processEvents() {
     try {
       if (m_isRunning.get()) {
-        m_face.processEvents();
+        try {
+          m_face.processEvents();
+        }
+        catch (EncodingException e) {
+          G.Log("Encoding error: " + e.getMessage());
+        }
         m_handler.postDelayed(new Runnable() {
           @Override
           public void run()
@@ -203,9 +208,6 @@
     catch (IOException e) {
       G.Log("Face error: " + e.getMessage());
     }
-    catch (EncodingException e) {
-      G.Log("Encoding error: " + e.getMessage());
-    }
   }
 
   private void terminate() {
diff --git a/app/src/main/java/net/named_data/nfd/service/NfdService.java b/app/src/main/java/net/named_data/nfd/service/NfdService.java
index 5b85a6e..92196f6 100644
--- a/app/src/main/java/net/named_data/nfd/service/NfdService.java
+++ b/app/src/main/java/net/named_data/nfd/service/NfdService.java
@@ -1,6 +1,6 @@
 /* -*- Mode:jde; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2015-2018 Regents of the University of California
+ * Copyright (c) 2015-2019 Regents of the University of California
  * <p>
  * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
  * See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -114,9 +114,6 @@
   public native static boolean
   isNfdRunning();
 
-  public native static List<String>
-  getNfdLogModules();
-
   /**
    * Message to start NFD Service
    */
@@ -216,12 +213,6 @@
 
       startNfd(params);
 
-      // Example how to retrieve all available NFD log modules
-      List<String> modules = getNfdLogModules();
-      for (String module : modules) {
-        G.Log(module);
-      }
-
       // TODO: Reload NFD and NRD in memory structures (if any)
 
       // Keep Service alive; In event when service is started
diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk
index 9310d31..6b99cba 100644
--- a/app/src/main/jni/Android.mk
+++ b/app/src/main/jni/Android.mk
@@ -9,4 +9,4 @@
 LOCAL_CFLAGS := -DBOOST_LOG_DYN_LINK=1
 include $(BUILD_SHARED_LIBRARY)
 
-$(call import-module,../packages/nfd/0.6.2-11-gd657d53)
+$(call import-module,../packages/nfd/0.6.5)
diff --git a/app/src/main/jni/nfd-wrapper.cpp b/app/src/main/jni/nfd-wrapper.cpp
index 918efce..64c16f1 100644
--- a/app/src/main/jni/nfd-wrapper.cpp
+++ b/app/src/main/jni/nfd-wrapper.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2015-2018 Regents of the University of California
+ * Copyright (c) 2015-2019 Regents of the University of California
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
  * See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -70,6 +70,7 @@
           /localhost/nfd  /localhost/nfd/strategy/best-route
           /ndn/broadcast  /localhost/nfd/strategy/multicast
           /ndn/multicast  /localhost/nfd/strategy/multicast
+          /sl             /localhost/nfd/strategy/self-learning
         }
       }
       face_system
@@ -104,40 +105,47 @@
             type any
           }
         }
+        ; localhop_security
+        ; {
+        ;   trust-anchor
+        ;   {
+        ;     type any
+        ;   }
+        ; }
         auto_prefix_propagate
         {
           refresh_interval 300
         }
       }
-  )CONF";
+    )CONF";
 
     std::istringstream input(initialConfig);
     boost::property_tree::read_info(input, m_config);
 
-    std::unique_lock<std::mutex> lock(m_pointerMutex);
     m_nfd.reset(new Nfd(m_config, m_keyChain));
-    m_nrd.reset(new rib::Service(m_config, m_keyChain));
+    m_ribService.reset(new rib::Service(m_config, m_keyChain));
 
     m_nfd->initialize();
-    m_nrd->initialize();
-  }
-
-  ~Runner()
-  {
-    stop();
-    m_io->reset();
   }
 
   void
-  start()
+  run()
   {
     {
       std::unique_lock<std::mutex> lock(m_pointerMutex);
       m_io = &getGlobalIoService();
     }
 
+    setMainIoService(m_io);
+    setRibIoService(m_io);
+
     m_io->run();
     m_io->reset();
+
+    m_ribService.reset();
+    m_nfd.reset();
+
+    m_io = nullptr;
   }
 
   void
@@ -145,19 +153,17 @@
   {
     std::unique_lock<std::mutex> lock(m_pointerMutex);
 
-    m_io->post([this] {
-        m_io->stop();
-        this->m_nrd.reset();
-        this->m_nfd.reset();
-      });
+    if (m_io != nullptr) {
+      m_io->stop();
+    }
   }
 
 private:
   std::mutex m_pointerMutex;
   boost::asio::io_service* m_io;
   ndn::KeyChain m_keyChain;
-  unique_ptr<Nfd> m_nfd; // will use globalIoService
-  unique_ptr<rib::Service> m_nrd; // will use globalIoService
+  unique_ptr<Nfd> m_nfd;
+  unique_ptr<rib::Service> m_ribService;
 
   nfd::ConfigSection m_config;
 };
@@ -227,7 +233,7 @@
         NFD_LOG_INFO("Starting NFD...");
         try {
           nfd::g_runner.reset(new nfd::Runner());
-          nfd::g_runner->start();
+          nfd::g_runner->run();
         }
         catch (const std::exception& e) {
           NFD_LOG_FATAL(e.what());
@@ -260,22 +266,5 @@
 JNIEXPORT jboolean JNICALL
 Java_net_named_1data_nfd_service_NfdService_isNfdRunning(JNIEnv*, jclass)
 {
-    return nfd::g_runner.get() != nullptr;
-}
-
-JNIEXPORT jobject JNICALL
-Java_net_named_1data_nfd_service_NfdService_getNfdLogModules(JNIEnv* env, jclass)
-{
-  jclass jcLinkedList = env->FindClass("java/util/LinkedList");
-  jmethodID jcLinkedListConstructor = env->GetMethodID(jcLinkedList, "<init>", "()V");
-  jmethodID jcLinkedListAdd = env->GetMethodID(jcLinkedList, "add", "(Ljava/lang/Object;)Z");
-
-  jobject jModules = env->NewObject(jcLinkedList, jcLinkedListConstructor);
-
-  for (const auto& module : ndn::util::Logging::getLoggerNames()) {
-    jstring jModule = env->NewStringUTF(module.c_str());
-    env->CallBooleanMethod(jModules, jcLinkedListAdd, jModule);
-  }
-
-  return jModules;
+  return nfd::g_runner.get() != nullptr;
 }
diff --git a/app/src/main/jni/nfd-wrapper.hpp b/app/src/main/jni/nfd-wrapper.hpp
index 69a0ab5..c3e11dc 100644
--- a/app/src/main/jni/nfd-wrapper.hpp
+++ b/app/src/main/jni/nfd-wrapper.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2015-2016 Regents of the University of California
+ * Copyright (c) 2015-2019 Regents of the University of California
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon) Android.
  * See AUTHORS.md for complete list of NFD Android authors and contributors.
@@ -51,14 +51,6 @@
 JNIEXPORT jboolean JNICALL
 Java_net_named_1data_nfd_service_NfdService_isNfdRunning(JNIEnv*, jclass);
 
-/*
- * Class:     net_named_data_nfd_service_NfdService
- * Method:    getNfdLogModules
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL
-Java_net_named_1data_nfd_service_NfdService_getNfdLogModules(JNIEnv*, jclass);
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/build.gradle b/build.gradle
index 3904604..8c7755a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,7 +9,7 @@
         }
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.1.3'
+        classpath 'com.android.tools.build:gradle:3.3.1'
         // classpath 'net.named-data.playground:play-publisher:1.2.0-2-SNAPSHOT'
         classpath 'com.github.triplet.gradle:play-publisher:1.2.0'
 
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index b249a5c..38aa7b8 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sun Nov 12 15:16:12 EST 2017
+#Sun Feb 10 12:14:11 EST 2019
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
