diff --git a/3rdParty/MuParser/CMakeLists.txt b/3rdParty/MuParser/CMakeLists.txt
index a77276825e3280ae298eced80ea0b498e27d4bf2..1634a2f15a71aeec53bd0ffb5f14c22aec7893aa 100644
--- a/3rdParty/MuParser/CMakeLists.txt
+++ b/3rdParty/MuParser/CMakeLists.txt
@@ -44,7 +44,9 @@ add_library(muparser
         src/muParserTokenReader.cpp
         )
 
-linkOpenMP(muparser)
+if(BUILD_USE_OPENMP)
+   target_link_libraries(muparser PUBLIC OpenMP::OpenMP_CXX)
+endif()
 target_include_directories(muparser PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
 
 # this compiles the "DLL" interface (C API)
@@ -60,7 +62,7 @@ if (CMAKE_BUILD_TYPE STREQUAL Debug)
     target_compile_definitions(muparser PRIVATE _DEBUG)
 endif ()
 
-if(USE_OPENMP)
+if(BUILD_USE_OPENMP)
     target_compile_definitions(muparser PRIVATE MUP_USE_OPENMP)
 endif()
 set_target_properties(muparser PROPERTIES
diff --git a/CMake/3rd.cmake b/CMake/3rd.cmake
index 6cc488f94716f7cec973874b0930ed8f9b719d08..781146111d48739671b35c98bb96ebff358809b4 100644
--- a/CMake/3rd.cmake
+++ b/CMake/3rd.cmake
@@ -1,5 +1,2 @@
 include(${VF_CMAKE_DIR}/3rd/boost.cmake)
-include(${VF_CMAKE_DIR}/3rd/cuda.cmake)
 include(${VF_CMAKE_DIR}/3rd/gmock.cmake)
-include(${VF_CMAKE_DIR}/3rd/mpi.cmake)
-include(${VF_CMAKE_DIR}/3rd/OpenMP.cmake)
\ No newline at end of file
diff --git a/CMake/3rd/OpenMP.cmake b/CMake/3rd/OpenMP.cmake
deleted file mode 100644
index 45465ba4bf43dd5cf7687b83ac1d368332614582..0000000000000000000000000000000000000000
--- a/CMake/3rd/OpenMP.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
-function (linkOpenMP targetName)
-
-	if(NOT USE_OPENMP)
-		return()
-	endif()
-
-	find_package(OpenMP REQUIRED)
-
-	if(OpenMP_CXX_FOUND)
-		target_link_libraries(${targetName} PUBLIC OpenMP::OpenMP_CXX)
-	endif()
-
-endfunction()
\ No newline at end of file
diff --git a/CMake/3rd/cuda.cmake b/CMake/3rd/cuda.cmake
deleted file mode 100644
index 73d9b8647e2fa92dc760b60040ef727e4b4785f0..0000000000000000000000000000000000000000
--- a/CMake/3rd/cuda.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
-
-function(linkCUDA)
-
-    set(CUDA_CUT_INCLUDE_DIR "${VF_THIRD_DIR}/cuda_samples/")
-
-    vf_get_library_name(library_name)
-    target_include_directories(${library_name} PRIVATE ${CUDA_CUT_INCLUDE_DIR})
-    target_include_directories(${library_name} PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
-
-    # set the following properties only for specific targets
-    # set_property(TARGET ${targetName} PROPERTY CUDA_SEPARABLE_COMPILATION ON)
-    # set_property(TARGET ${targetName} PROPERTY CUDA_64_BIT_DEVICE_CODE ON)
-endfunction()
diff --git a/CMake/3rd/mpi.cmake b/CMake/3rd/mpi.cmake
deleted file mode 100644
index 93b3ee386cc46623ed02bbbffb88996328f03e52..0000000000000000000000000000000000000000
--- a/CMake/3rd/mpi.cmake
+++ /dev/null
@@ -1,9 +0,0 @@
-function (linkMPI)
-
-    find_package(MPI REQUIRED)
-
-    vf_get_library_name(library_name)
-    target_include_directories(${library_name} PUBLIC ${MPI_CXX_INCLUDE_PATH})
-    target_link_libraries(${library_name} PRIVATE MPI::MPI_CXX)
-
-endfunction()
\ No newline at end of file
diff --git a/CMake/CMakeSetCompilerFlags.cmake b/CMake/CMakeSetCompilerFlags.cmake
index ad9311482ed65a521f90e8210709bfd0a8351ecd..784f3f24a7cde518e113363aa92ce90fec0e9c2d 100644
--- a/CMake/CMakeSetCompilerFlags.cmake
+++ b/CMake/CMakeSetCompilerFlags.cmake
@@ -1,29 +1,21 @@
 
-###############################################################
-# set hostname -> CAB_MACHINE and load an optional config file
-###############################################################
+#########################################################################################
+## Access the hostname and loads a optional machine file hostname.cmake
+#########################################################################################
 macro(loadMachineFile)
 
-    IF(NOT CAB_MACHINE)
-        SET(CAB_MACHINE $ENV{CAB_MACHINE})
+    site_name(MACHINE_NAME)
+    string(TOUPPER  "${MACHINE_NAME}" MACHINE_NAME)
 
-        IF( CAB_MACHINE )
-            STRING(TOUPPER  "${CAB_MACHINE}" CAB_MACHINE)
-        ELSE()
-            EXECUTE_PROCESS( COMMAND hostname OUTPUT_VARIABLE CAB_MACHINE)
-            STRING(REGEX REPLACE "[ ]*([A-Za-z0-9]+).*[\\\\n]*" "\\1" CAB_MACHINE "${CAB_MACHINE}" )
-            STRING(TOUPPER  "${CAB_MACHINE}" CAB_MACHINE)
-        ENDIF()
-    ENDIF()
+    set(BUILD_MACHINE_FILE_PATH "${VF_CMAKE_DIR}/cmake_config_files")
 
-    LIST(APPEND VF_COMPILER_DEFINITION CAB_MACHINE=${CAB_MACHINE})
-    SET(CMAKE_CONFIG_FILE "${VF_CMAKE_DIR}/cmake_config_files/${CAB_MACHINE}.config.cmake")
+    set(MACHINE_FILE "${BUILD_MACHINE_FILE_PATH}/${MACHINE_NAME}.config.cmake")
 
-    IF(NOT EXISTS ${CMAKE_CONFIG_FILE})
-        status("No configuration file found for machine: ${CAB_MACHINE}.config.cmake")
+    IF(NOT EXISTS ${MACHINE_FILE})
+        status("No configuration file found: ${MACHINE_FILE}.")
     ELSE()
-        status("Load configuration file ${CAB_MACHINE}.config.cmake")
-        include(${CMAKE_CONFIG_FILE})
+        status("Load configuration file: ${MACHINE_FILE}")
+        include(${MACHINE_FILE})
     ENDIF()
 
 endmacro()
@@ -35,9 +27,9 @@ endmacro()
 ################################################################
 macro(loadCompilerFlags)
 
-  SET(CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "")
-  SET(CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG "")
-  SET(CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE "")
+  SET(CS_COMPILER_FLAGS_CXX "")
+  SET(CS_COMPILER_FLAGS_CXX_DEBUG "")
+  SET(CS_COMPILER_FLAGS_CXX_RELEASE "")
 
    # https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_<LANG>_COMPILER_ID
 
@@ -57,9 +49,9 @@ endmacro()
 ################################################################
 function(addAdditionalFlags project_name)
 
-    status_lib("additional compiler flags CXX: ${CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS}")
-    status_lib("additional compiler flags CXX debug: ${CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG}")
-    status_lib("additional compiler flags CXX release: ${CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE}")
+    status_lib("additional compiler flags CXX: ${CS_COMPILER_FLAGS_CXX}")
+    status_lib("additional compiler flags CXX debug: ${CS_COMPILER_FLAGS_CXX_DEBUG}")
+    status_lib("additional compiler flags CXX release: ${CS_COMPILER_FLAGS_CXX_RELEASE}")
     status_lib("additional compiler definitions: ${VF_COMPILER_DEFINITION}")
     status_lib("additional linker flags: ${VF_LINK_OPTIONS}")
 
@@ -74,15 +66,15 @@ function(addAdditionalFlags project_name)
     endforeach()
 
     # compile options
-    foreach(flag IN LISTS CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS)
+    foreach(flag IN LISTS CS_COMPILER_FLAGS_CXX)
         target_compile_options(${project_name} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${flag}>")
     endforeach()
 
-    foreach(flag IN LISTS CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG)
+    foreach(flag IN LISTS CS_COMPILER_FLAGS_CXX_DEBUG)
         target_compile_options(${project_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:DEBUG>>:${flag}>")
     endforeach()
 
-    foreach(flag IN LISTS CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE)
+    foreach(flag IN LISTS CS_COMPILER_FLAGS_CXX_RELEASE)
         target_compile_options(${project_name} PRIVATE "$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<CONFIG:RELEASE>>:${flag}>")
     endforeach()
 
diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake
index 2d6e63256955f8b739b2c84e695214185471600f..debb5ee7826d7dc3d6499b3813070dcab4b94bd4 100644
--- a/CMake/VirtualFluidsMacros.cmake
+++ b/CMake/VirtualFluidsMacros.cmake
@@ -225,6 +225,10 @@ function(vf_add_library)
     target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/gpu)
     target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/cpu)
 
+    if(BUILD_VF_GPU)
+        target_include_directories(${library_name} PRIVATE "${VF_THIRD_DIR}/cuda_samples/")
+        target_include_directories(${library_name} PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
+    endif()
 
     status("... configuring target: ${library_name} (type=${ARG_BUILDTYPE}) done")
 
diff --git a/CMake/compilerflags/AppleClang.cmake b/CMake/compilerflags/AppleClang.cmake
index c7130e5f40fa61a6011c8009b094611ed7f07ed0..6f52ad35956a967b3892aed26257fa1c41cb0c46 100644
--- a/CMake/compilerflags/AppleClang.cmake
+++ b/CMake/compilerflags/AppleClang.cmake
@@ -3,26 +3,26 @@
 #############################################################################################################
 
 # debug
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG "-g")  # generates debug information. Works best with -O0.
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG "-O0")
+list(APPEND CS_COMPILER_FLAGS_CXX_DEBUG "-g")  # generates debug information. Works best with -O0.
+list(APPEND CS_COMPILER_FLAGS_CXX_DEBUG "-O0")
 
 # release
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE "-O3") # optimization level (-O3: most optimization which also could result in larger binaries)
+list(APPEND CS_COMPILER_FLAGS_CXX_RELEASE "-O3") # optimization level (-O3: most optimization which also could result in larger binaries)
 
 # all
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-fPIC") # position independent code for shared libraries
+list(APPEND CS_COMPILER_FLAGS_CXX "-fPIC") # position independent code for shared libraries
 
 #############################################################################################################
 # warnings
 #############################################################################################################
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wall")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wextra")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-pedantic")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wall")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wextra")
+list(APPEND CS_COMPILER_FLAGS_CXX "-pedantic")
 
 if(BUILD_WARNINGS_AS_ERRORS)
-    list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS -Werror)
+    list(APPEND CS_COMPILER_FLAGS_CXX -Werror)
 endif()
 
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-function")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-parameter")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-reorder")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-unused-function")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-unused-parameter")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-reorder")
diff --git a/CMake/compilerflags/Clang.cmake b/CMake/compilerflags/Clang.cmake
index 9a3de6c56007c26cb90ede287dc6b4fdfa9e2124..2eb4eec5ee89715a1668ef078c84f4e720bd04e6 100644
--- a/CMake/compilerflags/Clang.cmake
+++ b/CMake/compilerflags/Clang.cmake
@@ -3,30 +3,30 @@
 #############################################################################################################
 
 # debug
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG "-g")  # generates debug information. Works best with -O0.
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG "-O0")
+list(APPEND CS_COMPILER_FLAGS_CXX_DEBUG "-g")  # generates debug information. Works best with -O0.
+list(APPEND CS_COMPILER_FLAGS_CXX_DEBUG "-O0")
 
 # release
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE "-O3") # optimization level (-O3: most optimization which also could result in larger binaries)
+list(APPEND CS_COMPILER_FLAGS_CXX_RELEASE "-O3") # optimization level (-O3: most optimization which also could result in larger binaries)
 
 # all
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-fPIC") # position independent code for shared libraries
+list(APPEND CS_COMPILER_FLAGS_CXX "-fPIC") # position independent code for shared libraries
 
 
 #############################################################################################################
 # warnings
 #############################################################################################################
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wall")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wextra")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-pedantic")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wall")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wextra")
+list(APPEND CS_COMPILER_FLAGS_CXX "-pedantic")
 
 if(BUILD_WARNINGS_AS_ERRORS)
-    list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS -Werror)
+    list(APPEND CS_COMPILER_FLAGS_CXX -Werror)
 endif()
 
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-function")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-parameter")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-reorder-ctor")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-unused-function")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-unused-parameter")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-reorder-ctor")
 
 
 
diff --git a/CMake/compilerflags/GNU.cmake b/CMake/compilerflags/GNU.cmake
index 2953598d5ff80afa96e04dfe56b021aed8690534..3e67b79e9c84d29b51b2881b17e2b74f5510bbd2 100644
--- a/CMake/compilerflags/GNU.cmake
+++ b/CMake/compilerflags/GNU.cmake
@@ -3,41 +3,41 @@
 #############################################################################################################
 
 # debug
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG "-g")  # generates debug information. Works best with -O0.
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG "-O0") # no optimization
+list(APPEND CS_COMPILER_FLAGS_CXX_DEBUG "-g")  # generates debug information. Works best with -O0.
+list(APPEND CS_COMPILER_FLAGS_CXX_DEBUG "-O0") # no optimization
 
 # release
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_RELEASE "-O3") # optimization level (-O3: most optimization which also could result in larger binaries)
+list(APPEND CS_COMPILER_FLAGS_CXX_RELEASE "-O3") # optimization level (-O3: most optimization which also could result in larger binaries)
 
 # all
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-fPIC") # position independent code for shared libraries
+list(APPEND CS_COMPILER_FLAGS_CXX "-fPIC") # position independent code for shared libraries
 
 if(NOT BUILD_VF_INCLUDE_WHAT_YOU_USE) # optimization flag '-funroll-all-loops' is not supported for IWYU
-    LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-funroll-all-loops")
+    LIST(APPEND CS_COMPILER_FLAGS_CXX "-funroll-all-loops")
 endif()
 
 # gcov
 if (BUILD_VF_COVERAGE)
-    list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "--coverage")
+    list(APPEND CS_COMPILER_FLAGS_CXX "--coverage")
     set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} " --coverage")
 endif()
 
 #############################################################################################################
 # warnings
 #############################################################################################################
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wall")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wextra")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-pedantic")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wall")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wextra")
+list(APPEND CS_COMPILER_FLAGS_CXX "-pedantic")
 
 if(BUILD_WARNINGS_AS_ERRORS)
-    list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS -Werror)
+    list(APPEND CS_COMPILER_FLAGS_CXX -Werror)
 endif()
 
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-function")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unused-parameter")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-reorder")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-unknown-pragmas")
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-Wno-cast-function-type")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-unused-function")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-unused-parameter")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-reorder")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-unknown-pragmas")
+list(APPEND CS_COMPILER_FLAGS_CXX "-Wno-cast-function-type")
 
 #############################################################################################################
 # linker options
diff --git a/CMake/compilerflags/Intel.cmake b/CMake/compilerflags/Intel.cmake
index 90c73b157b4ef3ec77c4d236bbf698876189c069..c7177d4c246402d8b865e7059273cb18d0938e44 100644
--- a/CMake/compilerflags/Intel.cmake
+++ b/CMake/compilerflags/Intel.cmake
@@ -2,22 +2,22 @@
 # compiler flags
 #############################################################################################################
 
-#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-O")
-#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-wd654")
-#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-wd1125") #virtual function override intended
-#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-wd1224") #warning directive: This file includes at least one deprecated or antiquated header
-#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-wd377")  #class "std::auto_ptr<RCF::I_ClientTransport>" has no suitable copy constructor
-#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-wd327")  #class "std::auto_ptr<RCF::I_ClientTransport>" has no suitable copy constructor
-#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-wd327")  #class "std::auto_ptr<RCF::I_ClientTransport>" has no suitable copy constructor
+#LIST(APPEND CS_COMPILER_FLAGS_CXX "-O")
+#LIST(APPEND CS_COMPILER_FLAGS_CXX "-wd654")
+#LIST(APPEND CS_COMPILER_FLAGS_CXX "-wd1125") #virtual function override intended
+#LIST(APPEND CS_COMPILER_FLAGS_CXX "-wd1224") #warning directive: This file includes at least one deprecated or antiquated header
+#LIST(APPEND CS_COMPILER_FLAGS_CXX "-wd377")  #class "std::auto_ptr<RCF::I_ClientTransport>" has no suitable copy constructor
+#LIST(APPEND CS_COMPILER_FLAGS_CXX "-wd327")  #class "std::auto_ptr<RCF::I_ClientTransport>" has no suitable copy constructor
+#LIST(APPEND CS_COMPILER_FLAGS_CXX "-wd327")  #class "std::auto_ptr<RCF::I_ClientTransport>" has no suitable copy constructor
 #
 #LIST(APPEND CAB_COMPILER_ADDTIONAL_C_COMPILER_FLAGS "-wd266")  #function "__GKfree" declared implicitly
-#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-xHOST -O3 -ip -ipo -fno-alias -mcmodel=medium -qopt-streaming-stores=always")
+#LIST(APPEND CS_COMPILER_FLAGS_CXX "-xHOST -O3 -ip -ipo -fno-alias -mcmodel=medium -qopt-streaming-stores=always")
 
 # all
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-xHOST;-O3;-ip;-fno-alias;-mcmodel=medium;-qopt-streaming-stores=always;-xCORE-AVX512;-qopt-zmm-usage=high")
+list(APPEND CS_COMPILER_FLAGS_CXX "-xHOST;-O3;-ip;-fno-alias;-mcmodel=medium;-qopt-streaming-stores=always;-xCORE-AVX512;-qopt-zmm-usage=high")
 
 # debug
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS_DEBUG "-g -traceback")
+list(APPEND CS_COMPILER_FLAGS_CXX_DEBUG "-g -traceback")
 
 
 #############################################################################################################
diff --git a/CMake/compilerflags/MSVC.cmake b/CMake/compilerflags/MSVC.cmake
index 937d9f4d5d1fead78f35e2442845b27f13bc9a54..2af38d98e63cf04c4da476fb02754ce47510e4f6 100644
--- a/CMake/compilerflags/MSVC.cmake
+++ b/CMake/compilerflags/MSVC.cmake
@@ -1,29 +1,29 @@
 #############################################################################################################
 # compiler flags
 #############################################################################################################
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/bigobj") # increases that address capacity to 4,294,967,296 (2^32).
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-MP")     # enable multi-threaded compiling
+list(APPEND CS_COMPILER_FLAGS_CXX "/bigobj") # increases that address capacity to 4,294,967,296 (2^32).
+list(APPEND CS_COMPILER_FLAGS_CXX "-MP")     # enable multi-threaded compiling
 
 
 #############################################################################################################
 # warnings
 #############################################################################################################
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/W4") # highest warning level
+list(APPEND CS_COMPILER_FLAGS_CXX "/W4") # highest warning level
 
 # With W4 the following warnings appear many times. As long they are not eliminated they are suppressed:
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4458") # C4458: declaration of 'XXX' hides class member
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4100") # C4100: 'XXX': unreferenced formal parameter
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4505") # C4505: 'XXX': unreferenced local function has been removed
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4244") # C4244: '=': conversion from 'int' to 'char', possible loss of data, triggered by algorithm(2216,24)
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4310") # C4310: cast truncates constant value, triggerd by muParserbase.h
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4127") # C4127: conditional expression is constant: e.g. sizeof(int)
+list(APPEND CS_COMPILER_FLAGS_CXX "/wd4458") # C4458: declaration of 'XXX' hides class member
+list(APPEND CS_COMPILER_FLAGS_CXX "/wd4100") # C4100: 'XXX': unreferenced formal parameter
+list(APPEND CS_COMPILER_FLAGS_CXX "/wd4505") # C4505: 'XXX': unreferenced local function has been removed
+list(APPEND CS_COMPILER_FLAGS_CXX "/wd4244") # C4244: '=': conversion from 'int' to 'char', possible loss of data, triggered by algorithm(2216,24)
+list(APPEND CS_COMPILER_FLAGS_CXX "/wd4310") # C4310: cast truncates constant value, triggerd by muParserbase.h
+list(APPEND CS_COMPILER_FLAGS_CXX "/wd4127") # C4127: conditional expression is constant: e.g. sizeof(int)
 
 # Urgent FIXME: This warning should be activated and fixed:
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4701") # C4701: potentially uninitialized local variable 'lMaxX3' used
+list(APPEND CS_COMPILER_FLAGS_CXX "/wd4701") # C4701: potentially uninitialized local variable 'lMaxX3' used
 
 
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4251") # disable needs to have dll interface
-list(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "/wd4005") # disable macro redefinition (triggered by metis.h)
+list(APPEND CS_COMPILER_FLAGS_CXX "/wd4251") # disable needs to have dll interface
+list(APPEND CS_COMPILER_FLAGS_CXX "/wd4005") # disable macro redefinition (triggered by metis.h)
 
 #############################################################################################################
 # preprocessor definitions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8d743768918b108fcb5d68b6df89f01867c41c0c..efce16caaf8d40ae3f5a9ca9bcedd5c5a6767bf5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -37,6 +37,7 @@ option(BUILD_VF_GPU "Build VirtualFluids gpu variant" OFF)
 
 option(BUILD_USE_OPENMP "Build VirtualFluids with openmp" ON)
 
+
 # vf gpu
 option(BUILD_VF_GPU          "Build VirtualFluids GPU"     ON )
 option(BUILD_VF_GKS          "Build VirtualFluids GKS"     OFF )
@@ -60,12 +61,11 @@ else()
     set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
 endif()
 
-option(USE_OPENMP "Include OpenMP support" ON)
-
 option(BUILD_VF_PYTHON_BINDINGS "" OFF)
 
 option(BUILD_VF_DOUBLE_ACCURACY "Use double accuracy" OFF)
 
+
 #################################################################################
 #  MACROS
 #################################################################################
@@ -79,6 +79,13 @@ ENDIF()
 #################################################################################
 #  COMMON LIBRARIES
 #################################################################################
+if(BUILD_USE_OPENMP)
+    find_package(OpenMP REQUIRED)
+endif()
+
+find_package(MPI REQUIRED)
+
+
 add_subdirectory(src/basics)
 
 #################################################################################
diff --git a/apps/gpu/LBM/DrivenCavity/CMakeLists.txt b/apps/gpu/LBM/DrivenCavity/CMakeLists.txt
index 8bb9ee450616604b8cc636a2e13477d76e6b43d4..e4f62c0150c29f147dee0b99480d1fe28161511a 100644
--- a/apps/gpu/LBM/DrivenCavity/CMakeLists.txt
+++ b/apps/gpu/LBM/DrivenCavity/CMakeLists.txt
@@ -1,10 +1,7 @@
-PROJECT(DrivenCavity)
+PROJECT(DrivenCavity LANGUAGES CUDA CXX)
 
-#LIST(APPEND CAB_COMPILER_ADDTIONAL_CXX_COMPILER_FLAGS "-DOMPI_SKIP_MPICXX" )
+#LIST(APPEND CS_COMPILER_FLAGS_CXX "-DOMPI_SKIP_MPICXX" )
 
-vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES DrivenCavity.cpp )
+vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator MPI::MPI_CXX FILES DrivenCavity.cpp)
 
 set_source_files_properties(DrivenCavity.cpp PROPERTIES LANGUAGE CUDA)
-
-linkCUDA()
-linkMPI()
diff --git a/gpu.cmake b/gpu.cmake
index 29fe0d826a11d169f2c17510dde26c2581ce6ad5..6bdff52053d9b4ad047ca8015980a08e9e2f3a79 100644
--- a/gpu.cmake
+++ b/gpu.cmake
@@ -1,14 +1,4 @@
 
-#############################################################
-###                     CUDAPATH                          ###
-#############################################################
-
-# if CMake cannot find CUDA by itself, set the correct paths manually:
-#SET(CUDA_CUT_INCLUDE_DIR    "/cluster/cuda/9.0/include;/cluster/cuda/9.0/samples/common/inc" CACHE PATH "CUDA_CUT_INCLUDE_DIR")
-#SET(CUDA_SAMPLE_INCLUDE_DIR "/cluster/cuda/9.0/samples/common/inc" CACHE PATH "CUDA_CUT_INCLUDE_DIR")
-
-
-#############################################################
 
 if(BUILD_NUMERIC_TESTS)
     set(CMAKE_CXX_STANDARD 17)
@@ -24,9 +14,6 @@ ENDIF()
 
 set(CMAKE_CUDA_FLAGS_DEBUG " -G" CACHE STRING "" FORCE)
 
-#############################################################
-
-enable_language(CUDA)
 
 ##########################################################################################################################
 ###                  Subdirectories                                                                                    ###
diff --git a/src/basics/CMakeLists.txt b/src/basics/CMakeLists.txt
index 2eff85ba5c48ec475cd8690060520cc09b4a0cb6..1703d6269c1cebe36005226373da85b14c5515f6 100644
--- a/src/basics/CMakeLists.txt
+++ b/src/basics/CMakeLists.txt
@@ -1,7 +1,7 @@
 
 include(Core/buildInfo.cmake)
 
-vf_add_library(EXCLUDE buildInfo.in.cpp)
+vf_add_library(PUBLIC_LINK MPI::MPI_CXX EXCLUDE buildInfo.in.cpp)
 
 vf_get_library_name (library_name)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Core)
@@ -21,7 +21,4 @@ IF(MSVC)
     target_compile_definitions(${library_name} PUBLIC NOMINMAX) # Disable Min/Max-Macros
 ENDIF(MSVC)
 
-
-linkMPI()
-
-vf_add_tests()
\ No newline at end of file
+vf_add_tests()
diff --git a/src/cpu/VirtualFluidsCore/CMakeLists.txt b/src/cpu/VirtualFluidsCore/CMakeLists.txt
index 7d208fb945f70a7ca2108fe25dce324c2c0e87f9..3506f0b76399043cbe546ea44ef4b57bd2d794c3 100644
--- a/src/cpu/VirtualFluidsCore/CMakeLists.txt
+++ b/src/cpu/VirtualFluidsCore/CMakeLists.txt
@@ -23,14 +23,15 @@ IF(${USE_DEM_COUPLING})
    INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/../DemCoupling/DemCoupling.cmake)
 ENDIF()
 
-vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser ${CAB_ADDITIONAL_LINK_LIBRARIES})
-
-vf_get_library_name(library_name)
-
 if(BUILD_USE_OPENMP)
-   linkOpenMP(${library_name})
+   list(APPEND CAB_ADDITIONAL_LINK_LIBRARIES OpenMP::OpenMP_CXX)
 endif()
 
+vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser MPI::MPI_CXX ${CAB_ADDITIONAL_LINK_LIBRARIES})
+
+
+vf_get_library_name(library_name)
+
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/BoundaryConditions)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Connectors)
 target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Data)
@@ -47,11 +48,6 @@ IF(${USE_METIS} AND METIS_INCLUDEDIR)
    target_include_directories(${library_name} PUBLIC ${METIS_INCLUDEDIR})
 ENDIF()
 
-IF(${USE_BOOST})
-   target_include_directories(${library_name} PRIVATE ${Boost_INCLUDE_DIR})
-ENDIF()
-
-
 target_include_directories(${library_name} PRIVATE ${ZOLTAN_INCLUDEDIR})
 IF(${USE_VTK})
    target_include_directories(${library_name} PRIVATE ${VTK_INCLUDE_DIRS})
diff --git a/src/gpu/GksGpu/CMakeLists.txt b/src/gpu/GksGpu/CMakeLists.txt
index 88df905d3eb847c1ed5e9b5bc5a1ec68c549e313..b6e91a2cb6dbfabd61adf4fc20dd8dab5aa82e0c 100644
--- a/src/gpu/GksGpu/CMakeLists.txt
+++ b/src/gpu/GksGpu/CMakeLists.txt
@@ -1,8 +1,3 @@
+project(GksGpu LANGUAGES CUDA CXX)
 
-vf_add_library(BUILDTYPE shared PRIVATE_LINK basics GksMeshAdapter)
-
-linkCUDA()
-linkMPI()
-
-vf_get_library_name(library_name)
-linkOpenMP(${library_name})
+vf_add_library(BUILDTYPE shared PRIVATE_LINK basics GksMeshAdapter OpenMP::OpenMP_CXX MPI::MPI_CXX)
diff --git a/src/gpu/GridGenerator/CMakeLists.txt b/src/gpu/GridGenerator/CMakeLists.txt
index 46866937e2fe91e4d2eedd3cbbaf16a65ae8a6fc..1ce294bf420f657f35397c427929f9f310d04556 100644
--- a/src/gpu/GridGenerator/CMakeLists.txt
+++ b/src/gpu/GridGenerator/CMakeLists.txt
@@ -1,12 +1,9 @@
+project(GridGenerator LANGUAGES CUDA CXX)
 
 
-vf_add_library(PRIVATE_LINK basics)
-vf_get_library_name(library_name)
-
-linkCUDA()
-linkOpenMP(${library_name})
-
+vf_add_library(PRIVATE_LINK basics OpenMP::OpenMP_CXX)
 
+vf_get_library_name(library_name)
 set_target_properties(${library_name} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
 
 # according to linker error when building static libraries.
diff --git a/src/gpu/Traffic/CMakeLists.txt b/src/gpu/Traffic/CMakeLists.txt
index c836ac39130824ebc01da73c62a76c85656573a8..249594e0434bc01aecd8f95f524a25a0745013d4 100644
--- a/src/gpu/Traffic/CMakeLists.txt
+++ b/src/gpu/Traffic/CMakeLists.txt
@@ -1,5 +1,3 @@
-
+project(Traffic LANGUAGES CUDA CXX)
 
 vf_add_library(BUILDTYPE shared PRIVATE_LINK GridGenerator basics)
-
-linkCUDA()
\ No newline at end of file
diff --git a/src/gpu/VirtualFluids_GPU/CMakeLists.txt b/src/gpu/VirtualFluids_GPU/CMakeLists.txt
index 442efdc1422dc278161d3ad6571f3e52864e90de..95405b25864f506e5580fa6711a4389d39d8d7a7 100644
--- a/src/gpu/VirtualFluids_GPU/CMakeLists.txt
+++ b/src/gpu/VirtualFluids_GPU/CMakeLists.txt
@@ -1,16 +1,12 @@
+project(VirtualFluids_GPU LANGUAGES CUDA CXX)
 
-IF(MSVC)
-    set(libsToLink ws2_32 GridGenerator basics Traffic) # ws_32 throws an error on Phoenix
-ELSE(MSVC)
-    #set(libsToLink GridGenerator VirtualFluidsBasics Core Traffic)
-    set(libsToLink GridGenerator basics)
-ENDIF(MSVC)
+set(additional_libraries "")
+if(MSVC)
+    set(additional_libraries ws2_32 Traffic) # ws_32 throws an error on Phoenix
+endif()
 
+vf_add_library(PRIVATE_LINK ${additional_libraries} GridGenerator basics MPI::MPI_CXX)
 
-vf_add_library(PRIVATE_LINK ${libsToLink})
-
-linkMPI()
-linkCUDA()
 linkBoost(COMPONENTS "serialization")
 
 #SET(TPN_WIN32 "/EHsc")