diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake
index 31c2ba3dec4b6824b02ef28c7ae7f25ac979301b..0c7a7ece18c74070b80f7266f2a2b854318e67b8 100644
--- a/CMake/VirtualFluidsMacros.cmake
+++ b/CMake/VirtualFluidsMacros.cmake
@@ -30,6 +30,7 @@ function(vf_add_library)
 
 
     if (ARG_FILES)
+        message ("${ARG_FILES}")
         set(sourceFiles ${sourceFiles} ${ARG_FILES})
     endif()
 
diff --git a/apps/gpu/LBM/TGV_3D/CMakeLists.txt b/apps/gpu/LBM/TGV_3D/CMakeLists.txt
index 6ef6241b52aa9b5dc73a19b82f2b9fd5248c77c5..962907cdbc8b0bdd29ab6f9fffaa14f00b14ef41 100644
--- a/apps/gpu/LBM/TGV_3D/CMakeLists.txt
+++ b/apps/gpu/LBM/TGV_3D/CMakeLists.txt
@@ -1,14 +1,15 @@
-setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) 
+PROJECT(TGV_3D)
 
-set(linkDirectories "")
-set(libsToLink VirtualFluids_GPU GridGenerator)
-set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/VirtualFluids_GPU" "${CMAKE_SOURCE_DIR}/src/GridGenerator" "${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics")
+vf_add_library(BUILDTYPE binary DEPENDS basics VirtualFluids_GPU GridGenerator FILES TGV_3D.cpp)
 
-#glob files and save in MY_SRCS
-include(CMakePackage.cmake)
+include (${CMAKE_PATH}/3rd/cuda.cmake)
+include (${CMAKE_PATH}/3rd/mpi.cmake)
+include (${CMAKE_PATH}/3rd/boost.cmake)
+linkBoost ("serialization")
 
-buildExe(${targetName} "${MY_SRCS}" "${linkDirectories}" "${libsToLink}" "${includeDirectories}")
-groupTarget(${targetName} ${lbmAppFolder})
-
-# Specify the linking to 3rdParty libs
-include(3rdPartyLinking.cmake)
\ No newline at end of file
+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/VirtualFluids_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")
\ No newline at end of file
diff --git a/apps/gpu/LBM/TGV_3D_MultiGPU/CMakeLists.txt b/apps/gpu/LBM/TGV_3D_MultiGPU/CMakeLists.txt
index 6ef6241b52aa9b5dc73a19b82f2b9fd5248c77c5..a3a6c4566e5ca3d4e0f93b1285961bfb26b06d34 100644
--- a/apps/gpu/LBM/TGV_3D_MultiGPU/CMakeLists.txt
+++ b/apps/gpu/LBM/TGV_3D_MultiGPU/CMakeLists.txt
@@ -1,14 +1,15 @@
-setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) 
+PROJECT(TGV_3D_MultiGPU)
 
-set(linkDirectories "")
-set(libsToLink VirtualFluids_GPU GridGenerator)
-set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/VirtualFluids_GPU" "${CMAKE_SOURCE_DIR}/src/GridGenerator" "${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics")
+vf_add_library(BUILDTYPE binary DEPENDS basics VirtualFluids_GPU GridGenerator FILES TGV_3D_MultiGPU.cpp)
 
-#glob files and save in MY_SRCS
-include(CMakePackage.cmake)
+include (${CMAKE_PATH}/3rd/cuda.cmake)
+include (${CMAKE_PATH}/3rd/mpi.cmake)
+include (${CMAKE_PATH}/3rd/boost.cmake)
+linkBoost ("serialization")
 
-buildExe(${targetName} "${MY_SRCS}" "${linkDirectories}" "${libsToLink}" "${includeDirectories}")
-groupTarget(${targetName} ${lbmAppFolder})
-
-# Specify the linking to 3rdParty libs
-include(3rdPartyLinking.cmake)
\ No newline at end of file
+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/VirtualFluids_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")
\ No newline at end of file
diff --git a/apps/gpu/LBM/gridGeneratorTest/CMakeLists.txt b/apps/gpu/LBM/gridGeneratorTest/CMakeLists.txt
index 6ef6241b52aa9b5dc73a19b82f2b9fd5248c77c5..e4b1aa19095d5d712601852989372c582782e195 100644
--- a/apps/gpu/LBM/gridGeneratorTest/CMakeLists.txt
+++ b/apps/gpu/LBM/gridGeneratorTest/CMakeLists.txt
@@ -1,14 +1,15 @@
-setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) 
+PROJECT(GridGeneratorTest)
 
-set(linkDirectories "")
-set(libsToLink VirtualFluids_GPU GridGenerator)
-set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/VirtualFluids_GPU" "${CMAKE_SOURCE_DIR}/src/GridGenerator" "${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics")
+vf_add_library(BUILDTYPE binary DEPENDS basics VirtualFluids_GPU GridGenerator FILES gridGenerator.cpp)
 
-#glob files and save in MY_SRCS
-include(CMakePackage.cmake)
+include (${CMAKE_PATH}/3rd/cuda.cmake)
+include (${CMAKE_PATH}/3rd/mpi.cmake)
+include (${CMAKE_PATH}/3rd/boost.cmake)
+linkBoost ("serialization")
 
-buildExe(${targetName} "${MY_SRCS}" "${linkDirectories}" "${libsToLink}" "${includeDirectories}")
-groupTarget(${targetName} ${lbmAppFolder})
-
-# Specify the linking to 3rdParty libs
-include(3rdPartyLinking.cmake)
\ No newline at end of file
+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/VirtualFluids_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")
\ No newline at end of file
diff --git a/apps/gpu/LBM/gridGeneratorTest/gridGeneratorTest.cpp b/apps/gpu/LBM/gridGeneratorTest/gridGenerator.cpp
similarity index 100%
rename from apps/gpu/LBM/gridGeneratorTest/gridGeneratorTest.cpp
rename to apps/gpu/LBM/gridGeneratorTest/gridGenerator.cpp
diff --git a/gpu.cmake b/gpu.cmake
index d4ea41e886266932200354375e5f74cd412ecbca..3d351c3a456acd7236ceb99b67d5fd4cc248723c 100644
--- a/gpu.cmake
+++ b/gpu.cmake
@@ -143,9 +143,9 @@ IF (VF.BUILD_VF_GPU)
     #add_subdirectory(targets/apps/LBM/BaselMultiGPU)
 
     add_subdirectory(apps/gpu/LBM/DrivenCavity)
-    #add_subdirectory(targets/apps/LBM/gridGeneratorTest)
-    #add_subdirectory(targets/apps/LBM/TGV_3D)
-    #add_subdirectory(targets/apps/LBM/TGV_3D_MultiGPU)
+    add_subdirectory(apps/gpu/LBM/gridGeneratorTest)
+    add_subdirectory(apps/gpu/LBM/TGV_3D)
+    add_subdirectory(apps/gpu/LBM/TGV_3D_MultiGPU)
 ELSE()
     MESSAGE( STATUS "exclude Virtual Fluids GPU." )
 ENDIF()
diff --git a/gpu/readme.md b/readme_gpu.md
similarity index 100%
rename from gpu/readme.md
rename to readme_gpu.md