diff --git a/rib/main.cpp b/rib/main.cpp
index 452b8a9..1593784 100644
--- a/rib/main.cpp
+++ b/rib/main.cpp
@@ -28,6 +28,7 @@
 #include "common.hpp"
 #include "rib-manager.hpp"
 #include "core/config-file.hpp"
+#include "core/global-io.hpp"
 #include "core/logger.hpp"
 
 namespace nfd {
@@ -97,12 +98,6 @@
     config.parse(configFile, false);
   }
 
-  boost::asio::io_service&
-  getIoService()
-  {
-    return m_ribManager->getIoService();
-  }
-
   static void
   printUsage(std::ostream& os, const std::string& programName)
   {
@@ -184,7 +179,7 @@
     if (signalNo == SIGINT ||
         signalNo == SIGTERM)
       {
-        getIoService().stop();
+        getGlobalIoService().stop();
         NFD_LOG_INFO("Caught signal '" << strsignal(signalNo) << "', exiting...");
       }
     else
@@ -243,7 +238,7 @@
     return 2;
   }
 
-  boost::asio::signal_set signalSet(nrdInstance.getIoService());
+  boost::asio::signal_set signalSet(nfd::getGlobalIoService());
   signalSet.add(SIGINT);
   signalSet.add(SIGTERM);
   signalSet.add(SIGHUP);
@@ -253,7 +248,7 @@
                             boost::ref(signalSet)));
 
   try {
-    nrdInstance.getIoService().run();
+    nfd::getGlobalIoService().run();
   }
   catch (std::exception& e) {
     NFD_LOG_FATAL(e.what());
diff --git a/rib/rib-manager.cpp b/rib/rib-manager.cpp
index 27f7f3c..6cb0d6b 100644
--- a/rib/rib-manager.cpp
+++ b/rib/rib-manager.cpp
@@ -24,6 +24,7 @@
  **/
 
 #include "rib-manager.hpp"
+#include "core/global-io.hpp"
 #include "core/logger.hpp"
 
 namespace nfd {
@@ -56,8 +57,14 @@
                      ),
   };
 
+inline static void
+NullDeleter(boost::asio::io_service* variable)
+{
+  // do nothing
+}
+
 RibManager::RibManager()
-  : m_face(new ndn::Face())
+  : m_face(new ndn::Face(shared_ptr<boost::asio::io_service>(&getGlobalIoService(), &NullDeleter)))
   , m_nfdController(new ndn::nfd::Controller(*m_face))
   , m_validator(m_face)
   , m_faceMonitor(*m_face)
@@ -296,13 +303,6 @@
     bind(&RibManager::onCommandError, this, _1, _2, request, options));
 }
 
-boost::asio::io_service&
-RibManager::getIoService()
-{
-  /// \todo Switch face to use global io service (needs library update)
-  return *m_face->ioService();
-}
-
 void
 RibManager::onControlHeaderSuccess()
 {
diff --git a/rib/rib-manager.hpp b/rib/rib-manager.hpp
index 9479291..40b5818 100644
--- a/rib/rib-manager.hpp
+++ b/rib/rib-manager.hpp
@@ -57,9 +57,6 @@
   void
   enableLocalControlHeader();
 
-  boost::asio::io_service&
-  getIoService();
-
   void
   setConfigFile(ConfigFile& configFile);
 
diff --git a/wscript b/wscript
index 61bc03f..440b04d 100644
--- a/wscript
+++ b/wscript
@@ -170,7 +170,7 @@
 
     bld(features='subst',
         source='tools/nfd-status-http-server.py',
-        target='nfd-status-http-server',
+        target='bin/nfd-status-http-server',
         install_path="${BINDIR}",
         chmod=0755)
 
