diff --git a/dartwrf/workflows.py b/dartwrf/workflows.py
index d53fc9a43e15e2bf15576a37699b626859c4c4ab..0fa0b8dea0379e9257a1405e7a337fa3b1fff89f 100644
--- a/dartwrf/workflows.py
+++ b/dartwrf/workflows.py
@@ -20,32 +20,6 @@ def dict_to_py(d, outfile):
         txt += '}'
         f.write(txt)
 
-def _obskind_read():
-    """Read dictionary of observation types + ID numbers ("kind") 
-    from DART f90 script
-    """
-    definitionfile = self.cluster.dart_srcdir+'/../../../assimilation_code/modules/observations/obs_kind_mod.f90'
-    with open(definitionfile, 'r') as f:
-        kind_def_f = f.readlines()
-
-    obskind_nrs = {}
-    for i, line in enumerate(kind_def_f):
-        if 'Integer definitions for DART OBS TYPES' in line:
-            # data starts below this line
-            i_start = i
-            break
-    for line in kind_def_f[i_start+1:]:
-        if 'MAX_DEFINED_TYPES_OF_OBS' in line:
-            # end of data
-            break
-        if '::' in line:
-            # a line looks like this
-            # integer, parameter, public ::       MSG_4_SEVIRI_TB =   261
-            data = line.split('::')[-1].split('=')
-            kind_str = data[0].strip()
-            kind_nr = int(data[1].strip())
-            obskind_nrs[kind_str] = kind_nr
-    return obskind_nrs
 
 class WorkFlows(object):
     def __init__(self, exp_config='cfg.py', server_config='server.py'):
@@ -74,8 +48,34 @@ class WorkFlows(object):
 
         # copy obs kind def to config, we will read a table from there
         # file needs to exist within package so sphinx can read it
+        def _obskind_read():
+            """Read dictionary of observation types + ID numbers ("kind") 
+            from DART f90 script
+            """
+            definitionfile = self.cluster.dart_srcdir+'/../../../assimilation_code/modules/observations/obs_kind_mod.f90'
+            with open(definitionfile, 'r') as f:
+                kind_def_f = f.readlines()
+
+            obskind_nrs = {}
+            for i, line in enumerate(kind_def_f):
+                if 'Integer definitions for DART OBS TYPES' in line:
+                    # data starts below this line
+                    i_start = i
+                    break
+            for line in kind_def_f[i_start+1:]:
+                if 'MAX_DEFINED_TYPES_OF_OBS' in line:
+                    # end of data
+                    break
+                if '::' in line:
+                    # a line looks like this
+                    # integer, parameter, public ::       MSG_4_SEVIRI_TB =   261
+                    data = line.split('::')[-1].split('=')
+                    kind_str = data[0].strip()
+                    kind_nr = int(data[1].strip())
+                    obskind_nrs[kind_str] = kind_nr
+            return obskind_nrs
         dict_to_py(_obskind_read(), self.cluster.scriptsdir+'/../config/obskind.py')
-            
+        
         # Copy scripts to self.cluster.archivedir folder
         os.makedirs(self.cluster.archivedir, exist_ok=True)
         try: