diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6bf4dd386921337b7f0cafc5f27e31907ab41dae..2f9868dd5a07b1a79628b250d1d661c31b3c546f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -72,23 +72,31 @@ if(INCLUDE_CXX)
     )
 
     set(SOURCES_CXX 
-            srcCXX/sfx_flux.cpp
-            srcCXX/sfx_flux_compute_func.cpp
+            srcCXX/sfx_surface.cpp
+            srcCXX/sfx_esm.cpp
+            srcCXX/sfx_compute_esm.cpp
+            srcCXX/sfx_sheba.cpp
+            srcCXX/sfx_compute_sheba.cpp
             srcCXX/sfx_call_class_func.cpp
     )
     set(HEADERS_CXX 
-            includeCXX/sfx_flux.h
-            includeCXX/sfx_flux_compute_func.h
+            includeCXX/sfx_surface.h
+            includeCXX/sfx_esm.h
+            includeCXX/sfx_compute_esm.h
+            includeCXX/sfx_sheba.h
+            includeCXX/sfx_compute_sheba.h
             includeCXX/sfx_call_class_func.h
         )
 endif(INCLUDE_CXX)
 
 if(INCLUDE_CUDA)
     set(SOURCES_CU 
-        srcCU/sfx_flux_compute_func.cu
+        srcCU/sfx_surface.cu
+        srcCU/sfx_compute_esm.cu
     )
     set(HEADERS_CU
-        includeCU/sfx_flux_compute_func.cuh
+        includeCU/sfx_surface.cuh
+        includeCU/sfx_compute_esm.cuh
     )
 endif(INCLUDE_CUDA)
 
@@ -113,7 +121,15 @@ endif(INCLUDE_CXX OR INCLUDE_CUDA)
 
 set(SOURCES ${MEMPROC_HEADERS_CU} ${MEMPROC_SOURCES_CU} ${MEMPROC_HEADERS_CXX} ${MEMPROC_SOURCES_CXX} ${HEADERS_CU} ${SOURCES_CU} ${HEADERS_CXX} ${SOURCES_CXX} ${SOURCES_C} ${HEADERS_F} ${SOURCES_F})
 
-set(CMAKE_Fortran_FLAGS " -cpp ")
+# set(CMAKE_Fortran_FLAGS " -cpp ")
+set(CMAKE_Fortran_FLAGS " -g -fbacktrace -ffpe-trap=zero,overflow,underflow -cpp ")
+if(INCLUDE_CXX OR INCLUDE_CUDA)
+    set(CMAKE_CXX_FLAGS  " -g -Wunused-variable ")
+    set(CMAKE_C_FLAGS " -g ")
+
+    # set(CMAKE_CUDA_FLAGS " --device-c ")
+endif(INCLUDE_CXX OR INCLUDE_CUDA)
+
 add_executable(drag ${SOURCES})
 add_definitions(${RUN_MACRO})
 set_property(TARGET drag PROPERTY LINKER_LANGUAGE Fortran)