diff --git a/cpu/Applications/Applications.cmake b/cpu/Applications/Applications.cmake
index 5519b3566695136aae34e86c4cf187749e26eb19..79fae3a86eb05be2897d0bc23dde2e3f71f7bb57 100644
--- a/cpu/Applications/Applications.cmake
+++ b/cpu/Applications/Applications.cmake
@@ -2,7 +2,7 @@
 #add_subdirectory(Applications/gridRf)
 #add_subdirectory(Applications/greenvortex)
 # add_subdirectory(Applications/micropart)
-add_subdirectory(Applications/sphere)
+#add_subdirectory(Applications/sphere)
 #add_subdirectory(Applications/vfscript)
 #add_subdirectory(Applications/reefer)
 #add_subdirectory(Applications/bananas)
@@ -11,8 +11,8 @@ add_subdirectory(Applications/sphere)
 #add_subdirectory(Applications/bananas2)
 # add_subdirectory(Applications/plate)
 # add_subdirectory(Applications/plate2)
-add_subdirectory(Applications/FlowAroundCylinder)
-add_subdirectory(Applications/LaminarTubeFlow)
+##add_subdirectory(Applications/FlowAroundCylinder)
+##add_subdirectory(Applications/LaminarTubeFlow)
 # add_subdirectory(Applications/LaminarTubeFlowConv)
 #add_subdirectory(Applications/cylinderSt)
 #add_subdirectory(Applications/mpichTest)
@@ -20,9 +20,9 @@ add_subdirectory(Applications/LaminarTubeFlow)
 # add_subdirectory(Applications/bond_test)
 # add_subdirectory(Applications/bond_benchmark)
 # add_subdirectory(Applications/musis)
-add_subdirectory(Applications/Hagen_Poiseuille_flow)
-add_subdirectory(Applications/Hagen_Poiseuille_flow2)
-add_subdirectory(Applications/mpi_benchmark)
+##add_subdirectory(Applications/Hagen_Poiseuille_flow)
+##add_subdirectory(Applications/Hagen_Poiseuille_flow2)
+##add_subdirectory(Applications/mpi_benchmark)
 # add_subdirectory(Applications/shear)
 # add_subdirectory(Applications/wing)
 # add_subdirectory(Applications/bKanal)
@@ -40,28 +40,28 @@ add_subdirectory(Applications/mpi_benchmark)
 # add_subdirectory(Applications/porplate2)
 # add_subdirectory(Applications/BeadPack)
 # add_subdirectory(Applications/town)
-add_subdirectory(Applications/perm)
+##add_subdirectory(Applications/perm)
 add_subdirectory(Applications/pChannel)
 #add_subdirectory(Applications/pDisk)
-add_subdirectory(Applications/BoxBenchmark)
-add_subdirectory(Applications/DHIT)
-add_subdirectory(Applications/DLR-F16)
-add_subdirectory(Applications/DLR-F16-Solid)
-add_subdirectory(Applications/DLR-F16-Porous)
-add_subdirectory(Applications/aperm)
-add_subdirectory(Applications/f16test)
-add_subdirectory(Applications/mirror)
-add_subdirectory(Applications/levels)
-add_subdirectory(Applications/AcousticPulse)
-add_subdirectory(Applications/screw)
-add_subdirectory(Applications/PoiseuilleFlow)
-add_subdirectory(Applications/InterfaceTest)
-add_subdirectory(Applications/teperm)
-add_subdirectory(Applications/Thermoplast)
-add_subdirectory(Applications/bChannelA)
-add_subdirectory(Applications/ConvectionOfVortex)
-add_subdirectory(Applications/CheckpointConverter)
-add_subdirectory(Applications/bChannelVA)
-add_subdirectory(Applications/OrganPipe)
-add_subdirectory(Applications/LidDrivenCavity)
+#add_subdirectory(Applications/BoxBenchmark)
+#add_subdirectory(Applications/DHIT)
+#add_subdirectory(Applications/DLR-F16)
+#add_subdirectory(Applications/DLR-F16-Solid)
+#add_subdirectory(Applications/DLR-F16-Porous)
+#add_subdirectory(Applications/aperm)
+#add_subdirectory(Applications/f16test)
+#add_subdirectory(Applications/mirror)
+#add_subdirectory(Applications/levels)
+#add_subdirectory(Applications/AcousticPulse)
+#add_subdirectory(Applications/screw)
+#add_subdirectory(Applications/PoiseuilleFlow)
+#add_subdirectory(Applications/InterfaceTest)
+#add_subdirectory(Applications/teperm)
+#add_subdirectory(Applications/Thermoplast)
+#add_subdirectory(Applications/bChannelA)
+#add_subdirectory(Applications/ConvectionOfVortex)
+#add_subdirectory(Applications/CheckpointConverter)
+#add_subdirectory(Applications/bChannelVA)
+#add_subdirectory(Applications/OrganPipe)
+#add_subdirectory(Applications/LidDrivenCavity)
 
diff --git a/cpu/Applications/pChannel/CMakeLists.txt b/cpu/Applications/pChannel/CMakeLists.txt
index 14d4bb23d2f185bc64319cb18a5ac0317b9283ae..8b5f07fda67146c0b20c7e7b18e56e25371b3839 100644
--- a/cpu/Applications/pChannel/CMakeLists.txt
+++ b/cpu/Applications/pChannel/CMakeLists.txt
@@ -17,7 +17,7 @@ FILE(GLOB SPECIFIC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h
 SET(ALL_SOURCES ${ALL_SOURCES} ${SPECIFIC_FILES})
 SOURCE_GROUP(src FILES ${SPECIFIC_FILES})
   
-SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluids)
+SET(CAB_ADDITIONAL_LINK_LIBRARIES VirtualFluidsCore VirtualFluidsBasic)
 
 #################################################################
 ###   CREATE PROJECT                                          ###
diff --git a/cpu/Applications/pChannel/pChannel.cpp b/cpu/Applications/pChannel/pChannel.cpp
index f698d8d26bc2963464a0b30f709fbd9737e5fa96..b7fb0b443c5cfbfb186300962258ece238b4feb7 100644
--- a/cpu/Applications/pChannel/pChannel.cpp
+++ b/cpu/Applications/pChannel/pChannel.cpp
@@ -1,7 +1,7 @@
 #include <iostream>
 #include <string>
 #include "VirtualFluids.h"
-
+#include <omp.h>
 double rangeRandom(double M, double N)
 {
    return M + (rand() / (RAND_MAX / (N - M)));
@@ -653,7 +653,8 @@ void run(string configname)
          UBLOG(logINFO, "PID = " << myid << " Physical Memory currently used by current process: " << Utilities::getPhysMemUsedByMe());
       }
 
-      omp_set_num_threads(numOfThreads);
+      //omp_set_num_threads(numOfThreads);
+       numOfThreads = 4;
       SPtr<UbScheduler> stepGhostLayer(new UbScheduler(1));
       SPtr<Calculator> calculator(new BasicCalculator(grid, stepGhostLayer, (int)endTime));
       calculator->addCoProcessor(nupsCoProcessor);
diff --git a/cpu/CMake/VirtualFluidsMacros.cmake b/cpu/CMake/VirtualFluidsMacros.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..bc4dbd573e7d4b133326b1735b2120b6719346ab
--- /dev/null
+++ b/cpu/CMake/VirtualFluidsMacros.cmake
@@ -0,0 +1,135 @@
+
+
+set (VIRTUAL_FLUIDS_GLOB_FILES
+        *.cpp
+        *.c
+        *.h
+        *.cu
+        CACHE INTERNAL "File endings to glob for source files" )
+
+
+
+function (vf_get_library_name library_name)
+    get_filename_component(library_name_out ${CMAKE_CURRENT_SOURCE_DIR} NAME)
+    set(${library_name} ${library_name_out} PARENT_SCOPE)
+endfunction(vf_get_library_name)
+
+
+
+function(vf_add_library)
+    message("Start new Cmake")
+
+    set( options )
+    set( oneValueArgs )
+    set( multiValueArgs DEPENDS FOLDER)
+    cmake_parse_arguments( ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+
+    #message("${ARG_FOLDER}")
+
+    vf_get_library_name (library_name)
+    message("${library_name}")
+
+    if (ARG_FOLDER)
+        foreach(folder ${ARG_FOLDER})
+            foreach(file ${VIRTUAL_FLUIDS_GLOB_FILES})
+                set (filePath ${folder}/${file})
+                #message("${filePath}")
+                file ( GLOB part_files ${filePath} )
+                set(sourceFiles ${sourceFiles} ${part_files})
+            endforeach()
+        endforeach()
+
+        else ()
+     file ( GLOB_RECURSE sourceFiles ${VIRTUAL_FLUIDS_GLOB_FILES} )
+endif()
+
+    foreach(X IN LISTS sourceFiles)
+       #message(STATUS "${X}")
+    endforeach()
+
+
+    set (build_type STATIC)
+
+
+  MESSAGE(STATUS "configuring ${library_name} (type=${build_type})...")
+
+
+  #################################################################
+  ###   OS DEFINES                                              ###
+  #################################################################
+  IF(WIN32)
+      LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -D__WIN__)
+  ELSEIF(APPLE)
+      LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -D__APPLE__)
+  ELSEIF(UNIX)
+      LIST(APPEND CAB_ADDTIONAL_COMPILER_FLAGS -D__unix__)
+  ENDIF()
+
+  #################################################################
+  ###   ADDITIONAL_MAKE_CLEAN_FILES                             ###
+  #################################################################
+  #SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${GENERATED_FILES}")
+
+  #################################################################
+  ###   EXCECUTABLE                                             ###
+  #################################################################
+  IF(${build_type} MATCHES BINARY)
+      ADD_EXECUTABLE(${library_name} ${sourceFiles} )
+  ELSEIF(${build_type} MATCHES SHARED)
+      ADD_LIBRARY(${library_name} SHARED ${sourceFiles} )
+  ELSEIF(${build_type} MATCHES STATIC)
+      ADD_LIBRARY(${library_name} STATIC ${sourceFiles} )
+  ELSE()
+      MESSAGE(FATAL_ERROR "build_type=${build_type} doesn't match BINARY, SHARED or STATIC")
+  ENDIF()
+
+  #################################################################
+  ###   ADDITIONAL LINK LIBRARIES                               ###
+  #################################################################
+    message("Link Depending Libraries: ${ARG_DEPENDS}")
+    if (ARG_DEPENDS)
+    TARGET_LINK_LIBRARIES(${library_name} ${ARG_DEPENDS})
+    endif()
+
+  IF(CAB_ADDITIONAL_LINK_LIBRARIES)
+      TARGET_LINK_LIBRARIES(${library_name} ${CAB_ADDITIONAL_LINK_LIBRARIES})
+  ENDIF()
+
+  #################################################################
+  ###   COMPILER Flags                                          ###
+  #################################################################
+    message (${CAB_COMPILER})
+  ADD_COMPILER_FLAGS_TO_PROJECT(${CAB_COMPILER}  ${library_name} "CXX" ${build_type})
+  MESSAGE(STATUS "compiler flags for compiler ${CAB_COMPILER} on machine ${CAB_MACHINE} for project ${project_name} (${build_type}) have been configured")
+
+  IF(CAB_ADDTIONAL_COMPILER_FLAGS)
+      ADD_TARGET_PROPERTIES(${library_name} COMPILE_FLAGS ${CAB_ADDTIONAL_COMPILER_FLAGS})
+  ENDIF()
+  IF(CAB_ADDTIONAL_COMPILER_FLAGS_DEBUG)
+      MESSAGE(FATAL_ERROR "COMPILE_FLAGS_DEBUG_<CONFIG> not supported by cmake yet :-(")
+      ADD_TARGET_PROPERTIES(${library_name} COMPILE_FLAGS_DEBUG ${CAB_ADDTIONAL_COMPILER_FLAGS_DEBUG})
+  ENDIF()
+  IF(CAB_ADDTIONAL_COMPILER_FLAGS_RELEASE)
+      MESSAGE(FATAL_ERROR "COMPILE_FLAGS_<CONFIG> not supported by cmake yet :-(")
+      ADD_TARGET_PROPERTIES(${library_name} COMPILE_FLAGS_RELEASE ${CAB_ADDTIONAL_COMPILER_FLAGS_RELEASE})
+  ENDIF()
+
+  #################################################################
+  ###   ADDITIONAL LINK PROPERTIES                              ###
+  #################################################################
+  IF(CAB_ADDITIONAL_LINK_FLAGS)
+      ADD_TARGET_PROPERTIES(${library_name} LINK_FLAGS ${CAB_ADDITIONAL_LINK_FLAGS})
+  ENDIF()
+  IF(CAB_ADDITIONAL_LINK_FLAGS_DEBUG)
+      ADD_TARGET_PROPERTIES(${library_name} LINK_FLAGS_DEBUG ${CAB_ADDITIONAL_LINK_FLAGS_DEBUG})
+  ENDIF()
+  IF(CAB_ADDITIONAL_LINK_FLAGS_RELEASE)
+      ADD_TARGET_PROPERTIES(${library_name} LINK_FLAGS_RELEASE ${CAB_ADDITIONAL_LINK_FLAGS_RELEASE})
+  ENDIF()
+
+  SET(project_name ${library_name} CACHE STRING "name of binary")
+
+  MESSAGE(STATUS "configuring ${library_name} (type=${build_type})... done")
+
+
+endfunction(vf_add_library)
\ No newline at end of file
diff --git a/cpu/CMakeLists.txt b/cpu/CMakeLists.txt
index eb4287cd0b34b3f1e3023cf7077ead8d32a5f23b..a11fc6896c276b8c9d638e82f396055e86ea853d 100644
--- a/cpu/CMakeLists.txt
+++ b/cpu/CMakeLists.txt
@@ -158,6 +158,7 @@ ENDIF()
 #ENDIF()
 
 add_subdirectory(VirtualFluidsCore)
+add_subdirectory(VirtualFluidsBasic)
 
 set(APPS_ROOT "${SOURCE_ROOT}/Applications")
 INCLUDE(${APPS_ROOT}/Applications.cmake)
diff --git a/cpu/VirtualFluidsBasic/CMakeLists.txt b/cpu/VirtualFluidsBasic/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dcf15e33549bfdb095aaaeca7483f0a204aa66b1
--- /dev/null
+++ b/cpu/VirtualFluidsBasic/CMakeLists.txt
@@ -0,0 +1,31 @@
+
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic)
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic/numerics/geometry3d)
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic/numerics/geometry3d/Creator)
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic/numerics/geometry3d/KdTree)
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic/basics/container)
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic/basics/memory)
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic/basics/objects)
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic/basics/transmiitter)
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic/basics/utilities)
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsBasic/basics/writer)
+
+
+include (${PROJECT_SOURCE_DIR}/CMake/VirtualFluidsMacros.cmake)
+#message (${MPI_LIBRARY})
+SET(CAB_ADDITIONAL_LINK_LIBRARIES ${MPI_LIBRARY})
+
+INCLUDE_DIRECTORIES(${SOURCE_ROOT}/VirtualFluidsCore)
+INCLUDE_DIRECTORIES(${MPI_INCLUDE_PATH})
+
+vf_add_library(FOLDER
+        ${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d
+        ${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d/Creator
+        ${CMAKE_CURRENT_LIST_DIR}/numerics/geometry3d/KdTree
+        ${CMAKE_CURRENT_LIST_DIR}/basics/container
+        ${CMAKE_CURRENT_LIST_DIR}/basics/memory
+        ${CMAKE_CURRENT_LIST_DIR}/basics/objects
+        ${CMAKE_CURRENT_LIST_DIR}/basics/transmiitter
+        ${CMAKE_CURRENT_LIST_DIR}/basics/utilities
+        ${CMAKE_CURRENT_LIST_DIR}/basics/writer
+        )
\ No newline at end of file
diff --git a/cpu/VirtualFluidsCore/CMakeLists.txt b/cpu/VirtualFluidsCore/CMakeLists.txt
index 194ac8a06aed2ab38d6e08b8327c2fad0e06039a..47bcdef2cfb83b863346bfc19e6b54ceeb211b49 100644
--- a/cpu/VirtualFluidsCore/CMakeLists.txt
+++ b/cpu/VirtualFluidsCore/CMakeLists.txt
@@ -1,10 +1,6 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
 
-########################################################
-## C++ PROJECT                                       ###
-########################################################
-PROJECT(VirtualFluids)
-  
+
 #################################################################
 ###   PACKAGES						                          ###
 #################################################################
@@ -13,19 +9,19 @@ SET(WITH_SUBFOLDERS_FOR_SG TRUE)
 INCLUDE(${SOURCE_ROOT}/ThirdParty/MuParser/CMakePackage.txt)
 
 #new VirtualFluids
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/BoundaryConditions/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Connectors/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Data/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Interactors/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/LBM/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Parallel/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Grid/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Visitors/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/CoProcessors/CMakePackage.txt)
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Utilities/CMakePackage.txt)
+#sINCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/BoundaryConditions/CMakePackage.txt)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Connectors/CMakePackage.txt)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Data/CMakePackage.txt)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Interactors/CMakePackage.txt)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/LBM/CMakePackage.txt)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Parallel/CMakePackage.txt)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Grid/CMakePackage.txt)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Visitors/CMakePackage.txt)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/CoProcessors/CMakePackage.txt)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsCore/Utilities/CMakePackage.txt)
 
 #old VirtualFluids
-INCLUDE(${SOURCE_ROOT}/VirtualFluidsBasic/VirtualFluidsBasic.cmake)
+#INCLUDE(${SOURCE_ROOT}/VirtualFluidsBasic/VirtualFluidsBasic.cmake)
 
 #FETOL
 IF(${USE_FETOL})
@@ -98,4 +94,19 @@ message("CAB_ADDITIONAL_LINK_LIBRARIES: " ${CAB_ADDITIONAL_LINK_LIBRARIES})
 #################################################################
 ###   CREATE PROJECT                                          ###
 #################################################################
-CREATE_CAB_PROJECT(VirtualFluids STATIC)
+#CREATE_CAB_PROJECT(VirtualFluids STATIC)
+include (${PROJECT_SOURCE_DIR}/CMake/VirtualFluidsMacros.cmake)
+
+vf_add_library(DEPENDS VirtualFluidsBasic)
+
+vf_get_library_name(library_name)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic/numerics/geometry3d)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic/numerics/geometry3d/Creator)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic/numerics/geometry3d/KdTree)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic/basics/container)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic/basics/memory)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic/basics/objects)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic/basics/transmiitter)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic/basics/utilities)
+target_include_directories(${library_name} PRIVATE ${SOURCE_ROOT}/VirtualFluidsBasic/basics/writer)