diff --git a/src/util/notification-subscriber.hpp b/src/util/notification-subscriber.hpp
index 32d9d6a..ca997b7 100644
--- a/src/util/notification-subscriber.hpp
+++ b/src/util/notification-subscriber.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -48,8 +48,8 @@
 #ifndef NDN_UTIL_NOTIFICATION_SUBSCRIBER_HPP
 #define NDN_UTIL_NOTIFICATION_SUBSCRIBER_HPP
 
-#include "event-emitter.hpp"
 #include "../face.hpp"
+#include "signal.hpp"
 #include "concepts.hpp"
 #include <boost/concept_check.hpp>
 
@@ -135,15 +135,15 @@
   /** \brief fires when a Notification is received
    *  \note Removing all handlers will cause the subscriber to stop.
    */
-  EventEmitter<Notification> onNotification;
+  signal::Signal<NotificationSubscriber, Notification> onNotification;
 
   /** \brief fires when no Notification is received within .getInterestLifetime period
    */
-  EventEmitter<> onTimeout;
+  signal::Signal<NotificationSubscriber> onTimeout;
 
   /** \brief fires when a Data packet in the Notification Stream cannot be decoded as Notification
    */
-  EventEmitter<Data> onDecodeError;
+  signal::Signal<NotificationSubscriber, Data> onDecodeError;
 
 private:
   void
diff --git a/tests/unit-tests/util/notification-subscriber.cpp b/tests/unit-tests/util/notification-subscriber.cpp
index 96f5bf4..643daf0 100644
--- a/tests/unit-tests/util/notification-subscriber.cpp
+++ b/tests/unit-tests/util/notification-subscriber.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2014 Regents of the University of California.
+ * Copyright (c) 2013-2015 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -97,12 +97,6 @@
   }
 
   void
-  clearNotificationHandlers()
-  {
-    subscriber.onNotification.clear();
-  }
-
-  void
   afterTimeout()
   {
     hasTimeout = true;
@@ -155,6 +149,7 @@
   util::NotificationStream<SimpleNotification> notificationStream;
   shared_ptr<DummyClientFace> subscriberFace;
   util::NotificationSubscriber<SimpleNotification> subscriber;
+  util::signal::Connection notificationConn;
 
   uint64_t lastDeliveredSeqNo;
 
@@ -171,9 +166,10 @@
   subscriber.start();
   BOOST_REQUIRE_EQUAL(subscriber.isRunning(), false);
 
-  subscriber.onNotification += bind(&EndToEndFixture::afterNotification, this, _1);
-  subscriber.onTimeout += bind(&EndToEndFixture::afterTimeout, this);
-  subscriber.onDecodeError += bind(&EndToEndFixture::afterDecodeError, this, _1);
+  notificationConn = subscriber.onNotification.connect(
+      bind(&EndToEndFixture::afterNotification, this, _1));
+  subscriber.onTimeout.connect(bind(&EndToEndFixture::afterTimeout, this));
+  subscriber.onDecodeError.connect(bind(&EndToEndFixture::afterDecodeError, this, _1));
 
   // not received when subscriber is not running
   this->deliverNotification("n1");
@@ -231,7 +227,7 @@
   BOOST_CHECK(this->hasInitialRequest());
 
   // stop if handlers are cleared
-  subscriber.onNotification += bind(&EndToEndFixture::clearNotificationHandlers, this);
+  notificationConn.disconnect();
   subscriberFace->sentInterests.clear();
   this->deliverNotification("n5");
   advanceClocks(time::milliseconds(1));
