diff --git a/bin/minindn b/bin/minindn
index 7e451aa..9c2d240 100755
--- a/bin/minindn
+++ b/bin/minindn
@@ -7,7 +7,8 @@
 from mininet.link import TCLink
 from mininet.conf_parser import parse_hosts, parse_links
 
-from ndn.experiments import HyperbolicExperiment, FailureExperiment
+from ndn.experiments.pingall_experiment import PingallExperiment
+from ndn.experiments.failure_experiment import FailureExperiment
 from ndn.ndn_host import NdnHost, CpuLimitedNdnHost
 
 import os.path, time
@@ -16,6 +17,7 @@
 from os.path import expanduser
 
 from ndn.nlsr import Nlsr, NlsrConfigGenerator
+from ndn.nfd import Nfd
 
 def parse_args():
     usage="""Usage: minindn [template_file] [ -t | --testbed ]
@@ -156,17 +158,17 @@
         configGenerator.createConfigFile()
 
         # Start NLSR
-        nlsr = Nlsr(host)
-        nlsr.start()
+        host.nlsr = Nlsr(host)
+        host.nlsr.start()
 
     nodes = nodes[0:-1]
 
     if failure is True:
-        test = FailureExperiment(net, nodes, ctime)
-        test.run()
+        test = FailureExperiment(net, nodes, ctime, Nfd.STRATEGY_BEST_ROUTE_V3)
+        test.start()
     elif pingall is not None:
-        test = HyperbolicExperiment(net, nodes, ctime, pingall)
-        test.run()
+        test = PingallExperiment(net, nodes, ctime, pingall, Nfd.STRATEGY_BEST_ROUTE_V3)
+        test.start()
 
     for host in net.hosts:
         if 'app' in host.params:
