diff --git a/src/toolbox_scs/constants.py b/src/toolbox_scs/constants.py
index 6c041d3d154a5fd817113de8be4e44bb8f63e14d..c54d72e30033d1bd1d1eb2a83c017d8846708ab9 100644
--- a/src/toolbox_scs/constants.py
+++ b/src/toolbox_scs/constants.py
@@ -47,22 +47,28 @@ mnemonics = {
     # Bunch Arrival Monitors
     "BAM414": ({'source': 'SCS_ILH_LAS/DOOCS/BAM_414_B2:output',
                 'key': 'data.absoluteTD',
-                'dim': ['BAMbunchId']},
+                'dim': ['BAMbunchId'],
+                'extract': 'BAM'},
                {'source': 'SCS_ILH_LAS/DOOCS/BAM_414_B2:output',
                 'key': 'data.lowChargeArrivalTime',
-                'dim': ['BAMbunchId']},),
+                'dim': ['BAMbunchId'],
+                'extract': 'BAM'},),
     "BAM1932M": ({'source': 'SCS_ILH_LAS/DOOCS/BAM_1932M_TL:output',
                   'key': 'data.absoluteTD',
-                  'dim': ['BAMbunchId']},
+                  'dim': ['BAMbunchId'],
+                  'extract': 'BAM'},
                  {'source': 'SCS_ILH_LAS/DOOCS/BAM_1932M_TL:output',
                   'key': 'data.lowChargeArrivalTime',
-                  'dim': ['BAMbunchId']},),
+                  'dim': ['BAMbunchId'],
+                  'extract': 'BAM'},),
     "BAM1932S": ({'source': 'SCS_ILH_LAS/DOOCS/BAM_1932S_TL:output',
                   'key': 'data.absoluteTD',
-                  'dim': ['BAMbunchId']},
+                  'dim': ['BAMbunchId'],
+                  'extract': 'BAM'},
                  {'source': 'SCS_ILH_LAS/DOOCS/BAM_1932S_TL:output',
                   'key': 'data.lowChargeArrivalTime',
-                  'dim': ['BAMbunchId']},),
+                  'dim': ['BAMbunchId'],
+                  'extract': 'BAM'},),
 
     # SA3
     "nrj": ({'source': 'SA3_XTD10_MONO/MDL/PHOTON_ENERGY',
@@ -228,22 +234,28 @@ mnemonics = {
     # ADC
     "XTD10_XGM": ({'source': 'SA3_XTD10_XGM/XGM/DOOCS:output',
                    'key': 'data.intensityTD',
-                   'dim': ['XGMbunchId']},),
+                   'dim': ['XGMbunchId'],
+                   'extract': 'XGM'},),
     "XTD10_XGM_sigma": ({'source': 'SA3_XTD10_XGM/XGM/DOOCS:output',
                          'key': 'data.intensitySigmaTD',
-                         'dim': ['XGMbunchId']},),
+                         'dim': ['XGMbunchId'],
+                         'extract': 'XGM'},),
     "XTD10_SA3": ({'source': 'SA3_XTD10_XGM/XGM/DOOCS:output',
                    'key': 'data.intensitySa3TD',
-                   'dim': ['XGMbunchId']},),
+                   'dim': ['XGMbunchId'],
+                   'extract': 'XGM'},),
     "XTD10_SA3_sigma": ({'source': 'SA3_XTD10_XGM/XGM/DOOCS:output',
                          'key': 'data.intensitySa3SigmaTD',
-                         'dim': ['XGMbunchId']},),
+                         'dim': ['XGMbunchId'],
+                         'extract': 'XGM'},),
     "XTD10_SA1": ({'source': 'SA3_XTD10_XGM/XGM/DOOCS:output',
                    'key': 'data.intensitySa1TD',
-                   'dim': ['XGMbunchId']},),
+                   'dim': ['XGMbunchId'],
+                   'extract': 'XGM'},),
     "XTD10_SA1_sigma": ({'source': 'SA3_XTD10_XGM/XGM/DOOCS:output',
                          'key': 'data.intensitySa1SigmaTD',
-                         'dim': ['XGMbunchId']},),
+                         'dim': ['XGMbunchId'],
+                         'extract': 'XGM'},),
     # low pass averaged ADC
     "XTD10_slowTrain": ({'source': 'SA3_XTD10_XGM/XGM/DOOCS',
                          'key': 'controlData.slowTrain.value',
@@ -269,22 +281,28 @@ mnemonics = {
     # ADC
     "SCS_XGM": ({'source': 'SCS_BLU_XGM/XGM/DOOCS:output',
                  'key': 'data.intensityTD',
-                 'dim': ['XGMbunchId']},),
+                 'dim': ['XGMbunchId'],
+                 'extract': 'XGM'},),
     "SCS_XGM_sigma": ({'source': 'SCS_BLU_XGM/XGM/DOOCS:output',
                        'key': 'data.intensitySigmaTD',
-                       'dim': ['XGMbunchId']},),
+                       'dim': ['XGMbunchId'],
+                       'extract': 'XGM'},),
     "SCS_SA1": ({'source': 'SCS_BLU_XGM/XGM/DOOCS:output',
                  'key': 'data.intensitySa1TD',
-                 'dim': ['XGMbunchId']},),
+                 'dim': ['XGMbunchId'],
+                 'extract': 'XGM'},),
     "SCS_SA1_sigma": ({'source': 'SCS_BLU_XGM/XGM/DOOCS:output',
                        'key': 'data.intensitySa1SigmaTD',
-                       'dim': ['XGMbunchId']},),
+                       'dim': ['XGMbunchId'],
+                       'extract': 'XGM'},),
     "SCS_SA3": ({'source': 'SCS_BLU_XGM/XGM/DOOCS:output',
                  'key': 'data.intensitySa3TD',
-                 'dim': ['XGMbunchId']},),
+                 'dim': ['XGMbunchId'],
+                 'extract': 'XGM'},),
     "SCS_SA3_sigma": ({'source': 'SCS_BLU_XGM/XGM/DOOCS:output',
                        'key': 'data.intensitySa3SigmaTD',
-                       'dim': ['XGMbunchId']},),
+                       'dim': ['XGMbunchId'],
+                       'extract': 'XGM'},),
     # low pass averaged ADC
     "SCS_slowTrain": ({'source': 'SCS_BLU_XGM/XGM/DOOCS',
                        'key': 'controlData.slowTrain.value',
@@ -742,25 +760,29 @@ mnemonics = {
                  'dim': ['apdId']},),
     "MCP1raw": ({'source': 'SCS_UTC1_ADQ/ADC/1:network',
                  'key': 'digitizers.channel_1_D.raw.samples',
-                 'dim': ['samplesId']},),
+                 'dim': ['samplesId'],
+                 'extract': 'peaks'},),
     "MCP2apd": ({'source': 'SCS_UTC1_ADQ/ADC/1:network',
                  'key': 'digitizers.channel_1_C.apd.pulseIntegral',
                  'dim': ['apdId']},),
     "MCP2raw": ({'source': 'SCS_UTC1_ADQ/ADC/1:network',
                  'key': 'digitizers.channel_1_C.raw.samples',
-                 'dim': ['samplesId']},),
+                 'dim': ['samplesId'],
+                 'extract': 'peaks'},),
     "MCP3apd": ({'source': 'SCS_UTC1_ADQ/ADC/1:network',
                  'key': 'digitizers.channel_1_B.apd.pulseIntegral',
                  'dim': ['apdId']},),
     "MCP3raw": ({'source': 'SCS_UTC1_ADQ/ADC/1:network',
                  'key': 'digitizers.channel_1_B.raw.samples',
-                 'dim': ['samplesId']},),
+                 'dim': ['samplesId'],
+                 'extract': 'peaks'},),
     "MCP4apd": ({'source': 'SCS_UTC1_ADQ/ADC/1:network',
                  'key': 'digitizers.channel_1_A.apd.pulseIntegral',
                  'dim': ['apdId']},),
     "MCP4raw": ({'source': 'SCS_UTC1_ADQ/ADC/1:network',
                  'key': 'digitizers.channel_1_A.raw.samples',
-                 'dim': ['samplesId']},),
+                 'dim': ['samplesId'],
+                 'extract': 'peaks'},),
 
     # FastADC
     "FastADC0peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_0.output',
@@ -768,61 +790,71 @@ mnemonics = {
                        'dim': ['peakId']},),
     "FastADC0raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_0.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
     "FastADC1peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_1.output',
                        'key': 'data.peaks',
                        'dim': ['peakId']},),
     "FastADC1raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_1.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
     "FastADC2peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_2.output',
                        'key': 'data.peaks',
                        'dim': ['peakId']},),
     "FastADC2raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_2.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
     "FastADC3peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_3.output',
                        'key': 'data.peaks',
                        'dim': ['peakId']},),
     "FastADC3raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_3.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
     "FastADC4peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_4.output',
                        'key': 'data.peaks',
                        'dim': ['peakId']},),
     "FastADC4raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_4.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
     "FastADC5peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_5.output',
                        'key': 'data.peaks',
                        'dim': ['peakId']},),
     "FastADC5raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_5.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
     "FastADC6peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_6.output',
                        'key': 'data.peaks',
                        'dim': ['peakId']},),
     "FastADC6raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_6.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
     "FastADC7peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_7.output',
                        'key': 'data.peaks',
                        'dim': ['peakId']},),
     "FastADC7raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_7.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
     "FastADC8peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_8.output',
                        'key': 'data.peaks',
                        'dim': ['peakId']},),
     "FastADC8raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_8.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
     "FastADC9peaks": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_9.output',
                        'key': 'data.peaks',
                        'dim': ['peakId']},),
     "FastADC9raw": ({'source': 'SCS_UTC1_MCP/ADC/1:channel_9.output',
                      'key': 'data.rawData',
-                     'dim': ['fadc_samplesId']},),
+                     'dim': ['fadc_samplesId'],
+                     'extract': 'peaks'},),
 
     # FastADC 2
     "FastADC2_0peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_0.output',
@@ -830,61 +862,87 @@ mnemonics = {
                          'dim': ['peakId']},),
     "FastADC2_0raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_0.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
     "FastADC2_1peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_1.output',
                          'key': 'data.peaks',
                          'dim': ['peakId']},),
     "FastADC2_1raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_1.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
     "FastADC2_2peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_2.output',
                          'key': 'data.peaks',
                          'dim': ['peakId']},),
     "FastADC2_2raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_2.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
     "FastADC2_3peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_3.output',
                          'key': 'data.peaks',
                          'dim': ['peakId']},),
     "FastADC2_3raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_3.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
     "FastADC2_4peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_4.output',
                          'key': 'data.peaks',
                          'dim': ['peakId']},),
     "FastADC2_4raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_4.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
     "FastADC2_5peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_5.output',
                          'key': 'data.peaks',
                          'dim': ['peakId']},),
     "FastADC2_5raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_5.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
     "FastADC2_6peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_6.output',
                         'key': 'data.peaks',
                         'dim': ['peakId']},),
     "FastADC2_6raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_6.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
     "FastADC2_7peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_7.output',
                          'key': 'data.peaks',
                          'dim': ['peakId']},),
     "FastADC2_7raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_7.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
     "FastADC2_8peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_8.output',
                          'key': 'data.peaks',
                         'dim': ['peakId']},),
     "FastADC2_8raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_8.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
     "FastADC2_9peaks": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_9.output',
                          'key': 'data.peaks',
                          'dim': ['peakId']},),
     "FastADC2_9raw": ({'source': 'SCS_UTC2_FADC/ADC/1:channel_9.output',
                        'key': 'data.rawData',
-                       'dim': ['fadc2_samplesId']},),
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
+    "FFT_PD2raw": ({'source': 'SCS_FFT_DIAG/ADC/PD2:output',
+                       'key': 'data.rawData',
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
+    "FFT_MCPraw": ({'source': 'SCS_FFT_MCP/ADC/MCP:output',
+                       'key': 'data.rawData',
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
+    "FFT_REFLraw": ({'source': 'SCS_FFT_REFL/ADC/DIODE_UP:output',
+                       'key': 'data.rawData',
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
+    "I0_ILHraw": ({'source': 'SCS_ILH_LAS/ADC/I0_ILH:output',
+                       'key': 'data.rawData',
+                       'dim': ['fadc2_samplesId'],
+                       'extract': 'peaks'},),
 
     # KARABACON
     "KARABACON": ({'source': 'SCS_DAQ_SCAN/MDL/KARABACON',
diff --git a/src/toolbox_scs/detectors/digitizers.py b/src/toolbox_scs/detectors/digitizers.py
index 29a98d97312c791d3d62ee3ec50fb32855d68b76..2fb86b511c1dd0cef161b5d578566e650c12a79a 100644
--- a/src/toolbox_scs/detectors/digitizers.py
+++ b/src/toolbox_scs/detectors/digitizers.py
@@ -830,6 +830,8 @@ def digitizer_type(mnemonic=None, mnemo_dict=None, source=None):
         source = mnemo_dict[mnemonic]['source']
     if ':channel' in source:
         return 'FastADC'
+    if ':output' in source:
+        return 'FastADC'
     if ':network' in source:
         return 'ADQ412'
     dic = {'XTD10_MCP': 'FastADC',
diff --git a/src/toolbox_scs/load.py b/src/toolbox_scs/load.py
index f7608ccc7e644a66eecad9846e22229f00be0a7b..a038c025a619de85de53830d43aab567fc89d8bf 100644
--- a/src/toolbox_scs/load.py
+++ b/src/toolbox_scs/load.py
@@ -44,14 +44,10 @@ def load(proposalNB=None, runNB=None,
          validate=False,
          subset=None,
          rois={},
-         extract_adq412=True,
-         extract_fadc=True,
-         extract_fadc2=True,
+         extract_digitizers=True,
          extract_xgm=True,
          extract_bam=True,
-         adq412_bp='sase3',
-         fadc_bp='scs_ppl',
-         fadc2_bp='sase3',
+         bunchPattern='sase3',
          extract_tim=None,
          extract_laser=None,
          tim_bp=None,
@@ -92,17 +88,9 @@ def load(proposalNB=None, runNB=None,
                              'dim': ['ref_x', 'ref_y']},
                      'sam': {'roi':by_index[1050:1210, 535:720],
                              'dim': ['sam_x', 'sam_y']}}}
-    extract_adq412: bool
-        If True, extracts the peaks from ADQ412 variables (e.g. 'MCP2raw',
-        'MCP3apd') and aligns the pulse Id with the sase3 bunch pattern.
-    extract_fadc: bool
-        If True, extracts the peaks from FastADC variables (e.g. 'FastADC5raw',
-        'FastADC3peaks') and aligns the pulse Id according to the fadc_bp bunch
-        pattern.
-    extract_fadc2: bool
-        If True, extracts the peaks from FastADC2 variables (e.g.
-        'FastADC2_5raw', 'FastADC2_3peaks') and aligns the pulse Id according
-        to the fadc2_bp bunch pattern.
+    extract_digitizers: bool
+        If True, extracts the peaks from digitizer variables and aligns the
+        pulse Id according to the fadc_bp bunch pattern.
     extract_xgm: bool
         If True, extracts the values from XGM variables (e.g. 'SCS_SA3',
         'XTD10_XGM') and aligns the pulse Id with the sase1 / sase3 bunch
@@ -110,15 +98,13 @@ def load(proposalNB=None, runNB=None,
     extract_bam: bool
         If True, extracts the values from BAM variables (e.g. 'BAM1932M')
         and aligns the pulse Id with the sase3 bunch pattern.
-    adq412_bp: str
-        bunch pattern used to extract the ADQ412 digitizer pulses.
-        Ignored if extract_adq412=False.
-    fadc_bp: str
+    bunchpattern: str
         bunch pattern used to extract the Fast ADC pulses.
-        Ignored if extract_fadc=False.
-    fadc2_bp: str
-        bunch pattern used to extract the Fast ADC 2 pulses.
-        Ignored if extract_fadc2=False.
+        A string or a dict as in::
+
+        {'FFT_PD2': 'sase3', 'ILH_I0': 'scs_ppl'}
+
+        Ignored if extract_digitizers=False.
 
     DEPRECATED ARGUMENTS:
     extract_tim: DEPRECATED. Use extract_adq412 instead.
@@ -187,7 +173,8 @@ def load(proposalNB=None, runNB=None,
             continue
         if k not in rois:
             # no ROIs selection, we read everything
-            arr = run.get_array(*v.values(), name=k)
+            arr = run.get_array(v['source'], v['key'],
+                                extra_dims=v['dim'], name=k)
             if len(arr) == 0:
                 log.warning(f'Empty array for {f}: {v["source"]}, {v["key"]}. '
                             'Skipping!')
@@ -222,42 +209,28 @@ def load(proposalNB=None, runNB=None,
     data = xr.merge(data_arrays, join='inner')
     data.attrs['runFolder'] = runFolder
 
-    # backward compatibility with old-defined variables:
-    if extract_tim is not None:
-        extract_adq412 = extract_tim
-    if extract_laser is not None:
-        extract_fadc = extract_laser
-    if tim_bp is not None:
-        adq412_bp = tim_bp
-    if laser_bp is not None:
-        fadc_bp = laser_bp
-
-    adq412 = [k for k in run_mnemonics if 'MCP' in k and k in data]
-    if extract_adq412 and len(adq412) > 0:
-        data = tbdet.get_digitizer_peaks(run, mnemonics=adq412,
-                                         merge_with=data,
-                                         bunchPattern=adq412_bp)
-
-    fadc = [k for k in run_mnemonics if ('FastADC' in k)
-            and ('FastADC2_' not in k) and (k in data)]
-    if extract_fadc and len(fadc) > 0:
-        data = tbdet.get_digitizer_peaks(run, mnemonics=fadc, merge_with=data,
-                                         bunchPattern=fadc_bp)
-    fadc2 = [k for k in run_mnemonics if 'FastADC2_' in k and k in data]
-    if extract_fadc2 and len(fadc2) > 0:
-        data = tbdet.get_digitizer_peaks(run, mnemonics=fadc2, merge_with=data,
-                                         bunchPattern=fadc2_bp)
-
-    xgm = ['XTD10_XGM', 'XTD10_XGM_sigma', 'XTD10_SA3', 'XTD10_SA3_sigma',
-           'XTD10_SA1', 'XTD10_SA1_sigma', 'SCS_XGM', 'SCS_XGM_sigma',
-           'SCS_SA1', 'SCS_SA1_sigma', 'SCS_SA3', 'SCS_SA3_sigma']
-    xgm = [k for k in xgm if k in data]
-    if extract_xgm and len(xgm) > 0:
-        data = tbdet.get_xgm(run, mnemonics=xgm, merge_with=data)
-
-    bam = [k for k in run_mnemonics if 'BAM' in k and k in data]
-    if extract_bam and len(bam) > 0:
-        data = tbdet.get_bam(run, mnemonics=bam, merge_with=data)
+    if extract_digitizers:
+        bp = bunchPattern
+        for k, v in run_mnemonics.items():
+            if k not in data or v.get('extract') != 'peaks':
+                continue
+            if isinstance(bunchPattern, dict):
+                bp = bunchPattern.get(k)
+                if bp is None:
+                    continue
+            data = tbdet.get_digitizer_peaks(
+                run, mnemonics=k, merge_with=data, bunchPattern=bp)
+    if extract_xgm:
+        for k, v in run_mnemonics.items():
+            if k not in data or v.get('extract') != 'XGM':
+                continue
+            data = tbdet.get_xgm(run, mnemonics=k, merge_with=data)
+
+    if extract_bam:
+        for k, v in run_mnemonics.items():
+            if k not in data or v.get('extract') != 'BAM':
+                continue
+            data = tbdet.get_bam(run, mnemonics=k, merge_with=data)
 
     return run, data