diff --git a/analysis_only.py b/analysis_only.py
index 3076265ab1939ce1e0981aef681b57b549e10f9d..899241dfb06ab119b28906723e76bb43002f1163 100755
--- a/analysis_only.py
+++ b/analysis_only.py
@@ -6,9 +6,9 @@ import datetime as dt
 from dartwrf.workflows import WorkFlows
 
 
-prior_path_exp = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_noDA'
+prior_path_exp = '/users/students/lehre/advDA_s2023/data/sample_ensemble/'
 prior_init_time = dt.datetime(2008,7,30,12)
-prior_valid_time = dt.datetime(2008,7,30,12,30)
+prior_valid_time = dt.datetime(2008,7,30,13)
 assim_time = prior_valid_time
 
 w = WorkFlows(exp_config='cfg.py', server_config='srvx1.py')
diff --git a/config/cfg.py b/config/cfg.py
index 46ea5e79ed96bff447c0cc862e01b85d9f09aea8..8a833a6659cd82e4498917e0e87079e07c6f0a5c 100755
--- a/config/cfg.py
+++ b/config/cfg.py
@@ -1,7 +1,7 @@
 from dartwrf import utils
 
 exp = utils.Experiment()
-exp.expname = "test_newcode"
+exp.expname = "obs-cold_localization-narrow"
 exp.model_dx = 2000
 exp.n_ens = 10
 
@@ -9,30 +9,20 @@ exp.filter_kind = 1
 exp.prior_inflation = 0
 exp.post_inflation = 4
 exp.sec = True
-exp.reject_smallFGD = False
-exp.cov_loc_vert_km_horiz_km = (3, 20)
+exp.cov_loc_vert_km_horiz_km = (4, 40)
 exp.superob_km = False  # False or int (spatial averaging of observations)
 exp.adjust_obs_impact = False
 
 exp.use_existing_obsseq = False  # False or pathname (use precomputed obs_seq.out files)
-#exp.use_existing_obsseq = '/jetfs/home/lkugler/data/sim_archive/NoImpactFactors/obs_seq_out/2008-07-30_%H:%M_obs_seq.out'
-#exp.use_existing_obsseq = '/jetfs/home/lkugler/data/sim_archive/exp_v1.21_P3_wbub7_VIS_obs10_loc20/obs_seq_out/2008-07-30_%H:%M_obs_seq.out'  
-#exp.use_existing_obsseq = '/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.21_P3_wbub7_REFL2D_obs10_loc20_oe5/obs_seq_out/2008-07-30_%H:%M_obs_seq.out'
-#exp.use_existing_obsseq = '/gpfs/data/fs71386/lkugler/sim_archive/exp_v1.21_P2_rr_VIS_obs20_loc4/obs_seq_out/2008-07-30_%H:%M_obs_seq.out'
+exp.use_existing_obsseq = '/users/students/lehre/advDA_s2023/dartwrf_tutorial/very_cold_observation.out'
 
-#exp.nature = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.19_P3_wbub7_nat/2008-07-30_12:00/1'
-exp.nature = '/mnt/jetfs/scratch/lkugler/data/sim_archive/exp_v1.18_P1_nature/2008-07-30_06:00/1'
+# path to the nature run, where we take observations from
+exp.nature = '/users/students/lehre/advDA_s2023/data/sample_nature/'
 
 exp.input_profile = '/mnt/jetfs/home/lkugler/data/initial_profiles/wrf/ens/2022-03-31/raso.fc.<iens>.wrfprof'
-#exp.input_profile = '/gpfs/data/fs71386/lkugler/initial_profiles/wrf/ens/2022-03-31/raso.nat.<iens>.wrfprof'
-#exp.input_profile = '/gpfs/data/fs71386/lkugler/initial_profiles/wrf/ens/2022-05-18/raso.fc.<iens>.wrfprof'
 
-
-# localize vertically, if it has a vertical position
-# needs a horizontal scale too, to calculate the vertical normalization
-# since you can not specify different vertical localizations for diff. variables
-
-# n_obs= 22500: 2km, 5776: 4km, 121: 30km, 256:16x16 (20km); 961: 10km resoltn # radar: n_obs for each observation height level
+# n_obs can be 22500: 2km, 5776: 4km, 121: 30km, 256:16x16 (20km); 961: 10km resoltn 
+# if radar: then n_obs is for each observation height level
 
 vis = dict(plotname='VIS 0.6µm', plotunits='[1]',
            kind='MSG_4_SEVIRI_BDRF', sat_channel=1, 
@@ -82,15 +72,15 @@ q = dict(plotname='Specific humidity', plotunits='[kg/kg]',
 
 t2m = dict(plotname='SYNOP Temperature', plotunits='[K]',
            kind='SYNOP_TEMPERATURE', n_obs=1, 
-           error_generate=0.1, error_assimilate=1.,
-           cov_loc_radius_km=20)
+           error_generate=0.1, error_assimilate=0.1,
+           cov_loc_radius_km=40)
 
 psfc = dict(plotname='SYNOP Pressure', plotunits='[Pa]',
             kind='SYNOP_SURFACE_PRESSURE', n_obs=1, 
             error_generate=50., error_assimilate=100.,
             cov_loc_radius_km=32)
 
-exp.observations = [t]
+exp.observations = [t2m]
 exp.update_vars = ['U', 'V', 'W', 'THM', 'PH', 'MU', 'QVAPOR', 'QCLOUD', 'QICE', 'PSFC']
 #exp.update_vars = ['U', 'V', 'W', 'T', 'PH', 'MU', 'QVAPOR', 'PSFC']
 
diff --git a/config/jet.py b/config/jet.py
index 24bb5338f15119c870e88c294e9b656740a87836..757b95ca10c01d845b393f2733ef81f3dc39304b 100755
--- a/config/jet.py
+++ b/config/jet.py
@@ -56,6 +56,9 @@ cluster.ncks = '/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1
 cluster.ideal = '/jetfs/home/lkugler/bin/ideal-v4.3_v1.22.exe'
 cluster.wrfexe = '/jetfs/home/lkugler/bin/wrf-v4.3_v1.22_ifort_20230413.exe'
 cluster.dart_modules = 'module purge; module load netcdf-fortran/4.5.3-gcc-8.5.0-qsqbozc;'
+cluster.wrf_modules = """module purge; module load intel-oneapi-compilers/2022.2.1-zkofgc5 hdf5/1.12.2-intel-2021.7.1-w5sw2dq netcdf-fortran/4.5.3-intel-2021.7.1-27ldrnt netcdf-c/4.7.4-intel-2021.7.1-lnfs5zz intel-oneapi-mpi/2021.7.1-intel-2021.7.1-pt3unoz
+export HDF5=/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1/hdf5-1.12.2-w5sw2dqpcq2orlmeowleamoxr65dhhdc
+"""
 
 # paths for data output
 cluster.wrf_rundir_base = '/jetfs/home/lkugler/data/run_WRF/'  # path for temporary files
diff --git a/config/srvx1.py b/config/srvx1.py
index 6e1cf0a49e1039c53b2a6dd6579731a11295a491..afbc74bcc2a1271fa2cc5b1793a97d86a450b49f 100755
--- a/config/srvx1.py
+++ b/config/srvx1.py
@@ -63,7 +63,7 @@ cluster.archive_base = utils.userhome+'/data/sim_archive/'
 cluster.srcdir = '/users/staff/lkugler/AdvDA23/DART/WRF-4.3/run'
 cluster.dart_srcdir = '/users/students/lehre/advDA_s2023/DART/models/wrf/work'
 cluster.rttov_srcdir = '/users/students/lehre/advDA_s2023/RTTOV13/rtcoef_rttov13/'
-cluster.scriptsdir = utils.userhome+'/DART-WRF/dartwrf/'
+cluster.scriptsdir = utils.userhome+'/AdvDA23/DART-WRF/dartwrf/'
 cluster.geo_em = '/users/students/lehre/advDA_s2023/data/geo_em.d01.nc'
 
 # templates/run scripts
diff --git a/dartwrf/run_ens.jet.sh b/dartwrf/run_ens.jet.sh
index b2aa49aeb732e8b838963c25f25d8a89c57f8630..52aa2fc9d2acb60c53bcefa2fa65cd93e69cbbb0 100755
--- a/dartwrf/run_ens.jet.sh
+++ b/dartwrf/run_ens.jet.sh
@@ -1,6 +1,4 @@
-module purge
-module load intel-oneapi-compilers/2022.2.1-zkofgc5 hdf5/1.12.2-intel-2021.7.1-w5sw2dq netcdf-fortran/4.5.3-intel-2021.7.1-27ldrnt netcdf-c/4.7.4-intel-2021.7.1-lnfs5zz intel-oneapi-mpi/2021.7.1-intel-2021.7.1-pt3unoz
-export HDF5=/jetfs/spack/opt/spack/linux-rhel8-skylake_avx512/intel-2021.7.1/hdf5-1.12.2-w5sw2dqpcq2orlmeowleamoxr65dhhdc
+<cluster.wrf_modules>
 export SLURM_STEP_GRES=none
 
 echo "SLURM_ARRAY_TASK_ID:"$SLURM_ARRAY_TASK_ID
diff --git a/dartwrf/workflows.py b/dartwrf/workflows.py
index 96883bb7b1de1b531aaf5e2ba41eae2a92ccdae8..69ca06ab8ca92fb9d79852b18add1f2cff61064d 100644
--- a/dartwrf/workflows.py
+++ b/dartwrf/workflows.py
@@ -226,8 +226,11 @@ class WorkFlows(object):
 
         id = self.cluster.run_job(' '.join(args), "preWRF", cfg_update=dict(time="2"), depends_on=[depends_on])
 
-        cmd = script_to_str(self.cluster.run_WRF).replace('<exp.expname>', exp.expname
-                                        ).replace('<cluster.wrf_rundir_base>', self.cluster.wrf_rundir_base)
+        cmd = script_to_str(self.cluster.run_WRF
+                ).replace('<exp.expname>', exp.expname
+                ).replace('<cluster.wrf_rundir_base>', self.cluster.wrf_rundir_base
+                ).replace('<cluster.wrf_modules>', self.cluster.wrf_modules)
+                
 
         time_in_simulation_hours = (end-begin).total_seconds()/3600
         runtime_wallclock_mins_expected = int(8+time_in_simulation_hours*9.5)  # usually below 9 min/hour
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 673128efa9e14de1d9091624975b651fdc2a0736..cdc7c648e5f2e92ab089e0392f4cdccd563c585f 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -23,7 +23,8 @@ extensions = [
     'sphinx.ext.autosummary',
     'sphinx.ext.intersphinx',
     'sphinx.ext.napoleon',
-    'nbsphinx'
+    'nbsphinx',
+    'sphinx_rtd_theme',
 ]
 
 autodoc_mock_imports = ['numpy','scipy','xarray','pandas','netCDF4','osselyze','osselyze.utils']
diff --git a/env-minimal.yml b/env-minimal.yml
deleted file mode 100644
index e02578e729020fd7eb937eb801a24e74758006a6..0000000000000000000000000000000000000000
--- a/env-minimal.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-name: DART
-channels:
-  - conda-forge
-  - defaults
-dependencies:
-  - cdo
-  - docopt
-  - hdf5
-  - ipython
-  - matplotlib
-  - nco
-  - netcdf-fortran
-  - netcdf4
-  - numpy
-  - pandas
-  - pip
-  - python
-  - python-dateutil
-  - pytz
-  - proj4
-  - scipy
-  - setuptools
-  - wrf-python
-  - xarray
-  - yaml
-  - pysolar>=0.10.0
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 7665a709edc1694b4e8d48d0190183d564c1f6cb..0000000000000000000000000000000000000000
--- a/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-pysolar=0.10=pypi_0
diff --git a/templates/input.nml b/templates/input.nml
index 3cc9b63416f67b10e1660c02c3ec9aa3ce1c083e..38edbde9bd8e107176766e6fadeb563c7d3f3670 100644
--- a/templates/input.nml
+++ b/templates/input.nml
@@ -51,7 +51,7 @@
    output_timestamps        = .false.,
    trace_execution          = .false.,
 
-   stages_to_write          = 'output'
+   stages_to_write          = 'preassim', 'postassim'
    output_members           = .true.
    output_mean              = .true.
    output_sd                = .true.