diff --git a/helper/ndn-global-routing-helper.cpp b/helper/ndn-global-routing-helper.cpp
index aca25d5..6d13d6b 100644
--- a/helper/ndn-global-routing-helper.cpp
+++ b/helper/ndn-global-routing-helper.cpp
@@ -81,7 +81,7 @@
   node->AggregateObject(gr);
 
   for (auto& face : ndn->getForwarder()->getFaceTable()) {
-    auto linkService = dynamic_cast<NetDeviceLinkService*>(face->getLinkService());
+    auto linkService = dynamic_cast<NetDeviceLinkService*>(face.getLinkService());
     if (linkService == nullptr) {
       NS_LOG_DEBUG("Skipping non-netdevice face");
       continue;
@@ -116,7 +116,7 @@
         }
         otherGr = otherNode->GetObject<GlobalRouter>();
         NS_ASSERT(otherGr != 0);
-        gr->AddIncidency(face, otherGr);
+        gr->AddIncidency(face.shared_from_this(), otherGr);
       }
     }
     else {
@@ -126,7 +126,7 @@
       }
       grChannel = ch->GetObject<GlobalRouter>();
 
-      gr->AddIncidency(face, grChannel);
+      gr->AddIncidency(face.shared_from_this(), grChannel);
     }
   }
 }
@@ -316,16 +316,16 @@
     // remember interface statuses
     std::list<nfd::FaceId> faceIds;
     std::unordered_map<nfd::FaceId, uint16_t> originalMetrics;
-    for (auto& i : l3->getForwarder()->getFaceTable()) {
-      shared_ptr<Face> nfdFace = std::dynamic_pointer_cast<Face>(i);
-      faceIds.push_back(nfdFace->getId());
-      originalMetrics[nfdFace->getId()] = nfdFace->getMetric();
-      nfdFace->setMetric(std::numeric_limits<uint16_t>::max() - 1);
+    for (auto& nfdFace : l3->getForwarder()->getFaceTable()) {
+      faceIds.push_back(nfdFace.getId());
+      originalMetrics[nfdFace.getId()] = nfdFace.getMetric();
+      nfdFace.setMetric(std::numeric_limits<uint16_t>::max() - 1);
       // value std::numeric_limits<uint16_t>::max () MUST NOT be used (reserved)
     }
 
     for (auto& faceId : faceIds) {
-      shared_ptr<Face> face = l3->getForwarder()->getFaceTable().get(faceId);
+      auto* face = l3->getForwarder()->getFaceTable().get(faceId);
+      NS_ASSERT(face != nullptr);
       auto linkService = dynamic_cast<NetDeviceLinkService*>(face->getLinkService());
       if (linkService == nullptr) {
         NS_LOG_DEBUG("Skipping non-netdevice face");
diff --git a/helper/ndn-link-control-helper.cpp b/helper/ndn-link-control-helper.cpp
index 70a3171..26a2a2c 100644
--- a/helper/ndn-link-control-helper.cpp
+++ b/helper/ndn-link-control-helper.cpp
@@ -57,7 +57,7 @@
 
   // iterate over all faces to find the right one
   for (const auto& face : ndn1->getForwarder()->getFaceTable()) {
-    auto linkService = dynamic_cast<NetDeviceLinkService*>(face->getLinkService());
+    auto linkService = dynamic_cast<NetDeviceLinkService*>(face.getLinkService());
     if (linkService == nullptr)
       continue;
 
diff --git a/helper/ndn-strategy-choice-helper.hpp b/helper/ndn-strategy-choice-helper.hpp
index aea07f3..302682a 100644
--- a/helper/ndn-strategy-choice-helper.hpp
+++ b/helper/ndn-strategy-choice-helper.hpp
@@ -120,7 +120,7 @@
   nfd::StrategyChoice& strategyChoice = forwarder.getStrategyChoice();
 
   if (!strategyChoice.hasStrategy(Strategy::STRATEGY_NAME)) {
-    strategyChoice.install(make_shared<Strategy>(ref(forwarder)));
+    strategyChoice.install(make_unique<Strategy>(ref(forwarder)));
   }
 
   Install(node, namePrefix, Strategy::STRATEGY_NAME);
