diff --git a/.gitlab/workflow/.coverage-gitlab-ci.yaml b/.gitlab/workflow/.coverage-gitlab-ci.yaml
index 5f717cc6c7aee456c06ab5158c7380ef7555d5f2..42465a0da5dbda51b2bfc328993498ed0dc241b8 100644
--- a/.gitlab/workflow/.coverage-gitlab-ci.yaml
+++ b/.gitlab/workflow/.coverage-gitlab-ci.yaml
@@ -3,12 +3,25 @@
 # ----------------------------------------------------------------------------
 
 .coverage_dependencies: &coverage_dependencies
+  - test_evaluate_tagger_in_files
+  - test_examples
   - test_plot_input_vars
   - test_plotting_umami_dips
   - test_plotting_umami_dl1
   - test_plotting_umami_umami
+  - test_train_cads
+  - test_train_cond_att_umami
+  - test_train_dips
+  - test_train_dips_four_classes
+  - test_train_dl1r
+  - test_train_tfrecords_cads
+  - test_train_tfrecords_cond_att_umami
+  - test_train_tfrecords_dips
+  - test_train_tfrecords_umami
+  - test_train_umami
   - unittest_parallel
-  - test_examples
+
+
 
 test_coverage:
   stage: coverage_test_stage
diff --git a/.gitlab/workflow/.integration_test-gitlab-ci.yaml b/.gitlab/workflow/.integration_test-gitlab-ci.yaml
index bc4a6ec813a5dc9e7b667193bf7abb098e8cef67..9879cb1e5cfc3f3618b2f11806afaf6c1e8bc322 100644
--- a/.gitlab/workflow/.integration_test-gitlab-ci.yaml
+++ b/.gitlab/workflow/.integration_test-gitlab-ci.yaml
@@ -25,161 +25,91 @@
     junit: report.xml
 
 
-.dependencies_from_train_stage: &dependencies_from_train_stage
-  - test_train_dips
-  - test_train_dips_four_classes
-  - test_train_tfrecords_dips
-  - test_train_cads
-  - test_train_tfrecords_cads
-  - test_train_dl1r
-  - test_train_umami
-  - test_train_tfrecords_umami
-  - test_train_cond_att_umami
-  - test_train_tfrecords_cond_att_umami
-  - test_evaluate_tagger_in_files
-
-
-test_preprocessing_dips_count:
+.test_preprocessing: &test_preprocessing
   <<: *test_template
   stage: integration_test_preprocessing
+  before_script:
+    - |-
+        if [[ $TEST_PATH == "" ]]; then
+          TEST_PATH=$TEST_NAME
+          echo $TEST_PATH
+        fi
+    - . run_setup.sh
   script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_dips_count" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_dips_count
+    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "$TEST_NAME" -v -s --junitxml=report.xml
+    - cp .coverage ./coverage_files/.coverage.$TEST_NAME
   artifacts:
     <<: *artifact_template
     paths:
       - plots/
-      - test_preprocessing_dips/
+      - $TEST_PATH/
       - coverage_files/
 
-test_preprocessing_dl1r_count:
-  <<: *test_template
-  stage: integration_test_preprocessing
-  script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_dl1r_count" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_dl1r_count
-  artifacts:
-    <<: *artifact_template
-    paths:
-      - plots/
-      - test_preprocessing_dl1r/
-      - coverage_files/
+test_preprocessing_parallel:
+  <<: *test_preprocessing
+  parallel:
+    matrix:
+      - TEST_PATH: test_preprocessing_dips
+        TEST_NAME:
+          - test_preprocessing_dips_four_classes_pdf
+          - test_preprocessing_dips_count
+      - TEST_NAME:
+        - test_preprocessing_dips_count
+        - test_preprocessing_dips_four_classes_pdf
+        - test_preprocessing_dips_pdf
+        - test_preprocessing_dips_weighting
+        - test_preprocessing_dl1r_pdf
+        - test_preprocessing_dl1r_weighting
+        - test_preprocessing_umami_pdf
+        - test_preprocessing_umami_weighting
+      - TEST_NAME: test_preprocessing_dl1r_count
+        TEST_PATH: test_preprocessing_dl1r
+      - TEST_NAME: test_preprocessing_umami_count
+        TEST_PATH: test_preprocessing_umami
 
-test_preprocessing_umami_count:
-  <<: *test_template
-  stage: integration_test_preprocessing
-  script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_umami_count" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_umami_count
-  artifacts:
-    <<: *artifact_template
-    paths:
-      - plots/
-      - test_preprocessing_umami/
-      - coverage_files/
 
-test_preprocessing_dips_pdf:
-  <<: *test_template
-  stage: integration_test_preprocessing
-  script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_dips_pdf" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_dips_pdf
-  artifacts:
-    <<: *artifact_template
-    paths:
-      - plots/
-      - test_preprocessing_dips_pdf/
-      - coverage_files/
-
-test_preprocessing_dips_four_classes_pdf:
-  <<: *test_template
-  stage: integration_test_preprocessing
-  script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_dips_four_classes_pdf" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_dips_four_classes_pdf
-  artifacts:
-    <<: *artifact_template
-    paths:
-      - plots/
-      - test_preprocessing_dips/
-      - coverage_files/
 
-test_preprocessing_dl1r_pdf:
-  <<: *test_template
-  stage: integration_test_preprocessing
-  script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_dl1r_pdf" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_dl1r_pdf
-  artifacts:
-    <<: *artifact_template
-    paths:
-      - plots/
-      - test_preprocessing_dl1r_pdf/
-      - coverage_files/
-
-test_preprocessing_umami_pdf:
-  <<: *test_template
-  stage: integration_test_preprocessing
-  script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_umami_pdf" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_umami_pdf
-  artifacts:
-    <<: *artifact_template
-    paths:
-      - plots/
-      - test_preprocessing_umami_pdf/
-      - coverage_files/
+.test_train_dependencies: &test_train_dependencies
+  dependencies:
+    - test_preprocessing_parallel
+  needs:
+    - test_preprocessing_parallel
 
-test_preprocessing_dips_weighting:
-  <<: *test_template
-  stage: integration_test_preprocessing
-  script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_dips_weighting" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_dips_weighting
-  artifacts:
-    <<: *artifact_template
-    paths:
-      - plots/
-      - test_preprocessing_dips_weighting/
-      - coverage_files/
 
-test_preprocessing_dl1r_weighting:
+.test_train: &test_train
   <<: *test_template
-  stage: integration_test_preprocessing
+  stage: integration_test_tagger
+  # needs:
+  #   - test_preprocessing_dips_count
+  #   - test_preprocessing_dips_pdf
+  #   - test_preprocessing_dips_weighting
+  # dependencies:
+  #   - test_preprocessing_dips_count
+  #   - test_preprocessing_dips_pdf
+  #   - test_preprocessing_dips_weighting
+  <<: *test_train_dependencies
   script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_dl1r_weighting" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_dl1r_weighting
+    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_dips_no_attention"
+    - cp .coverage ./coverage_files/.coverage.test_train_dips
   artifacts:
     <<: *artifact_template
     paths:
-      - plots/
-      - test_preprocessing_dl1r_weighting/
+      - test_*/
       - coverage_files/
 
-test_preprocessing_umami_weighting:
-  <<: *test_template
-  stage: integration_test_preprocessing
-  script:
-    - pytest --cov=./ --cov-report= ./umami/tests/integration/test_preprocessing.py -k "test_preprocessing_umami_weighting" -v -s --junitxml=report.xml
-    - cp .coverage ./coverage_files/.coverage.test_preprocessing_umami_weighting
-  artifacts:
-    <<: *artifact_template
-    paths:
-      - plots/
-      - test_preprocessing_umami_weighting/
-      - coverage_files/
 
 test_train_dips:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_dips_count
-    - test_preprocessing_dips_pdf
-    - test_preprocessing_dips_weighting
-  dependencies:
-    - test_preprocessing_dips_count
-    - test_preprocessing_dips_pdf
-    - test_preprocessing_dips_weighting
+  # needs:
+  #   - test_preprocessing_dips_count
+  #   - test_preprocessing_dips_pdf
+  #   - test_preprocessing_dips_weighting
+  # dependencies:
+  #   - test_preprocessing_dips_count
+  #   - test_preprocessing_dips_pdf
+  #   - test_preprocessing_dips_weighting
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_dips_no_attention"
     - cp .coverage ./coverage_files/.coverage.test_train_dips
@@ -192,10 +122,11 @@ test_train_dips:
 test_train_dips_four_classes:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_dips_four_classes_pdf
-  dependencies:
-    - test_preprocessing_dips_four_classes_pdf
+  # needs:
+  #   - test_preprocessing_dips_four_classes_pdf
+  # dependencies:
+  #   - test_preprocessing_dips_four_classes_pdf
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_dips_four_classes"
     - cp .coverage ./coverage_files/.coverage.test_train_dips_four_classes
@@ -208,14 +139,15 @@ test_train_dips_four_classes:
 test_train_tfrecords_dips:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_dips_count
-    - test_preprocessing_dips_pdf
-    - test_preprocessing_dips_weighting
-  dependencies:
-    - test_preprocessing_dips_count
-    - test_preprocessing_dips_pdf
-    - test_preprocessing_dips_weighting
+  # needs:
+  #   - test_preprocessing_dips_count
+  #   - test_preprocessing_dips_pdf
+  #   - test_preprocessing_dips_weighting
+  # dependencies:
+  #   - test_preprocessing_dips_count
+  #   - test_preprocessing_dips_pdf
+  #   - test_preprocessing_dips_weighting
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_tfrecords_dips"
     - cp .coverage ./coverage_files/.coverage.test_train_tfrecords_dips
@@ -228,14 +160,15 @@ test_train_tfrecords_dips:
 test_train_cads:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
-  dependencies:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
+  # needs:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  # dependencies:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_cads"
     - cp .coverage ./coverage_files/.coverage.test_train_cads
@@ -248,14 +181,15 @@ test_train_cads:
 test_train_tfrecords_cads:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
-  dependencies:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
+  # needs:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  # dependencies:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_tfrecords_cads"
     - cp .coverage ./coverage_files/.coverage.test_train_tfrecords_cads
@@ -268,14 +202,15 @@ test_train_tfrecords_cads:
 test_train_dl1r:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_dl1r_count
-    - test_preprocessing_dl1r_pdf
-    - test_preprocessing_dl1r_weighting
-  dependencies:
-    - test_preprocessing_dl1r_count
-    - test_preprocessing_dl1r_pdf
-    - test_preprocessing_dl1r_weighting
+  # needs:
+  #   - test_preprocessing_dl1r_count
+  #   - test_preprocessing_dl1r_pdf
+  #   - test_preprocessing_dl1r_weighting
+  # dependencies:
+  #   - test_preprocessing_dl1r_count
+  #   - test_preprocessing_dl1r_pdf
+  #   - test_preprocessing_dl1r_weighting
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_dl1r"
     - cp .coverage ./coverage_files/.coverage.test_train_dl1r
@@ -288,14 +223,15 @@ test_train_dl1r:
 test_train_umami:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
-  dependencies:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
+  # needs:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  # dependencies:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_umami"
     - cp .coverage ./coverage_files/.coverage.test_train_umami
@@ -308,14 +244,15 @@ test_train_umami:
 test_train_tfrecords_umami:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
-  dependencies:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
+  # needs:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  # dependencies:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_tfrecords_umami"
     - cp .coverage ./coverage_files/.coverage.test_train_tfrecords_umami
@@ -328,14 +265,15 @@ test_train_tfrecords_umami:
 test_train_cond_att_umami:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
-  dependencies:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
+  # needs:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  # dependencies:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_cond_att_umami"
     - cp .coverage ./coverage_files/.coverage.test_train_cond_att_umami
@@ -348,14 +286,15 @@ test_train_cond_att_umami:
 test_train_tfrecords_cond_att_umami:
   <<: *test_template
   stage: integration_test_tagger
-  needs:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
-  dependencies:
-    - test_preprocessing_umami_count
-    - test_preprocessing_umami_pdf
-    - test_preprocessing_umami_weighting
+  # needs:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  # dependencies:
+  #   - test_preprocessing_umami_count
+  #   - test_preprocessing_umami_pdf
+  #   - test_preprocessing_umami_weighting
+  <<: *test_train_dependencies
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_train.py -v -s --junitxml=report.xml -k "test_train_tfrecords_cond_att_umami"
     - cp .coverage ./coverage_files/.coverage.test_train_tfrecords_cond_att_umami
@@ -380,8 +319,6 @@ test_evaluate_tagger_in_files:
 test_plot_input_vars:
   <<: *test_template
   stage: integration_test_plotting
-  needs: *dependencies_from_train_stage
-  dependencies: *dependencies_from_train_stage
   script:
     - pytest --cov=./ --cov-report= ./umami/tests/integration/test_input_vars_plot.py -v -s --junitxml=report.xml
     - cp .coverage ./coverage_files/.coverage.test_input_vars_plot