diff --git a/srcF/sfx_config.f90 b/srcF/sfx_config.f90
index b1a84f67ab0277f7f560a363108c4be7122eb99c..107a02945a7b7c6a06fe6e1402bfa62c415ffb4a 100644
--- a/srcF/sfx_config.f90
+++ b/srcF/sfx_config.f90
@@ -11,7 +11,7 @@
     ! --------------------------------------------------------------------------------
     implicit none
     ! --------------------------------------------------------------------------------
-    
+    public :: set_dataset
     public
 
     !> @brief model enum def.
diff --git a/srcF/sfx_esm.f90 b/srcF/sfx_esm.f90
index d7732c6696c8fcc96fcd66ef693daedd65cdd342..c331669f5697a773d2b4df3cc6b7514ca7b5fc54 100644
--- a/srcF/sfx_esm.f90
+++ b/srcF/sfx_esm.f90
@@ -174,6 +174,7 @@ contains
         real :: Tsemi   !< semi-sum of potential temperature at 'h' and at surface [K]
         real :: dQ      !< difference between humidity at 'h' and at surface [g/g]
         real :: z0_m    !< surface aerodynamic roughness (should be < 0 for water bodies surface)
+        real :: z0_map    !< surface aerodynamic roughness (should be < 0 for water bodies surface)
         ! ----------------------------------------------------------------------------
 
         ! --- local variables
@@ -232,6 +233,8 @@ contains
         dQ = meteo%dQ
         h = meteo%h
         z0_m = meteo%z0_m
+        z0_map = meteo%z0_m
+
 
         ! --- define surface type
         if (z0_m < 0.0) then
@@ -242,7 +245,8 @@ contains
 
         if (surface_type == surface_ocean) then
             ! --- define surface roughness [momentum] & dynamic velocity in neutral conditions
-            call get_charnock_roughness(z0_m, u_dyn0, U, h, numerics%maxiters_charnock)
+            !call get_charnock_roughness(z0_m, u_dyn0, U, h, numerics%maxiters_charnock)
+            call get_dynamic_roughness_all(z0_m, u_dyn0, U, depth, h, numerics%maxiters_charnock, z0_map, 1)
             ! --- define relative height
             h0_m = h / z0_m
         endif
diff --git a/srcF/sfx_most_snow.f90 b/srcF/sfx_most_snow.f90
index 06e0026c5a54a07261cca35fd3bc2132f52713dc..0599d14596010788780bb76d342b6d12ddc8d2fe 100644
--- a/srcF/sfx_most_snow.f90
+++ b/srcF/sfx_most_snow.f90
@@ -11,6 +11,7 @@ module sfx_most_snow
     use sfx_data
     use sfx_surface
     use sfx_most_snow_param
+    use sfx_config
     ! --------------------------------------------------------------------------------
 
     ! directives list
@@ -159,31 +160,12 @@ contains
         z0_map = meteo%z0_m
 
         
-        call get_dynamic_roughness_definition(surface_type, ocean_z0m_id, land_z0m_id, lake_z0m_id, snow_z0m_id, &
+        call get_dynamic_roughness_definition(1, ocean_z0m_id, land_z0m_id, lake_z0m_id, snow_z0m_id, &
         forest_z0m_id, usersf_z0m_id, z0m_id)
         
         call get_dynamic_roughness_all(z0_m, u_dyn0, U, depth, h, numerics%maxiters_charnock, z0_map, z0m_id)
-        ! --- define surface type
-        if (z0_m < 0.0) then
-            surface_type = surface_ocean
-        else if (z0_m == 0.0) then
-            surface_type = surface_snow
-        else
-            surface_type = surface_land
-        end if
-
-       ! if (surface_type == surface_ocean) then
-       !     ! --- define surface roughness [momentum] & dynamic velocity in neutral conditions
-        !    call get_charnock_roughness(z0_m, u_dyn0, U, h, numerics%maxiters_charnock)
-        !    ! --- define relative height
-        !    h0_m = h / z0_m
-        !endif
-        !if (surface_type == surface_land) then
-        !    ! --- define relative height
-        !    h0_m = h / z0_m
-        !    ! --- define dynamic velocity in neutral conditions
-        !    u_dyn0 = U * kappa / log(h0_m)
-        !end if
+        
+       
        ! --- define relative height
             h0_m = h / z0_m
         ! --- define thermal roughness & B = log(z0_m / z0_h)