diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt
index ce751334d577e4d996f4bc167f3c1511354d63de..a670f53ae48456df279922fc0011b3f2a155407a 100644
--- a/build/cmake/CMakeLists.txt
+++ b/build/cmake/CMakeLists.txt
@@ -24,9 +24,16 @@ include(ida.cmake)
 
 ######### SET THE PATHS TO THE SUNDIALS LIBRARIES AND INCLUDE FILES #########
 #############################################################################
-set(DIR_SUNDIALS "/globalhome/kck540/HPC/Libraries/sundials/instdir")
-# set(DIR_SUNDIALS "/home/kklenk/projects/rpp-kshook/CompHydCore/SummaSundials/sundials/sundials/instdir")
-# set(DIR_SUNDIALS "/usr/local/sundials-6.3.0")
+set(DIR_SUNDIALS "")
+foreach(dir IN ITEMS 
+    "/globalhome/kck540/HPC/Libraries/sundials/instdir"
+    "/home/kklenk/projects/rpp-kshook/CompHydCore/SummaSundials/sundials/sundials/instdir"
+    "/usr/local/sundials-6.3.0")
+    if(EXISTS ${dir})
+        set(DIR_SUNDIALS ${dir})
+        break()
+    endif()
+endforeach()
 #############################################################################
 
 # Set default build type to Release
@@ -35,133 +42,40 @@ if(NOT CMAKE_BUILD_TYPE)
 endif()
 
 # Add options for build type
-set(CMAKE_CONFIGURATION_TYPES Debug Release Cluster Cluster_Debug Kinsol Kinsol_Debug Kinsol_Cluster Kinsol_Cluster_Debug IDA IDA_DEBUG)
-message("Build type: ${CMAKE_BUILD_TYPE}")
-# Set compiler flags
-if(CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_BUILD_TYPE STREQUAL Cluster_Debug OR CMAKE_BUILD_TYPE STREQUAL Kinsol_Debug OR 
-    CMAKE_BUILD_TYPE STREQUAL Kinsol_Cluster_Debug)
-    message("Debug build.")
+set(CMAKE_CONFIGURATION_TYPES BE BE_Debug BE_Cluster BE_Cluster_Debug
+                              Kinsol Kinsol_Debug Kinsol_Cluster Kinsol_Cluster_Debug
+                              IDA IDA_Debug IDA_Cluster IDA_Cluster_Debug)
+message("\nSelected Bulid Type: ${CMAKE_BUILD_TYPE}\n")
+
+
+# Set Compiler Options
+if(CMAKE_BUILD_TYPE MATCHES Debug)
+    message("\nSetting Debug Options\n")
     add_definitions(-DDEBUG)
     set(SUMMA_NOAHMP_OPTIONS -g -O0 -ffree-form -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors)
     set(SUMMA_ALL_OPTIONS -g -O0 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors)
     set(CMAKE_CXX_FLAGS "-g -O0 -Wfatal-errors -std=c++17")
 else()
-    message("Release build.")
+    message("\nSetting Release Options\n")
     set(SUMMA_NOAHMP_OPTIONS -O3 -ffree-form -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors)
     set(SUMMA_ALL_OPTIONS -O3 -ffree-line-length-none -fmax-errors=0 -fPIC -Wfatal-errors)
     set(CMAKE_CXX_FLAGS "-O3 -Wfatal-errors -std=c++17")
 endif()
 
+# Build Correct Summa-Actors Configuration
+if(CMAKE_BUILD_TYPE MATCHES BE)
+    message("\nBuilding BE\n")
+    compile_with_be(${PARENT_DIR})
 
-# Packages that are required by both sundials and non-sundials builds
-
-
-# Set include directories
-if (CMAKE_BUILD_TYPE STREQUAL Cluster OR CMAKE_BUILD_TYPE STREQUAL Cluster_Debug)
-
-    find_package(CAF REQUIRED)
-    find_package(netCDF REQUIRED)
-    find_package(LAPACK REQUIRED)
-    message("\nBuilding Cluster\n")
-
-    compile_summa_original(PARENT_DIR, ${DIR_SUNDIALS})
-
-elseif(CMAKE_BUILD_TYPE STREQUAL IDA OR CMAKE_BUILD_TYPE STREQUAL IDA_DEBUG)
-    find_package(CAF REQUIRED)
-    find_package(netCDF REQUIRED)
-    find_package(LAPACK REQUIRED)
+elseif(CMAKE_BUILD_TYPE MATCHES IDA)
     message("\nBuilding IDA\n")
-
     compile_with_ida(PARENT_DIR, ${DIR_SUNDIALS})
 
-
-elseif(CMAKE_BUILD_TYPE STREQUAL Kinsol OR CMAKE_BUILD_TYPE STREQUAL Kinsol_Debug OR 
-       CMAKE_BUILD_TYPE STREQUAL Kinsol_Cluster OR CMAKE_BUILD_TYPE STREQUAL Kinsol_Cluster_Debug)
+elseif(CMAKE_BUILD_TYPE MATCHES Kinsol)
     message("\nBuilding Kinsol\n")
     compile_with_kinsol(PARENT_DIR, ${DIR_SUNDIALS})
 
 else()
-    find_package(CAF REQUIRED)
-    find_package(netCDF REQUIRED)
-    find_package(LAPACK REQUIRED)
-    if(SUNDIALS)
-        # Building Summa with sundials on local machine
-        link_directories(${DIR_SUNDIALS}/lib)
-        set(CMAKE_BUILD_RPATH "${DIR_SUNDIALS}/lib:/usr/local/lib")
-        set(SUMMA_INCLUDES
-            "/usr/include"
-            "${DIR_SUNDIALS}/include"
-            "${DIR_SUNDIALS}/fortran"
-            ${netCDF_INCLUDES}
-            ${LAPACK_INCLUDES})
-
-        set(SUMMA_LIBS
-            -lsundials_fnvecmanyvector_mod 
-            -lsundials_fida_mod 
-            -lsundials_fnvecserial_mod 
-            -lsundials_fsunlinsoldense_mod 
-            -lsundials_fsunmatrixdense_mod 
-            -lnetcdff
-            -lopenblas
-            SUMMA_NOAHMP)
-        
-        set(SUMMA_ACTORS_INCLUDES
-            ${CAF_INCLUDES}
-            ${netCDF_INCLUDES}
-            ${LAPACK_INCLUDES}
-            "${DIR_SUNDIALS}/include"
-            "${PARENT_DIR}/build/includes/global"
-            "${PARENT_DIR}/build/includes/summa_actor"
-            "${PARENT_DIR}/build/includes/gru_actor"
-            "${PARENT_DIR}/build/includes/job_actor"
-            "${PARENT_DIR}/build/includes/file_access_actor"
-            "${PARENT_DIR}/build/includes/hru_actor")
-        
-        set(SUMMA_ACTORS_LIBS   
-            -lopenblas
-            -lcaf_core
-            -lcaf_io
-            summa
-            -lnetcdff
-            -lsundials_fnvecmanyvector_mod 
-            -lsundials_fida_mod 
-            -lsundials_fnvecserial_mod 
-            -lsundials_fsunlinsoldense_mod 
-            -lsundials_fsunmatrixdense_mod)
-    
-
-    else()
-        # Building Summa-Actors on local machine without sundials 
-        set(CMAKE_BUILD_RPATH "/usr/local/lib")
-        set(SUMMA_INCLUDES
-            "/usr/include"
-            ${netCDF_INCLUDES}
-            ${LAPACK_INCLUDES})
-        
-        set(SUMMA_LIBS
-            ${netCDF_LIBRARIES}
-            ${LAPACK_LIBRARIES}
-            SUMMA_NOAHMP)
-        
-        set(SUMMA_ACTORS_INCLUDES
-            ${CAF_INCLUDES}
-            ${netCDF_INCLUDES}
-            ${LAPACK_INCLUDES}
-            "${PARENT_DIR}/build/includes/global"
-            "${PARENT_DIR}/build/includes/summa_actor"
-            "${PARENT_DIR}/build/includes/gru_actor"
-            "${PARENT_DIR}/build/includes/job_actor"
-            "${PARENT_DIR}/build/includes/file_access_actor"
-            "${PARENT_DIR}/build/includes/hru_actor")
-        
-        set(SUMMA_ACTORS_LIBS   
-            ${CAF_LIBRARIES}
-            ${netCDF_LIBRARIES}
-            ${LAPACK_LIBRARIES}
-            -lcaf_core
-            -lcaf_io
-            summa
-            -lnetcdff)
-    
-    endif()
+    message("Valid build types are: ${CMAKE_CONFIGURATION_TYPES}")
+    message(FATAL_ERROR "Unknown build type: ${CMAKE_BUILD_TYPE}")
 endif()
\ No newline at end of file
diff --git a/build/cmake/be.cmake b/build/cmake/be.cmake
index af653309f718682326c0fcc3a51345b7cab734b3..aae6541b203b5c54b06d23327137f1f226d49def 100644
--- a/build/cmake/be.cmake
+++ b/build/cmake/be.cmake
@@ -1,37 +1,67 @@
-function (compile_summa_original PARENT_DIR, DIR_SUNDIALS)
+function (compile_with_be PARENT_DIR)
+    find_package(LAPACK REQUIRED)
     set(EXEC_NAME summa_be)
 
-    set(SUMMA_INCLUDES 
-        "$ENV{EBROOTNETCDFMINFORTRAN}/include"
-        ${netCDF_INCLUDES}
-        ${LAPACK_INCLUDES})
-
-    set(SUMMA_LIBS
-        -lnetcdff
-        ${netCDF_LIBRARIES}
-        ${LAPACK_LIBRARIES}
-        SUMMA_NOAHMP)
-
-    set(SUMMA_ACTORS_INCLUDES
-        ${CAF_INCLUDES}
-        "$ENV{EBROOTNETCDFMINFORTRAN}/include"
-        ${LAPACK_INCLUDES}
-        "${PARENT_DIR}/build/includes/global"
-        "${PARENT_DIR}/build/includes/summa_actor"
-        "${PARENT_DIR}/build/includes/gru_actor"
-        "${PARENT_DIR}/build/includes/job_actor"
-        "${PARENT_DIR}/build/includes/file_access_actor"
-        "${PARENT_DIR}/build/includes/hru_actor")
-
-    set(SUMMA_ACTORS_LIBS   
-        ${CAF_LIBRARIES}
-        ${netCDF_LIBRARIES}
-        ${LAPACK_LIBRARIES}
-        -lcaf_core
-        -lcaf_io
-        summa
-        -lnetcdff)
-
+    if (CMAKE_BUILD_TYPE MATCHES Cluster)    
+        set(SUMMA_INCLUDES 
+            "$ENV{EBROOTNETCDFMINFORTRAN}/include"
+            ${netCDF_INCLUDES}
+            ${LAPACK_INCLUDES})
+
+        set(SUMMA_LIBS
+            -lnetcdff
+            ${netCDF_LIBRARIES}
+            ${LAPACK_LIBRARIES}
+            SUMMA_NOAHMP)
+
+        set(SUMMA_ACTORS_INCLUDES
+            ${CAF_INCLUDES}
+            "$ENV{EBROOTNETCDFMINFORTRAN}/include"
+            ${LAPACK_INCLUDES}
+            "${PARENT_DIR}/build/includes/global"
+            "${PARENT_DIR}/build/includes/summa_actor"
+            "${PARENT_DIR}/build/includes/gru_actor"
+            "${PARENT_DIR}/build/includes/job_actor"
+            "${PARENT_DIR}/build/includes/file_access_actor"
+            "${PARENT_DIR}/build/includes/hru_actor")
+
+        set(SUMMA_ACTORS_LIBS   
+            ${CAF_LIBRARIES}
+            ${netCDF_LIBRARIES}
+            ${LAPACK_LIBRARIES}
+            -lcaf_core
+            -lcaf_io
+            summa
+            -lnetcdff)
+    else()
+        set(CMAKE_BUILD_RPATH "/usr/local/lib")
+        set(SUMMA_INCLUDES
+            "/usr/include"
+            ${netCDF_INCLUDES}
+            ${LAPACK_INCLUDES})
+        
+        set(SUMMA_LIBS
+            -lnetcdff
+            -lopenblas
+            SUMMA_NOAHMP)
+
+        set(SUMMA_ACTORS_INCLUDES 
+            ${CAF_INCLUDES}
+            ${LAPACK_INCLUDES}
+            "${PARENT_DIR}/build/includes/global"
+            "${PARENT_DIR}/build/includes/summa_actor"
+            "${PARENT_DIR}/build/includes/gru_actor"
+            "${PARENT_DIR}/build/includes/job_actor"
+            "${PARENT_DIR}/build/includes/file_access_actor"
+            "${PARENT_DIR}/build/includes/hru_actor")
+        
+        set(SUMMA_ACTORS_LIBS   
+            -lopenblas
+            -lcaf_core
+            -lcaf_io
+            summa
+            -lnetcdff)
+    endif()
 
     set(ACTORS_DIR ${PARENT_DIR}/build/source/actors)
     set(DRIVER_DIR ${PARENT_DIR}/build/source/driver)
@@ -44,9 +74,9 @@ function (compile_summa_original PARENT_DIR, DIR_SUNDIALS)
     set(JOB_ACTOR_DIR ${ACTORS_DIR}/job_actor)
     set(HRU_ACTOR_DIR ${ACTORS_DIR}/hru_actor)
     set(GRU_ACTOR_DIR ${ACTORS_DIR}/gru_actor)
-    set(SUMMA_DSHARE_DIR ${PARENT_DIR}/build/summa_original/build/source/dshare)
-    set(SUMMA_ENGINE_DIR ${PARENT_DIR}/build/summa_original/build/source/engine)
-    set(SUMMA_NOAHMP_DIR ${PARENT_DIR}/build/summa_original/build/source/noah-mp)
+    set(SUMMA_DSHARE_DIR ${PARENT_DIR}/build/summa/build/source/dshare)
+    set(SUMMA_ENGINE_DIR ${PARENT_DIR}/build/summa/build/source/engine)
+    set(SUMMA_NOAHMP_DIR ${PARENT_DIR}/build/summa/build/source/noah-mp)
 
     set(NRUTIL
         ${SUMMA_ENGINE_DIR}/nrtype.f90
diff --git a/build/cmake/kinsol.cmake b/build/cmake/kinsol.cmake
index f85d5a23851c8734b2fbea7afc444a59259fedf9..b19cc42d4dcb5a7ee7e4fd66babc8d672c697502 100644
--- a/build/cmake/kinsol.cmake
+++ b/build/cmake/kinsol.cmake
@@ -5,10 +5,8 @@ function(compile_with_kinsol PARENT_DIR, DIR_SUNDIALS)
     find_package(LAPACK REQUIRED)
     set(EXEC_NAME summa_kinsol)
 
-
-    message("DIR_SUNDIALS: ${DIR_SUNDIALS}")
-    # Building Summa with sundials on local machine
-    if (CMAKE_BUILD_TYPE STREQUAL Kinsol_Cluster OR CMAKE_BUILD_TYPE STREQUAL Kinsol_Cluster_Debug)
+    # Set Includes and Libs for Summa-Actors
+    if (CMAKE_BUILD_TYPE MATCHES Cluster)
         link_directories(${DIR_SUNDIALS}/lib64)
         set(CMAKE_BUILD_RPATH "${DIR_SUNDIALS}/lib64")
         set(SUMMA_INCLUDES