diff --git a/climax/main/config.py b/climax/main/config.py
index e6b7e4985e2bbc18780a9f2595b5051cc0228262..ae9b692948ba93f352050df85c7b610cead13f69 100644
--- a/climax/main/config.py
+++ b/climax/main/config.py
@@ -4,7 +4,6 @@
 # -*- coding: utf-8 -*-
 
 # builtins
-import pathlib
 import datetime
 
 # externals
@@ -13,25 +12,6 @@ import numpy as np
 # locals
 from climax.core.constants import PREDICTANDS
 
-# -----------------------------------------------------------------------------
-# Paths to input data ---------------------------------------------------------
-# -----------------------------------------------------------------------------
-
-# project root path
-ROOT = pathlib.Path('/mnt/CEPH_PROJECTS/FACT_CLIMAX/')
-
-# path to this file
-HERE = pathlib.Path(__file__).parent
-
-# path to ERA5 reanalysis data
-ERA5_PATH = ROOT.joinpath('REANALYSIS')
-
-# path to OBServation data
-OBS_PATH = ROOT.joinpath('OBSERVATION')
-
-# path to save trained models
-MODEL_PATH = ROOT.joinpath('Models')
-
 # -----------------------------------------------------------------------------
 # ERA5 downscaling configuration ----------------------------------------------
 # -----------------------------------------------------------------------------
diff --git a/climax/main/downscale.py b/climax/main/downscale.py
index ce969d2ff9e999540a224ea0937daf686178d79d..2f441f4ec7d130a11f378334ade54b7cea743d9a 100644
--- a/climax/main/downscale.py
+++ b/climax/main/downscale.py
@@ -19,9 +19,9 @@ from pysegcnn.core.trainer import NetworkTrainer
 from pysegcnn.core.logging import log_conf
 from climax.core.dataset import ERA5Dataset, NetCDFDataset
 from climax.core.constants import ERA5_VARIABLES
-from climax.main.config import (ERA5_PATH, ERA5_PLEVELS, OBS_PATH, PREDICTAND,
-                                CALIB_PERIOD, MODEL_PATH, SHUFFLE, BATCH_SIZE,
-                                LR, TRAIN_CONFIG)
+from climax.main.config import (ERA5_PLEVELS, PREDICTAND, CALIB_PERIOD,
+                                SHUFFLE, BATCH_SIZE, LR, TRAIN_CONFIG)
+from climax.main.io import ERA5_PATH, OBS_PATH, MODEL_PATH
 
 
 if __name__ == '__main__':
diff --git a/climax/main/io.py b/climax/main/io.py
new file mode 100644
index 0000000000000000000000000000000000000000..179375fe582659a3c90982fc2eeef53c9021bde2
--- /dev/null
+++ b/climax/main/io.py
@@ -0,0 +1,32 @@
+"""Climax input and output files."""
+
+# !/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# builtins
+import pathlib
+
+# -----------------------------------------------------------------------------
+# Paths to input data ---------------------------------------------------------
+# -----------------------------------------------------------------------------
+
+# project root path
+ROOT = pathlib.Path('~/FACT_CLIMAX')
+ROOT = pathlib.Path('/mnt/CEPH_PROJECTS/FACT_CLIMAX/')
+
+# path to this file
+HERE = pathlib.Path(__file__).parent
+
+# path to ERA5 reanalysis data
+ERA5_PATH = ROOT.joinpath('REANALYSIS')
+
+# path to OBServation data
+OBS_PATH = ROOT.joinpath('OBSERVATION')
+
+# path to save trained models
+MODEL_PATH = ROOT.joinpath('Models')
+
+# create input and output paths
+for path in [ERA5_PATH, OBS_PATH, MODEL_PATH]:
+    if not path.exists():
+        path.mkdir(parents=True, exist_ok=True)
diff --git a/climax/main/preprocess/download_ERA5.py b/climax/main/preprocess/download_ERA5.py
index 3c8ff185d32f0ad524acfcd85a65d7e307d4c1eb..cec572d8a6212da52fe39d6bc6b73b458d42fb71 100644
--- a/climax/main/preprocess/download_ERA5.py
+++ b/climax/main/preprocess/download_ERA5.py
@@ -13,7 +13,7 @@ import numpy as np
 
 # locals
 from climax.core.constants import ERA5_P_VARIABLES, ERA5_VARIABLES
-from climax.main.config import ERA5_PATH
+from climax.main.io import ERA5_PATH
 
 # pressure levels
 pressure_levels = ['850', '500']