diff --git a/CMakeLists.txt b/CMakeLists.txt
index 50e7a4fa6f8478d0818b7ded4000c0c406d2d97c..f27534089d304f10201f0feb30a4516a26bf6b86 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,7 +14,7 @@ cmake_minimum_required(VERSION 3.15..3.19 FATAL_ERROR)
 
 project(VirtualFluids CXX)
 
-set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
diff --git a/apps/gpu/LBM/metisTest/main.cpp b/apps/gpu/LBM/metisTest/main.cpp
index fb5116d5d495aff7de0b7be852608f36b46fa78d..4f8236d20730bf792d4a5e0c9509facc85048190 100644
--- a/apps/gpu/LBM/metisTest/main.cpp
+++ b/apps/gpu/LBM/metisTest/main.cpp
@@ -51,6 +51,8 @@
 #include "utilities/communication.h"
 #include "utilities/transformator/TransformatorImp.h"
 
+using namespace VF::GPU;
+
 std::string getGridPath(std::shared_ptr<Parameter> para, std::string Gridpath)
 {
     if (para->getNumprocs() == 1)
diff --git a/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.cpp b/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.cpp
index 1fca7d9b3bbf26bcec8c13876a760b6758f92670..1d1844f0112f66ec6982aa31e6cd85ceae248880 100644
--- a/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.cpp
+++ b/src/gpu/GksGpu/BoundaryConditions/BoundaryCondition.cpp
@@ -11,6 +11,8 @@
 #include "DataBase/DataBaseAllocator.h"
 #include "DataBase/DataBaseStruct.h"
 
+using namespace VF::GPU;
+
 namespace GksGpu{
 
 BoundaryCondition::BoundaryCondition( SPtr<DataBase> dataBase )
diff --git a/src/gpu/GksMeshAdapter/GksMeshAdapter.cpp b/src/gpu/GksMeshAdapter/GksMeshAdapter.cpp
index 2d2641e36ae26c0581f8de2563bcbcce8be619fa..86c8d88fd3157f7d05aaf02827469e0a97a3f2be 100644
--- a/src/gpu/GksMeshAdapter/GksMeshAdapter.cpp
+++ b/src/gpu/GksMeshAdapter/GksMeshAdapter.cpp
@@ -22,6 +22,8 @@
 #include "MeshCell.h"
 #include "MeshFace.h"
 
+using namespace VF::GPU;
+
 GksMeshAdapter::GksMeshAdapter(SPtr<MultipleGridBuilder> gridBuilder)
     : gridBuilder(gridBuilder)
 {}
diff --git a/src/gpu/GksMeshAdapter/MeshCell.cpp b/src/gpu/GksMeshAdapter/MeshCell.cpp
index 65a931c84deca244abf78e100bb838dd9c1870f3..aadc562e663fbe428bb16c1c4ac13cdb39284a94 100644
--- a/src/gpu/GksMeshAdapter/MeshCell.cpp
+++ b/src/gpu/GksMeshAdapter/MeshCell.cpp
@@ -34,6 +34,8 @@
 
 #include "GridGenerator/grid/NodeValues.h"
 
+using namespace VF::GPU;
+
 MeshCell::MeshCell(){
 
     level   = INVALID_INDEX;
diff --git a/src/gpu/GridGenerator/StreetPointFinder/StreetPointFinder.cpp b/src/gpu/GridGenerator/StreetPointFinder/StreetPointFinder.cpp
index 23d7c92ab826a7b560c248c4ca51cca831e5ca1f..45cc9f076a347cffb323e321846bab2120ed6a75 100644
--- a/src/gpu/GridGenerator/StreetPointFinder/StreetPointFinder.cpp
+++ b/src/gpu/GridGenerator/StreetPointFinder/StreetPointFinder.cpp
@@ -13,6 +13,8 @@
 #include "grid/Grid.h"
 #include "grid/NodeValues.h"
 
+using namespace VF::GPU;
+
 Street::Street(real xStartCell, real yStartCell, real xEndCell, real yEndCell, real dx)
 {
 	real length = std::sqrt((xEndCell - xStartCell)*(xEndCell - xStartCell)
diff --git a/src/gpu/GridGenerator/geometries/Triangle/Triangle.cu b/src/gpu/GridGenerator/geometries/Triangle/Triangle.cu
index f38eff75ad156daac4d44ce869485319ce305d17..a7ab484ceac7d333e1ab4b373c6c3d9eb22fb73c 100644
--- a/src/gpu/GridGenerator/geometries/Triangle/Triangle.cu
+++ b/src/gpu/GridGenerator/geometries/Triangle/Triangle.cu
@@ -5,6 +5,8 @@
 
 #include "grid/NodeValues.h"
 
+using namespace VF::GPU;
+
 HOSTDEVICE Triangle::Triangle(Vertex &v1, Vertex &v2, Vertex &v3, Vertex &normal) : v1(v1), v2(v2), v3(v3), normal(normal), patchIndex(INVALID_INDEX) {}
 HOSTDEVICE Triangle::Triangle(Vertex &v1, Vertex &v2, Vertex &v3) : v1(v1), v2(v2), v3(v3), patchIndex(INVALID_INDEX) { calcNormal(); }
 HOSTDEVICE Triangle::Triangle(){}
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu
index 4fcf93ef44912ce36aafd026992f77f088774f4e..1059bc281cb1321b87f215aa8a8bb1deff0e52a0 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMesh.cu
@@ -15,6 +15,8 @@
 
 #include "utilities/transformator/TransformatorImp.h"
 
+using namespace VF::GPU;
+
 
 TriangularMesh* TriangularMesh::make(const std::string& fileName, const std::vector<uint> ignorePatches)
 {
diff --git a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMeshStrategy.cpp b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMeshStrategy.cpp
index e3b5a7c4f0c92cb3f31df4fd0cd4697a7000a34d..b71a096576b1c9ad37d36cf1e67554381cb814b8 100644
--- a/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMeshStrategy.cpp
+++ b/src/gpu/GridGenerator/geometries/TriangularMesh/TriangularMeshStrategy.cpp
@@ -10,6 +10,8 @@
 #include "grid/GridImp.h"
 #include "grid/NodeValues.h"
 
+using namespace VF::GPU;
+
 void TriangularMeshDiscretizationStrategy::removeOddBoundaryCellNodes(GridImp* grid)
 {
 #pragma omp parallel for
diff --git a/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h b/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
index dd3837e4d12b4064b4499c5d9cdca4d7ad84c643..4a1d1ccf441cf1c15896976cc878e51f68d4c9e8 100644
--- a/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
+++ b/src/gpu/GridGenerator/grid/BoundaryConditions/BoundaryCondition.h
@@ -51,7 +51,7 @@ protected:
 public:
     char getType() const override
     {
-        return BC_PRESSURE;
+        return VF::GPU::BC_PRESSURE;
     }
 
     real getRho()
@@ -78,7 +78,7 @@ protected:
 public:
     virtual char getType() const override
     {
-        return BC_VELOCITY;
+        return VF::GPU::BC_VELOCITY;
     }
 
     void fillVelocityLists()
@@ -119,7 +119,7 @@ private:
 public:
     char getType() const override
     {
-        return BC_SOLID;
+        return VF::GPU::BC_SOLID;
     }
 
     void setVelocityForPatch( uint patch, real vx, real vy, real vz ){
diff --git a/src/gpu/GridGenerator/grid/BoundaryConditions/Side.cpp b/src/gpu/GridGenerator/grid/BoundaryConditions/Side.cpp
index 00ac6b3ddf7ac4d63dbdbf299d56f8126d6abdc6..e3a44ee1e74d9cc14e8a40f845f539d1306b993d 100644
--- a/src/gpu/GridGenerator/grid/BoundaryConditions/Side.cpp
+++ b/src/gpu/GridGenerator/grid/BoundaryConditions/Side.cpp
@@ -6,6 +6,8 @@
 
 #include "utilities/math/Math.h"
 
+using namespace VF::GPU;
+
 void Side::addIndices(SPtr<Grid> grid, SPtr<BoundaryCondition> boundaryCondition, std::string coord, real constant,
                       real startInner, real endInner, real startOuter, real endOuter)
 {
diff --git a/src/gpu/GridGenerator/grid/Field.cu b/src/gpu/GridGenerator/grid/Field.cu
index 9107e3942e1795d3c32ed9ffb200a6dac7c91bac..2ae1ab17d55fc7aff19d936e5bb388f2ffd7d4e7 100644
--- a/src/gpu/GridGenerator/grid/Field.cu
+++ b/src/gpu/GridGenerator/grid/Field.cu
@@ -3,6 +3,8 @@
 #include "grid/NodeValues.h"
 #include "grid/GridStrategy/GridStrategy.h"
 
+using namespace VF::GPU;
+
 CUDA_HOST Field::Field(SPtr<GridStrategy> gridStrategy, uint size) : gridStrategy(gridStrategy), size(size)
 {
     
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
index 1a81f71fbda0ecd5a87c86f82fa06f89aab0e151..73819e9037b6dba9c4d9d530f04d60d79af47665 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
+++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp
@@ -30,6 +30,8 @@
 #define GEOFLUID 19
 #define GEOSOLID 16
 
+using namespace VF::GPU;
+
 LevelGridBuilder::LevelGridBuilder(Device device, const std::string& d3qxx) : device(device), d3qxx(d3qxx)
 {
     this->communicationProcesses[CommunicationDirections::MX] = INVALID_INDEX;
diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
index 8bfb201c54689411a1c4ea56617f7f009dfb4b4f..fe7b53f5270f7b5235fdb8a0419558fa106ef878 100644
--- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
+++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h
@@ -11,7 +11,6 @@
 #include "grid/GridBuilder/GridBuilder.h"
 #include "grid/Grid.h"
 #include "grid/GridInterface.h"
-#include "grid/NodeValues.h"
 
 struct Vertex;
 class  Grid;
diff --git a/src/gpu/GridGenerator/grid/GridImp.cu b/src/gpu/GridGenerator/grid/GridImp.cu
index cd835ee1c512d23969aa2d448a3c18b5a5179ed8..1800f30255e093b3355985986873628e88660515 100644
--- a/src/gpu/GridGenerator/grid/GridImp.cu
+++ b/src/gpu/GridGenerator/grid/GridImp.cu
@@ -28,6 +28,8 @@
 
 CONSTANT int DIRECTIONS[DIR_END_MAX][DIMENSION];
 
+using namespace VF::GPU;
+
 
 CUDA_HOST GridImp::GridImp(Object* object, real startX, real startY, real startZ, real endX, real endY, real endZ, real delta, SPtr<GridStrategy> gridStrategy, Distribution distribution, uint level)
             : object(object), 
diff --git a/src/gpu/GridGenerator/grid/GridInterface.cu b/src/gpu/GridGenerator/grid/GridInterface.cu
index ec88c3b4afed654999cc6f6be16005a020cd0cd7..f1f0a0334b416bb7d5688fc3c1227e57a4b29ce9 100644
--- a/src/gpu/GridGenerator/grid/GridInterface.cu
+++ b/src/gpu/GridGenerator/grid/GridInterface.cu
@@ -7,6 +7,8 @@
 #include "grid/Field.h"
 #include "grid/NodeValues.h"
 
+using namespace VF::GPU;
+
 GridInterface::GridInterface()
 {
 
diff --git a/src/gpu/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.cpp b/src/gpu/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.cpp
index 34fbe03eb121c33fa01069d9498e833c6435510d..2fe2188c1e19a640908ab51dd828f52398f571a7 100644
--- a/src/gpu/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.cpp
+++ b/src/gpu/GridGenerator/grid/GridStrategy/GridCpuStrategy/GridCpuStrategy.cpp
@@ -13,6 +13,8 @@
 #include "grid/GridImp.h"
 #include "grid/NodeValues.h"
 
+using namespace VF::GPU;
+
 void GridCpuStrategy::allocateGridMemory(SPtr<GridImp> grid)
 {
     grid->neighborIndexX        = new int[grid->size];
diff --git a/src/gpu/GridGenerator/grid/NodeValues.h b/src/gpu/GridGenerator/grid/NodeValues.h
index b393356ae488bfc29ff6bf756e2898846545255f..3570fc51998c810b9ddaab159d45c97fdf2bc052 100644
--- a/src/gpu/GridGenerator/grid/NodeValues.h
+++ b/src/gpu/GridGenerator/grid/NodeValues.h
@@ -1,39 +1,44 @@
 #ifndef NodeValues_H
 #define NodeValues_H
 
-#define FLUID 0
+namespace VF::GPU
+{
 
-#define FLUID_CFC 1
-#define FLUID_CFF 2
+static constexpr char FLUID = 0;
 
-#define FLUID_FCC 3
-#define FLUID_FCF 4
+static constexpr char FLUID_CFC = 1;
+static constexpr char FLUID_CFF = 2;
 
-#define MULTI_GPU_SEND 10
-#define MULTI_GPU_RECIEVE 11
+static constexpr char FLUID_FCC = 3;
+static constexpr char FLUID_FCF = 4;
 
-#define BC_PRESSURE 20
-#define BC_VELOCITY 21
-#define BC_SOLID 22
+static constexpr char MULTI_GPU_SEND = 10;
+static constexpr char MULTI_GPU_RECIEVE = 11;
 
-#define BC_SLIP 23
-#define BC_NOSLIP 24
-#define BC_OUTFLOW 25
+static constexpr char BC_PRESSURE = 20;
+static constexpr char BC_VELOCITY = 21;
+static constexpr char BC_SOLID = 22;
 
-#define STOPPER_OUT_OF_GRID 30
-#define STOPPER_COARSE_UNDER_FINE 31
-#define STOPPER_SOLID 32
-#define STOPPER_OUT_OF_GRID_BOUNDARY 33
+static constexpr char BC_SLIP = 23;
+static constexpr char BC_NOSLIP = 24;
+static constexpr char BC_OUTFLOW = 25;
 
-#define INVALID_OUT_OF_GRID 40
-#define INVALID_COARSE_UNDER_FINE 41
-#define INVALID_SOLID 42
+static constexpr char STOPPER_OUT_OF_GRID = 30;
+static constexpr char STOPPER_COARSE_UNDER_FINE = 31;
+static constexpr char STOPPER_SOLID = 32;
+static constexpr char STOPPER_OUT_OF_GRID_BOUNDARY = 33;
+
+static constexpr char INVALID_OUT_OF_GRID = 40;
+static constexpr char INVALID_COARSE_UNDER_FINE = 41;
+static constexpr char INVALID_SOLID = 42;
 
 //????WTF?????
-#define INSIDE 50
-#define NEGATIVE_DIRECTION_BORDER 51
-#define Q_DEPRECATED 52
+static constexpr char INSIDE = 50;
+static constexpr char NEGATIVE_DIRECTION_BORDER = 51;
+static constexpr char Q_DEPRECATED = 52;
+
+static constexpr char OVERLAP_TMP = 60;
 
-#define OVERLAP_TMP 60
+}
 
 #endif
diff --git a/src/gpu/GridGenerator/io/GridVTKWriter/GridVTKWriter.cpp b/src/gpu/GridGenerator/io/GridVTKWriter/GridVTKWriter.cpp
index 19e3cef186781a7f0a411307afb976072078f07b..cabbe3a5a18181c46b9cafd7a5f429afea89a87a 100644
--- a/src/gpu/GridGenerator/io/GridVTKWriter/GridVTKWriter.cpp
+++ b/src/gpu/GridGenerator/io/GridVTKWriter/GridVTKWriter.cpp
@@ -15,6 +15,8 @@
 #include "grid/NodeValues.h"
 #include "grid/Cell.h"
 
+using namespace VF::GPU;
+
 FILE* GridVTKWriter::file = nullptr;
 WRITING_FORMAT GridVTKWriter::format = WRITING_FORMAT::ASCII;
 
diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
index 45323203a1d540ddd630c9e7751a4340329e0da9..0857bc7944505d53ea28094a28ba7a9e5b535ba5 100644
--- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
+++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp
@@ -9,7 +9,7 @@
 #include "Kernel/Kernel.h"
 
 void updateGrid27(Parameter* para, 
-                  Communicator* comm, 
+                  VF::GPU::Communicator* comm, 
                   CudaMemoryManager* cudaManager, 
                   std::vector<std::shared_ptr<PorousMedia>>& pm, 
                   int level, 
@@ -149,7 +149,7 @@ void collisionAdvectionDiffusion(Parameter* para, int level)
 	}
 }
 
-void exchangeMultiGPU(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangeMultiGPU(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
     if (para->getNumprocs() > 1)
 	{
diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h
index 5d404e612c9e5ce9211245ac776f517278be4532..12f766dff8ab243004d439f1872caead7600e6d8 100644
--- a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h
+++ b/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h
@@ -11,7 +11,7 @@
 class Kernel;
 
 extern "C" void updateGrid27(Parameter* para, 
-                             Communicator* comm, 
+                             VF::GPU::Communicator* comm, 
                              CudaMemoryManager* cudaManager, 
                              std::vector<std::shared_ptr<PorousMedia>>& pm, 
                              int level,
@@ -24,7 +24,7 @@ extern "C" void collisionPorousMedia(Parameter* para, std::vector<std::shared_pt
 
 extern "C" void collisionAdvectionDiffusion(Parameter* para, int level);
 
-extern "C" void exchangeMultiGPU(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangeMultiGPU(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
 
 extern "C" void postCollisionBC(Parameter* para, int level, unsigned int t);
 
diff --git a/src/gpu/VirtualFluids_GPU/Communication/Communicator.cpp b/src/gpu/VirtualFluids_GPU/Communication/Communicator.cpp
index df1aa298c925857a615602de7459f23d36fec2ec..77e09e1cc54d79f2c119b25e02f41ed05901c583 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/Communicator.cpp
+++ b/src/gpu/VirtualFluids_GPU/Communication/Communicator.cpp
@@ -12,6 +12,8 @@
 #endif
 //lib for windows Ws2_32.lib
 
+namespace VF::GPU
+{
 
 Communicator::Communicator()
 {
@@ -242,3 +244,5 @@ int Communicator::mapCudaDevice(const int &rank, const int &size, const std::vec
    free(host);
    return device;
 }
+
+}
diff --git a/src/gpu/VirtualFluids_GPU/Communication/Communicator.h b/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
index b584bc88081727ad1e298796ed45f1b05039c4f9..cb8f569e5027969db430f937f2ed7c189247d820 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
+++ b/src/gpu/VirtualFluids_GPU/Communication/Communicator.h
@@ -1,5 +1,5 @@
-#ifndef COMMUNICATOR_H
-#define COMMUNICATOR_H
+#ifndef COMMUNICATOR_GPU_H
+#define COMMUNICATOR_GPU_H
 
 #include <vector>
 
@@ -20,6 +20,8 @@
 //////////////////////////////////
 
 
+namespace VF::GPU
+{
 
 class VIRTUALFLUIDS_GPU_EXPORT Communicator
 {
@@ -73,5 +75,7 @@ private:
    Communicator(const Communicator&);
 };
 
+}
+
 #endif
 
diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp
index 7b4f4f45181e5b4e89f05d66525ab99b7020648f..f8fe9a94847f01dfe197763c9374286c393f5042 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp
+++ b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp
@@ -7,7 +7,7 @@
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // X
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePreCollDataXGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePreCollDataXGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -88,7 +88,7 @@ void exchangePreCollDataXGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 }
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePostCollDataXGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePostCollDataXGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -176,7 +176,7 @@ void exchangePostCollDataXGPU27(Parameter* para, Communicator* comm, CudaMemoryM
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Y
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePreCollDataYGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePreCollDataYGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -257,7 +257,7 @@ void exchangePreCollDataYGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 }
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePostCollDataYGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePostCollDataYGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -345,7 +345,7 @@ void exchangePostCollDataYGPU27(Parameter* para, Communicator* comm, CudaMemoryM
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Z
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePreCollDataZGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePreCollDataZGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -426,7 +426,7 @@ void exchangePreCollDataZGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 }
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePostCollDataZGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePostCollDataZGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -529,7 +529,7 @@ void exchangePostCollDataZGPU27(Parameter* para, Communicator* comm, CudaMemoryM
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //1D domain decomposition
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePreCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePreCollDataGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	for (unsigned int i = 0; i < (unsigned int)(para->getNumberOfProcessNeighbors(level, "send")); i++)
 	{
@@ -574,7 +574,7 @@ void exchangePreCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryMan
 
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePostCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePostCollDataGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	for (unsigned int i = 0; i < (unsigned int)(para->getNumberOfProcessNeighbors(level, "send")); i++)
 	{
@@ -623,7 +623,7 @@ void exchangePostCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //// X
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//void exchangePreCollDataXGPU27(Parameter* para, Communicator* comm, int level)
+//void exchangePreCollDataXGPU27(Parameter* para, VF::GPU::Communicator* comm, int level)
 //{
 //	for (unsigned int i = 0; i < (unsigned int)(para->getNumberOfProcessNeighborsX(level, "send")); i++)
 //	{
@@ -663,7 +663,7 @@ void exchangePostCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 //	}
 //}
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//void exchangePostCollDataXGPU27(Parameter* para, Communicator* comm, int level)
+//void exchangePostCollDataXGPU27(Parameter* para, VF::GPU::Communicator* comm, int level)
 //{
 //	for (unsigned int i = 0; i < (unsigned int)(para->getNumberOfProcessNeighborsX(level, "send")); i++)
 //	{
@@ -710,7 +710,7 @@ void exchangePostCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //// Y
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//void exchangePreCollDataYGPU27(Parameter* para, Communicator* comm, int level)
+//void exchangePreCollDataYGPU27(Parameter* para, VF::GPU::Communicator* comm, int level)
 //{
 //	for (unsigned int i = 0; i < (unsigned int)(para->getNumberOfProcessNeighborsY(level, "send")); i++)
 //	{
@@ -750,7 +750,7 @@ void exchangePostCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 //	}
 //}
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//void exchangePostCollDataYGPU27(Parameter* para, Communicator* comm, int level)
+//void exchangePostCollDataYGPU27(Parameter* para, VF::GPU::Communicator* comm, int level)
 //{
 //	for (unsigned int i = 0; i < (unsigned int)(para->getNumberOfProcessNeighborsY(level, "send")); i++)
 //	{
@@ -797,7 +797,7 @@ void exchangePostCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 //// Z
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//void exchangePreCollDataZGPU27(Parameter* para, Communicator* comm, int level)
+//void exchangePreCollDataZGPU27(Parameter* para, VF::GPU::Communicator* comm, int level)
 //{
 //	for (unsigned int i = 0; i < (unsigned int)(para->getNumberOfProcessNeighborsZ(level, "send")); i++)
 //	{
@@ -837,7 +837,7 @@ void exchangePostCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 //	}
 //}
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//void exchangePostCollDataZGPU27(Parameter* para, Communicator* comm, int level)
+//void exchangePostCollDataZGPU27(Parameter* para, VF::GPU::Communicator* comm, int level)
 //{
 //	for (unsigned int i = 0; i < (unsigned int)(para->getNumberOfProcessNeighborsZ(level, "send")); i++)
 //	{
@@ -932,7 +932,7 @@ void exchangePostCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryMa
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // X
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePreCollDataADXGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePreCollDataADXGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -1013,7 +1013,7 @@ void exchangePreCollDataADXGPU27(Parameter* para, Communicator* comm, CudaMemory
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 }
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePostCollDataADXGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePostCollDataADXGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -1101,7 +1101,7 @@ void exchangePostCollDataADXGPU27(Parameter* para, Communicator* comm, CudaMemor
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Y
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePreCollDataADYGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePreCollDataADYGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -1182,7 +1182,7 @@ void exchangePreCollDataADYGPU27(Parameter* para, Communicator* comm, CudaMemory
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 }
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePostCollDataADYGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePostCollDataADYGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -1270,7 +1270,7 @@ void exchangePostCollDataADYGPU27(Parameter* para, Communicator* comm, CudaMemor
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Z
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePreCollDataADZGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePreCollDataADZGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -1351,7 +1351,7 @@ void exchangePreCollDataADZGPU27(Parameter* para, Communicator* comm, CudaMemory
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 }
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangePostCollDataADZGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangePostCollDataADZGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -1486,7 +1486,7 @@ void exchangePostCollDataADZGPU27(Parameter* para, Communicator* comm, CudaMemor
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // X
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangeCollDataF3XGPU(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangeCollDataF3XGPU(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -1564,7 +1564,7 @@ void exchangeCollDataF3XGPU(Parameter* para, Communicator* comm, CudaMemoryManag
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Y
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangeCollDataF3YGPU(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangeCollDataF3YGPU(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
@@ -1642,7 +1642,7 @@ void exchangeCollDataF3YGPU(Parameter* para, Communicator* comm, CudaMemoryManag
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // Z
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-void exchangeCollDataF3ZGPU(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level)
+void exchangeCollDataF3ZGPU(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level)
 {
 	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//copy Device to Host
diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.h b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.h
index 0547dac4296896b69e50973befd759680f048076..3169b1b09a8f342d675f398fd4fafdab6f625337 100644
--- a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.h
+++ b/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.h
@@ -9,31 +9,31 @@
 
 //////////////////////////////////////////////////////////////////////////
 //1D domain decomposition
-extern "C" void exchangePreCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePostCollDataGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePreCollDataGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePostCollDataGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
 //////////////////////////////////////////////////////////////////////////
 //3D domain decomposition
-extern "C" void exchangePreCollDataXGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePreCollDataYGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePreCollDataZGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePostCollDataXGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePostCollDataYGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePostCollDataZGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePreCollDataXGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePreCollDataYGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePreCollDataZGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePostCollDataXGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePostCollDataYGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePostCollDataZGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
 //////////////////////////////////////////////////////////////////////////
 //3D domain decomposition convection diffusion
-extern "C" void exchangePreCollDataADXGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePreCollDataADYGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePreCollDataADZGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePostCollDataADXGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePostCollDataADYGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangePostCollDataADZGPU27(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePreCollDataADXGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePreCollDataADYGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePreCollDataADZGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePostCollDataADXGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePostCollDataADYGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangePostCollDataADZGPU27(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
 //////////////////////////////////////////////////////////////////////////
 //3D domain decomposition F3 - K18/K20
-extern "C" void exchangeCollDataF3XGPU( Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangeCollDataF3YGPU( Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
-extern "C" void exchangeCollDataF3ZGPU( Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangeCollDataF3XGPU( Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangeCollDataF3YGPU( Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
+extern "C" void exchangeCollDataF3ZGPU( Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager, int level);
 //////////////////////////////////////////////////////////////////////////
-extern "C" void barrierGPU(Communicator* comm);
+extern "C" void barrierGPU(VF::GPU::Communicator* comm);
 //////////////////////////////////////////////////////////////////////////
 
 #endif
diff --git a/src/gpu/VirtualFluids_GPU/Init/DefineGrid.cpp b/src/gpu/VirtualFluids_GPU/Init/DefineGrid.cpp
index ef718cd294c6f7ce8fd6ceb050398d19e2c15964..3f6ac535aa2fd0e11a5bfbac8e1ab8243ccda51e 100644
--- a/src/gpu/VirtualFluids_GPU/Init/DefineGrid.cpp
+++ b/src/gpu/VirtualFluids_GPU/Init/DefineGrid.cpp
@@ -6,7 +6,7 @@
 #include <helper_cuda.h>
 
 ////////////////////////////////////////////////////////////////////////////////
-void defineGrid(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager)
+void defineGrid(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager)
 {
 	for (int lev=para->getFine(); lev >= para->getCoarse(); lev--)
 	{
diff --git a/src/gpu/VirtualFluids_GPU/Init/DefineGrid.h b/src/gpu/VirtualFluids_GPU/Init/DefineGrid.h
index 3b8d18adf0cf0f3169fb2e3e108d58a670d9fd9c..efcdc32a1f15b6a76c38b9824c4880efb44c28d5 100644
--- a/src/gpu/VirtualFluids_GPU/Init/DefineGrid.h
+++ b/src/gpu/VirtualFluids_GPU/Init/DefineGrid.h
@@ -6,6 +6,6 @@
 #include "Communication/Communicator.h"
 #include "GPU/CudaMemoryManager.h"
 
-extern "C" void defineGrid(Parameter* para, Communicator* comm, CudaMemoryManager* cudaManager);
+extern "C" void defineGrid(Parameter* para, VF::GPU::Communicator* comm, CudaMemoryManager* cudaManager);
 
 #endif
diff --git a/src/gpu/VirtualFluids_GPU/Init/ReadGeometry.cpp b/src/gpu/VirtualFluids_GPU/Init/ReadGeometry.cpp
index b52e4eb64ab6f4582d4a5c079eac4aac5199356e..147f8f3ad1ccd6292a8ac2c79b5ab10ba6492d2e 100644
--- a/src/gpu/VirtualFluids_GPU/Init/ReadGeometry.cpp
+++ b/src/gpu/VirtualFluids_GPU/Init/ReadGeometry.cpp
@@ -1,7 +1,7 @@
 #include "Init/ReadGeometry.h"
 
 ////////////////////////////////////////////////////////////////////////////////
-void readGeometry(Parameter* para, Communicator* comm, int lev, std::string geometryFile)
+void readGeometry(Parameter* para, VF::GPU::Communicator* comm, int lev, std::string geometryFile)
 {
    int dataSizePerGPU = para->getParH(lev)->gridNX * para->getParH(lev)->gridNY * para->getParH(lev)->gridNZ;
    unsigned int dataSizeTotal = para->getParH(lev)->gridNX * para->getParH(lev)->gridNY * para->getParH(lev)->gridNZ * para->getNumprocs();
diff --git a/src/gpu/VirtualFluids_GPU/Init/ReadGeometry.h b/src/gpu/VirtualFluids_GPU/Init/ReadGeometry.h
index 26c070fa4431a602a1af522516163673adfd3565..e174f6b946d732bfe2673db15a34fc5e0535cfe7 100644
--- a/src/gpu/VirtualFluids_GPU/Init/ReadGeometry.h
+++ b/src/gpu/VirtualFluids_GPU/Init/ReadGeometry.h
@@ -7,6 +7,6 @@
 
 #include <iostream>
 
-extern "C" void readGeometry(Parameter* para, Communicator* comm, int lev, std::string geometryFile);
+extern "C" void readGeometry(Parameter* para, VF::GPU::Communicator* comm, int lev, std::string geometryFile);
 
 #endif
diff --git a/src/gpu/VirtualFluids_GPU/Init/SetParameter.cpp b/src/gpu/VirtualFluids_GPU/Init/SetParameter.cpp
index 08fd70961a8a9d0e89526113156e00bb41281dbb..7c83ee8cc29e15d5457e9a2459ccbc225250182d 100644
--- a/src/gpu/VirtualFluids_GPU/Init/SetParameter.cpp
+++ b/src/gpu/VirtualFluids_GPU/Init/SetParameter.cpp
@@ -2,7 +2,7 @@
 //#include "Interface_OpenFOAM/Interface.h"
 //
 //////////////////////////////////////////////////////////////////////////////////
-//void setParameters(Parameter* para, Communicator* comm, std::string &cstr)
+//void setParameters(Parameter* para, VF::GPU::Communicator* comm, std::string &cstr)
 //{
 //   ConfigFile cf(cstr.c_str());
 //   if ( !cf.read() )
diff --git a/src/gpu/VirtualFluids_GPU/Init/SetParameter.h b/src/gpu/VirtualFluids_GPU/Init/SetParameter.h
index 9fad54f04740f69122d74ef7e8c32b3af69af208..f32c264e77894f62f76b78080a13065d797e3eeb 100644
--- a/src/gpu/VirtualFluids_GPU/Init/SetParameter.h
+++ b/src/gpu/VirtualFluids_GPU/Init/SetParameter.h
@@ -9,7 +9,7 @@
 //
 //#include <iostream>
 //
-//void setParameters(Parameter* para, Communicator* comm, std::string &cstr);
+//void setParameters(Parameter* para, VF::GPU::Communicator* comm, std::string &cstr);
 //std::string getGridPath(Parameter* para, std::string Gridpath);
 //
 //#endif
diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
index c378276191e57720ea65999da56a9ca83f401a13..5ad1e0f8e56c2dbb5f42dafd547771e61e0b84cb 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
+++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
@@ -78,7 +78,7 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std
    this->gridProvider = gridProvider;
    this->cudaManager = cudaManager;
    gridProvider->initalGridInformations();
-   comm = Communicator::getInstanz();
+   comm = VF::GPU::Communicator::getInstanz();
    this->para = para;
 
    para->setMyID(comm->getPID());
diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
index 7a91331a76e565f9240e3a51ae45a88c753e9ee1..97214268172d54d66314b628574ea55467e1f971 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
+++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.h
@@ -14,7 +14,9 @@
 #include "LBM/LB.h"
 #include "VirtualFluids_GPU_export.h"
 
-class Communicator;
+namespace VF::GPU {
+	class Communicator;
+}
 class CudaMemoryManager;
 class Parameter;
 class GridProvider;
@@ -61,7 +63,7 @@ protected:
 
 	LogWriter output;
 
-    Communicator* comm;
+    VF::GPU::Communicator* comm;
     SPtr<Parameter> para;
     SPtr<GridProvider> gridProvider;
     SPtr<DataWriter> dataWriter;
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
index 89a50c7272d42516fe23824f7686284773a6fbe0..f2b495ba70f2770816c82097bd34ed70664e0649 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp
@@ -29,7 +29,7 @@ SPtr<Parameter> Parameter::make()
     return SPtr<Parameter>(new Parameter());
 }
 
-SPtr<Parameter> Parameter::make(SPtr<ConfigData> configData, Communicator* comm)
+SPtr<Parameter> Parameter::make(SPtr<ConfigData> configData, VF::GPU::Communicator* comm)
 {
 	return SPtr<Parameter>(new Parameter(configData, comm));
 }
@@ -37,7 +37,7 @@ SPtr<Parameter> Parameter::make(SPtr<ConfigData> configData, Communicator* comm)
 Parameter::Parameter()
 {
 }
-Parameter::Parameter(SPtr<ConfigData> configData, Communicator* comm)
+Parameter::Parameter(SPtr<ConfigData> configData, VF::GPU::Communicator* comm)
 {
 	//////////////////////////////////////////////////////////////////////////
 	this->setNumprocs(comm->getNummberOfProcess());
diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
index 3c09f5f0fabd855125987098ac8b7cb2e08ca605..070cac500dbc1887106755f00991e925b8008451 100644
--- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
+++ b/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h
@@ -25,7 +25,12 @@
 #include "VirtualFluids_GPU_export.h"
 
 class ConfigData;
-class Communicator;
+
+namespace VF::GPU
+{
+    class Communicator;
+}
+
 
 //struct
 struct ParameterStruct{
@@ -287,7 +292,7 @@ public:
 	//Parameter();
 	////////////////////////////////////////////////////////////////////////////
     static SPtr<Parameter> make();
-	static SPtr<Parameter> make(SPtr<ConfigData> configData, Communicator* comm);
+	static SPtr<Parameter> make(SPtr<ConfigData> configData, VF::GPU::Communicator* comm);
 
 
 	static Parameter* getInstanz();
@@ -1066,7 +1071,7 @@ private:
 	//LogWriter output;
 
 	Parameter();
-	Parameter(SPtr<ConfigData> configData, Communicator* comm);
+	Parameter(SPtr<ConfigData> configData, VF::GPU::Communicator* comm);
 	Parameter(const Parameter&);
 	void initInterfaceParameter(int level);
 	real TrafoXtoWorld(int CoordX, int level);