diff --git a/ndn/apps/nfdc.py b/ndn/apps/nfdc.py
index 2d38530..4b28a64 100644
--- a/ndn/apps/nfdc.py
+++ b/ndn/apps/nfdc.py
@@ -22,18 +22,23 @@
 # If not, see <http://www.gnu.org/licenses/>.
 
 import time
+from mininet.log import setLogLevel, output, info, debug
 
 class Nfdc:
     STRATEGY_ASF = "asf"
     STRATEGY_BEST_ROUTE = "best-route"
     STRATEGY_MULTICAST = "multicast"
     STRATEGY_NCC = "ncc"
+    PROTOCOL_UDP = "udp"
+    PROTOCOL_TCP = "tcp"
+    PROTOCOL_ETHER = "ether"
 
     @staticmethod
-    def registerRoute(node, namePrefix, remoteNode, origin=255, cost=0,
+    def registerRoute(node, namePrefix, remoteNode, protocol=PROTOCOL_UDP, origin=255, cost=0,
                       inheritFlag=True, captureFlag=False, expirationInMillis=0):
-        node.cmd("nfdc route add {} {} {} {} {}{}{}").format(
+        cmd = ("nfdc route add {} {}://{} origin {} cost {} {}{}{}").format(
             namePrefix,
+            protocol,
             remoteNode,
             origin,
             cost,
@@ -41,33 +46,36 @@
             "capture " if captureFlag else "",
             "expires {}".format(expirationInMillis)
         )
+        debug(node.cmd(cmd))
         time.sleep(0.5)
 
     @staticmethod
     def unregisterRoute(node, namePrefix, remoteNode, origin=255):
-        node.cmd("nfdc route remove {} {} {}".format(namePrefix, remoteNode, origin))
+        cmd = "nfdc route remove {} {} {}".format(namePrefix, remoteNode, origin)
         time.sleep(0.5)
 
     @staticmethod
     def createFace(node, remoteNode, protocol="udp", isPermanent=False):
-        node.cmd("nfdc face create {}://{} {}".format(
+        cmd = ("nfdc face create {}://{} {}".format(
             protocol,
             remoteNode,
             "permanent" if isPermanent else "persistent"
         ))
+        debug(node.cmd(cmd))
         time.sleep(0.5)
 
     @staticmethod
     def destroyFace(node, remoteNode, protocol="udp"):
-        node.cmd("nfdc face destroy {}://{}".format(protocol, remoteNode))
+        debug(node.cmd("nfdc face destroy {}://{}".format(protocol, remoteNode)))
         time.sleep(0.5)
 
     @staticmethod
     def setStrategy(node, namePrefix, strategy):
-        node.cmd("nfdc strategy set {} ndn:/localhost/nfd/strategy/{}".format(namePrefix, strategy))
+        cmd = "nfdc strategy set {} ndn:/localhost/nfd/strategy/{}".format(namePrefix, strategy)
+        debug(node.cmd(cmd))
         time.sleep(0.5)
 
     @staticmethod
     def unsetStrategy(node, namePrefix):
-        node.cmd("nfdc strategy unset {}".format(namePrefix))
+        debug(node.cmd("nfdc strategy unset {}".format(namePrefix)))
         time.sleep(0.5)
\ No newline at end of file
diff --git a/ndn/experiments/failure_experiment.py b/ndn/experiments/failure_experiment.py
index b25cbfe..a27b0a6 100644
--- a/ndn/experiments/failure_experiment.py
+++ b/ndn/experiments/failure_experiment.py
@@ -23,6 +23,7 @@
 
 from ndn.experiments.experiment import Experiment
 from ndn.nlsr import Nlsr
+from ndn.apps.ndn_ping_client import NDNPingClient
 
 import time
 
@@ -57,7 +58,7 @@
 
                 for other in self.net.hosts:
                     if host.name != other.name:
-                        self.ping(host, other, self.PING_COLLECTION_TIME_AFTER_RECOVERY)
+                        NDNPingClient.ping(host, other, self.PING_COLLECTION_TIME_AFTER_RECOVERY)
 
         # Collect pings for more seconds after CSU is up
         time.sleep(self.PING_COLLECTION_TIME_AFTER_RECOVERY)
diff --git a/ndn/experiments/mcn_failure_experiment.py b/ndn/experiments/mcn_failure_experiment.py
index 019c214..62bdcab 100644
--- a/ndn/experiments/mcn_failure_experiment.py
+++ b/ndn/experiments/mcn_failure_experiment.py
@@ -22,6 +22,7 @@
 # If not, see <http://www.gnu.org/licenses/>.
 
 from ndn.experiments.experiment import Experiment
+from ndn.apps.ndn_ping_client import NDNPingClient
 
 import time
 
@@ -58,7 +59,7 @@
 
         # Restart pings
         for nodeToPing in self.pingedDict[mostConnectedNode]:
-            self.ping(mostConnectedNode, nodeToPing, self.PING_COLLECTION_TIME_AFTER_RECOVERY)
+            NDNPingClient.ping(mostConnectedNode, nodeToPing, self.PING_COLLECTION_TIME_AFTER_RECOVERY)
 
         # Collect pings for more seconds after MCN is up
         time.sleep(self.PING_COLLECTION_TIME_AFTER_RECOVERY)
diff --git a/ndn/experiments/multiple_failure_experiment.py b/ndn/experiments/multiple_failure_experiment.py
index 0836949..6b4ce6b 100644
--- a/ndn/experiments/multiple_failure_experiment.py
+++ b/ndn/experiments/multiple_failure_experiment.py
@@ -23,6 +23,7 @@
 
 from ndn.experiments.experiment import Experiment
 from ndn.nlsr import Nlsr
+from ndn.apps.ndn_ping_client import NDNPingClient
 
 import time
 
@@ -74,7 +75,7 @@
 
             # Restart pings
             for nodeToPing in self.pingedDict[host]:
-                self.ping(host, nodeToPing, nPings)
+                NDNPingClient.ping(host, nodeToPing, nPings)
 
             time.sleep(self.RECOVERY_INTERVAL - recovery_time)
 
