diff --git a/examples/wifi/wifi_ping.py b/examples/wifi/wifi_ping.py
index 16fd62d..b123e18 100644
--- a/examples/wifi/wifi_ping.py
+++ b/examples/wifi/wifi_ping.py
@@ -26,6 +26,7 @@
 from minindn.util import MiniNDNWifiCLI
 from minindn.apps.app_manager import AppManager
 from minindn.apps.nfd import Nfd
+from minindn.helpers.experiment import Experiment
 from minindn.helpers.nfdc import Nfdc
 from minindn.helpers.ndnping import NDNPing
 from time import sleep
@@ -33,9 +34,8 @@
 # test case where we see if two nodes can send interests to each other.
 def runExperiment():
     setLogLevel('info')
-
     info("Starting network")
-    ndnwifi = MinindnWifi()
+    ndnwifi = MinindnWifi(parser=Experiment.getWifiExperimentParser())
     a = ndnwifi.net["sta1"]
     b = ndnwifi.net["sta2"]
     # Test for model-based mobility
@@ -59,16 +59,16 @@
         ndnwifi.startMobility(time=0, mob_rep=1, reverse=False)
 
     ndnwifi.start()
-    info("Starting NFD")
+    info("Starting NFD...\n")
     sleep(2)
     AppManager(ndnwifi, ndnwifi.net.stations, Nfd)
 
-    info("Starting pingserver...")
+    info("Starting pingserver...\n")
     NDNPing.startPingServer(b, "/example")
     faceID = Nfdc.createFace(a, b.IP())
     Nfdc.registerRoute(a, "/example", faceID)
 
-    info("Starting ping...")
+    info("Starting ping...\n")
     NDNPing.ping(a, "/example", nPings=10)
 
     sleep(10)
diff --git a/minindn/helpers/experiment.py b/minindn/helpers/experiment.py
index c454ff4..b6c2b02 100644
--- a/minindn/helpers/experiment.py
+++ b/minindn/helpers/experiment.py
@@ -23,6 +23,7 @@
 
 import time
 import sys
+import argparse
 from itertools import cycle
 
 from mininet.log import info
@@ -130,3 +131,15 @@
             nodesPingedList = []
 
         return pingedDict
+
+    import argparse
+
+    @staticmethod
+    def getWifiExperimentParser(parent=argparse.ArgumentParser()):
+        parser = argparse.ArgumentParser(prog='minindn-wifi', parents=[parent], add_help=False)
+
+        parser.add_argument('--mobility',action='store_true',dest='mobility',default=False,
+                            help='Enable custom mobility for topology (defined in script)')
+        parser.add_argument('--model-mob',action='store_true',dest='modelMob',default=False,
+                            help='Enable model mobility for topology (defined in script; see adhoc experiment for how to specify in topology file)')
+        return parser
\ No newline at end of file
diff --git a/minindn/wifi/minindnwifi.py b/minindn/wifi/minindnwifi.py
index 2e3b9ea..8eb9b2c 100644
--- a/minindn/wifi/minindnwifi.py
+++ b/minindn/wifi/minindnwifi.py
@@ -120,9 +120,6 @@
         parser.add_argument('--result-dir', action='store', dest='resultDir', default=None,
                             help='Specify the full path destination folder where experiment results will be moved')
 
-        parser.add_argument('--mobility',action='store_true',dest='mobility',default=False,
-                            help='Enable custom mobility for topology (defined in topology file)')
-
         parser.add_argument('--ifb',action='store_true',dest='ifb',default=False,
                             help='Simulate delay on receiver-side by use of virtual IFB devices (see docs)')
 
@@ -391,9 +388,6 @@
         parser.add_argument('--result-dir', action='store', dest='resultDir', default=None,
                             help='Specify the full path destination folder where experiment results will be moved')
 
-        parser.add_argument('--mobility',action='store_true',dest='mobility',default=False,
-                            help='Enable custom mobility for topology (defined in topology file)')
-
         parser.add_argument('--ifb',action='store_true',dest='ifb',default=False,
                             help='Simulate delay on receiver-side by use of virtual IFB devices (see docs)')
 
