diff --git a/km3buu/jobcard.py b/km3buu/jobcard.py
index 3f0efaf40e9a875a8c53112ba6e8af327a5ab361..2a30616f02fd11eb9cc5fe50faadcb5be85309bd 100644
--- a/km3buu/jobcard.py
+++ b/km3buu/jobcard.py
@@ -52,7 +52,6 @@ class Jobcard(f90nml.Namelist):
     input_path: str
         The input path pointing to the GiBUU lookup data which should be used
     """
-
     def __init__(self, *args, **kwargs):
         if "input_path" in kwargs:
             self.input_path = "%s" % input_path
@@ -84,8 +83,12 @@ def read_jobcard(filepath):
 
 
 def generate_neutrino_jobcard_template(
-    process, flavour, energy, target, write_events=False, input_path=INPUT_PATH
-):  # pragma: no cover
+    process,
+    flavour,
+    energy_limits,
+    target,
+    write_events=False,
+    input_path=INPUT_PATH):  # pragma: no cover
     """
     Generate a jobcard for neutrino interaction
 
@@ -95,8 +98,8 @@ def generate_neutrino_jobcard_template(
         Interaction channel ["CC", "NC", "antiCC", "antiNC"]
     flavour: str
         Flavour ["electron", "muon", "tau"]
-    energy: float
-        Initial energy of the neutrino in GeV
+    energy_range: (float, float)
+        Energy range limits of the incoming neutrino flux in GeV
     target: (int, int)
         (Z, A) describing the target nukleon
     input_path: str
@@ -106,7 +109,8 @@ def generate_neutrino_jobcard_template(
     # NEUTRINO
     jc["neutrino_induced"]["process_ID"] = PROCESS_LOOKUP[process.lower()]
     jc["neutrino_induced"]["flavour_ID"] = FLAVOR_LOOKUP[flavour.lower()]
-    jc["neutrino_induced"]["nuXsectionMode"] = 6
+    jc["neutrino_induced"]["nuXsectionMode"] = XSECTIONMODE_LOOKUP[
+        "EXP_dSigmaMC"]
     jc["neutrino_induced"]["includeDIS"] = True
     jc["neutrino_induced"]["includeDELTA"] = True
     jc["neutrino_induced"]["includeRES"] = True
@@ -115,18 +119,25 @@ def generate_neutrino_jobcard_template(
     jc["neutrino_induced"]["include2p2hQE"] = True
     jc["neutrino_induced"]["include2pi"] = False
     jc["neutrino_induced"]["include2p2hDelta"] = False
-    jc["neutrino_inducted"]["printAbsorptionXS"] = True
-
+    jc["neutrino_induced"]["printAbsorptionXS"] = True
+    jc["neutrino_induced"]["nuExp"] = 99
     # INPUT
     jc["input"]["numTimeSteps"] = 0
     jc["input"]["eventtype"] = 5
-    jc["input"]["numEnsembles"] = 100000
+    jc["input"]["numEnsembles"] = 10000
     jc["input"]["delta_T"] = 0.2
     jc["input"]["localEnsemble"] = True
     jc["input"]["num_runs_SameEnergy"] = 1
+    # FLUX
+    jc["nl_fluxcuts"]["energylimit_for_Qsrec"] = True
+    jc["nl_neutrino_energyFlux"]["Eflux_min"] = energy_limits[0]
+    jc["nl_neutrino_energyFlux"]["Eflux_max"] = energy_limits[1]
     # TARGET
     jc["target"]["Z"] = target[0]
     jc["target"]["A"] = target[1]
     # MISC
-    jc["neutrinoAnalysis"]["outputEvents"] = write_events
+    jc["neutrinoAnalysis"]["outputEvents"] = False
+    jc["EventOutput"]["EventFormat"] = 1
+    jc["EventOutput"]["WritePerturbativeParticles"] = True
+    jc["EventOutput"]["WriteRealParticles"] = False
     return jc