diff --git a/src/mo_cost.f90 b/src/mo_cost.f90
index 232f6edd1b6e1b59fb593862e2ebcc891ea5a7b3..0df50f81875e15229a4b4d91b1cafc77c2286569 100644
--- a/src/mo_cost.f90
+++ b/src/mo_cost.f90
@@ -243,7 +243,7 @@ CONTAINS
 
     config%parameters = parameterset
     allocate(opti_sim(1))
-    call opti_sim(1)%add(name='et', dim=2_i4)
+    call opti_sim(1)%add(name='et', ndim=2_i4)
     call eval(config, opti_sim)
 
     ! function: f(x) = ax^3 + bx^2 + cx + d
diff --git a/src/mo_likelihood.f90 b/src/mo_likelihood.f90
index f24b4258f365571c5df3ecc567220d4410fabd5c..895a9f38f4fa957826571714e159141d8109f7d0 100644
--- a/src/mo_likelihood.f90
+++ b/src/mo_likelihood.f90
@@ -65,7 +65,7 @@ CONTAINS
     config%parameters = paraset
 
     allocate(opti_sim(1))
-    call opti_sim(1)%add(name="runoff", dim=2_i4)
+    call opti_sim(1)%add(name="runoff", ndim=2_i4)
     call eval(config, opti_sim=opti_sim)
     call opti_sim(1)%set_pointer(name="runoff", ptr=runoff)
     errors(:) = runoff(:,1)-data()
@@ -95,7 +95,7 @@ CONTAINS
     config%parameters = paraset
 
     allocate(opti_sim(1))
-    call opti_sim(1)%add(name="runoff", dim=2_i4)
+    call opti_sim(1)%add(name="runoff", ndim=2_i4)
     call eval(config, opti_sim=opti_sim)
     call opti_sim(1)%set_pointer(name="runoff", ptr=runoff)
     errors(:) = runoff(:,1)-data()
@@ -126,7 +126,7 @@ CONTAINS
     config%parameters = paraset
 
     allocate(opti_sim(1))
-    call opti_sim(1)%add(name="runoff", dim=2_i4)
+    call opti_sim(1)%add(name="runoff", ndim=2_i4)
     call eval(config, opti_sim=opti_sim)
     call opti_sim(1)%set_pointer(name="runoff", ptr=runoff)
     errors(:) = runoff(:,1)-data()
@@ -166,7 +166,7 @@ CONTAINS
     config%parameters = paraset
 
     allocate(opti_sim(1))
-    call opti_sim(1)%add(name="runoff", dim=2_i4)
+    call opti_sim(1)%add(name="runoff", ndim=2_i4)
     call eval(config, opti_sim=opti_sim)
     call opti_sim(1)%set_pointer(name="runoff", ptr=runoff)
     errors(:) = runoff(:,1)-data()
@@ -206,7 +206,7 @@ CONTAINS
     if (size(opti_sim) /= 1) call error_message('model_dp: does not support opti_sim data with more than 1 dimension.')
 
     if (opti_sim(1)%has('runoff')) then
-      call opti_sim(1)%allocate(name="runoff", ndim=(/n, 1/))
+      call opti_sim(1)%allocate(name="runoff", data_shape=(/n, 1/))
       call opti_sim(1)%set_pointer(name="runoff", ptr=runoff)
     end if
 
diff --git a/src/mo_opt_functions.f90 b/src/mo_opt_functions.f90
index 10d1239f68447ce384ede9595f388f511108fe34..e6f2fd6843bbd4206d2e290c2d31d96a9cdb13ac 100644
--- a/src/mo_opt_functions.f90
+++ b/src/mo_opt_functions.f90
@@ -5644,7 +5644,7 @@ CONTAINS
 
     allocate(opti_sim(1))
     config%parameters = parameterset
-    call opti_sim(1)%add(name='et', dim=2_i4)
+    call opti_sim(1)%add(name='et', ndim=2_i4)
     call eval(config, opti_sim)
 
     n = size(parameterset)
@@ -5678,7 +5678,7 @@ CONTAINS
 
     config%parameters = parameterset
     allocate(opti_sim(1))
-    call opti_sim(1)%add(name='et', dim=2_i4)
+    call opti_sim(1)%add(name='et', ndim=2_i4)
     call eval(config, opti_sim)
 
     nopt = size(parameterset)
@@ -5721,77 +5721,77 @@ CONTAINS
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('et')) then
-        call opti_sim(iDomain)%allocate(name="et", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="et", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="et", ptr=dummyDataPtr_2d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('neutrons')) then
-        call opti_sim(iDomain)%allocate(name="neutrons", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="neutrons", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="neutrons", ptr=dummyDataPtr_2d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('tws')) then
-        call opti_sim(iDomain)%allocate(name="tws", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="tws", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="tws", ptr=dummyDataPtr_2d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('sm')) then
-        call opti_sim(iDomain)%allocate(name="sm", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="sm", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="sm", ptr=dummyDataPtr_2d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('runoff')) then
-        call opti_sim(iDomain)%allocate(name="runoff", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="runoff", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="runoff", ptr=dummyDataPtr_2d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('BFI')) then
-        call opti_sim(iDomain)%allocate(name="BFI", ndim=(/1/))
+        call opti_sim(iDomain)%allocate(name="BFI", data_shape=(/1/))
         call opti_sim(iDomain)%set_pointer(name="BFI", ptr=dummyDataPtr_1d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('lake_level')) then
-        call opti_sim(iDomain)%allocate(name="lake_level", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="lake_level", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="lake_level", ptr=dummyDataPtr_2d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('lake_volume')) then
-        call opti_sim(iDomain)%allocate(name="lake_volume", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="lake_volume", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="lake_volume", ptr=dummyDataPtr_2d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('lake_area')) then
-        call opti_sim(iDomain)%allocate(name="lake_area", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="lake_area", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="lake_area", ptr=dummyDataPtr_2d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('lake_spill')) then
-        call opti_sim(iDomain)%allocate(name="lake_spill", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="lake_spill", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="lake_spill", ptr=dummyDataPtr_2d)
       end if
     end do
 
     do iDomain = 1 , nDomains
       if (opti_sim(iDomain)%has('lake_outflow')) then
-        call opti_sim(iDomain)%allocate(name="lake_outflow", ndim=(/1, 1/))
+        call opti_sim(iDomain)%allocate(name="lake_outflow", data_shape=(/1, 1/))
         call opti_sim(iDomain)%set_pointer(name="lake_outflow", ptr=dummyDataPtr_2d)
       end if
     end do
diff --git a/src/mo_optimization_types.f90 b/src/mo_optimization_types.f90
index e42fc511b8a2d3fedcfeae5917eb2f3211239173..23cd3007bbd3c497e4e96f47a692c2546137d010 100644
--- a/src/mo_optimization_types.f90
+++ b/src/mo_optimization_types.f90
@@ -44,7 +44,6 @@ MODULE mo_optimization_types
     procedure, public :: has => sim_data_has
     procedure, public :: add => sim_data_add
     procedure, public :: allocate => sim_data_allocate
-    ! ToDo only interface public, other private
     procedure, private :: get_id => sim_data_get_id
     ! One could create these similar procedures
     ! with fypp, for example if more dimensions are needed.
@@ -106,7 +105,6 @@ MODULE mo_optimization_types
 
   contains
 
-  ! ToDo: When to charater(*) and character(256)?
   pure logical function sim_data_has(this, name)
     class(sim_data_t), intent(in) :: this
     character(*), intent(in)    :: name
@@ -128,7 +126,6 @@ MODULE mo_optimization_types
 
     type(sim_var_t) :: add_data
 
-    ! ToDo: Why name in type 256 and in input var *?
     add_data%name = trim(name)
     add_data%ndim = ndim
     if (present(time_avg_selector)) add_data%time_avg_selector = time_avg_selector
@@ -144,26 +141,26 @@ MODULE mo_optimization_types
   end subroutine sim_data_add
 
   ! ToDo: rename ndim -> data_shape
-  subroutine sim_data_allocate(this, name, ndim)
+  subroutine sim_data_allocate(this, name, data_shape)
     class(sim_data_t), target, intent(inout) :: this
     character(*), intent(in)    :: name
-    integer(i4), dimension(:), intent(in)  :: ndim
+    integer(i4), dimension(:), intent(in)  :: data_shape
 
     integer(i4) :: i
 
     do i = 1, size(this%variables)
       if (this%variables(i)%name == name) then
-        select case (size(ndim))
+        select case (size(data_shape))
         case(1)
-          allocate(this%variables(i)%data_1d(ndim(1)))
+          allocate(this%variables(i)%data_1d(data_shape(1)))
         case(2)
-          allocate(this%variables(i)%data_2d(ndim(1), ndim(2)))
+          allocate(this%variables(i)%data_2d(data_shape(1), data_shape(2)))
         case(3)
-          allocate(this%variables(i)%data_3d(ndim(1), ndim(2), ndim(3)))
+          allocate(this%variables(i)%data_3d(data_shape(1), data_shape(2), data_shape(3)))
         case(4)
-          allocate(this%variables(i)%data_4d(ndim(1), ndim(2), ndim(3), ndim(4)))
+          allocate(this%variables(i)%data_4d(data_shape(1), data_shape(2), data_shape(3), data_shape(4)))
         case(5)
-          allocate(this%variables(i)%data_5d(ndim(1), ndim(2), ndim(3), ndim(4), ndim(5)))
+          allocate(this%variables(i)%data_5d(data_shape(1), data_shape(2), data_shape(3), data_shape(4), data_shape(5)))
         case default
           ! ToDo: replace stop by error message
           stop ('sim_data_allocate: Allocating simulated data with other dimensions than 1 to 5 is not impemented.')