diff --git a/build/includes/job_actor/job_actor_subroutine_wrappers.hpp b/build/includes/job_actor/job_actor_subroutine_wrappers.hpp
index 07622122f95a06bd0d06a57628f922ef82c5d1e6..0a0dd1d72c937a707215771a8a4377e06f484d95 100644
--- a/build/includes/job_actor/job_actor_subroutine_wrappers.hpp
+++ b/build/includes/job_actor/job_actor_subroutine_wrappers.hpp
@@ -1,9 +1,11 @@
 #pragma once
 
 extern "C" {
-    void setTimesDirsAndFiles(char const* file_manager, int* err);
-
-    void defineGlobalData(int* start_gru_index, int* err);
+    void job_init_fortran(char const* file_manager,
+                          int* start_gru_index, 
+                          int* num_gru, 
+                          int* num_hru, 
+                          int* err);
 
     void readDimension(int* num_gru, int* num_hru, int* start_gru_index, int* err);
 
diff --git a/build/source/actors/job_actor/job_actor.cpp b/build/source/actors/job_actor/job_actor.cpp
index d27497b8b13250143d7ee7fb6f54eca9b72b4b14..504491cc1553d1b0bfbc17c54ca71768be771f2c 100644
--- a/build/source/actors/job_actor/job_actor.cpp
+++ b/build/source/actors/job_actor/job_actor.cpp
@@ -60,11 +60,12 @@ behavior job_actor(stateful_actor<job_state>* self,
     
     // Initalize global variables calling Fortran Routines
     int err = 0;
-    setTimesDirsAndFiles(self->state.job_actor_settings.file_manager_path.c_str(), &err);
-    if (err != 0) { aout(self) << "\nERROR: Job_Actor - setTimesDirsAndFiles\n"; return {}; }
 
-    defineGlobalData(&self->state.start_gru, &err);
-    if (err != 0) { aout(self) << "\nERROR: Job_Actor - defineGlobalData\n"; return {}; }
+    job_init_fortran(self->state.job_actor_settings.file_manager_path.c_str(),
+                     &self->state.start_gru,
+                     &self->state.num_gru,
+                     &self->state.num_hru,
+                     &err);
 
     readDimension(&self->state.num_gru, &self->state.num_hru, &self->state.start_gru, &err);
     if (err != 0) { aout(self) << "\nERROR: Job_Actor - readDimension\n"; return {}; }
diff --git a/build/source/actors/job_actor/job_actor.f90 b/build/source/actors/job_actor/job_actor.f90
index 18f5fb7c0c3756e31888054ef3ba8566e1fb69af..dc0b0cc080a7eaa4c2784cdd5bb3f215a750b0ec 100644
--- a/build/source/actors/job_actor/job_actor.f90
+++ b/build/source/actors/job_actor/job_actor.f90
@@ -1,13 +1,55 @@
 module job_actor
-    USE, intrinsic :: iso_c_binding
+  USE, intrinsic :: iso_c_binding
     
     
-    implicit none
-    public::allocateTimeStructure
-    public::deallocateJobActor
+  implicit none
+  public::job_init_fortran
+  public::allocateTimeStructure
+  public::deallocateJobActor
 
     contains
 
+subroutine job_init_fortran(file_manager, start_gru, num_gru,&
+                            num_hru, err) bind(C, name="job_init_fortran")
+  USE summaFileManager,only:summa_SetTimesDirsAndFiles       ! sets directories and filenames
+  USE summa_globalData,only:summa_defineGlobalData           ! used to define global summa data structures
+  
+  USE cppwrap_auxiliary,only:c_f_string           ! Convert C String to Fortran String
+  
+  ! Variables that were set by getCommandArguments()
+  USE globalData,only: startGRU          ! index of the starting GRU for parallelization run
+
+  
+  implicit none
+
+  ! dummy variables
+  character(kind=c_char,len=1),intent(in)   :: file_manager
+  integer(c_int),intent(in)                 :: start_gru
+  integer(c_int),intent(in)                 :: num_gru
+  integer(c_int),intent(in)                 :: num_hru
+  integer(c_int),intent(out)                :: err
+
+  ! local variables
+  character(len=256)                        :: summaFileManagerIn
+  character(len=256)                        :: message
+
+  ! Convert C Variables to Fortran Variables
+  call c_f_string(file_manager, summaFileManagerIn, 256)
+  summaFileManagerIn = trim(summaFileManagerIn)
+
+
+  ! Set variables that were previosuly set by getCommandArguments()
+  startGRU=start_gru
+
+  call summa_SetTimesDirsAndFiles(summaFileManagerIn,err,message)
+  if(err/=0)then; print*, message; return; endif
+
+  call summa_defineGlobalData(err, message)
+  if(err/=0)then; print*, message; return; endif
+
+end subroutine job_init_fortran
+
+
 subroutine allocateTimeStructure(err) bind(C, name="allocateTimeStructure")
     USE globalData,only:startTime,finshTime,refTime,oldTime
     USE allocspace_module,only:allocLocal
diff --git a/build/source/driver/summa_globalData.f90 b/build/source/driver/summa_globalData.f90
index efd6b18169b19d2c698843770dc5074a0bd6e894..d3a6f327babc84cf5745a41b6d708fb015fd57b5 100755
--- a/build/source/driver/summa_globalData.f90
+++ b/build/source/driver/summa_globalData.f90
@@ -114,19 +114,11 @@ subroutine summa_defineGlobalData(start_gru_index, err) bind(C, name="defineGlob
 
   ! populate metadata for all model variables
   call popMetadat(err,cmessage)
-  if(err/=0)then
-    message=trim(message)//trim(cmessage)
-    print*, message
-    return 
-  endif
+  if(err/=0)then; message=trim(message)//trim(cmessage); print*, message; return ;endif
 
   ! define mapping between fluxes and states
   call flxMapping(err,cmessage)
-  if(err/=0)then
-    message=trim(message)//trim(cmessage)
-    print*, message
-    return 
-  endif
+  if(err/=0)then; message=trim(message)//trim(cmessage); print*, message; return ;endif
 
   ! check data structures
   call checkStruc(err,cmessage)
@@ -141,11 +133,7 @@ subroutine summa_defineGlobalData(start_gru_index, err) bind(C, name="defineGlob
 
   ! create the averageFlux metadata structure
   call childStruc(flux_meta, flux_mask, averageFlux_meta, childFLUX_MEAN, err, cmessage)
-  if(err/=0)then 
-    message=trim(message)//trim(cmessage)
-    print*, message
-    return
-  endif
+  if(err/=0)then; message=trim(message)//trim(cmessage); print*, message; return; endif
 
   ! child metadata structures - so that we do not carry full stats structures around everywhere
   ! only carry stats for variables with output frequency > model time step
@@ -167,11 +155,7 @@ subroutine summa_defineGlobalData(start_gru_index, err) bind(C, name="defineGlob
       case('bvar'); call childStruc(bvar_meta,statBvar_mask,statBvar_meta,bvarChild_map,err,cmessage)
     end select
     ! check errors
-    if(err/=0)then
-      message=trim(message)//trim(cmessage)//'[statistics for =  '//trim(structInfo(iStruct)%structName)//']' 
-      print*, message 
-      return 
-    endif
+    if(err/=0)then; message=trim(message)//trim(cmessage)//'[statistics for =  '//trim(structInfo(iStruct)%structName)//']' ;print*, message ;return ;endif
   end do ! iStruct
 
   ! set all stats metadata to correct var types