diff --git a/3rdParty/MuParser/CMakeLists.txt b/3rdParty/MuParser/CMakeLists.txt
index 77dc5d1cd8bd1c9bc01081c42611b2bfdff42ae4..672dfc1e681efc3ff4ceea383580b4e72cdabfce 100644
--- a/3rdParty/MuParser/CMakeLists.txt
+++ b/3rdParty/MuParser/CMakeLists.txt
@@ -4,3 +4,5 @@ vf_add_library(BUILDTYPE static)
 
 vf_get_library_name(library_name)
 target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include)
+
+groupTarget(${library_name} ${thirdFolder})
diff --git a/CMake/3rd/vtk.cmake b/CMake/3rd/vtk.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..83cf22e8849298d2b42909664cacd5fd9044903e
--- /dev/null
+++ b/CMake/3rd/vtk.cmake
@@ -0,0 +1,11 @@
+
+#########################################################################
+# VTK_DIR needs to bet set to the VTK build directory in the config file.
+#########################################################################
+find_package(VTK REQUIRED)
+    vf_get_library_name(library_name)
+
+    include(${VTK_USE_FILE})
+    target_include_directories(${library_name} PRIVATE ${VTK_INCLUDE_DIRS})
+
+    target_link_libraries(${library_name} PRIVATE ${VTK_LIBRARIES})
diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake
index de563d28fbbbc959f96f29fa69470dc74e713556..721d56b89ee22f491c4c984de67fa6ee27fa3b74 100644
--- a/CMake/VirtualFluidsMacros.cmake
+++ b/CMake/VirtualFluidsMacros.cmake
@@ -19,6 +19,8 @@ set (VIRTUAL_FLUIDS_GLOB_FILES
         *.c
         *.h
         *.cu
+        *.cuh
+        *.hpp
         CACHE INTERNAL "File endings to glob for source files" )
 
 
@@ -163,9 +165,11 @@ function(vf_add_library)
       generateExportHeader (${library_name})
     endif()
 
+    target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
     target_include_directories(${library_name} PRIVATE ${CMAKE_BINARY_DIR})
-    target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
     target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR})
+    target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/gpu)
+    target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/cpu)
 
 
     #status("... configuring target: ${library_name} (type=${ARG_BUILDTYPE}) done")
diff --git a/CMake/cmake_config_files/TESLA01.config.cmake b/CMake/cmake_config_files/TESLA01.config.cmake
index adebd6af01a6fbe44952cdf39f398aa9d7abb49d..bc3b0e796a45d49cc654813293cad84ae9d79865 100644
--- a/CMake/cmake_config_files/TESLA01.config.cmake
+++ b/CMake/cmake_config_files/TESLA01.config.cmake
@@ -9,10 +9,10 @@ SET(FFTW_ROOT ${VF_THIRD_DIR}/fftw/fftw-3.3.7 CACHE PATH "JSONCPP ROOT")
 SET(BOOST_ROOT  "C:\\Libraries\\boost_1_65_1"  CACHE PATH "BOOST_ROOT")
 SET(BOOST_LIBRARYDIR  "C:\\Libraries\\boost_1_65_1\\lib" CACHE PATH "BOOST_LIBRARYDIR")
 
-#SET(VTK_DIR "F:/Libraries/vtk/VTK-8.2.0/build" CACHE PATH "VTK directory override" FORCE)
+SET(VTK_DIR "C:/Libraries/VTK-8.0.1/build")
 
 IF(${USE_METIS})
     SET(METIS_INCLUDEDIR "C:/Libraries/metis-5.1.0//include")
     SET(METIS_DEBUG_LIBRARY "C:/Libraries/metis-5.1.0/build/libmetis/Debug/metis.lib")
     SET(METIS_RELEASE_LIBRARY "C:/Libraries/metis-5.1.0/build/libmetis/Release/metis.lib")
-ENDIF()
\ No newline at end of file
+ENDIF()
diff --git a/apps/cpu/IncludsList.cmake b/apps/cpu/IncludsList.cmake
deleted file mode 100644
index 21cd47eddb5ca7d182a53c7ee01f97ea991aa02e..0000000000000000000000000000000000000000
--- a/apps/cpu/IncludsList.cmake
+++ /dev/null
@@ -1,14 +0,0 @@
-INCLUDE_DIRECTORIES(${APPS_ROOT_CPU})
-INCLUDE(${VF_SRC_DIR}/cpu/VirtualFluidsCore/IncludsList.cmake)
-
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/cpu/VirtualFluidsCore)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics/geometry3d)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics/geometry3d/Creator)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics/geometry3d/KdTree)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics/basics/container)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics/basics/memory)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics/basics/objects)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics/basics/transmiitter)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics/basics/utilities)
-INCLUDE_DIRECTORIES(${VF_SRC_DIR}/basics/basics/writer)
\ No newline at end of file
diff --git a/apps/cpu/LaminarTubeFlow/CMakeLists.txt b/apps/cpu/LaminarTubeFlow/CMakeLists.txt
index 94a0cc53541f573b6c6975304e6aab1b80e296ad..574e8a60a2b7f5ba807cc19cade492b58f2427b6 100644
--- a/apps/cpu/LaminarTubeFlow/CMakeLists.txt
+++ b/apps/cpu/LaminarTubeFlow/CMakeLists.txt
@@ -1,7 +1,7 @@
 
 PROJECT(ltf)
 
-INCLUDE(${APPS_ROOT_CPU}/IncludsList.cmake)
-
-
 vf_add_library(BUILDTYPE binary DEPENDS VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} FILES ltf.cpp )
+
+vf_get_library_name (library_name)
+target_include_directories(${library_name} PRIVATE ${APPS_ROOT_CPU})
\ No newline at end of file
diff --git a/apps/cpu/LaminarTubeFlow/ltf.cpp b/apps/cpu/LaminarTubeFlow/ltf.cpp
index d13320cc4784753e7b71ecd13935dd7e664fc30c..91c02485557e671553dc4f3db97dc25332ed0ca1 100644
--- a/apps/cpu/LaminarTubeFlow/ltf.cpp
+++ b/apps/cpu/LaminarTubeFlow/ltf.cpp
@@ -1,6 +1,6 @@
 #include <iostream>
 #include <string>
-#include <omp.h>
+//#include <omp.h>
 
 #include "VirtualFluids.h"
 
diff --git a/apps/gpu/GKS/Flame7cm/3rdPartyLinking.cmake b/apps/gpu/GKS/Flame7cm/3rdPartyLinking.cmake
deleted file mode 100644
index 72c7afc6076b832263506ab9ce777925cfcc6a66..0000000000000000000000000000000000000000
--- a/apps/gpu/GKS/Flame7cm/3rdPartyLinking.cmake
+++ /dev/null
@@ -1,11 +0,0 @@
-include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/MPI/Link.cmake)
-linkMPI(${targetName})
-include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/Cuda/Link.cmake)
-linkCuda(${targetName})
-#include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/Metis/Link.cmake)
-#linkMetis(${targetName})
-
-#if(HULC.BUILD_JSONCPP)
-#  include (${CMAKE_SOUR#CE_DIR}/${cmakeMacroPath}/JsonCpp/Link.cmake)
-#  linkJsonCpp(${targetName})
-#endif()
diff --git a/apps/gpu/GKS/Flame7cm/CMakeLists.txt b/apps/gpu/GKS/Flame7cm/CMakeLists.txt
index d404310177a2f53760d1c84bce79d7d070fed409..1befef79f421268b3993aad6539880991fac92fa 100644
--- a/apps/gpu/GKS/Flame7cm/CMakeLists.txt
+++ b/apps/gpu/GKS/Flame7cm/CMakeLists.txt
@@ -1,19 +1,6 @@
-setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR})
+PROJECT(Flame7cm)
 
-set(linkDirectories "")
-set(libsToLink Core GridGenerator GksMeshAdapter GksVtkAdapter GksGpu)
-set(includeDirectories "${CMAKE_SOURCE_DIR}/src"
-                       "${CMAKE_SOURCE_DIR}/src/Core"
-                       "${CMAKE_SOURCE_DIR}/src/GridGenerator"
-                       "${CMAKE_SOURCE_DIR}/src/GksMeshAdapter"
-                       "${CMAKE_SOURCE_DIR}/src/GksVtkAdapter"
-                       "${CMAKE_SOURCE_DIR}/src/GksGpu")
+vf_add_library(BUILDTYPE binary DEPENDS basics GridGenerator GksMeshAdapter GksVtkAdapter GksGpu FILES Flame7cm.cpp )
 
-#glob files and save in MY_SRCS
-include(CMakePackage.cmake)
-
-buildExe(${targetName} "${MY_SRCS}" "${linkDirectories}" "${libsToLink}" "${includeDirectories}")
-groupTarget(${targetName} ${gksAppFolder})
-
-# Specify the linking to 3rdParty libs
-include(3rdPartyLinking.cmake)
+include (${VF_CMAKE_DIR}/3rd/cuda.cmake)
+include (${VF_CMAKE_DIR}/3rd/mpi.cmake)
diff --git a/apps/gpu/GKS/Flame7cm/CMakePackage.cmake b/apps/gpu/GKS/Flame7cm/CMakePackage.cmake
deleted file mode 100644
index 5d39e3804dbd180790629111449a7dc918292430..0000000000000000000000000000000000000000
--- a/apps/gpu/GKS/Flame7cm/CMakePackage.cmake
+++ /dev/null
@@ -1,9 +0,0 @@
-#FILE ENDINGS
-resetFileEndingsToCollect()
-addCAndCPPFileTypes()
-addFileEndingToCollect("*.cu")
-addFileEndingToCollect("*.cuh")
-
-#GLOB SOURCE FILES IN MY_SRCS
-unset(MY_SRCS)
-includeRecursiveAllFilesFrom(${targetName} ${CMAKE_CURRENT_LIST_DIR})
\ No newline at end of file
diff --git a/apps/gpu/LBM/DrivenCavity/CMakeLists.txt b/apps/gpu/LBM/DrivenCavity/CMakeLists.txt
index 986d3fabbc8352666bc3a6fba25a27ba89522129..a1963c9f6d0b6ee0202184b4f402edb9597261de 100644
--- a/apps/gpu/LBM/DrivenCavity/CMakeLists.txt
+++ b/apps/gpu/LBM/DrivenCavity/CMakeLists.txt
@@ -8,10 +8,3 @@ include (${VF_CMAKE_DIR}/3rd/cuda.cmake)
 include (${VF_CMAKE_DIR}/3rd/mpi.cmake)
 include (${VF_CMAKE_DIR}/3rd/boost.cmake)
 linkBoost ("serialization")
-
-vf_get_library_name(library_name)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/gpu)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/gpu/VirtualFluids_GPU)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/gpu/GridGenerator)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/Core)
diff --git a/cpu.cmake b/cpu.cmake
index d3522f0585c184905c9d9da74a342a36d418e024..f472172ba10cf32291efd18e1d00c33f5b312a56 100644
--- a/cpu.cmake
+++ b/cpu.cmake
@@ -147,11 +147,6 @@ ENDIF()
 # LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -DMPICH_IGNORE_CXX_SEEK)
 # LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -DMPICH_SKIP_MPICXX)
 # ENDIF()
-#message("MPI_CXX_LIBRARY: " ${MPI_CXX_LIBRARY})
-#IF(MPI_CXX_LIBRARY)
-#SET(MPI_LIBRARY ${MPI_LIBRARY} ${MPI_CXX_LIBRARY})
-#message("MPI_LIBRARY: " ${MPI_LIBRARY})
-#ENDIF() 
 
 
 #IF(${USE_DEM_COUPLING})
@@ -161,7 +156,6 @@ ENDIF()
 add_subdirectory(3rdParty/MuParser)
 
 add_subdirectory(src/cpu/VirtualFluidsCore)
-#add_subdirectory(VirtualFluidsBasic)
 
-set (APPS_ROOT_CPU "${VF_ROOT_DIR}/apps/cpu")
+set (APPS_ROOT_CPU ${VF_ROOT_DIR}/apps/cpu)
 include(${APPS_ROOT_CPU}/Applications.cmake)
\ No newline at end of file
diff --git a/gpu.cmake b/gpu.cmake
index 8e71c74ab7d6613c4acdc6801771a281ccd87d93..efccc2dcf6b8792f4b9e9d0e98242eba2db94b19 100644
--- a/gpu.cmake
+++ b/gpu.cmake
@@ -1,28 +1,5 @@
 cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
 
-if(POLICY CMP0042)
-    CMAKE_POLICY(SET CMP0042 NEW)
-endif()
-if(POLICY CMP0020)
-    CMAKE_POLICY(SET CMP0020 NEW)
-endif()
-if(POLICY CMP0028)
-    CMAKE_POLICY(SET CMP0028 NEW)
-endif()
-if(POLICY CMP0037)
-    CMAKE_POLICY(SET CMP0037 NEW)
-endif()
-if(POLICY CMP0047)
-    CMAKE_POLICY(SET CMP0047 NEW)
-endif()
-if(POLICY CMP0053)
-    CMAKE_POLICY(SET CMP0053 NEW)
-endif()
-if(POLICY CMP0054)
-    CMAKE_POLICY(SET CMP0054 NEW)
-endif()
-
-
 if(UNIX)
     set(CMAKE_CXX_STANDARD 14)
 endif()
@@ -34,10 +11,6 @@ endif()
 
 project(VirtualFluidsGPU)
 
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-include_directories(${CMAKE_BINARY_DIR}/gpu)
-
 set(libraryFolder    "libs")
 set(gksLibraryFolder "libs/GKS")
 
@@ -60,7 +33,6 @@ ENDIF(MSVC)
 #############################################################
 ###                         OPTIONS                       ###
 #############################################################
-option(BUILD_SHARED_LIBS        "Build shared libraries"      ON )
 option(VF.BUILD_VF_GPU          "Build VirtualFluids GPU"     ON )
 option(VF.BUILD_VF_GKS          "Build VirtualFluids GKS"     OFF )
 option(VF.BUILD_VF_TRAFFIC      "Build VirtualFluids Traffic" ON)
@@ -77,13 +49,12 @@ ENDIF()
 
 enable_language(CUDA)
 
-#sharedLibs()
-
 #############################################################
 
 IF( VF.BUILD_VF_GKS )
     # only use this with device of CC larger than 6.0
-    set(CMAKE_CUDA_FLAGS " -arch=sm_60 -Xptxas=\"-v\"" CACHE STRING "" FORCE)
+    set(CMAKE_CUDA_FLAGS "-Xptxas=\"-v\"" CACHE STRING "" FORCE)
+    set(CMAKE_CUDA_ARCHITECTURES 60)
 ENDIF()
 
 set(CMAKE_CUDA_FLAGS_DEBUG " -G" CACHE STRING "" FORCE)
@@ -125,11 +96,12 @@ ENDIF()
 ###                  Virtual Fluids GKS                   ###
 #############################################################
 
+
 IF (VF.BUILD_VF_GKS)
-    add_subdirectory(targets/libs/GksMeshAdapter)
-    add_subdirectory(targets/libs/GksVtkAdapter)
+    add_subdirectory(src/gpu/GksMeshAdapter)
+    add_subdirectory(src/gpu/GksVtkAdapter)
 
-    add_subdirectory(targets/libs/GksGpu)
+    add_subdirectory(src/gpu/GksGpu)
 
     #add_subdirectory(targets/apps/GKS/gksTest)
     #add_subdirectory(targets/apps/GKS/ChannelFlow)
@@ -161,13 +133,13 @@ IF (VF.BUILD_VF_GKS)
     #add_subdirectory(targets/apps/GKS/ConcreteHeatFluxBCTest)
 
     #add_subdirectory(targets/apps/GKS/PoolFire)
-    add_subdirectory(targets/apps/GKS/Flame7cm)
-    add_subdirectory(targets/apps/GKS/SandiaFlame_1m)
+    add_subdirectory(apps/gpu/GKS/Flame7cm)
+    #add_subdirectory(targets/apps/GKS/SandiaFlame_1m)
     #add_subdirectory(targets/apps/GKS/Candle)
 
     #add_subdirectory(targets/apps/GKS/MultiGPU)
-    add_subdirectory(targets/apps/GKS/MultiGPU_nD)
-    add_subdirectory(targets/apps/GKS/SingleGPU)
+    #add_subdirectory(targets/apps/GKS/MultiGPU_nD)
+    #add_subdirectory(targets/apps/GKS/SingleGPU)
 ELSE()
     MESSAGE( STATUS "exclude Virtual Fluids GKS." )
 ENDIF()
diff --git a/src/basics/CMakeLists.txt b/src/basics/CMakeLists.txt
index 3d5d423d520ac9a31d4c224df97c6f1779188c7c..e267ee03d7b8550d97196d9a2bb89e2146f7e00c 100644
--- a/src/basics/CMakeLists.txt
+++ b/src/basics/CMakeLists.txt
@@ -4,15 +4,18 @@ include(Core/buildInfo.cmake)
 vf_add_library(BUILDTYPE static EXCLUDE buildInfo.in.cpp)
 
 vf_get_library_name (library_name)
-target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/Core)
-target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/geometry3d)
-target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/geometry3d/KdTree)
-target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/basics/container)
-target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/basics/memory)
-target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/basics/objects)
-target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/basics/transmitter)
-target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/utilities)
-target_include_directories(${library_name} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/basics/writer)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Core)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/geometry3d)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/geometry3d/KdTree)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/basics/container)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/basics/memory)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/basics/objects)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/basics/parallel)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/basics/transmitter)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/basics/utilities)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/basics/writer)
+
+
 
 IF(MSVC)
     target_compile_definitions(${library_name} PUBLIC NOMINMAX) # Disable Min/Max-Macros
diff --git a/src/cpu/VirtualFluidsCore/CMakeLists.txt b/src/cpu/VirtualFluidsCore/CMakeLists.txt
index 05e0d946afbfc0fcef1aef23c2270e2e06d2adba..02a6d775322ce0568b20e55fd86934e4e253429c 100644
--- a/src/cpu/VirtualFluidsCore/CMakeLists.txt
+++ b/src/cpu/VirtualFluidsCore/CMakeLists.txt
@@ -50,29 +50,51 @@ IF(${USE_FETOL})
 
    SET(LINK_LIBRARY optimized ${JAVA_JVM_LIBRARY} debug ${JAVA_JVM_LIBRARY})
    SET(CAB_ADDITIONAL_LINK_LIBRARIES ${CAB_ADDITIONAL_LINK_LIBRARIES} ${LINK_LIBRARY})
-   
+
    SET(LINK_LIBRARY optimized ${YAML_RELEASE_LIBRARY} debug ${YAML_DEBUG_LIBRARY})
    SET(CAB_ADDITIONAL_LINK_LIBRARIES ${CAB_ADDITIONAL_LINK_LIBRARIES} ${LINK_LIBRARY})
-   
+
    SET(LINK_LIBRARY optimized ${FETOL_RELEASE_LIBRARY} debug ${FETOL_DEBUG_LIBRARY})
    SET(CAB_ADDITIONAL_LINK_LIBRARIES ${CAB_ADDITIONAL_LINK_LIBRARIES} ${LINK_LIBRARY})
 ENDIF()
 
 IF(${USE_DEM_COUPLING})
-   INCLUDE(${CMAKE_CURRENT_LIST_DIR}/../DemCoupling/DemCoupling.cmake)
+   INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/../DemCoupling/DemCoupling.cmake)
 ENDIF()
 
-INCLUDE(${CMAKE_CURRENT_LIST_DIR}/IncludsList.cmake)
-
 vf_add_library(BUILDTYPE static DEPENDS basics MuParser ${MPI_LIBRARY} ${CAB_ADDITIONAL_LINK_LIBRARIES})
 
 vf_get_library_name(library_name)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/geometry3d)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/geometry3d/KdTree)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/basics/container)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/basics/memory)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/basics/objects)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/basics/transmitter)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/basics/utilities)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/basics/writer)
+
+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)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Interactors)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/LBM)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Parallel)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Grid)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Visitors)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/CoProcessors)
+target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Utilities)
+
+
+target_include_directories(${library_name} PUBLIC ${VF_THIRD_DIR})
+target_include_directories(${library_name} PUBLIC ${METIS_INCLUDEDIR})
+
+
+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})
+ENDIF()
+IF(${USE_FETOL})
+   # INCLUDE_DIRECTORIES(${SOURCE_DIR}/VirtualFluidsCore/FETOL)  TODO: Did not exists?
+   target_include_directories(${library_name} PRIVATE ${YAML_INCLUDEDIR})
+   target_include_directories(${library_name} PRIVATE ${BOND_INCLUDEDIR})
+   target_include_directories(${library_name} PRIVATE ${FETOL_INCLUDEDIR})
+ENDIF()
+
diff --git a/src/cpu/VirtualFluidsCore/IncludsList.cmake b/src/cpu/VirtualFluidsCore/IncludsList.cmake
deleted file mode 100644
index b2a5a2f223c2b7a015cc36855d8455ef3a64f192..0000000000000000000000000000000000000000
--- a/src/cpu/VirtualFluidsCore/IncludsList.cmake
+++ /dev/null
@@ -1,33 +0,0 @@
-set(VirtualFluidsCore_source_dir ${VF_SRC_DIR}/cpu/VirtualFluidsCore)
-vf_get_library_name(library_name)
-
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/BoundaryConditions)
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/Connectors)
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/Data)
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/Interactors)
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/LBM)
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/Parallel)
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/Grid)
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/Visitors)
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/CoProcessors)
-INCLUDE_DIRECTORIES(${VirtualFluidsCore_source_dir}/Utilities)
-
-INCLUDE_DIRECTORIES(${VF_THIRD_DIR})
-
-IF(${USE_BOOST})
-   INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
-ENDIF()
-
-INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH})
-INCLUDE_DIRECTORIES(${METIS_INCLUDEDIR})
-INCLUDE_DIRECTORIES(${ZOLTAN_INCLUDEDIR})
-IF(${USE_VTK})
-    INCLUDE_DIRECTORIES(${VTK_INCLUDE_DIRS})
-ENDIF()
-IF(${USE_FETOL})
-    # INCLUDE_DIRECTORIES(${SOURCE_DIR}/VirtualFluidsCore/FETOL)  TODO: Did not exists?
-    INCLUDE_DIRECTORIES(${YAML_INCLUDEDIR})
-    INCLUDE_DIRECTORIES(${BOND_INCLUDEDIR})
-    INCLUDE_DIRECTORIES(${FETOL_INCLUDEDIR})
-ENDIF()
-
diff --git a/src/gpu/GksGpu/3rdPartyLinking.cmake b/src/gpu/GksGpu/3rdPartyLinking.cmake
deleted file mode 100644
index ede6d1c726b5dde51d97495345169c7840bbf3fd..0000000000000000000000000000000000000000
--- a/src/gpu/GksGpu/3rdPartyLinking.cmake
+++ /dev/null
@@ -1,6 +0,0 @@
-include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/Cuda/Link.cmake)
-linkCuda(${targetName})
-include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/MPI/Link.cmake)
-linkMPI(${targetName})
-include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/OpenMP/Link.cmake)
-linkOpenMP(${targetName})
diff --git a/src/gpu/GksGpu/Analyzer/ConvergenceAnalyzer.h b/src/gpu/GksGpu/Analyzer/ConvergenceAnalyzer.h
index 46e0315c21373dcad1b698b7121f63c3c0efd429..b6697557ae3172efee19c63ea6523a6b9e532126 100644
--- a/src/gpu/GksGpu/Analyzer/ConvergenceAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/ConvergenceAnalyzer.h
@@ -4,6 +4,7 @@
 #include <vector>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -11,11 +12,13 @@
 
 #include "FlowStateData/FlowStateData.cuh"
 
+#include "GksGpu_export.h"
+
 namespace GksGpu {
 
 struct DataBase;
 
-class VIRTUALFLUIDS_GPU_EXPORT ConvergenceAnalyzer
+class GKSGPU_EXPORT ConvergenceAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/Analyzer/CupsAnalyzer.cpp b/src/gpu/GksGpu/Analyzer/CupsAnalyzer.cpp
index 3407db77f94fecbb25020ee86eb60b80b497be8c..d1a1e5e7c22a241507d5e0fcd87b778d9ce4bb17 100644
--- a/src/gpu/GksGpu/Analyzer/CupsAnalyzer.cpp
+++ b/src/gpu/GksGpu/Analyzer/CupsAnalyzer.cpp
@@ -7,6 +7,7 @@
 #include "Core/Logger/Logger.h"
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "DataBase/DataBase.h"
 
diff --git a/src/gpu/GksGpu/Analyzer/CupsAnalyzer.h b/src/gpu/GksGpu/Analyzer/CupsAnalyzer.h
index ffb03aed509570cf651469097804ad1ff997973d..b4c2e087e2c99ea2747cbe2280698b22af70da23 100644
--- a/src/gpu/GksGpu/Analyzer/CupsAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/CupsAnalyzer.h
@@ -4,16 +4,18 @@
 #include <string>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
 #include "Core/Timer/Timer.h"
+#include "GksGpu_export.h"
 
 namespace GksGpu {
 
 struct DataBase;
 
-class VIRTUALFLUIDS_GPU_EXPORT CupsAnalyzer
+class GKSGPU_EXPORT CupsAnalyzer
 {
 private:
     SPtr<Timer> timer;
diff --git a/src/gpu/GksGpu/Analyzer/EnstrophyAnalyzer.h b/src/gpu/GksGpu/Analyzer/EnstrophyAnalyzer.h
index e8d3723d466c7c5acdfe6df5cd64aee78dc1e10b..409f742c63a27e138def496e202292096bfda44a 100644
--- a/src/gpu/GksGpu/Analyzer/EnstrophyAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/EnstrophyAnalyzer.h
@@ -5,6 +5,7 @@
 #include <string>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -17,7 +18,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VIRTUALFLUIDS_GPU_EXPORT EnstrophyAnalyzer
+class GKSGPU_EXPORT EnstrophyAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/Analyzer/HeatFluxAnalyzer.h b/src/gpu/GksGpu/Analyzer/HeatFluxAnalyzer.h
index bf75028adfd7e8624e7fda9bf56b9796b56bc3e0..0bca4db1ae5302224e53296df3cf87bda2416820 100644
--- a/src/gpu/GksGpu/Analyzer/HeatFluxAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/HeatFluxAnalyzer.h
@@ -5,6 +5,7 @@
 #include <string>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -19,7 +20,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VIRTUALFLUIDS_GPU_EXPORT HeatFluxAnalyzer
+class GKSGPU_EXPORT HeatFluxAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/Analyzer/KineticEnergyAnalyzer.h b/src/gpu/GksGpu/Analyzer/KineticEnergyAnalyzer.h
index f5b0adcb44741f04b7c13e0e27ea7013c21c59e1..213c061782d6c5f70e7f4618ae76c662be0073e2 100644
--- a/src/gpu/GksGpu/Analyzer/KineticEnergyAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/KineticEnergyAnalyzer.h
@@ -5,6 +5,7 @@
 #include <string>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -15,7 +16,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VIRTUALFLUIDS_GPU_EXPORT KineticEnergyAnalyzer
+class GKSGPU_EXPORT KineticEnergyAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/Analyzer/PointTimeSeriesAnalyzer.h b/src/gpu/GksGpu/Analyzer/PointTimeSeriesAnalyzer.h
index 8a5bb57bc1a88e5a993ed1ebc6e00c6daa35b58a..3c53979037cb10115e94c7a1d2f5f81754c3dc00 100644
--- a/src/gpu/GksGpu/Analyzer/PointTimeSeriesAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/PointTimeSeriesAnalyzer.h
@@ -6,6 +6,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -29,7 +30,7 @@ struct PointTimeSeriesAnalyzerStruct
     uint cellIndex;
 };
 
-class VIRTUALFLUIDS_GPU_EXPORT PointTimeSeriesAnalyzer
+class GKSGPU_EXPORT PointTimeSeriesAnalyzer
 {
 public:
 
diff --git a/src/gpu/GksGpu/Analyzer/PointTimeSeriesCollector.h b/src/gpu/GksGpu/Analyzer/PointTimeSeriesCollector.h
index b591497be35b6a5f309a69113c1d8d3b43753a04..3d7b57c9f4c1d09b09688e82e88b607b16ff16b2 100644
--- a/src/gpu/GksGpu/Analyzer/PointTimeSeriesCollector.h
+++ b/src/gpu/GksGpu/Analyzer/PointTimeSeriesCollector.h
@@ -7,6 +7,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -20,7 +21,7 @@ class  PointTimeSeriesAnalyzer;
 struct DataBase;
 struct Parameters;
 
-class VIRTUALFLUIDS_GPU_EXPORT PointTimeSeriesCollector
+class GKSGPU_EXPORT PointTimeSeriesCollector
 {
 public:
 
diff --git a/src/gpu/GksGpu/Analyzer/TurbulenceAnalyzer.h b/src/gpu/GksGpu/Analyzer/TurbulenceAnalyzer.h
index 0f867fa34e55742cf939fb83fd104e8c800344c9..57e1bc89a6e506b80648d5c40ab53d6b1047d3df 100644
--- a/src/gpu/GksGpu/Analyzer/TurbulenceAnalyzer.h
+++ b/src/gpu/GksGpu/Analyzer/TurbulenceAnalyzer.h
@@ -6,6 +6,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -39,7 +40,7 @@ struct TurbulenceAnalyzerStruct
     real* p ;
 };
 
-class VIRTUALFLUIDS_GPU_EXPORT TurbulenceAnalyzer
+class GKSGPU_EXPORT TurbulenceAnalyzer
 {
 private:
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/AdiabaticWall.h b/src/gpu/GksGpu/BoundaryConditions/AdiabaticWall.h
index e040828431d08e7973ebb3e8350bed93e2d43293..c35e08c7d4b0fcd0186e607941811622685d32eb 100644
--- a/src/gpu/GksGpu/BoundaryConditions/AdiabaticWall.h
+++ b/src/gpu/GksGpu/BoundaryConditions/AdiabaticWall.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -26,7 +27,7 @@ struct AdiabaticWallStruct
     bool useSecondCells;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT AdiabaticWall : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT AdiabaticWall : public BoundaryCondition //, public IsothermalWallStruct
 {
     Vec3 velocity;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.h b/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.h
index f4675a72c69f6d82bb925b2c1bd727b756019ee8..3d79879f060fc6ed06e95c84d8f6a410d31ab1dc 100644
--- a/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.h
+++ b/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.h
@@ -7,6 +7,7 @@
 #include <vector>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -30,7 +31,7 @@ struct BoundaryConditionStruct
     uint* secondCells;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT BoundaryCondition : virtual public BoundaryConditionStruct, public std::enable_shared_from_this<BoundaryCondition>
+struct GKSGPU_EXPORT BoundaryCondition : virtual public BoundaryConditionStruct, public std::enable_shared_from_this<BoundaryCondition>
 {
     SPtr<DataBaseAllocator> myAllocator;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/ConcreteHeatFlux.h b/src/gpu/GksGpu/BoundaryConditions/ConcreteHeatFlux.h
index 35ec0723566db5a82354b57c12cbb57479f7b95c..14c1f2519d1015a0a06956931255e07a2e0c0cc0 100644
--- a/src/gpu/GksGpu/BoundaryConditions/ConcreteHeatFlux.h
+++ b/src/gpu/GksGpu/BoundaryConditions/ConcreteHeatFlux.h
@@ -6,6 +6,7 @@
 #include <thrust/device_vector.h>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -39,7 +40,7 @@ struct ConcreteHeatFluxStruct
     real ambientTemperature;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT ConcreteHeatFlux : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT ConcreteHeatFlux : public BoundaryCondition //, public IsothermalWallStruct
 {
     real* temperatures;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/CreepingMassFlux.h b/src/gpu/GksGpu/BoundaryConditions/CreepingMassFlux.h
index 0e09a56a8436348a1f1b6ed8abb1791626887467..7441f17a293c411b7b01e206aa27f013baa71891 100644
--- a/src/gpu/GksGpu/BoundaryConditions/CreepingMassFlux.h
+++ b/src/gpu/GksGpu/BoundaryConditions/CreepingMassFlux.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -28,7 +29,7 @@ struct CreepingMassFluxStruct
     real lambda;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT CreepingMassFlux : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT CreepingMassFlux : public BoundaryCondition //, public IsothermalWallStruct
 {
     real rho;
     real velocity;
diff --git a/src/gpu/GksGpu/BoundaryConditions/Extrapolation.h b/src/gpu/GksGpu/BoundaryConditions/Extrapolation.h
index c62673ef2cd9aec1bdfce56b30231552fe60b004..5b7f63ef6bcb0e2f449695fe561081b5bd971409 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Extrapolation.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Extrapolation.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -22,7 +23,7 @@ struct ExtrapolationStruct
     uint* secondCells;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT Extrapolation : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT Extrapolation : public BoundaryCondition //, public IsothermalWallStruct
 {
     Extrapolation( SPtr<DataBase> dataBase );
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/HeatFlux.h b/src/gpu/GksGpu/BoundaryConditions/HeatFlux.h
index c16389ff0d8766896c63d4904e0e9c984b16dfd0..f5e10aa35e788b75f2bf77e3d76fca29e0f585b3 100644
--- a/src/gpu/GksGpu/BoundaryConditions/HeatFlux.h
+++ b/src/gpu/GksGpu/BoundaryConditions/HeatFlux.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -26,7 +27,7 @@ struct HeatFluxStruct
     real HRRPUA;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT HeatFlux : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT HeatFlux : public BoundaryCondition //, public IsothermalWallStruct
 {
     real HRRPUA;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/Inflow.h b/src/gpu/GksGpu/BoundaryConditions/Inflow.h
index 3de5dd16024c81f95eb54a8114f8529f9d834b40..e6b23a58ac7e7fe45e57f0056416743d039b789c 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Inflow.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Inflow.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -30,7 +31,7 @@ struct InflowStruct
     real a0, a1, a2;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT Inflow : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT Inflow : public BoundaryCondition //, public IsothermalWallStruct
 {
     Vec3 velocity;
     real lambda;
diff --git a/src/gpu/GksGpu/BoundaryConditions/InflowComplete.h b/src/gpu/GksGpu/BoundaryConditions/InflowComplete.h
index 9db64f8269a97cc9ff647ac751d8af38997ddba2..778856d22878b41567f2bd2a6e171f92ee453ea4 100644
--- a/src/gpu/GksGpu/BoundaryConditions/InflowComplete.h
+++ b/src/gpu/GksGpu/BoundaryConditions/InflowComplete.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -26,7 +27,7 @@ struct InflowCompleteStruct
     PrimitiveVariables prim;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT InflowComplete : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT InflowComplete : public BoundaryCondition //, public IsothermalWallStruct
 {
     PrimitiveVariables prim;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/IsothermalWall.h b/src/gpu/GksGpu/BoundaryConditions/IsothermalWall.h
index 4e33255aa1e77bb65445c05bd2ec2911844bbf2e..7717ebd50991404277e8cbdddc0955fb8a18661a 100644
--- a/src/gpu/GksGpu/BoundaryConditions/IsothermalWall.h
+++ b/src/gpu/GksGpu/BoundaryConditions/IsothermalWall.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -29,7 +30,7 @@ struct IsothermalWallStruct
     bool useSecondCells;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT IsothermalWall : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT IsothermalWall : public BoundaryCondition //, public IsothermalWallStruct
 {
     Vec3 velocity;
     real lambda;
diff --git a/src/gpu/GksGpu/BoundaryConditions/MassCompensation.h b/src/gpu/GksGpu/BoundaryConditions/MassCompensation.h
index 4c7b38b531a69731e749767c616908789968f254..48349c58d335736043bbd80ac24eb8c5f2fccbe2 100644
--- a/src/gpu/GksGpu/BoundaryConditions/MassCompensation.h
+++ b/src/gpu/GksGpu/BoundaryConditions/MassCompensation.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -28,7 +29,7 @@ struct MassCompensationStruct
     real lambda;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT MassCompensation : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT MassCompensation : public BoundaryCondition //, public IsothermalWallStruct
 {
     real rho;
     real velocity;
diff --git a/src/gpu/GksGpu/BoundaryConditions/Open.h b/src/gpu/GksGpu/BoundaryConditions/Open.h
index 3f23f0114883746a7d97e195fb2f76d34d3b82dc..d3f489ed83796fa981909f3def9b5014f4ba549c 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Open.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Open.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -28,7 +29,7 @@ struct OpenStruct
     real velocityLimiter;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT Open : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT Open : public BoundaryCondition //, public IsothermalWallStruct
 {
     PrimitiveVariables prim;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h b/src/gpu/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h
index f8e6e31b6a4ff983d8e3ebdae110b23dd7a19c11..a5a64d9ecd37ba31ab250938f0826e4b995cb737 100644
--- a/src/gpu/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h
+++ b/src/gpu/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -32,7 +33,7 @@ struct PassiveScalarDiricletStruct
     real S_2;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT PassiveScalarDiriclet : public BoundaryCondition
+struct GKSGPU_EXPORT PassiveScalarDiriclet : public BoundaryCondition
 {
     real S_1;
     real S_2;
diff --git a/src/gpu/GksGpu/BoundaryConditions/Periodic.h b/src/gpu/GksGpu/BoundaryConditions/Periodic.h
index 9f287de60304aab7d117098f1ff10806e437353f..e8ab6e145d48e728fbc2675a16950094b8d1d0f1 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Periodic.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Periodic.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -13,7 +14,7 @@
 
 namespace GksGpu{
 
-struct VIRTUALFLUIDS_GPU_EXPORT Periodic : public BoundaryCondition
+struct GKSGPU_EXPORT Periodic : public BoundaryCondition
 {
     Periodic( SPtr<DataBase> dataBase ) : BoundaryCondition( dataBase ){}
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/Pressure.h b/src/gpu/GksGpu/BoundaryConditions/Pressure.h
index f324037700a4cb6ecf31b8f5df7816441e29d2f7..459b8d26a2e95d1d42ecc85c7b9d9190145f7803 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Pressure.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Pressure.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -31,7 +32,7 @@ struct PressureStruct
     real p0;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT Pressure : public BoundaryCondition
+struct GKSGPU_EXPORT Pressure : public BoundaryCondition
 {
     real p0;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/Pressure2.h b/src/gpu/GksGpu/BoundaryConditions/Pressure2.h
index 676a51c11593efb905ee3717fb7dd86d9963441f..d61c84ae9cf28a846f0a5295c5a3eea6905a56d2 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Pressure2.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Pressure2.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -31,7 +32,7 @@ struct Pressure2Struct
     real p0;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT Pressure2 : public BoundaryCondition
+struct GKSGPU_EXPORT Pressure2 : public BoundaryCondition
 {
     real p0;
 
diff --git a/src/gpu/GksGpu/BoundaryConditions/SalinasVazquez.h b/src/gpu/GksGpu/BoundaryConditions/SalinasVazquez.h
index c093a98251c8cd4c9b0054e7ddaf0ea902245d44..4d3dbd7b6bf2668bcaf9dc84cbb6865c191eee0c 100644
--- a/src/gpu/GksGpu/BoundaryConditions/SalinasVazquez.h
+++ b/src/gpu/GksGpu/BoundaryConditions/SalinasVazquez.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -29,7 +30,7 @@ struct SalinasVazquezStruct
     bool useSecondCells;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT SalinasVazquez : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT SalinasVazquez : public BoundaryCondition //, public IsothermalWallStruct
 {
     real lambdaMX;
     real lambdaPX;
diff --git a/src/gpu/GksGpu/BoundaryConditions/Symmetry.h b/src/gpu/GksGpu/BoundaryConditions/Symmetry.h
index b88005ec3c242ed4b0e8a25915b851dfb27fa007..3132628b72858e496a74efc9276074f9f37e94b4 100644
--- a/src/gpu/GksGpu/BoundaryConditions/Symmetry.h
+++ b/src/gpu/GksGpu/BoundaryConditions/Symmetry.h
@@ -4,6 +4,7 @@
 #include <memory>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -24,7 +25,7 @@ struct SymmetryStruct
     char direction;
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT Symmetry : public BoundaryCondition //, public IsothermalWallStruct
+struct GKSGPU_EXPORT Symmetry : public BoundaryCondition //, public IsothermalWallStruct
 {
     char direction;
 
diff --git a/src/gpu/GksGpu/CMakeLists.txt b/src/gpu/GksGpu/CMakeLists.txt
index 477314aa7f7c897f1eb97514e4066a0d80f7f592..67e536e988abac35e4cac76c0ed6605cd37321d7 100644
--- a/src/gpu/GksGpu/CMakeLists.txt
+++ b/src/gpu/GksGpu/CMakeLists.txt
@@ -1,18 +1,6 @@
-setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) 
 
-set(linkDirectories "")
-set(libsToLink GksMeshAdapter Core)
+vf_add_library(BUILDTYPE static DEPENDS basics GksMeshAdapter)
 
-set(includeDirectories ${CMAKE_SOURCE_DIR}/src/${targetName}
-                       ${CMAKE_SOURCE_DIR}/src
-                       ${CMAKE_SOURCE_DIR}/src/GksMeshAdapter
-                       ${CMAKE_SOURCE_DIR}/src/Core )
-
-#glob files and save in MY_SRCS
-include(CMakePackage.cmake)
-
-buildLib(${targetName} "${MY_SRCS}" "${linkDirectories}" "${libsToLink}" "${includeDirectories}")
-groupTarget(${targetName} ${gksLibraryFolder})
-
-#Specify the linking to 3rdParty libs
-include(3rdPartyLinking.cmake)
+include (${VF_CMAKE_DIR}/3rd/cuda.cmake)
+include (${VF_CMAKE_DIR}/3rd/mpi.cmake)
+include (${VF_CMAKE_DIR}/3rd/OpenMP.cmake)
diff --git a/src/gpu/GksGpu/CMakePackage.cmake b/src/gpu/GksGpu/CMakePackage.cmake
deleted file mode 100644
index 7ec316fe087d1886a7dbdbfb7298bae1fc7ddedd..0000000000000000000000000000000000000000
--- a/src/gpu/GksGpu/CMakePackage.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-#FILE ENDINGS
-resetFileEndingsToCollect()
-addCAndCPPFileTypes()
-
-#GLOB SOURCE FILES IN MY_SRCS
-unset(MY_SRCS)
-includeRecursiveAllFilesFrom(${targetName} ${CMAKE_CURRENT_LIST_DIR})
-includeRecursiveProductionFilesFrom(${targetName} ${CMAKE_SOURCE_DIR}/src/${targetName})
\ No newline at end of file
diff --git a/src/gpu/GksGpu/CellUpdate/CellUpdate.h b/src/gpu/GksGpu/CellUpdate/CellUpdate.h
index 9a8a8014239dffcb71254a69d2e7109d18fae8f1..de4d5494a6c114b4dd5e6a178e32f6545de446be 100644
--- a/src/gpu/GksGpu/CellUpdate/CellUpdate.h
+++ b/src/gpu/GksGpu/CellUpdate/CellUpdate.h
@@ -2,6 +2,7 @@
 #define  CellUpdate_H
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -11,7 +12,7 @@
 
 namespace GksGpu {
 
-class VIRTUALFLUIDS_GPU_EXPORT CellUpdate
+class GKSGPU_EXPORT CellUpdate
 {
 public:
 
diff --git a/src/gpu/GksGpu/Communication/Communicator.h b/src/gpu/GksGpu/Communication/Communicator.h
index 40b9207ffd4575fc6b35e4b585ec2d0959a79ffe..87a72a37f379741652e44e01e9cf3216ca930827 100644
--- a/src/gpu/GksGpu/Communication/Communicator.h
+++ b/src/gpu/GksGpu/Communication/Communicator.h
@@ -7,6 +7,7 @@
 //#include <mutex>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -19,7 +20,7 @@ namespace GksGpu {
 class  DataBaseAllocator;
 struct DataBase;
 
-struct VIRTUALFLUIDS_GPU_EXPORT Communicator : public std::enable_shared_from_this<Communicator>
+struct GKSGPU_EXPORT Communicator : public std::enable_shared_from_this<Communicator>
 {
     SPtr<DataBaseAllocator> myAllocator;
 
diff --git a/src/gpu/GksGpu/Communication/MpiUtility.h b/src/gpu/GksGpu/Communication/MpiUtility.h
index a26b089ea334f47d757f77733b9d3e4ee9bebba4..96484a2aabaac887ee4497944e143da162e72853 100644
--- a/src/gpu/GksGpu/Communication/MpiUtility.h
+++ b/src/gpu/GksGpu/Communication/MpiUtility.h
@@ -4,6 +4,7 @@
 #include <mpi.h>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -16,7 +17,7 @@ namespace GksGpu {
 class  DataBaseAllocator;
 struct DataBase;
 
-struct VIRTUALFLUIDS_GPU_EXPORT MpiUtility
+struct GKSGPU_EXPORT MpiUtility
 {
     static int getMpiRankBeforeInit();
 
diff --git a/src/gpu/GksGpu/CudaUtility/CudaUtility.h b/src/gpu/GksGpu/CudaUtility/CudaUtility.h
index 8bd8dde046b691a362879278a2130ec623f49153..b9008cd73869b4a7379b479656ffd0eec0cc9f6b 100644
--- a/src/gpu/GksGpu/CudaUtility/CudaUtility.h
+++ b/src/gpu/GksGpu/CudaUtility/CudaUtility.h
@@ -5,12 +5,13 @@
 #include <cuda_runtime.h>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Core/DataTypes.h"
 
 namespace GksGpu {
 
-class VIRTUALFLUIDS_GPU_EXPORT CudaUtility
+class GKSGPU_EXPORT CudaUtility
 {
 public:
 
diff --git a/src/gpu/GksGpu/DataBase/DataBase.h b/src/gpu/GksGpu/DataBase/DataBase.h
index e2725a93be3368ab43b55475e7ac9f00ee3379e5..ca485d47b2058824f661ef1ad2f5461ecbf57851 100644
--- a/src/gpu/GksGpu/DataBase/DataBase.h
+++ b/src/gpu/GksGpu/DataBase/DataBase.h
@@ -12,6 +12,7 @@
 #include "Core/ArrayTypes.h"
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Definitions/AccumulatorDataType.h"
 
@@ -28,7 +29,7 @@ struct PerLevelCounts;
 struct DataBaseStruct;
 struct Communicator;
 
-struct VIRTUALFLUIDS_GPU_EXPORT DataBase : public std::enable_shared_from_this<DataBase>
+struct GKSGPU_EXPORT DataBase : public std::enable_shared_from_this<DataBase>
 {
     //////////////////////////////////////////////////////////////////////////
     // Management
@@ -147,7 +148,7 @@ struct VIRTUALFLUIDS_GPU_EXPORT DataBase : public std::enable_shared_from_this<D
     std::string getDeviceType();
 };
 
-struct VIRTUALFLUIDS_GPU_EXPORT PerLevelCounts
+struct GKSGPU_EXPORT PerLevelCounts
 {
     uint numberOfCells;
     uint startOfCells;
diff --git a/src/gpu/GksGpu/DataBase/DataBaseAllocator.h b/src/gpu/GksGpu/DataBase/DataBaseAllocator.h
index a19ed987bfa3f125a6b7e146fe6294c751b651c7..04daba9dc09e1947bba713ba2ae7fd08ff691c9c 100644
--- a/src/gpu/GksGpu/DataBase/DataBaseAllocator.h
+++ b/src/gpu/GksGpu/DataBase/DataBaseAllocator.h
@@ -8,6 +8,7 @@
 #include "PointerDefinitions.h"
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 class  GksMeshAdapter;
 
@@ -17,7 +18,7 @@ struct DataBase;
 struct BoundaryCondition;
 struct Communicator;
 
-class VIRTUALFLUIDS_GPU_EXPORT DataBaseAllocator {
+class GKSGPU_EXPORT DataBaseAllocator {
 
 public:
 
diff --git a/src/gpu/GksGpu/DataBase/DataBaseAllocatorCPU.h b/src/gpu/GksGpu/DataBase/DataBaseAllocatorCPU.h
index b42de3e4d1c24981531d066100598a95dd7a58fa..16b2c8096dfcbcda1cd804b7ba02efceee7ca09d 100644
--- a/src/gpu/GksGpu/DataBase/DataBaseAllocatorCPU.h
+++ b/src/gpu/GksGpu/DataBase/DataBaseAllocatorCPU.h
@@ -7,10 +7,11 @@
 #include "DataBaseAllocator.h"
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 namespace GksGpu {
 
-class VIRTUALFLUIDS_GPU_EXPORT DataBaseAllocatorCPU : public DataBaseAllocator {
+class GKSGPU_EXPORT DataBaseAllocatorCPU : public DataBaseAllocator {
 
 public:
 
diff --git a/src/gpu/GksGpu/DataBase/DataBaseAllocatorGPU.h b/src/gpu/GksGpu/DataBase/DataBaseAllocatorGPU.h
index 44649060d45d7c67d4b233b3caf828bbce20659e..8c05836db164df22d84130afd01029b174ee9fb7 100644
--- a/src/gpu/GksGpu/DataBase/DataBaseAllocatorGPU.h
+++ b/src/gpu/GksGpu/DataBase/DataBaseAllocatorGPU.h
@@ -7,10 +7,11 @@
 #include "DataBaseAllocator.h"
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 namespace GksGpu {
 
-class VIRTUALFLUIDS_GPU_EXPORT DataBaseAllocatorGPU : public DataBaseAllocator {
+class GKSGPU_EXPORT DataBaseAllocatorGPU : public DataBaseAllocator {
 
 public:
 
diff --git a/src/gpu/GksGpu/DataBase/DataBaseStruct.h b/src/gpu/GksGpu/DataBase/DataBaseStruct.h
index 6ab490490c8905248749e472eb2cd4dc340f1883..8e6e9fd9b03a46d55140e193bb491b8c89d32783 100644
--- a/src/gpu/GksGpu/DataBase/DataBaseStruct.h
+++ b/src/gpu/GksGpu/DataBase/DataBaseStruct.h
@@ -7,7 +7,7 @@
 
 namespace GksGpu{ 
 
-struct VIRTUALFLUIDS_GPU_EXPORT DataBaseStruct
+struct GKSGPU_EXPORT DataBaseStruct
 {
     uint  numberOfCells;
     uint  numberOfFaces;
diff --git a/src/gpu/GksGpu/FluxComputation/ApplyFlux.cuh b/src/gpu/GksGpu/FluxComputation/ApplyFlux.cuh
index da9e34b1c02c194acec28e11fab0ad1a33bd1fb6..ed9abe98fb96f6947629e3e368e6a08d45297f68 100644
--- a/src/gpu/GksGpu/FluxComputation/ApplyFlux.cuh
+++ b/src/gpu/GksGpu/FluxComputation/ApplyFlux.cuh
@@ -2,6 +2,7 @@
 #define ApplyFlux_CUH
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Core/DataTypes.h"
 
diff --git a/src/gpu/GksGpu/FluxComputation/AssembleFlux.cuh b/src/gpu/GksGpu/FluxComputation/AssembleFlux.cuh
index bda2ec6f00578bd230419546dcf6bbed5f614d16..59522e2a1dfd30433440fe1c6a1a7bd7efd4e7d0 100644
--- a/src/gpu/GksGpu/FluxComputation/AssembleFlux.cuh
+++ b/src/gpu/GksGpu/FluxComputation/AssembleFlux.cuh
@@ -2,6 +2,7 @@
 #define AssembleFlux_CUH
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Core/DataTypes.h"
 #include "Core/RealConstants.h"
diff --git a/src/gpu/GksGpu/FluxComputation/ExpansionCoefficients.cuh b/src/gpu/GksGpu/FluxComputation/ExpansionCoefficients.cuh
index 52e5133e6ae6e0aedf2f02fc8d820a6eb877d4a7..21aa4dc522be689dc2e523088e9fd6036c535af4 100644
--- a/src/gpu/GksGpu/FluxComputation/ExpansionCoefficients.cuh
+++ b/src/gpu/GksGpu/FluxComputation/ExpansionCoefficients.cuh
@@ -2,6 +2,7 @@
 #define ExpansionCoefficients_CUH
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Core/DataTypes.h"
 
diff --git a/src/gpu/GksGpu/FluxComputation/FluxComputation.h b/src/gpu/GksGpu/FluxComputation/FluxComputation.h
index fac94847a8760e63cfcbb0b6df5f4497867d4c14..7913828effca6ccc5d1458f955e39aab06276b7c 100644
--- a/src/gpu/GksGpu/FluxComputation/FluxComputation.h
+++ b/src/gpu/GksGpu/FluxComputation/FluxComputation.h
@@ -2,6 +2,7 @@
 #define  FluxComputation_H
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -11,7 +12,7 @@
 
 namespace GksGpu {
 
-class VIRTUALFLUIDS_GPU_EXPORT FluxComputation
+class GKSGPU_EXPORT FluxComputation
 {
 public:
 
diff --git a/src/gpu/GksGpu/FluxComputation/Moments.cuh b/src/gpu/GksGpu/FluxComputation/Moments.cuh
index f0a83b275969befb43f2d46785792cd5f42fa2a6..c43d28e4e2a1f89290326dab1a6ff667fa14cb8a 100644
--- a/src/gpu/GksGpu/FluxComputation/Moments.cuh
+++ b/src/gpu/GksGpu/FluxComputation/Moments.cuh
@@ -2,6 +2,7 @@
 #define Moments_CUH
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Core/DataTypes.h"
 
diff --git a/src/gpu/GksGpu/FluxComputation/Reconstruction.cuh b/src/gpu/GksGpu/FluxComputation/Reconstruction.cuh
index 131bd828073327b7f00fe355ca588bee3f7bfe5e..565fd80dcf9b9c2ae366765efba6b23907f5b20d 100644
--- a/src/gpu/GksGpu/FluxComputation/Reconstruction.cuh
+++ b/src/gpu/GksGpu/FluxComputation/Reconstruction.cuh
@@ -2,6 +2,7 @@
 #define Reconstruction_CUH
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Core/DataTypes.h"
 
diff --git a/src/gpu/GksGpu/FluxComputation/Smagorinsky.cuh b/src/gpu/GksGpu/FluxComputation/Smagorinsky.cuh
index f94aeb5c6c0dc54f4061a6bcf7e0c0989802c3b1..62e52bebeb2971011439dd0d4a8ce54b4b6eb34b 100644
--- a/src/gpu/GksGpu/FluxComputation/Smagorinsky.cuh
+++ b/src/gpu/GksGpu/FluxComputation/Smagorinsky.cuh
@@ -4,6 +4,7 @@
 #include <cmath>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Core/DataTypes.h"
 #include "Core/RealConstants.h"
diff --git a/src/gpu/GksGpu/FluxComputation/SutherlandsLaw.cuh b/src/gpu/GksGpu/FluxComputation/SutherlandsLaw.cuh
index 6373fee2d670814b28d0cdd3d4e90bb60533276d..99ade55c4b3a2cf4f799e2a5d2d4363ad7029a85 100644
--- a/src/gpu/GksGpu/FluxComputation/SutherlandsLaw.cuh
+++ b/src/gpu/GksGpu/FluxComputation/SutherlandsLaw.cuh
@@ -4,6 +4,7 @@
 #include <cmath>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Core/DataTypes.h"
 #include "Core/RealConstants.h"
diff --git a/src/gpu/GksGpu/FluxComputation/Transformation.cuh b/src/gpu/GksGpu/FluxComputation/Transformation.cuh
index 26a575c7350e8df98b30a0ba8660d3f012d1a882..bb41a5db31d69a21666a0171737d1d001ce30a95 100644
--- a/src/gpu/GksGpu/FluxComputation/Transformation.cuh
+++ b/src/gpu/GksGpu/FluxComputation/Transformation.cuh
@@ -2,6 +2,7 @@
 #define Transformation_CUH
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "Core/DataTypes.h"
 
diff --git a/src/gpu/GksGpu/Initializer/Initializer.h b/src/gpu/GksGpu/Initializer/Initializer.h
index 5dcadb696a76f3930ad12d6fba172991c27e54ab..1d04b25baa26fc045dc70bb5f38d44359cff1e26 100644
--- a/src/gpu/GksGpu/Initializer/Initializer.h
+++ b/src/gpu/GksGpu/Initializer/Initializer.h
@@ -6,6 +6,7 @@
 #include <functional>
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -16,7 +17,7 @@
 
 namespace GksGpu {
 
-class VIRTUALFLUIDS_GPU_EXPORT Initializer
+class GKSGPU_EXPORT Initializer
 {
 public:
 
diff --git a/src/gpu/GksGpu/Interface/Interface.h b/src/gpu/GksGpu/Interface/Interface.h
index 53a2db5e71bfd2c6a915d3df81af19f3599a9785..a5c66b60d7b147f6f38444a45ed53938e40fb151 100644
--- a/src/gpu/GksGpu/Interface/Interface.h
+++ b/src/gpu/GksGpu/Interface/Interface.h
@@ -2,6 +2,7 @@
 #define  FineToCoarse_H
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -10,7 +11,7 @@
 
 namespace GksGpu {
 
-class VIRTUALFLUIDS_GPU_EXPORT Interface
+class GKSGPU_EXPORT Interface
 {
 public:
     static void runFineToCoarse( SPtr<DataBase> dataBase, uint level );
diff --git a/src/gpu/GksGpu/Parameters/Parameters.h b/src/gpu/GksGpu/Parameters/Parameters.h
index b89885b967121f40749dbd735091c13fe6426db9..42950d3ebcb6697d4d68aa42ed31c5d8494a5059 100644
--- a/src/gpu/GksGpu/Parameters/Parameters.h
+++ b/src/gpu/GksGpu/Parameters/Parameters.h
@@ -5,16 +5,17 @@
 #include "Core/VectorTypes.h"
 
 #include <VirtualFluidsDefinitions.h>
+#include "GksGpu_export.h"
 
 namespace GksGpu {
 
-enum class VIRTUALFLUIDS_GPU_EXPORT ViscosityModel{
+enum class GKSGPU_EXPORT ViscosityModel{
     constant,
     sutherlandsLaw,
     sutherlandsLaw2
 };
 
-struct  VIRTUALFLUIDS_GPU_EXPORT Parameters
+struct  GKSGPU_EXPORT Parameters
 {
 
     real mu = real(0.01);
diff --git a/src/gpu/GksGpu/Restart/Restart.h b/src/gpu/GksGpu/Restart/Restart.h
index 3603aff810620b74418fe59f7061329b77b75da5..f607cf355b2f6dc711ac96c79caa31904d4e8c60 100644
--- a/src/gpu/GksGpu/Restart/Restart.h
+++ b/src/gpu/GksGpu/Restart/Restart.h
@@ -5,6 +5,7 @@
 #include <memory>
 
 #include <VirtualFluidsDefinitions.h>
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -13,7 +14,7 @@ namespace GksGpu {
 
 struct DataBase;
 
-class VIRTUALFLUIDS_GPU_EXPORT Restart
+class GKSGPU_EXPORT Restart
 {
 
 public:
diff --git a/src/gpu/GksGpu/TimeStepping/NestedTimeStep.h b/src/gpu/GksGpu/TimeStepping/NestedTimeStep.h
index 25cdf4d911f44bfc25a442d56996a7154dcc1159..a5704b4cc3d0dae3688959d8bf5dd38f445305c1 100644
--- a/src/gpu/GksGpu/TimeStepping/NestedTimeStep.h
+++ b/src/gpu/GksGpu/TimeStepping/NestedTimeStep.h
@@ -2,6 +2,7 @@
 #define  NestedTimeStep_H
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksGpu_export.h"
 
 #include "PointerDefinitions.h"
 #include "Core/DataTypes.h"
@@ -10,7 +11,7 @@
 #include "Parameters/Parameters.h"
 namespace GksGpu{ 
 
-class VIRTUALFLUIDS_GPU_EXPORT TimeStepping
+class GKSGPU_EXPORT TimeStepping
 {
 public:
 
diff --git a/src/gpu/GksMeshAdapter/3rdPartyLinking.cmake b/src/gpu/GksMeshAdapter/3rdPartyLinking.cmake
deleted file mode 100644
index 838d1037e56d1a5448881d07f5ff60568e3df0fb..0000000000000000000000000000000000000000
--- a/src/gpu/GksMeshAdapter/3rdPartyLinking.cmake
+++ /dev/null
@@ -1,6 +0,0 @@
-include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/Cuda/Link.cmake)
-linkCuda(${targetName})
-include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/MPI/Link.cmake)
-linkMPI(${targetName})
-#include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/Boost/Link.cmake)
-#linkBoost(${targetName} "serialization")
diff --git a/src/gpu/GksMeshAdapter/CMakeLists.txt b/src/gpu/GksMeshAdapter/CMakeLists.txt
index fadfa86572b9f6f00aa674fcea875038b7400519..6299f8deec9283f3530a016af70184cb3b95f437 100644
--- a/src/gpu/GksMeshAdapter/CMakeLists.txt
+++ b/src/gpu/GksMeshAdapter/CMakeLists.txt
@@ -1,18 +1,11 @@
-setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) 
 
-set(linkDirectories "")
-set(libsToLink GridGenerator Core)
 
-set(includeDirectories ${CMAKE_SOURCE_DIR}/src/${targetName}
-                       ${CMAKE_SOURCE_DIR}/src
-                       ${CMAKE_SOURCE_DIR}/src/GridGenerator
-                       ${CMAKE_SOURCE_DIR}/src/Core )
+vf_add_library(BUILDTYPE static DEPENDS basics GridGenerator)
 
-#glob files and save in MY_SRCS
-include(CMakePackage.cmake)
 
-buildLib(${targetName} "${MY_SRCS}" "${linkDirectories}" "${libsToLink}" "${includeDirectories}")
-groupTarget(${targetName} ${gksLibraryFolder})
+vf_get_library_name(library_name)
+target_include_directories(${library_name} PRIVATE "${CMAKE_SOURCE_DIR}/src/basics")
+target_include_directories(${library_name} PRIVATE "${CMAKE_SOURCE_DIR}/src/gpu")
+target_include_directories(${library_name} PRIVATE "${CMAKE_SOURCE_DIR}/src/gpu/GridGenerator")
+target_include_directories(${library_name} PRIVATE "${CMAKE_SOURCE_DIR}/src/basics/Core")
 
-#Specify the linking to 3rdParty libs
-include(3rdPartyLinking.cmake)
diff --git a/src/gpu/GksMeshAdapter/CMakePackage.cmake b/src/gpu/GksMeshAdapter/CMakePackage.cmake
deleted file mode 100644
index 7ec316fe087d1886a7dbdbfb7298bae1fc7ddedd..0000000000000000000000000000000000000000
--- a/src/gpu/GksMeshAdapter/CMakePackage.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-#FILE ENDINGS
-resetFileEndingsToCollect()
-addCAndCPPFileTypes()
-
-#GLOB SOURCE FILES IN MY_SRCS
-unset(MY_SRCS)
-includeRecursiveAllFilesFrom(${targetName} ${CMAKE_CURRENT_LIST_DIR})
-includeRecursiveProductionFilesFrom(${targetName} ${CMAKE_SOURCE_DIR}/src/${targetName})
\ No newline at end of file
diff --git a/src/gpu/GksMeshAdapter/GksMeshAdapter.h b/src/gpu/GksMeshAdapter/GksMeshAdapter.h
index 18a7034cf7af50f1edda648f33f7469380ba6f41..b314f1dbe0dcfcd7d42b6cb8aa4dd5f72f837dca 100644
--- a/src/gpu/GksMeshAdapter/GksMeshAdapter.h
+++ b/src/gpu/GksMeshAdapter/GksMeshAdapter.h
@@ -13,9 +13,11 @@
 
 #include "VirtualFluidsDefinitions.h"
 
+#include "GksMeshAdapter_export.h"
+
 class MultipleGridBuilder;
 
-class VIRTUALFLUIDS_GPU_EXPORT GksMeshAdapter{
+class GKSMESHADAPTER_EXPORT GksMeshAdapter{
 
 public:
 
diff --git a/src/gpu/GksMeshAdapter/MeshCell.cpp b/src/gpu/GksMeshAdapter/MeshCell.cpp
index 12ea9e97259e4d85a9494b623f9b87816dbaf06a..65a931c84deca244abf78e100bb838dd9c1870f3 100644
--- a/src/gpu/GksMeshAdapter/MeshCell.cpp
+++ b/src/gpu/GksMeshAdapter/MeshCell.cpp
@@ -1,3 +1,35 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __         
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |        
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |        
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |        
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____    
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|   
+//      \    \  |    |   ________________________________________________________________    
+//       \    \ |    |  |  ______________________________________________________________|   
+//        \    \|    |  |  |         __          __     __     __     ______      _______    
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)   
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______    
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/   
+//
+//  This file is part of VirtualFluids. VirtualFluids is free software: you can 
+//  redistribute it and/or modify it under the terms of the GNU General Public
+//  License as published by the Free Software Foundation, either version 3 of 
+//  the License, or (at your option) any later version.
+//  
+//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT 
+//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
+//  for more details.
+//  
+//  You should have received a copy of the GNU General Public License along
+//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
+//
+//! \file MeshCell.cpp
+//! \ingroup GksMeshAdapter
+//! \author Stephan Lenz
+//=======================================================================================
 #include "MeshCell.h"
 
 #include "GridGenerator/grid/NodeValues.h"
diff --git a/src/gpu/GksMeshAdapter/MeshCell.h b/src/gpu/GksMeshAdapter/MeshCell.h
index 0738683c3603412ca95c98fe8ec70595bfe7f71a..1b09a69b847a27c98c27b65b3190ce00ebec18c4 100644
--- a/src/gpu/GksMeshAdapter/MeshCell.h
+++ b/src/gpu/GksMeshAdapter/MeshCell.h
@@ -1,3 +1,35 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __         
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |        
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |        
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |        
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____    
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|   
+//      \    \  |    |   ________________________________________________________________    
+//       \    \ |    |  |  ______________________________________________________________|   
+//        \    \|    |  |  |         __          __     __     __     ______      _______    
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)   
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______    
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/   
+//
+//  This file is part of VirtualFluids. VirtualFluids is free software: you can 
+//  redistribute it and/or modify it under the terms of the GNU General Public
+//  License as published by the Free Software Foundation, either version 3 of 
+//  the License, or (at your option) any later version.
+//  
+//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT 
+//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
+//  for more details.
+//  
+//  You should have received a copy of the GNU General Public License along
+//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
+//
+//! \file MeshCell.h
+//! \ingroup GksMeshAdapter
+//! \author Stephan Lenz
+//=======================================================================================
 #ifndef MESH_CELL_H
 #define MESH_CELL_H
 
@@ -7,7 +39,9 @@
 #include "Core/VectorTypes.h"
 #include "Core/ArrayTypes.h"
 
-struct VIRTUALFLUIDS_GPU_EXPORT MeshCell{
+#include "GksMeshAdapter_export.h"
+
+struct GKSMESHADAPTER_EXPORT MeshCell{
 
     uint level;
     uint gridIdx;
diff --git a/src/gpu/GksMeshAdapter/MeshFace.cpp b/src/gpu/GksMeshAdapter/MeshFace.cpp
index 35cd8e7142e470fa78e7fa84cd4b91fe45ecc8e3..b07355583e50b4b88c9ce5f43c489b3f82310ce2 100644
--- a/src/gpu/GksMeshAdapter/MeshFace.cpp
+++ b/src/gpu/GksMeshAdapter/MeshFace.cpp
@@ -1,3 +1,35 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __         
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |        
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |        
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |        
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____    
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|   
+//      \    \  |    |   ________________________________________________________________    
+//       \    \ |    |  |  ______________________________________________________________|   
+//        \    \|    |  |  |         __          __     __     __     ______      _______    
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)   
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______    
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/   
+//
+//  This file is part of VirtualFluids. VirtualFluids is free software: you can 
+//  redistribute it and/or modify it under the terms of the GNU General Public
+//  License as published by the Free Software Foundation, either version 3 of 
+//  the License, or (at your option) any later version.
+//  
+//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT 
+//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
+//  for more details.
+//  
+//  You should have received a copy of the GNU General Public License along
+//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
+//
+//! \file MeshFace.cpp
+//! \ingroup GksMeshAdapter
+//! \author Stephan Lenz
+//=======================================================================================
 #include "MeshFace.h"
 
 MeshFace::MeshFace()
diff --git a/src/gpu/GksMeshAdapter/MeshFace.h b/src/gpu/GksMeshAdapter/MeshFace.h
index b322bba316bbc2092456e18efd2e9faa8aa41f7a..54a37dbbcdc89224037edeb3e01e34b67f8fc536 100644
--- a/src/gpu/GksMeshAdapter/MeshFace.h
+++ b/src/gpu/GksMeshAdapter/MeshFace.h
@@ -1,3 +1,35 @@
+//=======================================================================================
+// ____          ____    __    ______     __________   __      __       __        __         
+// \    \       |    |  |  |  |   _   \  |___    ___| |  |    |  |     /  \      |  |        
+//  \    \      |    |  |  |  |  |_)   |     |  |     |  |    |  |    /    \     |  |        
+//   \    \     |    |  |  |  |   _   /      |  |     |  |    |  |   /  /\  \    |  |        
+//    \    \    |    |  |  |  |  | \  \      |  |     |   \__/   |  /  ____  \   |  |____    
+//     \    \   |    |  |__|  |__|  \__\     |__|      \________/  /__/    \__\  |_______|   
+//      \    \  |    |   ________________________________________________________________    
+//       \    \ |    |  |  ______________________________________________________________|   
+//        \    \|    |  |  |         __          __     __     __     ______      _______    
+//         \         |  |  |_____   |  |        |  |   |  |   |  |   |   _  \    /  _____)   
+//          \        |  |   _____|  |  |        |  |   |  |   |  |   |  | \  \   \_______    
+//           \       |  |  |        |  |_____   |   \_/   |   |  |   |  |_/  /    _____  |
+//            \ _____|  |__|        |________|   \_______/    |__|   |______/    (_______/   
+//
+//  This file is part of VirtualFluids. VirtualFluids is free software: you can 
+//  redistribute it and/or modify it under the terms of the GNU General Public
+//  License as published by the Free Software Foundation, either version 3 of 
+//  the License, or (at your option) any later version.
+//  
+//  VirtualFluids is distributed in the hope that it will be useful, but WITHOUT 
+//  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
+//  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License 
+//  for more details.
+//  
+//  You should have received a copy of the GNU General Public License along
+//  with VirtualFluids (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
+//
+//! \file MeshFace.h
+//! \ingroup GksMeshAdapter
+//! \author Stephan Lenz
+//=======================================================================================
 #ifndef MESH_FACE_H
 #define MESH_FACE_H
 
@@ -5,7 +37,9 @@
 #include "Core/VectorTypes.h"
 #include "Core/ArrayTypes.h"
 
-struct VIRTUALFLUIDS_GPU_EXPORT MeshFace
+#include "GksMeshAdapter_export.h"
+
+struct GKSMESHADAPTER_EXPORT MeshFace
 {
     //////////////////////////////////////////////////////////////////////////
 
diff --git a/src/gpu/GksVtkAdapter/3rdPartyLinking.cmake b/src/gpu/GksVtkAdapter/3rdPartyLinking.cmake
deleted file mode 100644
index 72a16234916a157280b9441b38598c4cc1df1520..0000000000000000000000000000000000000000
--- a/src/gpu/GksVtkAdapter/3rdPartyLinking.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-include (${CMAKE_SOURCE_DIR}/${cmakeMacroPath}/VTK/Link.cmake)
-linkVTK(${targetName})
diff --git a/src/gpu/GksVtkAdapter/CMakeLists.txt b/src/gpu/GksVtkAdapter/CMakeLists.txt
index 41d654e3a4471ca6d8d46edcb6c1a25d4d00544b..a5390e832155934861ee32e0b860d78d9c70a27d 100644
--- a/src/gpu/GksVtkAdapter/CMakeLists.txt
+++ b/src/gpu/GksVtkAdapter/CMakeLists.txt
@@ -1,18 +1,5 @@
-setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR})
 
-set(linkDirectories "")
-set(libsToLink GksGpu Core)
 
-set(includeDirectories ${CMAKE_SOURCE_DIR}/src/${targetName}
-                       ${CMAKE_SOURCE_DIR}/src
-                       ${CMAKE_SOURCE_DIR}/src/GksGpu
-                       ${CMAKE_SOURCE_DIR}/src/Core )
+vf_add_library(BUILDTYPE shared DEPENDS basics GksGpu)
 
-#glob files and save in MY_SRCS
-include(CMakePackage.cmake)
-
-buildLib(${targetName} "${MY_SRCS}" "${linkDirectories}" "${libsToLink}" "${includeDirectories}")
-groupTarget(${targetName} ${gksLibraryFolder})
-
-#Specify the linking to 3rdParty libs
-include(3rdPartyLinking.cmake)
+include (${VF_CMAKE_DIR}/3rd/vtk.cmake)
\ No newline at end of file
diff --git a/src/gpu/GksVtkAdapter/CMakePackage.cmake b/src/gpu/GksVtkAdapter/CMakePackage.cmake
deleted file mode 100644
index 7ec316fe087d1886a7dbdbfb7298bae1fc7ddedd..0000000000000000000000000000000000000000
--- a/src/gpu/GksVtkAdapter/CMakePackage.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-#FILE ENDINGS
-resetFileEndingsToCollect()
-addCAndCPPFileTypes()
-
-#GLOB SOURCE FILES IN MY_SRCS
-unset(MY_SRCS)
-includeRecursiveAllFilesFrom(${targetName} ${CMAKE_CURRENT_LIST_DIR})
-includeRecursiveProductionFilesFrom(${targetName} ${CMAKE_SOURCE_DIR}/src/${targetName})
\ No newline at end of file
diff --git a/src/gpu/GksVtkAdapter/VTKAdapter.cpp b/src/gpu/GksVtkAdapter/VTKAdapter.cpp
index 2e84951320a443b5e4ba95b69129158d7d0cd43d..df81524982a73e82ac3e5f564a1b82b057196854 100644
--- a/src/gpu/GksVtkAdapter/VTKAdapter.cpp
+++ b/src/gpu/GksVtkAdapter/VTKAdapter.cpp
@@ -266,7 +266,7 @@ void writeVtkUnstructuredGrid( vtkGridPtr grid, int mode, std::string filename )
     writer->Write();
 }
 
-void VIRTUALFLUIDS_GPU_EXPORT writeVtkParallelUnstructuredGridSummaryFile(vtkGridPtr grid, std::string filename, uint mpiWorldSize)
+void GKSVTKADAPTER_EXPORT writeVtkParallelUnstructuredGridSummaryFile(vtkGridPtr grid, std::string filename, uint mpiWorldSize)
 {
     uint numberOfArrays = grid->GetCellData()->GetNumberOfArrays();
 
@@ -429,7 +429,7 @@ void writeVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "done!\n";
 }
 
-void VIRTUALFLUIDS_GPU_EXPORT writeVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, GksGpu::Parameters parameters, std::string filename, uint mpiWorldSize)
+void GKSVTKADAPTER_EXPORT writeVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, GksGpu::Parameters parameters, std::string filename, uint mpiWorldSize)
 {
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "Write " << filename << ".pvtu" << " ... \n";
 
@@ -534,7 +534,7 @@ void writeTurbulenceVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "done!\n";
 }
 
-void VIRTUALFLUIDS_GPU_EXPORT writeTurbulenceVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, std::shared_ptr<GksGpu::TurbulenceAnalyzer> turbulenceAnalyzer,GksGpu::Parameters parameters, std::string filename, uint mpiWorldSize)
+void GKSVTKADAPTER_EXPORT writeTurbulenceVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase, std::shared_ptr<GksGpu::TurbulenceAnalyzer> turbulenceAnalyzer,GksGpu::Parameters parameters, std::string filename, uint mpiWorldSize)
 {
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "Write " << filename << ".pvtu" << " ... \n";
 
@@ -712,7 +712,7 @@ void mapFlowField(std::shared_ptr<GksGpu::DataBase> base, std::shared_ptr<GksGpu
     }
 }
 
-void VIRTUALFLUIDS_GPU_EXPORT writeConcreteHeatFluxVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase, std::shared_ptr<GksGpu::ConcreteHeatFlux> bc, GksGpu::Parameters parameters, int mode, std::string filename)
+void GKSVTKADAPTER_EXPORT writeConcreteHeatFluxVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase, std::shared_ptr<GksGpu::ConcreteHeatFlux> bc, GksGpu::Parameters parameters, int mode, std::string filename)
 {
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "Write " << filename << ".vtu" << " ... \n";
 
diff --git a/src/gpu/GksVtkAdapter/VTKAdapter.h b/src/gpu/GksVtkAdapter/VTKAdapter.h
index 62bc8b25bb2bd3e8da3e97a6b3a7791b96423f5c..ccefbd0b88eb7436e3ddbbc8a7998cc33d773ed4 100644
--- a/src/gpu/GksVtkAdapter/VTKAdapter.h
+++ b/src/gpu/GksVtkAdapter/VTKAdapter.h
@@ -27,6 +27,8 @@
 #include "DataBase/DataBase.h"
 #include "Parameters/Parameters.h"
 
+#include "GksVtkAdapter_export.h"
+
 typedef vtkSmartPointer<vtkUnstructuredGrid>          vtkGridPtr;
 typedef vtkSmartPointer<vtkPoints>                    vtkPointsPtr;
 typedef vtkSmartPointer<vtkIdList>                    vtkIdListPtr;
@@ -41,31 +43,31 @@ struct rgbColor
     unsigned char b;
 };
 
-vtkGridPtr VIRTUALFLUIDS_GPU_EXPORT getVtkUnstructuredOctGrid( SPtr<GksGpu::DataBase> dataBase, bool excludeGhostCells = false );
+vtkGridPtr GKSVTKADAPTER_EXPORT getVtkUnstructuredOctGrid( SPtr<GksGpu::DataBase> dataBase, bool excludeGhostCells = false );
 
-void VIRTUALFLUIDS_GPU_EXPORT addScalarIntCellData( vtkGridPtr grid,
+void GKSVTKADAPTER_EXPORT addScalarIntCellData( vtkGridPtr grid,
                                      uint numberOfCells, 
                                      std::string name, 
                                      std::function<int(uint)> getData );
 
-void VIRTUALFLUIDS_GPU_EXPORT addScalarRealCellData( vtkGridPtr grid,
+void GKSVTKADAPTER_EXPORT addScalarRealCellData( vtkGridPtr grid,
                                       uint numberOfCells, 
                                       std::string name, 
                                       std::function<real(uint)> getData );
 
-void VIRTUALFLUIDS_GPU_EXPORT addVectorCellData( vtkGridPtr grid,
+void GKSVTKADAPTER_EXPORT addVectorCellData( vtkGridPtr grid,
                                   uint numberOfCells, 
                                   std::string name, 
                                   std::function<Vec3(uint)> getData );
 
-void VIRTUALFLUIDS_GPU_EXPORT addBaseData( vtkGridPtr grid, SPtr<GksGpu::DataBase> dataBase, GksGpu::Parameters parameters );
+void GKSVTKADAPTER_EXPORT addBaseData( vtkGridPtr grid, SPtr<GksGpu::DataBase> dataBase, GksGpu::Parameters parameters );
 
-void VIRTUALFLUIDS_GPU_EXPORT writeVtkUnstructuredGrid( vtkGridPtr grid, int mode, std::string filename );
+void GKSVTKADAPTER_EXPORT writeVtkUnstructuredGrid( vtkGridPtr grid, int mode, std::string filename );
 
-void VIRTUALFLUIDS_GPU_EXPORT writeVtkParallelUnstructuredGridSummaryFile( vtkGridPtr grid, std::string filename, uint mpiWorldSize );
+void GKSVTKADAPTER_EXPORT writeVtkParallelUnstructuredGridSummaryFile( vtkGridPtr grid, std::string filename, uint mpiWorldSize );
 
-rgbColor VIRTUALFLUIDS_GPU_EXPORT colorMapCoolToWarmExtended( double value, double min, double max );
+rgbColor GKSVTKADAPTER_EXPORT colorMapCoolToWarmExtended( double value, double min, double max );
 
-void VIRTUALFLUIDS_GPU_EXPORT writePNG( vtkDataObject* inputData, int nx, int ny, double L, double H, std::string filename );
+void GKSVTKADAPTER_EXPORT writePNG( vtkDataObject* inputData, int nx, int ny, double L, double H, std::string filename );
 
 #endif
\ No newline at end of file
diff --git a/src/gpu/GksVtkAdapter/VTKInterface.h b/src/gpu/GksVtkAdapter/VTKInterface.h
index ecd6aec47e15b9fc29746d1cabe974fb75303aeb..17f878b8cd54c67dfbed71ddfb4b26028f4226cc 100644
--- a/src/gpu/GksVtkAdapter/VTKInterface.h
+++ b/src/gpu/GksVtkAdapter/VTKInterface.h
@@ -4,6 +4,7 @@
 #include "GksGpu/Parameters/Parameters.h"
 
 #include "VirtualFluidsDefinitions.h"
+#include "GksVtkAdapter_export.h"
 
 namespace GksGpu{ 
 struct DataBase;
@@ -11,30 +12,30 @@ class TurbulenceAnalyzer;
 struct ConcreteHeatFlux;
 }
 
-void VIRTUALFLUIDS_GPU_EXPORT writeVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
+void GKSVTKADAPTER_EXPORT writeVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
                            GksGpu::Parameters parameters, 
                            int mode, 
                            std::string filename);
 
-void VIRTUALFLUIDS_GPU_EXPORT writeVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase,
+void GKSVTKADAPTER_EXPORT writeVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase,
                                               GksGpu::Parameters parameters, 
                                               std::string filename,
                                               uint mpiWorldSize);
 
-void VIRTUALFLUIDS_GPU_EXPORT writeTurbulenceVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
+void GKSVTKADAPTER_EXPORT writeTurbulenceVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
                                      std::shared_ptr<GksGpu::TurbulenceAnalyzer> turbulenceAnalyzer,
                                      int mode, 
                                      std::string filename);
 
-void VIRTUALFLUIDS_GPU_EXPORT writeTurbulenceVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase,
+void GKSVTKADAPTER_EXPORT writeTurbulenceVtkXMLParallelSummaryFile(std::shared_ptr<GksGpu::DataBase> dataBase,
                                                         std::shared_ptr<GksGpu::TurbulenceAnalyzer> turbulenceAnalyzer,
                                                         GksGpu::Parameters parameters, 
                                                         std::string filename,
                                                         uint mpiWorldSize);
 
-void VIRTUALFLUIDS_GPU_EXPORT mapFlowField( std::shared_ptr<GksGpu::DataBase> base, std::shared_ptr<GksGpu::DataBase> target );
+void GKSVTKADAPTER_EXPORT mapFlowField( std::shared_ptr<GksGpu::DataBase> base, std::shared_ptr<GksGpu::DataBase> target );
 
-void VIRTUALFLUIDS_GPU_EXPORT writeConcreteHeatFluxVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
+void GKSVTKADAPTER_EXPORT writeConcreteHeatFluxVtkXML(std::shared_ptr<GksGpu::DataBase> dataBase,
                                            std::shared_ptr<GksGpu::ConcreteHeatFlux> bc, 
                                            GksGpu::Parameters parameters, 
                                            int mode, 
diff --git a/src/gpu/GridGenerator/CMakeLists.txt b/src/gpu/GridGenerator/CMakeLists.txt
index 92f83cc1b27bbb7c130e24c55042ed6f27a841ec..4191490e82c49e7d21a3cae793040c010fd48f4e 100644
--- a/src/gpu/GridGenerator/CMakeLists.txt
+++ b/src/gpu/GridGenerator/CMakeLists.txt
@@ -6,10 +6,5 @@ include (${VF_CMAKE_DIR}/3rd/cuda.cmake)
 include (${VF_CMAKE_DIR}/3rd/OpenMP.cmake)
 
 vf_get_library_name(library_name)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/geometry3d)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/gpu)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/Core)
-
 
 set_property(TARGET ${library_name} PROPERTY CUDA_SEPARABLE_COMPILATION ON)
\ No newline at end of file
diff --git a/src/gpu/Traffic/CMakeLists.txt b/src/gpu/Traffic/CMakeLists.txt
index ce63e4a3cb2120d68c07b9dff4de55aca8b0b2ec..18e6715772880cab54c65aeed51961c8c92c4d1d 100644
--- a/src/gpu/Traffic/CMakeLists.txt
+++ b/src/gpu/Traffic/CMakeLists.txt
@@ -3,10 +3,3 @@
 vf_add_library(BUILDTYPE shared DEPENDS GridGenerator basics)
 
 include (${VF_CMAKE_DIR}/3rd/cuda.cmake)
-
-vf_get_library_name(library_name)
-target_include_directories(${library_name} PRIVATE "${CMAKE_SOURCE_DIR}/src/basics")
-target_include_directories(${library_name} PRIVATE "${CMAKE_SOURCE_DIR}/src/gpu")
-target_include_directories(${library_name} PRIVATE "${CMAKE_SOURCE_DIR}/src/gpu/GridGenerator")
-target_include_directories(${library_name} PRIVATE "${CMAKE_SOURCE_DIR}/src/basics/Core")
-
diff --git a/src/gpu/VirtualFluids_GPU/CMakeLists.txt b/src/gpu/VirtualFluids_GPU/CMakeLists.txt
index 415d25354d366218a588427d8e50b9099606a7b1..83806f18d0eaa4fa4bd0e3570f8772ea0712fba9 100644
--- a/src/gpu/VirtualFluids_GPU/CMakeLists.txt
+++ b/src/gpu/VirtualFluids_GPU/CMakeLists.txt
@@ -14,17 +14,11 @@ include (${VF_CMAKE_DIR}/3rd/mpi.cmake)
 include (${VF_CMAKE_DIR}/3rd/boost.cmake)
 linkBoost ("serialization")
 
-vf_get_library_name(library_name)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/gpu)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/gpu/GridGenerator)
-target_include_directories(${library_name} PRIVATE ${VF_SRC_DIR}/basics/Core)
-
-
 #SET(TPN_WIN32 "/EHsc")
 #https://stackoverflow.com/questions/6832666/lnk2019-when-including-asio-headers-solution-generated-with-cmake
 #https://stackoverflow.com/questions/27442885/syntax-error-with-stdnumeric-limitsmax
 
 IF(MSVC)
+    vf_get_library_name(library_name)
     set_target_properties(${library_name} PROPERTIES LINK_FLAGS "/ignore:4251")
 ENDIF(MSVC)