diff --git a/src/util/network-monitor.hpp b/src/util/network-monitor.hpp
index dae4941..b48d5e9 100644
--- a/src/util/network-monitor.hpp
+++ b/src/util/network-monitor.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).
  *
@@ -17,6 +17,9 @@
  * <http://www.gnu.org/licenses/>.
  *
  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ *
+ * @author Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ * @author Davide Pesavento <davide.pesavento@lip6.fr>
  */
 
 #ifndef NDN_UTIL_NETWORK_MONITOR_HPP
@@ -24,6 +27,8 @@
 
 #include "signal.hpp"
 
+#include <vector>
+
 // forward declaration
 namespace boost {
 namespace asio {
@@ -34,23 +39,23 @@
 namespace ndn {
 namespace util {
 
+class NetworkInterface;
+
 /**
- * @brief Network state change monitor
+ * @brief Network interfaces monitor
  *
- * When network change is detected, onNetworkStateChanged signal will be fired.
- * Monitoring is run for the lifetime of the NetworkMonitor instance.
+ * Maintains an up-to-date view of every system network interface and notifies when an interface
+ * is added or removed.
  *
  * @note Implementation of this class is platform dependent and not all supported platforms
  *       are supported:
- *       - OS X: CFNotificationCenterAddObserver
+ *       - OS X: CFNotificationCenterAddObserver (incomplete)
  *       - Linux: rtnetlink notifications
  *
- * Network state change detection is not guaranteed to be precise and (zero or more)
- * notifications are expected to be fired for the following events:
- * - any network interface going up or down
- * - IPv4 or IPv6 address changes on any of the interfaces
+ * @todo macOS implementation needs to be updated to emit the new signals and keep track of
+ *       interfaces (links) and addresses
  */
-class NetworkMonitor : boost::noncopyable
+class NetworkMonitor : noncopyable
 {
 public:
   class Error : public std::runtime_error
@@ -63,27 +68,50 @@
     }
   };
 
+  class Impl;
+
   /**
-   * @brief Construct instance and start monitoring for network state changes
+   * @brief Construct instance, request enumeration of all network interfaces, and start
+   *        monitoring for network state changes
+   *
    * @param io io_service thread that will dispatch events
    * @throw Error when network monitoring is not supported or there is an error starting monitoring
    */
   explicit
   NetworkMonitor(boost::asio::io_service& io);
 
-  /**
-   * @brief Terminate network state monitoring
-   */
   ~NetworkMonitor();
 
+  shared_ptr<NetworkInterface>
+  getNetworkInterface(const std::string& ifname) const;
+
+  std::vector<shared_ptr<NetworkInterface>>
+  listNetworkInterfaces() const;
+
+public: // signals
+  /** @brief Fires when network interfaces enumeration is complete
+   */
+  Signal<NetworkMonitor> onEnumerationCompleted;
+
+  /** @brief Fires when a new interface is added
+   */
+  Signal<NetworkMonitor, shared_ptr<NetworkInterface>> onInterfaceAdded;
+
+  /**
+   * @brief Fires when an interface is removed
+   * @note The NetworkInterface object is no longer present in the network
+   *       interfaces map when the signal is emitted
+   */
+  Signal<NetworkMonitor, shared_ptr<NetworkInterface>> onInterfaceRemoved;
+
+  // only for backward compatibility
   Signal<NetworkMonitor> onNetworkStateChanged;
 
 private:
-  class Impl;
   std::unique_ptr<Impl> m_impl;
 };
 
 } // namespace util
-} // namespace autoconfig
+} // namespace ndn
 
 #endif // NDN_UTIL_NETWORK_MONITOR_HPP
