diff --git a/tests/unit-tests/test-socket.cpp b/tests/unit-tests/test-socket.cpp
index 4e3f4da..9ba1294 100644
--- a/tests/unit-tests/test-socket.cpp
+++ b/tests/unit-tests/test-socket.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
 /*
- * Copyright (c) 2012-2014 University of California, Los Angeles
+ * Copyright (c) 2012-2016 University of California, Los Angeles
  *
  * This file is part of ChronoSync, synchronization library for distributed realtime
  * applications for NDN.
@@ -29,7 +29,6 @@
 using std::vector;
 using std::map;
 using ndn::util::DummyClientFace;
-using ndn::util::makeDummyClientFace;
 
 
 /**
@@ -136,6 +135,7 @@
     return str;
   }
 
+public:
   map<ndn::Name, string> data;
   uint32_t sum;
   Socket socket;
@@ -152,9 +152,9 @@
     userPrefix[1] = Name("/user1");
     userPrefix[2] = Name("/user2");
 
-    faces[0] = makeDummyClientFace(ref(io), {true, true});
-    faces[1] = makeDummyClientFace(ref(io), {true, true});
-    faces[2] = makeDummyClientFace(ref(io), {true, true});
+    faces[0].reset(new DummyClientFace(io, {true, true}));
+    faces[1].reset(new DummyClientFace(io, {true, true}));
+    faces[2].reset(new DummyClientFace(io, {true, true}));
 
     for (int i = 0; i < 3; i++) {
       readInterestOffset[i] = 0;
@@ -179,10 +179,10 @@
       }
       readInterestOffset[sender]++;
     }
-    while (faces[sender]->sentDatas.size() > readDataOffset[sender]) {
+    while (faces[sender]->sentData.size() > readDataOffset[sender]) {
       for (int i = 0; i < 3; i++) {
         if (sender != i)
-          faces[i]->receive(faces[sender]->sentDatas[readDataOffset[sender]]);
+          faces[i]->receive(faces[sender]->sentData[readDataOffset[sender]]);
       }
       readDataOffset[sender]++;
     }
@@ -224,11 +224,12 @@
     app[idx]->setNum(dataName, buf, size);
   }
 
+public:
   Name syncPrefix;
   Name userPrefix[3];
   Name sessionName[3];
 
-  shared_ptr<DummyClientFace> faces[3];
+  std::unique_ptr<DummyClientFace> faces[3];
   shared_ptr<SocketTestApp> app[3];
 
   size_t readInterestOffset[3];
