diff --git a/src/__init__.py b/src/__init__.py
index d690ff25050ef24e2630e13e2ebb5812d62a4114..9559822193d070bb886b59e2605bfc7aa73eef5e 100644
--- a/src/__init__.py
+++ b/src/__init__.py
@@ -4,6 +4,9 @@ __version_info__ = {
     'micro': 0,
 }
 
+from src.run_modules import *
+from src.run import run
+
 
 def get_version():
     assert set(__version_info__.keys()) >= {"major", "minor"}
diff --git a/src/run.py b/src/run.py
new file mode 100644
index 0000000000000000000000000000000000000000..705c612560d139292e3ec55c4f5c223318307447
--- /dev/null
+++ b/src/run.py
@@ -0,0 +1,48 @@
+
+from src.run_modules import *
+import argparse
+import inspect
+
+
+def run(stations=['DEBW107', 'DEBY081', 'DEBW013', 'DEBW076', 'DEBW087', 'DEBW001'],
+            station_type='background',
+            trainable=False, create_new_model=True,
+            window_history_size=6,
+            experiment_date="testrun",
+            network=None,
+            variables=None, statistics_per_var=None,
+            start=None, end=None,
+            target_var="o3", target_dim=None,
+            window_lead_time=None,
+            dimensions=None,
+            interpolate_method=None, interpolate_dim=None, limit_nan_fill=None,
+            train_start=None, train_end=None, val_start=None, val_end=None, test_start=None, test_end=None,
+            use_all_stations_on_all_data_sets=True, fraction_of_train=None,
+            experiment_path=None, plot_path=None, forecast_path=None, bootstrap_path=None, overwrite_local_data=None,
+            sampling="daily",
+            permute_data_on_training=False, extreme_values=None, extremes_on_right_tail_only=None,
+            transformation=None,
+            train_min_length=None, val_min_length=None, test_min_length=None,
+            evaluate_bootstraps=True, number_of_bootstraps=None, create_new_bootstraps=False,
+            plot_list=None):
+
+    params = inspect.getfullargspec(ExperimentSetup).args
+    kwargs = {k: v for k, v in locals().items() if k in params}
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument('--experiment_date', metavar='--exp_date', type=str, default="testrun",
+                        help="set experiment date as string")
+    args = parser.parse_args()
+
+    with RunEnvironment():
+        ExperimentSetup(args, **kwargs)
+        PreProcessing()
+        PartitionCheck()
+        ModelSetup()
+        Training()
+        PostProcessing()
+
+
+if __name__ == "__main__":
+
+    run()
diff --git a/src/run_modules/__init__.py b/src/run_modules/__init__.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0c70ae4205ff38fdc876538c42c44ca0bc8cb9c0 100644
--- a/src/run_modules/__init__.py
+++ b/src/run_modules/__init__.py
@@ -0,0 +1,7 @@
+from src.run_modules.experiment_setup import ExperimentSetup
+from src.run_modules.model_setup import ModelSetup
+from src.run_modules.partition_check import PartitionCheck
+from src.run_modules.post_processing import PostProcessing
+from src.run_modules.pre_processing import PreProcessing
+from src.run_modules.run_environment import RunEnvironment
+from src.run_modules.training import Training