diff --git a/tests-integrated/security/test-validator-config.cpp b/tests-integrated/security/test-validator-config.cpp
index def5ae3..df1dd77 100644
--- a/tests-integrated/security/test-validator-config.cpp
+++ b/tests-integrated/security/test-validator-config.cpp
@@ -542,7 +542,7 @@
   void
   terminate(shared_ptr<Face> face)
   {
-    face->ioService()->stop();
+    face->getIoService().stop();
   }
 
   const RegisteredPrefixId* regPrefixId;
@@ -584,18 +584,20 @@
   keyChain.addCertificateAsIdentityDefault(*nldCert);
 
   shared_ptr<Face> face = make_shared<Face>();
-  Face face2(face->ioService());
-  Scheduler scheduler(*face->ioService());
+  Face face2(face->getIoService());
+  Scheduler scheduler(face->getIoService());
 
   scheduler.scheduleEvent(time::seconds(1),
                           bind(&FacesFixture::terminate, this, face));
 
   regPrefixId = face->setInterestFilter(sldCert->getName().getPrefix(-1),
-                                       bind(&FacesFixture::onInterest, this, face, sldCert),
-                                       bind(&FacesFixture::onRegFailed, this));
+                                        bind(&FacesFixture::onInterest, this, face, sldCert),
+                                        RegisterPrefixSuccessCallback(),
+                                        bind(&FacesFixture::onRegFailed, this));
 
   regPrefixId2 = face->setInterestFilter(nldCert->getName().getPrefix(-1),
                                          bind(&FacesFixture::onInterest2, this, face, nldCert),
+                                         RegisterPrefixSuccessCallback(),
                                          bind(&FacesFixture::onRegFailed, this));
 
   Name dataName1 = nld;
@@ -789,18 +791,20 @@
   keyChain.addCertificateAsIdentityDefault(*nldCert);
 
   shared_ptr<Face> face = make_shared<Face>();
-  Face face2(face->ioService());
-  Scheduler scheduler(*face->ioService());
+  Face face2(face->getIoService());
+  Scheduler scheduler(face->getIoService());
 
   scheduler.scheduleEvent(time::seconds(1),
                           bind(&FacesFixture::terminate, this, face));
 
   regPrefixId = face->setInterestFilter(sldCert->getName().getPrefix(-1),
-                                       bind(&FacesFixture::onInterest, this, face, sldCert),
-                                       bind(&FacesFixture::onRegFailed, this));
+                                        bind(&FacesFixture::onInterest, this, face, sldCert),
+                                        RegisterPrefixSuccessCallback(),
+                                        bind(&FacesFixture::onRegFailed, this));
 
   regPrefixId2 = face->setInterestFilter(nldCert->getName().getPrefix(-1),
                                          bind(&FacesFixture::onInterest2, this, face, nldCert),
+                                         RegisterPrefixSuccessCallback(),
                                          bind(&FacesFixture::onRegFailed, this));
 
   Name interestName1("/localhost/nrd/register/option/timestamp/nonce");
diff --git a/tests-integrated/test-faces.cpp b/tests-integrated/test-faces.cpp
index 1c2ef29..e99f0fc 100644
--- a/tests-integrated/test-faces.cpp
+++ b/tests-integrated/test-faces.cpp
@@ -161,13 +161,14 @@
 BOOST_AUTO_TEST_CASE(SetFilter)
 {
   Face face;
-  Face face2(face.ioService());
-  Scheduler scheduler(*face.ioService());
+  Face face2(face.getIoService());
+  Scheduler scheduler(face.getIoService());
   scheduler.scheduleEvent(time::milliseconds(300),
                           bind(&FacesFixture::terminate, this, ref(face)));
 
   regPrefixId = face.setInterestFilter("/Hello/World",
                                        bind(&FacesFixture::onInterest, this, ref(face), _1, _2),
+                                       RegisterPrefixSuccessCallback(),
                                        bind(&FacesFixture::onRegFailed, this));
 
   scheduler.scheduleEvent(time::milliseconds(200),
@@ -185,17 +186,19 @@
 BOOST_AUTO_TEST_CASE(SetTwoFilters)
 {
   Face face;
-  Face face2(face.ioService());
-  Scheduler scheduler(*face.ioService());
+  Face face2(face.getIoService());
+  Scheduler scheduler(face.getIoService());
   scheduler.scheduleEvent(time::seconds(1),
                           bind(&FacesFixture::terminate, this, ref(face)));
 
   regPrefixId = face.setInterestFilter("/Hello/World",
                                        bind(&FacesFixture::onInterest, this, ref(face), _1, _2),
+                                       RegisterPrefixSuccessCallback(),
                                        bind(&FacesFixture::onRegFailed, this));
 
   regPrefixId2 = face.setInterestFilter("/Los/Angeles/Lakers",
                                         bind(&FacesFixture::onInterest2, this, ref(face), _1, _2),
+                                        RegisterPrefixSuccessCallback(),
                                         bind(&FacesFixture::onRegFailed, this));
 
 
@@ -216,13 +219,14 @@
 {
   Face face;
   Face face2(face.getIoService());
-  Scheduler scheduler(*face.ioService());
+  Scheduler scheduler(face.getIoService());
   scheduler.scheduleEvent(time::seconds(1),
                           bind(&FacesFixture::terminate, this, ref(face)));
 
   regPrefixId = face.setInterestFilter(InterestFilter("/Hello/World", "<><b><c>?"),
                                        bind(&FacesFixture::onInterestRegexError, this,
                                             ref(face), _1, _2),
+                                       RegisterPrefixSuccessCallback(),
                                        bind(&FacesFixture::onRegFailed, this));
 
   scheduler.scheduleEvent(time::milliseconds(300),
@@ -236,13 +240,14 @@
 {
   Face face;
   Face face2(face.getIoService());
-  Scheduler scheduler(*face.ioService());
+  Scheduler scheduler(face.getIoService());
   scheduler.scheduleEvent(time::seconds(2),
                           bind(&FacesFixture::terminate, this, ref(face)));
 
   regPrefixId = face.setInterestFilter(InterestFilter("/Hello/World", "<><b><c>?"),
                                        bind(&FacesFixture::onInterestRegex, this,
                                             ref(face), _1, _2),
+                                       RegisterPrefixSuccessCallback(),
                                        bind(&FacesFixture::onRegFailed, this));
 
   scheduler.scheduleEvent(time::milliseconds(200),
@@ -289,13 +294,14 @@
 BOOST_FIXTURE_TEST_CASE(RegisterUnregisterPrefix, FacesFixture2)
 {
   Face face;
-  Scheduler scheduler(*face.ioService());
+  Scheduler scheduler(face.getIoService());
   scheduler.scheduleEvent(time::seconds(2),
                           bind(&FacesFixture::terminate, this, ref(face)));
 
   regPrefixId = face.setInterestFilter(InterestFilter("/Hello/World"),
                                        bind(&FacesFixture::onInterest, this,
                                             ref(face), _1, _2),
+                                       RegisterPrefixSuccessCallback(),
                                        bind(&FacesFixture::onRegFailed, this));
 
   scheduler.scheduleEvent(time::milliseconds(500),
@@ -350,8 +356,8 @@
 BOOST_FIXTURE_TEST_CASE(RegisterPrefix, FacesFixture3)
 {
   Face face;
-  Face face2(face.ioService());
-  Scheduler scheduler(*face.ioService());
+  Face face2(face.getIoService());
+  Scheduler scheduler(face.getIoService());
   scheduler.scheduleEvent(time::seconds(2),
                           bind(&FacesFixture::terminate, this, ref(face)));
 
@@ -384,7 +390,7 @@
 {
   Face face;
   Face face2(face.getIoService());
-  Scheduler scheduler(*face.ioService());
+  Scheduler scheduler(face.getIoService());
   scheduler.scheduleEvent(time::seconds(2),
                           bind(&FacesFixture::terminate, this, ref(face)));
 
@@ -392,26 +398,30 @@
                          bind(&FacesFixture::onInterestRegex, this,
                               ref(face), _1, _2));
 
+  // prefix is not registered, and also does not match regex
   scheduler.scheduleEvent(time::milliseconds(200),
                           bind(&FacesFixture::expressInterest, this,
-                               ref(face2), Name("/Hello/World/a"))); // shouldn't match
+                               ref(face2), Name("/Hello/World/a")));
 
+  // matches regex, but prefix is not registered
   scheduler.scheduleEvent(time::milliseconds(300),
                           bind(&FacesFixture::expressInterest, this,
-                               ref(face2), Name("/Hello/World/a/b"))); // should match
+                               ref(face2), Name("/Hello/World/a/b")));
 
+  // matches regex, but prefix is not registered
   scheduler.scheduleEvent(time::milliseconds(400),
                           bind(&FacesFixture::expressInterest, this,
-                               ref(face2), Name("/Hello/World/a/b/c"))); // should match
+                               ref(face2), Name("/Hello/World/a/b/c")));
 
+  // prefix is not registered, and also does not match regex
   scheduler.scheduleEvent(time::milliseconds(500),
                           bind(&FacesFixture::expressInterest, this,
-                               ref(face2), Name("/Hello/World/a/b/d"))); // should not match
+                               ref(face2), Name("/Hello/World/a/b/d")));
 
   BOOST_REQUIRE_NO_THROW(face.processEvents());
 
   BOOST_CHECK_EQUAL(nRegFailures, 0);
-  BOOST_CHECK_EQUAL(nInInterests, 4);
+  BOOST_CHECK_EQUAL(nInInterests, 0);
   BOOST_CHECK_EQUAL(nTimeouts, 4);
   BOOST_CHECK_EQUAL(nData, 0);
 }
@@ -421,7 +431,7 @@
 {
   Face face;
   Face face2(face.getIoService());
-  Scheduler scheduler(*face.ioService());
+  Scheduler scheduler(face.getIoService());
   scheduler.scheduleEvent(time::seconds(2),
                           bind(&FacesFixture::terminate, this, ref(face)));
 
