diff --git a/DDG4/python/DDG4.py b/DDG4/python/DDG4.py
index f53f47e86a6c584a65b8dbebd39ec43e0f73a17d..38bb05a66fb3efc7a340dc30f46713a2b1a6ffd3 100644
--- a/DDG4/python/DDG4.py
+++ b/DDG4/python/DDG4.py
@@ -364,6 +364,33 @@ _props('UserInitializationSequenceHandle')
 _props('Geant4PhysicsListActionSequence')
 
 
+class CommandLine:
+  """
+  Helper to ease parsing the command line.
+  Any argument given in the command line is accessible
+  from the object. If no value is supplied, the returned
+  value is True. If the argument is not present None is returned.
+
+  \author  M.Frank
+  \version 1.0
+  """
+  def __init__(self):
+    import sys
+    self.data = {}
+    for i in range(len(sys.argv)):
+      if sys.argv[i][0] == '-':
+        key = sys.argv[i][1:]
+        val = True
+        if i + 1 < len(sys.argv):
+          val = sys.argv[i + 1]
+        self.data[key] = val
+
+  def __getattr__(self, attr):
+    if self.data.get(attr):
+      return self.data.get(attr)
+    return None
+
+
 class Geant4:
   """
   Helper object to perform stuff, which occurs very often.
diff --git a/examples/ClientTests/scripts/SiliconBlock.py b/examples/ClientTests/scripts/SiliconBlock.py
index 0f33699d54efb6d4007bbd4f285fabfa4ec9dbf3..93954a77e7683bb5fcfc3005766bd68477fb473b 100644
--- a/examples/ClientTests/scripts/SiliconBlock.py
+++ b/examples/ClientTests/scripts/SiliconBlock.py
@@ -30,17 +30,7 @@ from g4units import GeV, MeV, m
 
 
 def run():
-  nevts = -1
-  macro = None
-  batch = False
-  for i in range(len(sys.argv)):
-    if sys.argv[i] == '-batch':
-      batch = True
-    elif sys.argv[i] == '-events':
-      nevts = int(sys.argv[i+1])
-    elif sys.argv[i] == '-macro':
-      macro = sys.argv[i+1]
-
+  args = DDG4.CommandLine()
   kernel = DDG4.Kernel()
   install_dir = os.environ['DD4hepExamplesINSTALL']
   kernel.loadGeometry(str("file:" + install_dir + "/examples/ClientTests/compact/SiliconBlock.xml"))
@@ -49,12 +39,12 @@ def run():
   geant4 = DDG4.Geant4(kernel, tracker='Geant4TrackerCombineAction')
   geant4.printDetectors()
   # Configure UI
-  if macro:
+  if args.macro:
     ui = geant4.setupCshUI(macro=macro)
   else:
     ui = geant4.setupCshUI()
-  if batch:
-    ui.Commands = ['/run/beamOn '+str(nevts), '/ddg4/UI/terminate']
+  if args.batch:
+    ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate']
 
   # Configure field
   geant4.setupTrackingField(prt=True)
diff --git a/examples/ClientTests/scripts/SiliconBlockFastSim.py b/examples/ClientTests/scripts/SiliconBlockFastSim.py
index 642911150b0725062ee23571ff990c2a4d6de8ea..d1817250e15bd18362407d4a2700c705c0ac0991 100644
--- a/examples/ClientTests/scripts/SiliconBlockFastSim.py
+++ b/examples/ClientTests/scripts/SiliconBlockFastSim.py
@@ -35,17 +35,7 @@ from g4units import GeV, MeV, m
 
 
 def run():
-  nevts = -1
-  macro = None
-  batch = False
-  for i in range(len(sys.argv)):
-    if sys.argv[i] == '-batch':
-      batch = True
-    elif sys.argv[i] == '-events':
-      nevts = int(sys.argv[i+1])
-    elif sys.argv[i] == '-macro':
-      macro = sys.argv[i+1]
-
+  args = DDG4.CommandLine()
   kernel = DDG4.Kernel()
   install_dir = os.environ['DD4hepExamplesINSTALL']
   kernel.loadGeometry(str("file:" + install_dir + "/examples/ClientTests/compact/SiliconBlock.xml"))
@@ -54,12 +44,12 @@ def run():
   geant4 = DDG4.Geant4(kernel, tracker='Geant4TrackerAction', calo='Geant4CalorimeterAction')
   geant4.printDetectors()
   # Configure UI
-  if macro:
-    ui = geant4.setupCshUI(macro=macro)
+  if args.macro:
+    ui = geant4.setupCshUI(macro=args.macro)
   else:
     ui = geant4.setupCshUI()
-  if batch:
-    ui.Commands = ['/run/beamOn '+str(nevts), '/ddg4/UI/terminate']
+  if args.batch:
+    ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate']
 
   # Configure field
   geant4.setupTrackingField(prt=True)
diff --git a/examples/ClientTests/scripts/SiliconBlockGFlash.py b/examples/ClientTests/scripts/SiliconBlockGFlash.py
index 4719cd6c22619b253f911d1ecf0291052325e33f..ea5b2669185d911d5663aee9af7d707fe685ced4 100644
--- a/examples/ClientTests/scripts/SiliconBlockGFlash.py
+++ b/examples/ClientTests/scripts/SiliconBlockGFlash.py
@@ -35,17 +35,7 @@ from g4units import GeV, MeV, m
 
 
 def run():
-  nevts = -1
-  macro = None
-  batch = False
-  for i in range(len(sys.argv)):
-    if sys.argv[i] == '-batch':
-      batch = True
-    elif sys.argv[i] == '-events':
-      nevts = int(sys.argv[i+1])
-    elif sys.argv[i] == '-macro':
-      macro = sys.argv[i+1]
-
+  args = DDG4.CommandLine()
   kernel = DDG4.Kernel()
   install_dir = os.environ['DD4hepExamplesINSTALL']
   kernel.loadGeometry(str("file:" + install_dir + "/examples/ClientTests/compact/SiliconBlock.xml"))
@@ -54,12 +44,12 @@ def run():
   geant4 = DDG4.Geant4(kernel, tracker='Geant4TrackerCombineAction', calo='Geant4CalorimeterAction')
   geant4.printDetectors()
   # Configure UI
-  if macro:
-    ui = geant4.setupCshUI(macro=macro)
+  if args.macro:
+    ui = geant4.setupCshUI(macro=args.macro)
   else:
     ui = geant4.setupCshUI()
-  if batch:
-    ui.Commands = ['/run/beamOn '+str(nevts), '/ddg4/UI/terminate']
+  if args.batch:
+    ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate']
 
   # Configure field
   geant4.setupTrackingField(prt=True)
diff --git a/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py b/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py
index 5d5140f837e2c17814b3bcfcc8b5961f335f298d..922b5724bbd6c218b3eb919ab00c1e70a9f65f15 100644
--- a/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py
+++ b/examples/DDG4_MySensDet/scripts/MyTrackerSD_sim.py
@@ -20,17 +20,7 @@ from g4units import GeV
 
 
 def run():
-  nevts = -1
-  macro = None
-  batch = False
-  for i in range(len(sys.argv)):
-    if sys.argv[i] == '-batch':
-      batch = True
-    elif sys.argv[i] == '-events':
-      nevts = int(sys.argv[i+1])
-    elif sys.argv[i] == '-macro':
-      macro = sys.argv[i+1]
-
+  args = DDG4.CommandLine()
   kernel = DDG4.Kernel()
   install_dir = os.environ['DD4hepExamplesINSTALL']
   kernel.loadGeometry(str("file:" + install_dir + "/examples/ClientTests/compact/SiliconBlock.xml"))
@@ -42,12 +32,12 @@ def run():
   geant4.printDetectors()
 
   # Configure UI
-  if macro:
-    ui = geant4.setupCshUI(macro=macro)
+  if args.macro:
+    ui = geant4.setupCshUI(macro=args.macro)
   else:
     ui = geant4.setupCshUI()
-  if batch:
-    ui.Commands = ['/run/beamOn '+str(nevts), '/ddg4/UI/terminate']
+  if args.batch:
+    ui.Commands = ['/run/beamOn ' + str(args.events), '/ddg4/UI/terminate']
 
   # Configure field
   geant4.setupTrackingField(prt=True)