diff --git a/src/mo_cost.f90 b/src/mo_cost.f90
index d9bbf65f289fd16fdb4418a78fe5dc359568002b..232f6edd1b6e1b59fb593862e2ebcc891ea5a7b3 100644
--- a/src/mo_cost.f90
+++ b/src/mo_cost.f90
@@ -225,7 +225,7 @@ CONTAINS
 
     use mo_kind, only: dp, i4
     use mo_optimization_utils, only: eval_interface
-    use mo_optimization_types, only : opti_sim_t, config_t
+    use mo_optimization_types, only : sim_data_t, config_t
 
     implicit none
 
@@ -236,7 +236,7 @@ CONTAINS
     real(dp), optional, intent(out) :: arg3
     real(dp) :: cost_objective
 
-    type(opti_sim_t), dimension(:), pointer :: opti_sim
+    type(sim_data_t), dimension(:), pointer :: opti_sim
     type(config_t) :: config
     REAL(DP), DIMENSION(6,2)            :: meas
     REAL(DP), DIMENSION(6)              :: calc
diff --git a/src/mo_likelihood.f90 b/src/mo_likelihood.f90
index d76c187cca84829b3c8859af988051dc96847cc9..3f1c47553775707c56db87bc1d6a2a96a4ac5b26 100644
--- a/src/mo_likelihood.f90
+++ b/src/mo_likelihood.f90
@@ -47,7 +47,7 @@ CONTAINS
   ! -------------------------------
   !> \brief A Likelihood function: "real" likelihood  (sigma is an error model or given)
   function likelihood_dp(paraset, eval, stddev_in, stddev_new, likeli_new)
-    use mo_optimization_types, only : opti_sim_t, config_t
+    use mo_optimization_types, only : sim_data_t, config_t
     REAL(DP), DIMENSION(:), INTENT(IN)            :: paraset          ! parameter set
     procedure(eval_interface), INTENT(IN), pointer :: eval
     REAL(DP),               INTENT(IN), optional  :: stddev_in        ! standard deviation of data
@@ -59,7 +59,7 @@ CONTAINS
     ! local
     REAL(DP), DIMENSION(size(meas,1))   :: errors
     real(dp), pointer :: runoff(:, :)
-    type(opti_sim_t), dimension(:), pointer :: opti_sim
+    type(sim_data_t), dimension(:), pointer :: opti_sim
     type(config_t) :: config
 
     config%parameters = paraset
@@ -77,7 +77,7 @@ CONTAINS
   ! -------------------------------
   !> \brief A Log-Likelihood function: "real" likelihood  (sigma is an error model or given)
   function loglikelihood_dp(paraset, eval, stddev_in, stddev_new, likeli_new)
-    use mo_optimization_types, only : opti_sim_t, config_t
+    use mo_optimization_types, only : sim_data_t, config_t
     REAL(DP), DIMENSION(:), INTENT(IN)            :: paraset          ! parameter set
     procedure(eval_interface), INTENT(IN), pointer :: eval
     REAL(DP),               INTENT(IN), optional  :: stddev_in        ! standard deviation of data
@@ -89,7 +89,7 @@ CONTAINS
     ! local
     REAL(DP), DIMENSION(size(meas,1))   :: errors
     real(dp), pointer :: runoff(:, :)
-    type(opti_sim_t), dimension(:), pointer :: opti_sim
+    type(sim_data_t), dimension(:), pointer :: opti_sim
     type(config_t) :: config
 
     config%parameters = paraset
@@ -107,7 +107,7 @@ CONTAINS
   ! -------------------------------
   !> \brief A Likelihood function: "faked" likelihood (sigma is computed by obs vs model)
   function likelihood_stddev_dp(paraset, eval, stddev_in, stddev_new, likeli_new)
-    use mo_optimization_types, only : opti_sim_t, config_t
+    use mo_optimization_types, only : sim_data_t, config_t
     REAL(DP), DIMENSION(:), INTENT(IN)            :: paraset          ! parameter set
     procedure(eval_interface), INTENT(IN), pointer :: eval
     REAL(DP),               INTENT(IN), optional  :: stddev_in        ! standard deviation of data
@@ -120,7 +120,7 @@ CONTAINS
     REAL(DP), DIMENSION(size(meas,1))   :: errors
     REAL(DP)                            :: stddev_err
     real(dp), pointer :: runoff(:, :)
-    type(opti_sim_t), dimension(:), pointer :: opti_sim
+    type(sim_data_t), dimension(:), pointer :: opti_sim
     type(config_t) :: config
 
     config%parameters = paraset
@@ -147,7 +147,7 @@ CONTAINS
   ! -------------------------------
   !> \brief A Log-Likelihood_stddev function: "faked" likelihood (sigma is computed by obs vs model)
   function loglikelihood_stddev_dp(paraset, eval, stddev_in, stddev_new, likeli_new)
-    use mo_optimization_types, only : opti_sim_t, config_t
+    use mo_optimization_types, only : sim_data_t, config_t
     REAL(DP), DIMENSION(:), INTENT(IN)            :: paraset          ! parameter set
     procedure(eval_interface), INTENT(IN), pointer :: eval
     REAL(DP),               INTENT(IN), optional  :: stddev_in        ! standard deviation of data
@@ -160,7 +160,7 @@ CONTAINS
     REAL(DP), DIMENSION(size(meas,1))   :: errors
     REAL(DP)                            :: stddev_err
     real(dp), pointer :: runoff(:, :)
-    type(opti_sim_t), dimension(:), pointer :: opti_sim
+    type(sim_data_t), dimension(:), pointer :: opti_sim
     type(config_t) :: config
 
     config%parameters = paraset
@@ -189,11 +189,11 @@ CONTAINS
   subroutine model_dp(config, opti_sim)
 
     use mo_kind, only: dp
-    use mo_optimization_types, only : opti_sim_t, config_t
+    use mo_optimization_types, only : sim_data_t, config_t
     !! !$ USE omp_lib,    only: OMP_GET_THREAD_NUM
 
     type(config_t), intent(in) :: config
-    type(opti_sim_t), dimension(:), pointer, optional, intent(inout) :: opti_sim
+    type(sim_data_t), dimension(:), pointer, optional, intent(inout) :: opti_sim
     real(dp), pointer :: runoff(:, :)
 
     integer(i4) :: i, n
@@ -222,7 +222,7 @@ CONTAINS
     end do
     !$OMP end do
     !$OMP end parallel
-    
+
   end subroutine model_dp
 
   function data_dp()
diff --git a/src/mo_opt_functions.f90 b/src/mo_opt_functions.f90
index 6a9fb664fd2d1ff0069a1560c81096da2a152c04..57b709cea9b1286152bf149a1348a29240a5145e 100644
--- a/src/mo_opt_functions.f90
+++ b/src/mo_opt_functions.f90
@@ -5623,7 +5623,7 @@ CONTAINS
   function ackley_objective(parameterset, eval, arg1, arg2, arg3)
 
     use mo_constants, only: pi_dp
-    use mo_optimization_types, only : opti_sim_t, config_t
+    use mo_optimization_types, only : sim_data_t, config_t
 
     implicit none
 
@@ -5639,7 +5639,7 @@ CONTAINS
     real(dp), parameter :: b = 0.2_dp
     real(dp), parameter :: c = 2.0_dp*pi_dp
     real(dp) :: s1, s2
-    type(opti_sim_t), pointer, dimension(:) :: opti_sim
+    type(sim_data_t), pointer, dimension(:) :: opti_sim
     type(config_t) :: config
 
     allocate(opti_sim(1))
@@ -5659,7 +5659,7 @@ CONTAINS
   function griewank_objective(parameterset, eval, arg1, arg2, arg3)
 
     use mo_kind, only: i4, dp
-    use mo_optimization_types, only : opti_sim_t, config_t
+    use mo_optimization_types, only : sim_data_t, config_t
 
     implicit none
 
@@ -5673,7 +5673,7 @@ CONTAINS
     integer(i4) :: nopt
     integer(i4) :: j
     real(dp)    :: d, u1, u2
-    type(opti_sim_t), pointer, dimension(:) :: opti_sim
+    type(sim_data_t), pointer, dimension(:) :: opti_sim
     type(config_t) :: config
 
     config%parameters = parameterset
@@ -5701,12 +5701,12 @@ CONTAINS
 
   subroutine eval_dummy(config, opti_sim)
     use mo_kind, only : dp
-    use mo_optimization_types, only : opti_sim_t, config_t, optidata
+    use mo_optimization_types, only : sim_data_t, config_t, optidata
 
     implicit none
 
     type(config_t), intent(in) :: config
-    type(opti_sim_t), dimension(:), pointer, optional, intent(inout) :: opti_sim
+    type(sim_data_t), dimension(:), pointer, optional, intent(inout) :: opti_sim
 
     real(dp), dimension(:, :), pointer :: dummyDataPtr_2d
     real(dp), dimension(:), pointer :: dummyDataPtr_1d
diff --git a/src/mo_optimization_types.f90 b/src/mo_optimization_types.f90
index a7f9031a1e4ef548216d1cc6c066c3170bcdf51e..915aff2cacb17f77b4ff05a7b7934737b90661b1 100644
--- a/src/mo_optimization_types.f90
+++ b/src/mo_optimization_types.f90
@@ -12,7 +12,7 @@ MODULE mo_optimization_types
 
   IMPLICIT NONE
 
-  public :: optidata, optidata_sim, config_t, opti_sim_t
+  public :: optidata, optidata_sim, config_t, sim_data_t
 
   private
 
@@ -38,12 +38,8 @@ MODULE mo_optimization_types
 
 ! ToDo: documentation like mo_cli
 
-!  type opti_sim_t
-!    type(optidata_sim), target, dimension(:), allocatable :: data
-!    character(256)                                        :: name
-!  end type opti_sim_t
-  type opti_sim_t
-    type(opti_sim_single_t), dimension(:), allocatable :: opti_vars
+  type sim_data_t
+    type(sim_var_t), dimension(:), allocatable :: variables
     contains
     procedure :: has => opti_sim_t_has
     procedure :: add => opti_sim_t_add
@@ -63,21 +59,21 @@ MODULE mo_optimization_types
       opti_sim_t_set_pointer_3d, opti_sim_t_set_pointer_4d, opti_sim_t_set_pointer_5d
     generic   :: allocate => opti_sim_t_allocate_1d, opti_sim_t_allocate_2d, &
       opti_sim_t_allocate_3d, opti_sim_t_allocate_4d, opti_sim_t_allocate_5d
-  end type opti_sim_t
+  end type sim_data_t
 
-  type opti_sim_single_t
+  type sim_var_t
     real(dp), dimension(:),             allocatable :: data_1d
     real(dp), dimension(:, :),          allocatable :: data_2d
     real(dp), dimension(:, :, :),       allocatable :: data_3d
     real(dp), dimension(:, :, :, :),    allocatable :: data_4d
     real(dp), dimension(:, :, :, :, :), allocatable :: data_5d
     character(256)                                  :: name
-    integer(i4)                                     :: dimen
+    integer(i4)                                     :: ndim
     integer(i4)                                     :: time_avg_selector = 1_i4 !< time averaging: -3 yearly, -2 monthly, -1 daily,
                                                                                 !< 0 total, n every n timestep
     ! contains
     ! procedure :: add => opti_sim_single_t_add
-  end type opti_sim_single_t
+  end type sim_var_t
 
 
   !> \brief optional data, such as sm, neutrons, et, tws
@@ -114,72 +110,72 @@ MODULE mo_optimization_types
 
   ! ToDo: When to charater(*) and character(256)?
   pure logical function opti_sim_t_has(this, name)
-    class(opti_sim_t), intent(in) :: this
+    class(sim_data_t), intent(in) :: this
     character(*), intent(in)    :: name
 
     integer(i4) :: i
 
     opti_sim_t_has = .false.
 
-    do i = 1, size(this%opti_vars)
-      if (trim(this%opti_vars(i)%name) == trim(name)) opti_sim_t_has = .true.
+    do i = 1, size(this%variables)
+      if (trim(this%variables(i)%name) == trim(name)) opti_sim_t_has = .true.
     end do
   end function opti_sim_t_has
 
   subroutine opti_sim_t_add(this, name, dim, time_avg_selector)
-    class(opti_sim_t), intent(inout) :: this
+    class(sim_data_t), intent(inout) :: this
     character(*), intent(in)    :: name
     integer(i4), intent(in) :: dim
     integer(i4), optional, intent(in) :: time_avg_selector
 
-    type(opti_sim_single_t) :: add_data
+    type(sim_var_t) :: add_data
 
     ! ToDo: Why name in type 256 and in input var *?
     add_data%name = name
-    add_data%dimen = dim
+    add_data%ndim = dim
     if (present(time_avg_selector)) add_data%time_avg_selector = time_avg_selector
     ! ToDo: is the if case needed?
     ! Tested: the else case works
-    if (allocated(this%opti_vars)) then
-      this%opti_vars = [this%opti_vars, add_data]
+    if (allocated(this%variables)) then
+      this%variables = [this%variables, add_data]
     else
-      allocate(this%opti_vars(1))
-      this%opti_vars(1)=add_data
+      allocate(this%variables(1))
+      this%variables(1)=add_data
     end if
 
   end subroutine opti_sim_t_add
 
   subroutine opti_sim_t_allocate_1d(this, name, dim1)
-    class(opti_sim_t), target, intent(inout) :: this
+    class(sim_data_t), target, intent(inout) :: this
     character(*), intent(in)    :: name
     integer(i4), intent(in)  :: dim1
 
     integer(i4) :: i
 
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        allocate(this%opti_vars(i)%data_1d(dim1))
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        allocate(this%variables(i)%data_1d(dim1))
       end if
     end do
   end subroutine opti_sim_t_allocate_1d
 
   subroutine opti_sim_t_allocate_2d(this, name, dim1, dim2)
-    class(opti_sim_t), target, intent(inout) :: this
+    class(sim_data_t), target, intent(inout) :: this
     character(*), intent(in)    :: name
     integer(i4), intent(in)  :: dim1
     integer(i4), intent(in)  :: dim2
 
     integer(i4) :: i
 
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        allocate(this%opti_vars(i)%data_2d(dim1, dim2))
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        allocate(this%variables(i)%data_2d(dim1, dim2))
       end if
     end do
   end subroutine opti_sim_t_allocate_2d
 
   subroutine opti_sim_t_allocate_3d(this, name, dim1, dim2, dim3)
-    class(opti_sim_t), target, intent(inout) :: this
+    class(sim_data_t), target, intent(inout) :: this
     character(*), intent(in)    :: name
     integer(i4), intent(in)  :: dim1
     integer(i4), intent(in)  :: dim2
@@ -187,15 +183,15 @@ MODULE mo_optimization_types
 
     integer(i4) :: i
 
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        allocate(this%opti_vars(i)%data_3d(dim1, dim2, dim3))
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        allocate(this%variables(i)%data_3d(dim1, dim2, dim3))
       end if
     end do
   end subroutine opti_sim_t_allocate_3d
 
   subroutine opti_sim_t_allocate_4d(this, name, dim1, dim2, dim3, dim4)
-    class(opti_sim_t), target, intent(inout) :: this
+    class(sim_data_t), target, intent(inout) :: this
     character(*), intent(in)    :: name
     integer(i4), intent(in)  :: dim1
     integer(i4), intent(in)  :: dim2
@@ -204,15 +200,15 @@ MODULE mo_optimization_types
 
     integer(i4) :: i
 
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        allocate(this%opti_vars(i)%data_4d(dim1, dim2, dim3, dim4))
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        allocate(this%variables(i)%data_4d(dim1, dim2, dim3, dim4))
       end if
     end do
   end subroutine opti_sim_t_allocate_4d
 
   subroutine opti_sim_t_allocate_5d(this, name, dim1, dim2, dim3, dim4, dim5)
-    class(opti_sim_t), target, intent(inout) :: this
+    class(sim_data_t), target, intent(inout) :: this
     character(*), intent(in)    :: name
     integer(i4), intent(in)  :: dim1
     integer(i4), intent(in)  :: dim2
@@ -222,9 +218,9 @@ MODULE mo_optimization_types
 
     integer(i4) :: i
 
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        allocate(this%opti_vars(i)%data_5d(dim1, dim2, dim3, dim4, dim5))
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        allocate(this%variables(i)%data_5d(dim1, dim2, dim3, dim4, dim5))
       end if
     end do
   end subroutine opti_sim_t_allocate_5d
@@ -232,7 +228,7 @@ MODULE mo_optimization_types
   ! ToDo: generate with fypp
   ! ToDo: switch ptr with name
   subroutine opti_sim_t_set_pointer_1d(this, ptr, name)
-    class(opti_sim_t), target, intent(in) :: this
+    class(sim_data_t), target, intent(in) :: this
     real(dp), dimension(:), pointer, intent(inout) :: ptr
     character(*), intent(in)    :: name
 
@@ -240,66 +236,66 @@ MODULE mo_optimization_types
 
     ! ToDo: loop -> subroutine get_id
     ! i = this%get_id(name)
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        ptr => this%opti_vars(i)%data_1d
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        ptr => this%variables(i)%data_1d
         ! ToDo: exit
       end if
     end do
   end subroutine opti_sim_t_set_pointer_1d
 
   subroutine opti_sim_t_set_pointer_2d(this, ptr, name)
-    class(opti_sim_t), target, intent(in) :: this
+    class(sim_data_t), target, intent(in) :: this
     real(dp), dimension(:,:), pointer :: ptr
     character(*), intent(in)    :: name
 
     integer(i4) :: i
 
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        ptr => this%opti_vars(i)%data_2d
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        ptr => this%variables(i)%data_2d
       end if
     end do
   end subroutine opti_sim_t_set_pointer_2d
 
   subroutine opti_sim_t_set_pointer_3d(this, ptr, name)
-    class(opti_sim_t), target, intent(in) :: this
+    class(sim_data_t), target, intent(in) :: this
     real(dp), dimension(:,:,:), pointer, intent(inout) :: ptr
     character(*), intent(in)    :: name
 
     integer(i4) :: i
 
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        ptr => this%opti_vars(i)%data_3d
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        ptr => this%variables(i)%data_3d
       end if
     end do
   end subroutine opti_sim_t_set_pointer_3d
 
   subroutine opti_sim_t_set_pointer_4d(this, ptr, name)
-    class(opti_sim_t), target, intent(in) :: this
+    class(sim_data_t), target, intent(in) :: this
     real(dp), dimension(:,:,:,:), pointer, intent(inout) :: ptr
     character(*), intent(in)    :: name
 
     integer(i4) :: i
 
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        ptr => this%opti_vars(i)%data_4d
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        ptr => this%variables(i)%data_4d
       end if
     end do
   end subroutine opti_sim_t_set_pointer_4d
 
   subroutine opti_sim_t_set_pointer_5d(this, ptr, name)
-    class(opti_sim_t), target, intent(in) :: this
+    class(sim_data_t), target, intent(in) :: this
     real(dp), dimension(:,:,:,:,:), pointer, intent(inout) :: ptr
     character(*), intent(in)    :: name
 
     integer(i4) :: i
 
-    do i = 1, size(this%opti_vars)
-      if (this%opti_vars(i)%name == name) then
-        ptr => this%opti_vars(i)%data_5d
+    do i = 1, size(this%variables)
+      if (this%variables(i)%name == name) then
+        ptr => this%variables(i)%data_5d
       end if
     end do
   end subroutine opti_sim_t_set_pointer_5d
diff --git a/src/mo_optimization_utils.f90 b/src/mo_optimization_utils.f90
index d7e48755af6cdbcb14282bbad2854c49cfbf9528..1de2dd4a3522699d8767143095de73194b0585b9 100644
--- a/src/mo_optimization_utils.f90
+++ b/src/mo_optimization_utils.f90
@@ -24,9 +24,9 @@ module mo_optimization_utils
 
   abstract interface
     subroutine eval_interface(config, opti_sim)
-      use mo_optimization_types, only : config_t, opti_sim_t
+      use mo_optimization_types, only : config_t, sim_data_t
       type(config_t),                                    intent(in)    :: config
-      type(opti_sim_t), dimension(:), pointer, optional, intent(inout) :: opti_sim
+      type(sim_data_t), dimension(:), pointer, optional, intent(inout) :: opti_sim
     end subroutine
   end interface