diff --git a/config/jet.py b/config/jet.py
index 631a7ad6e43eb789fe5567eca7035a247c3139b8..bd9c6b174c46f698408e0759df8241ef430fad5d 100755
--- a/config/jet.py
+++ b/config/jet.py
@@ -1,47 +1,6 @@
-import os, sys
-import datetime as dt
+"""Cluster configuration file, see docstring of ClusterConfig class in dartwrf/utils.py for details"""
 from dartwrf import utils
-from config.cfg import exp
-
-"""Configuration name docs
-
-When coding, use attributes of a dictionary like this: 
-$ from cfg import exp, cluster
-$ path = cluster.archivedir
-
-
-attribute name    |     description
-------------------------------------------------------
-name                    any string (currently unused)
-
-python                  path of python version to use
-python_enstools         path of python version to use for verification script (not provided)
-ncks                    path to 'ncks' program; type 'which ncks' to find the path,
-                            if it doesn't exist, try to load the module first ('module load nco')
-ideal                   path to WRF's ideal.exe
-wrfexe                  path to WRF's wrf.exe
-
-wrf_rundir_base         path for temporary files for WRF
-dart_rundir_base        path for temporary files for DART
-archive_base            path for long-time output storage
-
-srcdir                  path to where WRF has been compiled, including the 'run' folder of WRF, e.g. /home/WRF-4.3/run
-dart_srcdir             path to DART compile directory, e.g. /home/DART-9.11.9/models/wrf/work
-rttov_srcdir            path to RTTOV compile directory, e.g. /home/RTTOV13/rtcoef_rttov13/
-scriptsdir              path where DART-WRF scripts reside, e.g. /home/DART-WRF/scripts
-
-namelist                path to a namelist template; strings like <hist_interval>, will be overwritten in scripts/prepare_namelist.py
-run_WRF                 path to script which runs WRF on a node of the cluster
-obs_impact_filename     path to obs_impact_filename (see DART guide; module assim_tools_mod and program obs_impact_tool)
-geo_em                  path to NetCDF file of WRF domain (see WRF guide)
-
-slurm_cfg               python dictionary, containing options of SLURM
-                            defined in SLURM docs (https://slurm.schedmd.com/sbatch.html)
-                            this configuration can be overwritten later on, for example:
-                            'dict(cluster.slurm_cfg, **cfg_update)' where
-                            'cfg_update = {"nodes": "2"}'
-"""
-
+from dartwrf.exp_config import exp
 
 cluster = utils.ClusterConfig(exp)
 cluster.name = 'jet'
diff --git a/config/srvx1.py b/config/srvx1.py
index 7d9003e211d370e9d636158f0dafe6f4f50b9c8a..eba2901881e1ed3db4573022893f12b63e90e939 100755
--- a/config/srvx1.py
+++ b/config/srvx1.py
@@ -1,47 +1,6 @@
-import os, sys
-import datetime as dt
+"""Cluster configuration file, see docstring of ClusterConfig class in dartwrf/utils.py for details"""
 from dartwrf import utils
-from config.cfg import exp
-
-"""Configuration name docs
-
-When coding, use attributes of a dictionary like this: 
-$ from cfg import exp, cluster
-$ path = cluster.archivedir
-
-
-attribute name    |     description
-------------------------------------------------------
-name                    any string (currently unused)
-
-python                  path of python version to use
-python_enstools         path of python version to use for verification script (not provided)
-ncks                    path to 'ncks' program; type 'which ncks' to find the path,
-                            if it doesn't exist, try to load the module first ('module load nco')
-ideal                   path to WRF's ideal.exe
-wrfexe                  path to WRF's wrf.exe
-
-wrf_rundir_base         path for temporary files for WRF
-dart_rundir_base        path for temporary files for DART
-archive_base            path for long-time output storage
-
-srcdir                  path to where WRF has been compiled, including the 'run' folder of WRF, e.g. /home/WRF-4.3/run
-dart_srcdir             path to DART compile directory, e.g. /home/DART-9.11.9/models/wrf/work
-rttov_srcdir            path to RTTOV compile directory, e.g. /home/RTTOV13/rtcoef_rttov13/
-scriptsdir              path where DART-WRF scripts reside, e.g. /home/DART-WRF/scripts
-
-namelist                path to a namelist template; strings like <hist_interval>, will be overwritten in scripts/prepare_namelist.py
-run_WRF                 path to script which runs WRF on a node of the cluster
-obs_impact_filename     path to obs_impact_filename (see DART guide; module assim_tools_mod and program obs_impact_tool)
-overwrite_coordinates_with_geo_em   if WRF ideal: path to NetCDF file of WRF domain (see WRF guide)
-                                    if WRF real: set to False
-
-slurm_cfg               python dictionary, containing options of SLURM
-                            defined in SLURM docs (https://slurm.schedmd.com/sbatch.html)
-                            this configuration can be overwritten later on, for example:
-                            'dict(cluster.slurm_cfg, **cfg_update)' where
-                            'cfg_update = {"nodes": "2"}'
-"""
+from dartwrf.exp_config import exp
 
 cluster = utils.ClusterConfig(exp)
 cluster.name = 'srvx1'
diff --git a/config/vsc.py b/config/vsc.py
index 7f58398014db1ee1954a04799978c3dd309c06a3..58a3b6cab07616e4bf9a9b55eaf47ccf5621f803 100755
--- a/config/vsc.py
+++ b/config/vsc.py
@@ -1,46 +1,6 @@
-import os, sys
-import datetime as dt
+"""Cluster configuration file, see docstring of ClusterConfig class in dartwrf/utils.py for details"""
 from dartwrf import utils
-from config.cfg import exp
-
-"""Configuration name docs
-
-When coding, use attributes of a dictionary like this: 
-$ from cfg import exp, cluster
-$ path = cluster.archivedir
-
-
-attribute name    |     description
-------------------------------------------------------
-name                    any string (currently unused)
-
-python                  path of python version to use
-python_enstools         path of python version to use for verification script (not provided)
-ncks                    path to 'ncks' program; type 'which ncks' to find the path,
-                            if it doesn't exist, try to load the module first ('module load nco')
-ideal                   path to WRF's ideal.exe
-wrfexe                  path to WRF's wrf.exe
-
-wrf_rundir_base         path for temporary files for WRF
-dart_rundir_base        path for temporary files for DART
-archive_base            path for long-time output storage
-
-srcdir                  path to where WRF has been compiled, including the 'run' folder of WRF, e.g. /home/WRF-4.3/run
-dart_srcdir             path to DART compile directory, e.g. /home/DART-9.11.9/models/wrf/work
-rttov_srcdir            path to RTTOV compile directory, e.g. /home/RTTOV13/rtcoef_rttov13/
-scriptsdir              path where DART-WRF scripts reside, e.g. /home/DART-WRF/scripts
-
-namelist                path to a namelist template; strings like <hist_interval>, will be overwritten in scripts/prepare_namelist.py
-run_WRF                 path to script which runs WRF on a node of the cluster
-obs_impact_filename     path to obs_impact_filename (see DART guide; module assim_tools_mod and program obs_impact_tool)
-geo_em                  path to NetCDF file of WRF domain (see WRF guide)
-
-slurm_cfg               python dictionary, containing options of SLURM
-                            defined in SLURM docs (https://slurm.schedmd.com/sbatch.html)
-                            this configuration can be overwritten later on, for example:
-                            'dict(cluster.slurm_cfg, **cfg_update)' where
-                            'cfg_update = {"nodes": "2"}'
-"""
+from dartwrf.exp_config import exp
 
 
 cluster = utils.ClusterConfig(exp)