diff --git a/DDSim/Helper/Action.py b/DDSim/Helper/Action.py
new file mode 100644
index 0000000000000000000000000000000000000000..74c39ce41eac182cbedd1d11c7400b3a5945466f
--- /dev/null
+++ b/DDSim/Helper/Action.py
@@ -0,0 +1,57 @@
+"""Helper object for SD Actions"""
+
+from DDSim.Helper.ConfigHelper import ConfigHelper
+
+
+class Action( ConfigHelper ):
+  """Action holding all gun properties"""
+  def __init__( self ):
+    super(Action, self).__init__()
+    self._tracker = 'Geant4TrackerAction'
+    self._calo = 'Geant4ScintillatorCalorimeterAction'
+    self._mapActions = dict()
+
+  @property
+  def tracker( self ):
+    """ set the default tracker action """
+    return self._tracker
+  @tracker.setter
+  def tracker( self, val ):
+    self._tracker = val
+
+  @property
+  def calo( self ):
+    """ set the default calorimeter action """
+    return self._calo
+  @calo.setter
+  def calo( self, val ):
+    self._calo = val
+
+
+  @property
+  def mapActions( self ):
+    """ create a map of patterns and actions to be applied to sensitive detectors
+    e.g. tpc --> TPCSDAction """
+    return self._mapActions
+
+  @mapActions.setter
+  def mapActions( self, val ):
+    """check if the argument is a dict, then we just update mapActions
+    if it is a string or list, we use pairs as patters --> Action
+    """
+    if isinstance(val, dict):
+      self._mapActions.update(val)
+      return
+
+    if isinstance( val, basestring):
+      vals = val.split(" ")
+    elif isinstance( val, list ):
+      vals = val
+    if len(vals)%2 != 0:
+      raise RuntimeError("Not enough parameters for mapActions")
+    for index in xrange(0,len(vals),2):
+      self._mapActions[vals[index]] = vals[index+1]
+
+  def clearMapActions( self ):
+    """empty the mapActions"""
+    self._mapActions = dict()