diff --git a/examples/custom-strategies/custom-strategy.cc b/examples/custom-strategies/custom-strategy.cc
index be1f25b..5812ca3 100644
--- a/examples/custom-strategies/custom-strategy.cc
+++ b/examples/custom-strategies/custom-strategy.cc
@@ -14,13 +14,13 @@
 NS_OBJECT_ENSURE_REGISTERED(CustomStrategy);
 
 LogComponent CustomStrategy::g_log = LogComponent (CustomStrategy::GetLogName ().c_str ());
-    
+
 std::string
 CustomStrategy::GetLogName ()
 {
   return "ndn.fw.CustomStrategy";
 }
-    
+
 TypeId
 CustomStrategy::GetTypeId (void)
 {
@@ -28,11 +28,11 @@
     .SetGroupName ("Ndn")
     .SetParent <BaseStrategy> ()
     .AddConstructor <CustomStrategy> ()
-        
+
     // .AddAttribute ("Attribute", "Attribute spec",
     //                         StringValue ("DefaultValue"),
     //                         MakeStringAccessor (&BaseStrategy::m_variable),
-    //                         MakeStringChecker ())    
+    //                         MakeStringChecker ())
     ;
   return tid;
 }
@@ -57,7 +57,7 @@
   // forward to best-metric face
   if (faceIterator != faces.end ())
     {
-      if (TrySendOutInterest (inFace, faceIterator->m_face, header, origPacket, pitEntry))
+      if (TrySendOutInterest (inFace, faceIterator->GetFace (), header, origPacket, pitEntry))
         propagatedCount ++;
 
       faceIterator ++;
@@ -66,7 +66,7 @@
   // forward to second-best-metric face
   if (faceIterator != faces.end ())
     {
-      if (TrySendOutInterest (inFace, faceIterator->m_face, header, origPacket, pitEntry))
+      if (TrySendOutInterest (inFace, faceIterator->GetFace (), header, origPacket, pitEntry))
         propagatedCount ++;
 
       faceIterator ++;
@@ -92,11 +92,11 @@
     {
       m_counter --;
     }
-        
+
   BaseStrategy::WillEraseTimedOutPendingInterest (pitEntry);
 }
-        
-        
+
+
 void
 CustomStrategy::WillSatisfyPendingInterest (Ptr<Face> inFace,
                                             Ptr<pit::Entry> pitEntry)
@@ -107,11 +107,11 @@
     {
       m_counter --;
     }
-          
+
   BaseStrategy::WillSatisfyPendingInterest (inFace, pitEntry);
 }
 
-        
+
 } // namespace fw
 } // namespace ndn
 } // namespace ns3
