diff --git a/ndn/experiment_manager.py b/ndn/experiment_manager.py
index 5f2a174..d8ec0eb 100644
--- a/ndn/experiment_manager.py
+++ b/ndn/experiment_manager.py
@@ -35,7 +35,6 @@
 
     def __init__(self):
         self.experiments = {}
-        self.expArgs = {}
 
     def loadModules(self):
         currentDir = os.path.dirname(__file__)
@@ -52,12 +51,6 @@
     def register(self, name, experimentClass):
         if name not in self.experiments:
             self.experiments[name] = experimentClass
-            try:
-                helpStr = experimentClass.arguments()
-                if type(helpStr) is str:
-                    self.expArgs[name] = experimentClass.arguments()
-            except:
-                pass
         else:
             raise _ExperimentManager.Error("Experiment '%s' has already been registered" % name)
 
@@ -92,7 +85,9 @@
 
     return experimentNames
 
-def getExperimentArgs():
+def addExperimentArgs(parser):
+    # Find all experiment command line arguments and parse them.
     manager = __getInstance()
-
-    return manager.expArgs
+    for name in manager.experiments:
+        if hasattr(manager.experiments[name], "parseArguments"):
+            manager.experiments[name].parseArguments(parser)
\ No newline at end of file
diff --git a/ndn/experiments/arbitrary_arguments_experiment.py b/ndn/experiments/arbitrary_arguments_experiment.py
deleted file mode 100644
index 159e2a7..0000000
--- a/ndn/experiments/arbitrary_arguments_experiment.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from ndn.experiments.experiment import Experiment
-
-class AbitraryArgumentsExperiment(Experiment):
-    def __init__(self, args):
-        Experiment.__init__(self, args)
-        if "ds" in self.arbArgs:
-            self.ds = int(self.arbArgs["ds"])
-        else:
-            self.ds = 1000
-
-        if "logging" in self.arbArgs:
-            self.logging = self.arbArgs["logging"]
-            if self.logging == "true":
-                self.logging = True
-            else:
-                self.logging = False
-        else:
-            self.logging = False
-
-    def setup(self):
-        pass
-
-    def run(self):
-        print("Argument ds: {}".format(self.ds))
-        print("Argument logging: {}".format(self.logging))
-
-    @staticmethod
-    def arguments():
-        ''' This will be printed in sudo minindn --list-experiments'''
-        return "--ds <num-data-streams> --logging <true/false>"
-
-Experiment.register("arbitrary-arguments", AbitraryArgumentsExperiment)
\ No newline at end of file
diff --git a/ndn/experiments/arguments_experiment.py b/ndn/experiments/arguments_experiment.py
new file mode 100644
index 0000000..e7ed6f9
--- /dev/null
+++ b/ndn/experiments/arguments_experiment.py
@@ -0,0 +1,23 @@
+from ndn.experiments.experiment import Experiment
+
+class ArgumentsExperiment(Experiment):
+    def __init__(self, args):
+        Experiment.__init__(self, args)
+        self.ds = self.arguments.ds
+        self.logging = self.arguments.logging
+
+    def setup(self):
+        pass
+
+    def run(self):
+        print("Argument ds: {}".format(self.ds))
+        print("Argument logging: {}".format(self.logging))
+
+    @staticmethod
+    def parseArguments(parser):
+        parser.add_argument("--ds", dest="ds", default="1000",
+                            help="[Arguments Experiment] Number of data streams")
+        parser.add_argument("--logging", dest="logging", action="store_true",
+                            help="[Arguments Experiment] Enable logging")
+
+Experiment.register("args-exp", ArgumentsExperiment)
\ No newline at end of file
diff --git a/ndn/experiments/experiment.py b/ndn/experiments/experiment.py
index 23efebd..5ada588 100644
--- a/ndn/experiments/experiment.py
+++ b/ndn/experiments/experiment.py
@@ -36,7 +36,7 @@
         self.strategy = args["strategy"]
         self.pctTraffic = args["pctTraffic"]
         self.nlsrSecurity = args["nlsrSecurity"]
-        self.arbArgs = args["arbArgs"]
+        self.arguments = args["arguments"]
 
         # Used to restart pings on the recovered node if any
         self.pingedDict = {}
@@ -148,4 +148,4 @@
 
     @staticmethod
     def register(name, experimentClass):
-        ExperimentManager.register(name, experimentClass)
+        ExperimentManager.register(name, experimentClass)
\ No newline at end of file
