diff --git a/apps/cpu/AcousticPulse/ap.cpp b/apps/cpu/AcousticPulse/ap.cpp
index 23674d6b89fe692f9fca10ee5f111b31834af01f..1ef22dd18a9d34cf476877f2b1c8c6edcca1d79e 100644
--- a/apps/cpu/AcousticPulse/ap.cpp
+++ b/apps/cpu/AcousticPulse/ap.cpp
@@ -20,25 +20,25 @@ void run()
       //string  pathname = "d:/temp/AcousticPulse40Cube2y_test";
       //double  endTime = 20;
       //double  outTime = 20;
-      //LBMReal dx =  0.05;
+      //real dx =  0.05;
 
       //80
       //string  pathname = "d:/temp/AcousticPulse80Cube2y";
       //double  endTime = 40;
       //double  outTime = 40;
-      //LBMReal dx = 0.025;
+      //real dx = 0.025;
 
       //160
       //string  pathname = "d:/temp/AcousticPulse160Cube2y";
       //double  endTime = 80;
       //double  outTime = 80;
-      //LBMReal dx = 0.0125;
+      //real dx = 0.0125;
 
-      //LBMReal dx = 0.1; 
-      //LBMReal dx = 1.66666666667e-2; //120
+      //real dx = 0.1; 
+      //real dx = 1.66666666667e-2; //120
       
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 3.97e-7;
+      //real rhoLB = 0.0;
+      //real nuLB = 3.97e-7;
 
       //////////////////////////////////////////////////////////////////////////
       //DLR-F16 test
@@ -46,25 +46,25 @@ void run()
       string  pathname = "d:/temp/AcousticPulseXZ-4th-0.003";
       int     endTime = 20;
       double  outTime = 20;
-      LBMReal dx =  0.003;
-      LBMReal rhoLB = 0.0;
-      LBMReal nuLB = 8.66025e-6;
+      real dx =  0.003;
+      real rhoLB = 0.0;
+      real nuLB = 8.66025e-6;
       //////////////////////////////////////////////////////////////////////////
       ////dx_coarse = 0.0015 mm
       //string  pathname = "d:/temp/AcousticPulseXZ-4th-0.0015";
       //double  endTime = 40;
       //double  outTime = 40;
-      //LBMReal dx =  0.0015;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*2.0;
+      //real dx =  0.0015;
+      //real rhoLB = 0.0;
+      //real nuLB = 8.66025e-6*2.0;
       ////////////////////////////////////////////////////////////////////////////
       ////dx_coarse = 0.00075 mm
       //string  pathname = "d:/temp/AcousticPulseXZ-4th-0.00075";
       //double  endTime = 80;
       //double  outTime = 80;
-      //LBMReal dx =  0.00075;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*4.0;
+      //real dx =  0.00075;
+      //real rhoLB = 0.0;
+      //real nuLB = 8.66025e-6*4.0;
       //////////////////////////////////////////////////////////////////////////
 
       SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
diff --git a/apps/cpu/BoxBenchmark/bb.cpp b/apps/cpu/BoxBenchmark/bb.cpp
index 161ab3cf404456a73f08d2862abaa62754a5af3f..906d513ea91f64e8dc9b1982b98d616a78232a44 100644
--- a/apps/cpu/BoxBenchmark/bb.cpp
+++ b/apps/cpu/BoxBenchmark/bb.cpp
@@ -58,9 +58,9 @@ void run(string configname)
          }
 }
 
-      LBMReal dLB = length[1] / dx;
-      LBMReal rhoLB = 0.0;
-      LBMReal nuLB = (uLB*dLB) / Re;
+      real dLB = length[1] / dx;
+      real rhoLB = 0.0;
+      real nuLB = (uLB*dLB) / Re;
 
       SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
 
diff --git a/apps/cpu/ConvectionOfVortex/cov.cpp b/apps/cpu/ConvectionOfVortex/cov.cpp
index 8fb854c55034e549d8ddef1ec3b4bd967f64456b..f5685c56754a17d06190ff16588aa8bdd4b6b4f1 100644
--- a/apps/cpu/ConvectionOfVortex/cov.cpp
+++ b/apps/cpu/ConvectionOfVortex/cov.cpp
@@ -35,44 +35,44 @@ void run()
       //string  pathname = "d:/temp/ConvectionOfVortex_0.003_square";
       //int     endTime = 20;
       //double  outTime = 10;
-      //LBMReal dx =  0.003;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6;
+      //real dx =  0.003;
+      //real rhoLB = 0.0;
+      //real nuLB = 8.66025e-6;
 
       //////////////////////////////////////////////////////////////////////////
       ////dx_coarse = 0.0015 mm
       //string  pathname = "d:/temp/ConvectionOfVortex_0.0015";
       //double  endTime = 40;
       //double  outTime = 40;
-      //LBMReal dx =  0.0015;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*2.0;
+      //real dx =  0.0015;
+      //real rhoLB = 0.0;
+      //real nuLB = 8.66025e-6*2.0;
       ////////////////////////////////////////////////////////////////////////////
       //dx_coarse = 0.00075 mm
 
       //string  pathname = "d:/temp/ConvectionOfVortex_0.00075_4th_moments";
       //double  endTime = 2000;
       //double  outTime = 10;
-      //LBMReal dx =  0.00075;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*4.0;
+      //real dx =  0.00075;
+      //real rhoLB = 0.0;
+      //real nuLB = 8.66025e-6*4.0;
       //double yFactor = 4.0;
 
       //string  pathname = "d:/temp/ConvectionOfVortex_0.00075_moments";
       //double  endTime = 160;
       //double  outTime = 160;
-      //LBMReal dx =  0.00075;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*4.0;
+      //real dx =  0.00075;
+      //real rhoLB = 0.0;
+      //real nuLB = 8.66025e-6*4.0;
 
       //////////////////////////////////////////////////////////////////////////
       ////dx_coarse = 0.000375 mm
       //string  pathname = "d:/temp/ConvectionOfVortex_0.000375";
       //double  endTime = 80;
       //double  outTime = 80;
-      //LBMReal dx =  0.00075;
-      //LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = 8.66025e-6*8.0;
+      //real dx =  0.00075;
+      //real rhoLB = 0.0;
+      //real nuLB = 8.66025e-6*8.0;
       //////////////////////////////////////////////////////////////////////////
 
       SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
diff --git a/apps/cpu/CylinderSt/cylinder_st.cpp b/apps/cpu/CylinderSt/cylinder_st.cpp
index a3ec1e602cd528cdd7396fbe72b743a25b8b8506..fb09903cc0accaa59fb01a34bb55d37996c57615 100644
--- a/apps/cpu/CylinderSt/cylinder_st.cpp
+++ b/apps/cpu/CylinderSt/cylinder_st.cpp
@@ -88,13 +88,13 @@ void run(const char *cstr)
       double L2, L3, H;
       L2 = L3 = H = 0.41;
 
-      LBMReal radius = 0.05;
-      LBMReal uLB = 0.05;
-      LBMReal Re = 1000.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      //LBMReal nueLB = (uLB*l)/Re;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
+      real radius = 0.05;
+      real uLB = 0.05;
+      real Re = 1000.0;
+      real rhoLB = 1.0;
+      real l = L2 / dx;
+      //real nueLB = (uLB*l)/Re;
+      real nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
 
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
 
diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cpp.old b/apps/cpu/FlowAroundCylinder/cylinder.cpp.old
index 311e5ee963322acafc4e7220f4397e94924863dd..f411506ed807af5d1d6c0c8b5b099d2dfde79f14 100644
--- a/apps/cpu/FlowAroundCylinder/cylinder.cpp.old
+++ b/apps/cpu/FlowAroundCylinder/cylinder.cpp.old
@@ -45,13 +45,13 @@ void run(const char *cstr)
       double L2, L3, H;
       L2 = L3 = H = 0.41;
 
-      LBMReal radius = 0.05;
-      LBMReal rhoReal = 1.0; //kg/m^3
-      LBMReal uReal = 0.45;//m/s
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
+      real radius = 0.05;
+      real rhoReal = 1.0; //kg/m^3
+      real uReal = 0.45;//m/s
+      real uLB = 0.05;
+      real Re = 20.0;
+      real rhoLB = 0.0;
+      real l = L2 / dx;
 
       //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter(1.0, 1/sqrt(3.0)*(uReal/uLB), 1.0, 1.0/dx, dx*dx*dx));
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
@@ -96,7 +96,7 @@ void run(const char *cstr)
 
       dx = (0.41+2.0*dx)/(10.0*(int)blocknx2);
 
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
+      real nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
 
       double blockLength = blocknx1*dx;
 
@@ -415,13 +415,13 @@ void run2(const char *cstr)
       double L2, L3, H;
       L2 = L3 = H = 0.41*2.0;
 
-      LBMReal radius = 0.05*2.0;
-      LBMReal rhoReal = 1.0; //kg/m^3
-      LBMReal uReal = 0.45;//m/s
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
+      real radius = 0.05*2.0;
+      real rhoReal = 1.0; //kg/m^3
+      real uReal = 0.45;//m/s
+      real uLB = 0.05;
+      real Re = 20.0;
+      real rhoLB = 0.0;
+      real l = L2 / dx;
 
       //LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter(1.0, 1/sqrt(3.0)*(uReal/uLB), 1.0, 1.0/dx, dx*dx*dx));
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
@@ -467,7 +467,7 @@ void run2(const char *cstr)
 
       //dx = (0.41+2.0*dx)/(10.0*(int)blocknx2);
 
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
+      real nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
 
       double blockLength = blocknx1*dx;
 
diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cpp1 b/apps/cpu/FlowAroundCylinder/cylinder.cpp1
index b9c1f3f480e09774f01edc7680f917dc150241fa..591002f9783d033aeb4c4b5123d7dca8da0d5bdc 100644
--- a/apps/cpu/FlowAroundCylinder/cylinder.cpp1
+++ b/apps/cpu/FlowAroundCylinder/cylinder.cpp1
@@ -84,13 +84,13 @@ void run(const char *cstr)
       double L2 = 0.41;
       double L3 = 0.41;
 
-      LBMReal radius = 0.05;
-      LBMReal uLB = 0.01;
-      LBMReal Re = 100.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      //LBMReal nueLB = (uLB*l)/Re;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
+      real radius = 0.05;
+      real uLB = 0.01;
+      real Re = 100.0;
+      real rhoLB = 1.0;
+      real l = L2 / dx;
+      //real nueLB = (uLB*l)/Re;
+      real nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
 
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
 
diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cpp2 b/apps/cpu/FlowAroundCylinder/cylinder.cpp2
index 133329782f2ac61a87d9e76a70eb32f64719fa26..9548681c7e510b0a9a216a743717bf665fd50b2f 100644
--- a/apps/cpu/FlowAroundCylinder/cylinder.cpp2
+++ b/apps/cpu/FlowAroundCylinder/cylinder.cpp2
@@ -97,13 +97,13 @@ void run(const char *cstr)
       double L2 = 0.41;
       double L3 = 0.41;
 
-      LBMReal radius = 0.05;
-      LBMReal uLB = 0.01;
-      LBMReal Re = 100.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      //LBMReal nueLB = (uLB*l)/Re;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
+      real radius = 0.05;
+      real uLB = 0.01;
+      real Re = 100.0;
+      real rhoLB = 1.0;
+      real l = L2 / dx;
+      //real nueLB = (uLB*l)/Re;
+      real nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
 
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
 
diff --git a/apps/cpu/Hagen_Poiseuille_flow/pflow.cpp b/apps/cpu/Hagen_Poiseuille_flow/pflow.cpp
index 77395b3b1adb711570fbfca18b48bac58dbcfc74..8ff91ea401869e09453765e7e0b73d77650817ac 100644
--- a/apps/cpu/Hagen_Poiseuille_flow/pflow.cpp
+++ b/apps/cpu/Hagen_Poiseuille_flow/pflow.cpp
@@ -56,7 +56,7 @@ using namespace std;
 //      const int blocknx2 = blocknx[1];
 //      const int blocknx3 = blocknx[2];
 //
-//      LBMReal rhoLB = 0.0;
+//      real rhoLB = 0.0;
 //
 //      SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
 //
@@ -325,7 +325,7 @@ void pflowdp(string configname)
       SPtr<vf::parallel::Communicator> comm = vf::parallel::MPICommunicator::getInstance();
       int myid = comm->getProcessID();
 
-      LBMReal rhoLB = 0.0;
+      real rhoLB = 0.0;
       double rhoLBinflow = dpLB * 3.0;
 
       SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
@@ -349,7 +349,7 @@ void pflowdp(string configname)
       double Re = (4 * h * Umax) / (3 * nuLB);
 
       //bc
-      LBMReal uLB = 0.01;
+      real uLB = 0.01;
       mu::Parser fct;
       fct.SetExpr("U");
       fct.DefineConst("U", uLB);
diff --git a/apps/cpu/Hagen_Poiseuille_flow2/pflow2.cpp b/apps/cpu/Hagen_Poiseuille_flow2/pflow2.cpp
index 3c66869fe5460158d1c79de2e405369fced6bb5f..249634f990f9d77d9c7d5c34f12dbc150d86d410 100644
--- a/apps/cpu/Hagen_Poiseuille_flow2/pflow2.cpp
+++ b/apps/cpu/Hagen_Poiseuille_flow2/pflow2.cpp
@@ -32,7 +32,7 @@ void pflowdp(string configname)
       SPtr<vf::parallel::Communicator> comm = vf::parallel::MPICommunicator::getInstance();
       int myid = comm->getProcessID();
 
-      LBMReal rhoLB = 0.0;
+      real rhoLB = 0.0;
       double rhoLBinflow = dpLB*3.0;
 
       SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
diff --git a/apps/cpu/InterfaceTest/itest.cpp b/apps/cpu/InterfaceTest/itest.cpp
index 37d0571b9f36730671a2abeda49add4baa6b65ae..95430223945c7d6d6f2e15b16e6b03d51b305ff5 100644
--- a/apps/cpu/InterfaceTest/itest.cpp
+++ b/apps/cpu/InterfaceTest/itest.cpp
@@ -21,10 +21,10 @@ void run()
       string  pathname = "d:/temp/InterfaceTest";
       int  endTime = 2000;
       double  outTime = 100;
-      LBMReal dx =  0.05;
+      real dx =  0.05;
       
-      LBMReal rhoLB = 0.0;
-      LBMReal nuLB = 3.97e-7;
+      real rhoLB = 0.0;
+      real nuLB = 3.97e-7;
 
       SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter());
 
diff --git a/apps/cpu/LaminarTubeFlowConv/ltf.cpp b/apps/cpu/LaminarTubeFlowConv/ltf.cpp
index d7515d44bfd135d95a103aa758f38e376421b01c..a9a789ce045d6d9a3b3ff14a602ba6cf7d3ce53a 100644
--- a/apps/cpu/LaminarTubeFlowConv/ltf.cpp
+++ b/apps/cpu/LaminarTubeFlowConv/ltf.cpp
@@ -68,9 +68,9 @@ void run(int tn)
       double L2 = y[tn];
       double L3 = z[tn];
 
-      LBMReal dLB = L2;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
+      real dLB = L2;
+      real rhoLB = 0.0;
+      real l = L2 / dx;
 
 
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
diff --git a/apps/cpu/block_test/block_test_all.hpp b/apps/cpu/block_test/block_test_all.hpp
index fddbce9d91d75458ba709d1fdfa822518ebb8332..19a1d0be14d5fb1a228a37f0c93c9d536e58cc90 100644
--- a/apps/cpu/block_test/block_test_all.hpp
+++ b/apps/cpu/block_test/block_test_all.hpp
@@ -106,12 +106,12 @@ void block_test_all(const char *cstr)
       double L2, L3, H;
       L2 = L3 = H = gridNx2*blocknx1;
 
-      LBMReal radius = 3;
-      LBMReal uLB = 0.05;
-      LBMReal Re = 300.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
+      real radius = 3;
+      real uLB = 0.05;
+      real Re = 300.0;
+      real rhoLB = 1.0;
+      real l = L2 / dx;
+      real nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
 
 
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
diff --git a/apps/cpu/block_test/block_test_incompressible.hpp b/apps/cpu/block_test/block_test_incompressible.hpp
index 429bb8fe9469a723aa9c28db474a96e6257e9a0a..27e21f452bb1672310da2052c2d030b72b51c4d4 100644
--- a/apps/cpu/block_test/block_test_incompressible.hpp
+++ b/apps/cpu/block_test/block_test_incompressible.hpp
@@ -68,13 +68,13 @@ void block_test_incompressible(const char *cstr1, const char *cstr2)
       double L2, L3, H;
       L2 = L3 = H = gridNx2*blocknx1*dx;
 
-      LBMReal radius = 3.0*dx;
-      LBMReal uLB = 0.01;
-      LBMReal Re = 0.5;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-      LBMReal nuLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-      //LBMReal nueLB = 0.005842;
+      real radius = 3.0*dx;
+      real uLB = 0.01;
+      real Re = 0.5;
+      real rhoLB = 0.0;
+      real l = L2 / dx;
+      real nuLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
+      //real nueLB = 0.005842;
 
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
 
diff --git a/apps/cpu/block_test/block_test_periodic.hpp b/apps/cpu/block_test/block_test_periodic.hpp
index 3b11e4c3902394d13bb1aa8e101b6431cdfca707..875f69f2375470d9b89f519ef3dc97d431d4c0a1 100644
--- a/apps/cpu/block_test/block_test_periodic.hpp
+++ b/apps/cpu/block_test/block_test_periodic.hpp
@@ -59,13 +59,13 @@ void block_test_periodic(const char *cstr1, const char *cstr2)
       double L2, L3, H;
       L2 = L3 = H = gridNx2*blocknx1;
 
-      LBMReal radius = 3;
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal l = L2 / dx;
-      //LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
-      LBMReal nueLB = 0.05842;
+      real radius = 3;
+      real uLB = 0.05;
+      real Re = 20.0;
+      real rhoLB = 0.0;
+      real l = L2 / dx;
+      //real nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
+      real nueLB = 0.05842;
 
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
 
diff --git a/apps/cpu/bond_benchmark/bonb_b_chanel.cpp b/apps/cpu/bond_benchmark/bonb_b_chanel.cpp
index 6aac623f406496ee692f2f6b4141cc6827a7e215..ab39733fe82f054d30789af402c70a9f94d5fa5e 100644
--- a/apps/cpu/bond_benchmark/bonb_b_chanel.cpp
+++ b/apps/cpu/bond_benchmark/bonb_b_chanel.cpp
@@ -77,12 +77,12 @@ void chanel(const char *cstr)
       double L2, L3, H;
       L2 = L3 = H = gridNx2*blocknx1;
 
-      LBMReal radius = 7;
-      LBMReal uLB = 0.05;
-      LBMReal Re = 300.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = L2 / dx;
-      LBMReal nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
+      real radius = 7;
+      real uLB = 0.05;
+      real Re = 300.0;
+      real rhoLB = 1.0;
+      real l = L2 / dx;
+      real nueLB = (((4.0/9.0)*uLB)*2.0*(radius/dx))/Re;
 
 
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
diff --git a/apps/cpu/bond_benchmark/bond_b.cpp b/apps/cpu/bond_benchmark/bond_b.cpp
index 02a1e4d0ff652a7f600074164687859f61a0193c..5a1b1f47a7d3c3c90752eb69800c5d4d6e0c2163 100644
--- a/apps/cpu/bond_benchmark/bond_b.cpp
+++ b/apps/cpu/bond_benchmark/bond_b.cpp
@@ -108,10 +108,10 @@ void periodic(const char *cstr1, const char *cstr2)
       double L2, L3, H;
       L2 = L3 = H = gridNx2*blocknx1;
 
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = 0.05842;
+      real uLB = 0.05;
+      real Re = 20.0;
+      real rhoLB = 0.0;
+      real nueLB = 0.05842;
 
       LBMUnitConverterPtr conv = LBMUnitConverterPtr(new LBMUnitConverter());
 
diff --git a/apps/cpu/greenvortex/greenvortex.cpp b/apps/cpu/greenvortex/greenvortex.cpp
index ba54105e338e28b660d79613eae67aa6bfcd76a2..207700755db3bcf29642c9208ad6eaa05919d79a 100644
--- a/apps/cpu/greenvortex/greenvortex.cpp
+++ b/apps/cpu/greenvortex/greenvortex.cpp
@@ -71,11 +71,11 @@ void run(const char *cstr)
 
       CommunicatorPtr comm(new MPICommunicator());
 
-      LBMReal uLB = 0.01;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = blockLentghX2 / dx;
-      LBMReal nueLB = (uLB*l)/Re;
+      real uLB = 0.01;
+      real Re = 20.0;
+      real rhoLB = 1.0;
+      real l = blockLentghX2 / dx;
+      real nueLB = (uLB*l)/Re;
 
       SimulationParametersPtr param = SimulationParameters::getInstanz();
       param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
diff --git a/apps/cpu/gridRf/gridRf.cpp b/apps/cpu/gridRf/gridRf.cpp
index 38e5c46f53e59fff2cb5135549cf69370c933a09..8dd1d7449f57bff34a312968dd6a69e9e16d3c66 100644
--- a/apps/cpu/gridRf/gridRf.cpp
+++ b/apps/cpu/gridRf/gridRf.cpp
@@ -70,11 +70,11 @@ void run(const char *cstr)
 
       CommunicatorPtr comm(new MPICommunicator());
 
-      LBMReal uLB = 0.01;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 1.0;
-      LBMReal l = blockLentghX2 / dx;
-      LBMReal nueLB = (uLB*l)/Re;
+      real uLB = 0.01;
+      real Re = 20.0;
+      real rhoLB = 1.0;
+      real l = blockLentghX2 / dx;
+      real nueLB = (uLB*l)/Re;
 
       SimulationParametersPtr param = SimulationParameters::getInstanz();
       param->setCollisionModelType(SimulationParameters::COMPRESSIBLE);
diff --git a/apps/cpu/levels/levels.cpp b/apps/cpu/levels/levels.cpp
index ae2ce21afffc9445bd32158d054a5e34b2455e44..36061c54f6787f48de9eff0a4ae93b30f39960a9 100644
--- a/apps/cpu/levels/levels.cpp
+++ b/apps/cpu/levels/levels.cpp
@@ -33,13 +33,13 @@ void run(string configname)
       vector<int> blockNx = config.getVector<int>("blockNx");
       double radius = config.getValue<double>("radius");
 
-      //LBMReal radius = 4;
-      LBMReal uLB = 0.1;
-      LBMReal Re = 1;
-      LBMReal rhoLB = 0.0;
-      //LBMReal nuLB = (uLB*2.0*radius)/Re;
-      //LBMReal nuLB = (uLB*L2)/Re;
-      LBMReal nuLB = 0.168666666667/100;
+      //real radius = 4;
+      real uLB = 0.1;
+      real Re = 1;
+      real rhoLB = 0.0;
+      //real nuLB = (uLB*2.0*radius)/Re;
+      //real nuLB = (uLB*L2)/Re;
+      real nuLB = 0.168666666667/100;
 
       double dp_LB = 1e-6;
       double rhoLBinflow = dp_LB*3.0;
diff --git a/apps/cpu/mpi_benchmark/mpib.cpp b/apps/cpu/mpi_benchmark/mpib.cpp
index 1165b14be665aadd304ef35bf52aa7eef8d92542..8cde2fa67a41d6f635d70633c4e46f73e4e15fff 100644
--- a/apps/cpu/mpi_benchmark/mpib.cpp
+++ b/apps/cpu/mpi_benchmark/mpib.cpp
@@ -67,10 +67,10 @@ void run(string configname)
 
       }
 
-      LBMReal uLB = 0.05;
-      LBMReal Re = 20.0;
-      LBMReal rhoLB = 0.0;
-      LBMReal nueLB = 0.05842;
+      real uLB = 0.05;
+      real Re = 20.0;
+      real rhoLB = 0.0;
+      real nueLB = 0.05842;
       
       SPtr<Grid3D> grid(new Grid3D(comm));
       
diff --git a/src/basics/CMakeLists.txt b/src/basics/CMakeLists.txt
index 0d4559558e2ca027fb60c9c054b545595d18df4b..ee63d2c1d30ae12add577779dcf949956f54a7ac 100644
--- a/src/basics/CMakeLists.txt
+++ b/src/basics/CMakeLists.txt
@@ -26,8 +26,3 @@ if(BUILD_USE_BOOST)
 endif()
 
 vf_add_tests()
-
-# TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/139
-# if(BUILD_USE_MPI)
-    target_link_libraries(${library_name} PRIVATE MPI::MPI_CXX)
-# endif()
\ No newline at end of file
diff --git a/src/basics/DataTypes.h b/src/basics/DataTypes.h
index 36fd33aaa0587382ce322c06b46bbb7cd0cdd8d0..266e6d3b420383acdd288429d71f3b1f3e4859db 100644
--- a/src/basics/DataTypes.h
+++ b/src/basics/DataTypes.h
@@ -26,13 +26,12 @@
 //  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 DataTypes.h
-//! \ingroup Core
 //! \author Soeren Peters
 //=======================================================================================
 #ifndef DATATYPES_H
 #define DATATYPES_H
 
+#include <limits>
 #include <string>
 
 #ifdef VF_DOUBLE_ACCURACY
@@ -41,6 +40,8 @@ using real = double;
 using real = float;
 #endif
 
+using realLim = std::numeric_limits<real>;
+
 using uint = unsigned int;
 #define INVALID_INDEX 4294967295 // max uint
 
diff --git a/src/cpu/VirtualFluids.h b/src/cpu/VirtualFluids.h
index ba0ed84971c53df40e3d7df14796d1b9ce0cf013..aa5d45f444211cb2c39c8101747fd858c7e55abc 100644
--- a/src/cpu/VirtualFluids.h
+++ b/src/cpu/VirtualFluids.h
@@ -43,6 +43,9 @@
 #include <parallel/Communicator.h>
 #include <parallel/MPICommunicator.h>
 #include <parallel/NullCommunicator.h>
+#include <parallel/transmitter/TbTransmitter.h>
+#include <parallel/transmitter/TbTransmitterLocal.h>
+#include <parallel/transmitter/TbTransmitterMpiPool.h>
 
 #include <basics/PointerDefinitions.h>
 
@@ -57,9 +60,6 @@
 #include <basics/memory/MbSmartPtr.h>
 #include <basics/memory/MbSmartPtrBase.h>
 #include <basics/objects/ObObject.h>
-#include <basics/transmitter/TbTransmitter.h>
-#include <basics/transmitter/TbTransmitterLocal.h>
-#include <basics/transmitter/TbTransmitterMpiPool.h>
 #include <basics/utilities/UbComparators.h>
 #include <basics/utilities/UbEqual.h>
 #include <basics/utilities/UbException.h>
diff --git a/src/cpu/core/BoundaryConditions/OutflowNonReflectingWithPressure.cpp b/src/cpu/core/BoundaryConditions/OutflowNonReflectingWithPressure.cpp
index 71bfcd74563861a7bc1c6819c4854b65a24d9679..5fd757d42d6e114921094c51283fbc99f06abebf 100644
--- a/src/cpu/core/BoundaryConditions/OutflowNonReflectingWithPressure.cpp
+++ b/src/cpu/core/BoundaryConditions/OutflowNonReflectingWithPressure.cpp
@@ -62,8 +62,8 @@ void OutflowNonReflectingWithPressure::applyBC()
  //   using namespace UbMath;
     using namespace vf::basics::constant;
 
-    LBMReal f[ENDF + 1];
-    LBMReal ftemp[ENDF + 1];
+    real f[ENDF + 1];
+    real ftemp[ENDF + 1];
 
     int nx1       = x1;
     int nx2       = x2;
@@ -95,9 +95,9 @@ void OutflowNonReflectingWithPressure::applyBC()
     distributions->getPreCollisionDistribution(f, x1, x2, x3);
     distributions->getPreCollisionDistribution(ftemp, nx1, nx2, nx3);
 
-    LBMReal rho, vx1, vx2, vx3;
+    real rho, vx1, vx2, vx3;
     calcMacrosFct(f, rho, vx1, vx2, vx3);
-    LBMReal delf = rho* c1o100;
+    real delf = rho* c1o100;
     switch (direction) {
         case dP00:
             f[dP00]   = ftemp[dP00] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP00] - delf* WEIGTH[dP00];
diff --git a/src/cpu/core/BoundaryConditions/PressureNonEquilibrium.cpp b/src/cpu/core/BoundaryConditions/PressureNonEquilibrium.cpp
index ec7689b590118899ed5295a803c33ac208d032bf..7c1a32b4618c1f01c8a74a2738314ece4ed7cc94 100644
--- a/src/cpu/core/BoundaryConditions/PressureNonEquilibrium.cpp
+++ b/src/cpu/core/BoundaryConditions/PressureNonEquilibrium.cpp
@@ -81,7 +81,7 @@ void PressureNonEquilibrium::applyBC()
 
     real rho, vx1, vx2, vx3;
     calcMacrosFct(f, rho, vx1, vx2, vx3);
-    // LBMReal vlimit=0.01;
+    // real vlimit=0.01;
     // vx1=(fabs(vx1)>vlimit) ? vx1/fabs(vx1)*vlimit : vx1;
     // vx2=(fabs(vx2)>vlimit) ? vx2/fabs(vx2)*vlimit : vx2;
     // vx3=(fabs(vx3)>vlimit) ? vx3/fabs(vx3)*vlimit : vx3;
diff --git a/src/cpu/core/BoundaryConditions/VelocityNonReflecting.cpp b/src/cpu/core/BoundaryConditions/VelocityNonReflecting.cpp
index 1e45749e0f013245c37012b5ae61b0efea888bf8..02b96ee04a09eb9ab5ba0760e01f30c7c1fc3adc 100644
--- a/src/cpu/core/BoundaryConditions/VelocityNonReflecting.cpp
+++ b/src/cpu/core/BoundaryConditions/VelocityNonReflecting.cpp
@@ -67,8 +67,8 @@ void VelocityNonReflecting::applyBC()
  //   using namespace UbMath;
     using namespace vf::basics::constant;
 
-    LBMReal f[ENDF + 1];
-    LBMReal ftemp[ENDF + 1];
+    real f[ENDF + 1];
+    real ftemp[ENDF + 1];
 
     int nx1       = x1;
     int nx2       = x2;
@@ -106,22 +106,20 @@ void VelocityNonReflecting::applyBC()
     distributions->getPreCollisionDistribution(f, x1, x2, x3);
     distributions->getPreCollisionDistribution(ftemp, nx1, nx2, nx3);
 
-    LBMReal rho, vx1, vx2, vx3;
+    real rho, vx1, vx2, vx3;
     calcMacrosFct(f, rho, vx1, vx2, vx3);
     //vx1                  = 0.;
-    //LBMReal BCVeloWeight = c1o2;
-     //LBMReal BCVeloWeight =this->BCVeloWeight;
-    // LBMReal velocity     = 0.004814077025232405; 
-     // LBMReal velocity     = 0.00057735;
-    //LBMReal velocity = 0.04; 
-      // LBMReal velocity = 0.01; 
-     // LBMReal velocity = 1./112.; 
-    // LBMReal velocity = 1./126.; 
-     //LBMReal velocity = c1o100/2;
-    // LBMReal velocity = this->velocity;
-     // LBMReal velocity = 0.005; 
-    //LBMReal delf         =(-velocity+vx1)*0.5 ;
-    LBMReal delf; 
+    real BCVeloWeight = c1o2;
+    // real velocity     = 0.004814077025232405; 
+     // real velocity     = 0.00057735;
+    //real velocity = 0.04; 
+      // real velocity = 0.01; 
+     // real velocity = 1./112.; 
+    // real velocity = 1./126.; 
+     real velocity = c1o100/2;
+     // real velocity = 0.005; 
+    //real delf         =(-velocity+vx1)*0.5 ;
+    real delf; 
 
     switch (direction) {
         case dP00:
diff --git a/src/cpu/core/BoundaryConditions/VelocityWithPressureInterpolated.cpp b/src/cpu/core/BoundaryConditions/VelocityWithPressureInterpolated.cpp
index a0f106737e78c6adb8ae89605a854ab302bb67a9..520b2006c1ecbc297b48646cdbf2a836197c2d4b 100644
--- a/src/cpu/core/BoundaryConditions/VelocityWithPressureInterpolated.cpp
+++ b/src/cpu/core/BoundaryConditions/VelocityWithPressureInterpolated.cpp
@@ -83,15 +83,15 @@ void VelocityWithPressureInterpolated::applyBC()
         if (minX1 <= nX1 && maxX1 > nX1 && minX2 <= nX2 && maxX2 > nX2 && minX3 <= nX3 && maxX3 > nX3) {
             if (bcArray->isSolid(nX1, nX2, nX3)) {
                 const int invDir = D3Q27System::INVDIR[fdir];
-                //LBMReal q =1.0;// bcPtr->getQ(invDir);// m+m q=0 stabiler
+                //real q =1.0;// bcPtr->getQ(invDir);// m+m q=0 stabiler
                 real velocity = bcPtr->getBoundaryVelocity(fdir);
                 
-                //LBMReal fReturn = ((1.0 - q) / (1.0 + q))*((f[fdir] - feq[fdir]*collFactor) / (1.0 -
+                //real fReturn = ((1.0 - q) / (1.0 + q))*((f[fdir] - feq[fdir]*collFactor) / (1.0 -
                 //collFactor)) + ((q*(f[fdir] + f[invDir]) - velocity*rho) / (1.0 +
                 //q))-drho*D3Q27System::WEIGTH[invDir];
 
                 // if q=1
-                // LBMReal fReturn = ((q*(f[fdir] + f[invDir]) - velocity*rho) / (1.0 +
+                // real fReturn = ((q*(f[fdir] + f[invDir]) - velocity*rho) / (1.0 +
                 // q))-drho*D3Q27System::WEIGTH[invDir];
                 real fReturn = (f[fdir] + f[invDir] - velocity * rho) / vf::basics::constant::c2o1 - drho * D3Q27System::WEIGTH[invDir];
 
diff --git a/src/cpu/core/Connectors/CoarseToFineVectorConnector.h b/src/cpu/core/Connectors/CoarseToFineVectorConnector.h
index aff1ceea9cae0a7f04baa3f0395329acb74aa9cb..af198b441db0aee4ded44f729439f972b0d6f08a 100644
--- a/src/cpu/core/Connectors/CoarseToFineVectorConnector.h
+++ b/src/cpu/core/Connectors/CoarseToFineVectorConnector.h
@@ -44,8 +44,8 @@
 #include "LBMKernel.h"
 #include "MathUtil.hpp"
 #include "basics/container/CbVector.h"
-#include "basics/transmitter/TbTransmitter.h"
-#include "basics/transmitter/TbTransmitterLocal.h"
+#include "parallel/transmitter/TbTransmitter.h"
+#include "parallel/transmitter/TbTransmitterLocal.h"
 #include <PointerDefinitions.h>
 #include "basics/constants/NumericConstants.h"
 
diff --git a/src/cpu/core/Connectors/FineToCoarseVectorConnector.h b/src/cpu/core/Connectors/FineToCoarseVectorConnector.h
index 2a79ddb57959dfb0def42f321ead401e20f69f06..9d448fb7a5d9a3e04f8a14837fc2695757bfcf2b 100644
--- a/src/cpu/core/Connectors/FineToCoarseVectorConnector.h
+++ b/src/cpu/core/Connectors/FineToCoarseVectorConnector.h
@@ -43,7 +43,7 @@
 #include "Interpolator.h"
 #include "LBMKernel.h"
 #include "MathUtil.hpp"
-#include "basics/transmitter/TbTransmitter.h"
+#include "parallel/transmitter/TbTransmitter.h"
 #include <PointerDefinitions.h>
 #include "basics/constants/NumericConstants.h"
 
diff --git a/src/cpu/core/Connectors/TransmitterType.h b/src/cpu/core/Connectors/TransmitterType.h
index f300f005e9e52e398b0d2131ad4cbba027170ede..7e729a7a09aa042779beea61ae7d3ed167295947 100644
--- a/src/cpu/core/Connectors/TransmitterType.h
+++ b/src/cpu/core/Connectors/TransmitterType.h
@@ -34,10 +34,12 @@
 #define TransmitterType_h__
 
 #include "D3Q27System.h"
-#include "basics/container/CbVector.h"
-#include "basics/transmitter/TbTransmitter.h"
-#include "basics/transmitter/TbTransmitterLocal.h"
-#include <PointerDefinitions.h>
+
+#include <basics/PointerDefinitions.h>
+#include <basics/container/CbVector.h>
+
+#include <parallel/transmitter/TbTransmitter.h>
+#include <parallel/transmitter/TbTransmitterLocal.h>
 
 using VectorTransmitter    = TbTransmitter<CbVector<real>>;
 using vector_type          = VectorTransmitter::value_type;
diff --git a/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp b/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp
index 7dd88a51556b22cedc636eebcd24d2df5e21cc22..5858172934a1fd6f0e0e0de270cb9c436d0d2f17 100644
--- a/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp
+++ b/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp
@@ -135,9 +135,9 @@ void IncompressibleOffsetInterpolator::calcInterpolatedCoefficiets(const D3Q27IC
    calcMoments(icell.BNE,omega,press_NEB,vx1_NEB,vx2_NEB,vx3_NEB, kxyFromfcNEQ_NEB, kyzFromfcNEQ_NEB, kxzFromfcNEQ_NEB, kxxMyyFromfcNEQ_NEB, kxxMzzFromfcNEQ_NEB);
    calcMoments(icell.BSE,omega,press_SEB,vx1_SEB,vx2_SEB,vx3_SEB, kxyFromfcNEQ_SEB, kyzFromfcNEQ_SEB, kxzFromfcNEQ_SEB, kxxMyyFromfcNEQ_SEB, kxxMzzFromfcNEQ_SEB);
 
-   //LBMReal dxRho=c1o4*((press_NET-press_SWB)+(press_SET-press_NWB)+(press_NEB-press_SWT)+(press_SEB-press_NWT));
-   //LBMReal dyRho=c1o4*((press_NET-press_SWB)-(press_SET-press_NWB)+(press_NEB-press_SWT)-(press_SEB-press_NWT));
-   //LBMReal dzRho=c1o4*((press_NET-press_SWB)+(press_SET-press_NWB)-(press_NEB-press_SWT)-(press_SEB-press_NWT));
+   //real dxRho=c1o4*((press_NET-press_SWB)+(press_SET-press_NWB)+(press_NEB-press_SWT)+(press_SEB-press_NWT));
+   //real dyRho=c1o4*((press_NET-press_SWB)-(press_SET-press_NWB)+(press_NEB-press_SWT)-(press_SEB-press_NWT));
+   //real dzRho=c1o4*((press_NET-press_SWB)+(press_SET-press_NWB)-(press_NEB-press_SWT)-(press_SEB-press_NWT));
 
    //   kxyFromfcNEQ_SWT+=vx1_SWT*dyRho+vx2_SWT*dxRho;
    //   kxyFromfcNEQ_NWT+=vx1_NWT*dyRho+vx2_NWT*dxRho;
@@ -731,7 +731,7 @@ void IncompressibleOffsetInterpolator::calcInterpolatedNodeFC(real* f, real omeg
 
    real eps_new = c2o1;
    real o  = omega;
-//   LBMReal op = 1.;
+//   real op = 1.;
 
    //f_E    = eps_new *((5.*ax*o + 5.*by*o + 5.*cz*o - 8.*ax*op + 4.*by*op + 4.*cz*op)/(54.*o*op));
    //f_N    = f_E + eps_new *((2.*(ax - by))/(9.*o));
diff --git a/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.h b/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.h
index 2fee5d62c30162e0f2af514e3551c8aa93ca9dab..1944199fd22857bd80c84cb6fcaba43ed4133827 100644
--- a/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.h
+++ b/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.h
@@ -43,7 +43,7 @@ private:
 
    real kxyAverage, kyzAverage, kxzAverage, kxxMyyAverage, kxxMzzAverage; 
 
-//   LBMReal a,b,c;
+//   real a,b,c;
 
    void setOffsets(real xoff, real yoff, real zoff) override;
    void calcMoments(const real* const f, real omega, real& rho, real& vx1, real& vx2, real& vx3, 
diff --git a/src/cpu/core/LBM/K15CompressibleNavierStokes.cpp b/src/cpu/core/LBM/K15CompressibleNavierStokes.cpp
index 3ddb0b2ce02fbd964bd72da28f6871f9fdd2ad3c..afbeb1b630b6853c85c5565fbbfdf5009a09e3ad 100644
--- a/src/cpu/core/LBM/K15CompressibleNavierStokes.cpp
+++ b/src/cpu/core/LBM/K15CompressibleNavierStokes.cpp
@@ -92,9 +92,9 @@ void K15CompressibleNavierStokes::calculate(int step)
       muForcingX2.DefineVar("nu", &muNu);
       muForcingX3.DefineVar("nu", &muNu);
 
-//      LBMReal forcingX1 = 0;
-//      LBMReal forcingX2 = 0;
-//      LBMReal forcingX3 = 0;
+//      real forcingX1 = 0;
+//      real forcingX2 = 0;
+//      real forcingX3 = 0;
    }
    /////////////////////////////////////
 
@@ -459,7 +459,7 @@ void K15CompressibleNavierStokes::calculate(int step)
                   // Cumulants
                   ////////////////////////////////////////////////////////////////////////////////////
  
-                  //LBMReal OxxPyyPzz = one; // bulk viscosity
+                  //real OxxPyyPzz = one; // bulk viscosity
 
                   ////////////////////////////////////////////////////////////
                   //3.
@@ -854,7 +854,7 @@ void K15CompressibleNavierStokes::calculate(int step)
                   real drho_post = (mfaaa+mfaac+mfaca+mfcaa+mfacc+mfcac+mfccc+mfcca)
                      +(mfaab+mfacb+mfcab+mfccb)+(mfaba+mfabc+mfcba+mfcbc)+(mfbaa+mfbac+mfbca+mfbcc)
                      +(mfabb+mfcbb)+(mfbab+mfbcb)+(mfbba+mfbbc)+mfbbb;
-                  //LBMReal dif = fabs(rho - rho_post);
+                  //real dif = fabs(rho - rho_post);
                   real dif = drho - drho_post;
 #ifdef SINGLEPRECISION
                   if (dif > 10.0E-7 || dif < -10.0E-7)
diff --git a/src/cpu/core/LBM/K16IncompressibleNavierStokes.cpp b/src/cpu/core/LBM/K16IncompressibleNavierStokes.cpp
index 9c3c00dea19bc1b27f8415350f2339dc16ddfb5b..171b60d2c135aa5da5273b382fb70bff35cbe9a8 100644
--- a/src/cpu/core/LBM/K16IncompressibleNavierStokes.cpp
+++ b/src/cpu/core/LBM/K16IncompressibleNavierStokes.cpp
@@ -82,9 +82,9 @@ void K16IncompressibleNavierStokes::calculate(int step)
       muForcingX2.DefineVar("nu", &muNu);
       muForcingX3.DefineVar("nu", &muNu);
 
-//      LBMReal forcingX1 = 0;
-//      LBMReal forcingX2 = 0;
-//      LBMReal forcingX3 = 0;
+//      real forcingX1 = 0;
+//      real forcingX2 = 0;
+//      real forcingX3 = 0;
    }
    /////////////////////////////////////
 
@@ -475,9 +475,9 @@ void K16IncompressibleNavierStokes::calculate(int step)
                real O6        = c1o1;
 
                //Cum 4.
-               //LBMReal CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + 2. * mfbba * mfbab); // till 18.05.2015
-               //LBMReal CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + 2. * mfbba * mfabb); // till 18.05.2015
-               //LBMReal CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + 2. * mfbab * mfabb); // till 18.05.2015
+               //real CUMcbb = mfcbb - ((mfcaa + c1o3 * oMdrho) * mfabb + 2. * mfbba * mfbab); // till 18.05.2015
+               //real CUMbcb = mfbcb - ((mfaca + c1o3 * oMdrho) * mfbab + 2. * mfbba * mfabb); // till 18.05.2015
+               //real CUMbbc = mfbbc - ((mfaac + c1o3 * oMdrho) * mfbba + 2. * mfbab * mfabb); // till 18.05.2015
 
                real CUMcbb = mfcbb - ((mfcaa + c1o3) * mfabb + c2o1 * mfbba * mfbab);
                real CUMbcb = mfbcb - ((mfaca + c1o3) * mfbab + c2o1 * mfbba * mfabb);
diff --git a/src/cpu/core/LBM/LBMKernel.cpp b/src/cpu/core/LBM/LBMKernel.cpp
index 3b817afff909e587ac4f35c9184076339bde9b2b..369bcd8c9880c6304e83056d25fc23983b16d5b7 100644
--- a/src/cpu/core/LBM/LBMKernel.cpp
+++ b/src/cpu/core/LBM/LBMKernel.cpp
@@ -59,18 +59,18 @@ real LBMKernel::getCollisionFactor() const { return collFactor; }
 //////////////////////////////////////////////////////////////////////////
 void LBMKernel::setForcingX1(real forcingX1)
 {
-    this->muForcingX1.SetExpr(UbSystem::toString(forcingX1, LBMRealLim::digits10));
+    this->muForcingX1.SetExpr(UbSystem::toString(forcingX1, realLim::digits10));
     this->checkFunction(muForcingX1);
 }
 //////////////////////////////////////////////////////////////////////////
 void LBMKernel::setForcingX2(real forcingX2)
 {
-    this->muForcingX2.SetExpr(UbSystem::toString(forcingX2, LBMRealLim::digits10));
+    this->muForcingX2.SetExpr(UbSystem::toString(forcingX2, realLim::digits10));
     this->checkFunction(muForcingX2);
 }
 void LBMKernel::setForcingX3(real forcingX3)
 {
-    this->muForcingX3.SetExpr(UbSystem::toString(forcingX3, LBMRealLim::digits10));
+    this->muForcingX3.SetExpr(UbSystem::toString(forcingX3, realLim::digits10));
     this->checkFunction(muForcingX3);
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/core/LBM/LBMKernel.h b/src/cpu/core/LBM/LBMKernel.h
index 74906998dfdbc06536387adfc7f155bbe677368e..97eb9c644247628633e7961727269826e5cd1e4b 100644
--- a/src/cpu/core/LBM/LBMKernel.h
+++ b/src/cpu/core/LBM/LBMKernel.h
@@ -48,9 +48,6 @@ class Block3D;
 //! \brief A base class provides basic functionality for LBM kernel
 class LBMKernel : public ILBMKernel, public enableSharedFromThis<LBMKernel>
 {
-public:
-    using LBMRealLim = std::numeric_limits<real>;
-
 public:
     LBMKernel();
 
diff --git a/src/cpu/core/LBM/LBMSystem.h b/src/cpu/core/LBM/LBMSystem.h
index 5cea71cd2054cc6755266e1b0b9b314ea06cb476..208ea0f1ea9206155b50b7140aeaeba34d50686a 100644
--- a/src/cpu/core/LBM/LBMSystem.h
+++ b/src/cpu/core/LBM/LBMSystem.h
@@ -83,8 +83,4 @@ static real calcOmega2(real viscosity, int level)
 static real calcOmega2(real viscosity, real deltaT) { return REAL_CAST(1.0 / (4.5 * viscosity / deltaT + 0.5)); }
 } // namespace LBMSystem
 
-// some typedefs for global namespace
-//using LBMReal = LBMSystem::real;
-using LBMReal = real;
-
 #endif
diff --git a/src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.cpp b/src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.cpp
index 07a27f074c7ac9cc9850db90f94fec19687fa4cb..07040524541aa8168cd186c98d7a7882be1a332a 100644
--- a/src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.cpp
+++ b/src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.cpp
@@ -223,8 +223,8 @@ void InSituCatalystSimulationObserver::addVTKGridData(SPtr<Block3D> block)
     int SWB, SEB, NEB, NWB, SWT, SET, NET, NWT;
 
     // Funktionszeiger
-    // typedef void(*CalcMacrosFct)(const LBMReal* const& /*feq[27]*/, LBMReal& /*(d)rho*/, LBMReal& /*vx1*/, LBMReal&
-    // /*vx2*/, LBMReal& /*vx3*/);
+    // typedef void(*CalcMacrosFct)(const real* const& /*feq[27]*/, real& /*(d)rho*/, real& /*vx1*/, real&
+    // /*vx2*/, real& /*vx3*/);
 
     // CalcMacrosFct calcMacros = NULL;
 
diff --git a/src/cpu/core/SimulationObservers/IntegrateValuesHelper.h b/src/cpu/core/SimulationObservers/IntegrateValuesHelper.h
index 91550bf980f8ce309584ed93ba81187e0b1933db..a5cfc4aa67fa1759d2bf73b8bea5592633825d77 100644
--- a/src/cpu/core/SimulationObservers/IntegrateValuesHelper.h
+++ b/src/cpu/core/SimulationObservers/IntegrateValuesHelper.h
@@ -51,8 +51,8 @@ public:
     real getVx2() { return sVx2; }
     real getVx3() { return sVx3; }
     real getCellsVolume() { return sCellVolume; }
-    //  LBMReal getVm() { return sVm; }
-    // LBMReal getPress() {return sPress;}
+    //  real getVm() { return sVm; }
+    // real getPress() {return sPress;}
     real getAvVx1() { return sAvVx1; }
     real getAvVx2() { return sAvVx2; }
     real getAvVx3() { return sAvVx3; }
diff --git a/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.cpp b/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.cpp
index 7bc7923f3c26dcf496e7111ce9383bc7907dcf57..c6818f3663146e4e93c8ef383d90606e64ea1863 100644
--- a/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.cpp
+++ b/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.cpp
@@ -203,7 +203,7 @@ void ShearStressSimulationObserver::calculateShearStress(real timeStep)
                                      ((((f[dPP0] + f[dMM0]) + (f[dPM0] + f[dMP0])) - ((f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM]))) +
                                       ((f[dP00] + f[dM00]) - (f[d00P] + f[d00M])) - vx * vx + vz * vz);
 
-                    // LBMReal dyyMzz =3.0/2.0 *collFactor/(collFactor-1.0)*((((f[NE] + f[SW]) + (f[SE] +
+                    // real dyyMzz =3.0/2.0 *collFactor/(collFactor-1.0)*((((f[NE] + f[SW]) + (f[SE] +
                     // f[NW]))-((f[TE] + f[BW])+(f[BE]+ f[TW])))
                     //    +((f[N] + f[S])-(f[T] + f[B])) -vy*vy +vz*vz);
 
diff --git a/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp
index 733d9d80672c483696b84b0b1ae14be660ed4866..99f67c6e2a9bfcae1b639966b55d86306d39a784 100644
--- a/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp
+++ b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp
@@ -238,7 +238,7 @@ void WriteMacroscopicQuantitiesPlusMassSimulationObserver::addDataMQ(SPtr<Block3
 
                     // shearRate = D3Q27System::getShearRate(f, collFactor);
 
-                    // LBMReal collFactorF = RheologyBinghamModelLBMKernel::getBinghamCollFactor(collFactor, yieldStress,
+                    // real collFactorF = RheologyBinghamModelLBMKernel::getBinghamCollFactor(collFactor, yieldStress,
                     // shearRate, rho);
 
                     // data[index++].push_back(shearRate);
diff --git a/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp
index 704f09ce2eb6ceae11d604ecd9cf22fc0d3fb83c..6a6203e1ea0d979c226ac822b22e51da4f37822d 100644
--- a/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp
+++ b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp
@@ -238,7 +238,7 @@ void WriteMacroscopicQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block
 
                     // shearRate = D3Q27System::getShearRate(f, collFactor);
 
-                    // LBMReal collFactorF = RheologyBinghamModelLBMKernel::getBinghamCollFactor(collFactor, yieldStress,
+                    // real collFactorF = RheologyBinghamModelLBMKernel::getBinghamCollFactor(collFactor, yieldStress,
                     // shearRate, rho);
 
                     // data[index++].push_back(shearRate);
diff --git a/src/cpu/core/Visitors/CreateTransmittersHelper.h b/src/cpu/core/Visitors/CreateTransmittersHelper.h
index 1a52078fa081b17ffc7e30c8f3cb154e9d698657..91a75489726ecab668bce58a905543806a74fb71 100644
--- a/src/cpu/core/Visitors/CreateTransmittersHelper.h
+++ b/src/cpu/core/Visitors/CreateTransmittersHelper.h
@@ -40,8 +40,9 @@
 #include "LBMSystem.h"
 
 #include <basics/container/CbVector.h>
-#include <basics/transmitter/TbTransmitter.h>
-#include <basics/transmitter/TbTransmitterMpiPool.h>
+
+#include <parallel/transmitter/TbTransmitter.h>
+#include <parallel/transmitter/TbTransmitterMpiPool.h>
 
 //! \brief The class helps to create Transmitters.
 //! \details It is created two types of Transmitters: MPI and BOND
diff --git a/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp b/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp
index daef0aa7eea9c0d5180845f5fc3bd88bb9f1d4ba..6a306e26caa0423e51e12444d57ab045a3734072 100644
--- a/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp
+++ b/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp
@@ -101,25 +101,25 @@ void InitDistributionsBlockVisitor::setRho(const std::string &muParserString)
 //////////////////////////////////////////////////////////////////////////
 void InitDistributionsBlockVisitor::setVx1(real vx1)
 {
-    this->muVx1.SetExpr(UbSystem::toString(vx1, D3Q27RealLim::digits10));
+    this->muVx1.SetExpr(UbSystem::toString(vx1, realLim::digits10));
     this->checkFunction(muVx1);
 }
 //////////////////////////////////////////////////////////////////////////
 void InitDistributionsBlockVisitor::setVx2(real vx2)
 {
-    this->muVx2.SetExpr(UbSystem::toString(vx2, D3Q27RealLim::digits10));
+    this->muVx2.SetExpr(UbSystem::toString(vx2, realLim::digits10));
     this->checkFunction(muVx2);
 }
 //////////////////////////////////////////////////////////////////////////
 void InitDistributionsBlockVisitor::setVx3(real vx3)
 {
-    this->muVx3.SetExpr(UbSystem::toString(vx3, D3Q27RealLim::digits10));
+    this->muVx3.SetExpr(UbSystem::toString(vx3, realLim::digits10));
     this->checkFunction(muVx3);
 }
 //////////////////////////////////////////////////////////////////////////
 void InitDistributionsBlockVisitor::setRho(real rho)
 {
-    this->muRho.SetExpr(UbSystem::toString(rho, D3Q27RealLim::digits10));
+    this->muRho.SetExpr(UbSystem::toString(rho, realLim::digits10));
     this->checkFunction(muRho);
 }
 //////////////////////////////////////////////////////////////////////////
diff --git a/src/cpu/core/Visitors/InitDistributionsBlockVisitor.h b/src/cpu/core/Visitors/InitDistributionsBlockVisitor.h
index 68ba69f8388fe1dffe7ed1acad8d54619f799eb2..9360f42a1bd70ff6c35446d71fb854f7076c7283 100644
--- a/src/cpu/core/Visitors/InitDistributionsBlockVisitor.h
+++ b/src/cpu/core/Visitors/InitDistributionsBlockVisitor.h
@@ -63,7 +63,7 @@ class Block3D;
 class InitDistributionsBlockVisitor : public Block3DVisitor
 {
 public:
-    using D3Q27RealLim = std::numeric_limits<real>;
+    using realLim = std::numeric_limits<real>;
 
 public:
     InitDistributionsBlockVisitor();
diff --git a/src/cpu/core/Visitors/InitThixotropyBlockVisitor.cpp b/src/cpu/core/Visitors/InitThixotropyBlockVisitor.cpp
index 29104ed99d6d3057954989a2e091568a13e2111a..8a85982a65913380f951186b2902fb107ba25ed2 100644
--- a/src/cpu/core/Visitors/InitThixotropyBlockVisitor.cpp
+++ b/src/cpu/core/Visitors/InitThixotropyBlockVisitor.cpp
@@ -57,7 +57,7 @@ InitThixotropyBlockVisitor::InitThixotropyBlockVisitor()
    this->setLambda(c0o1);
 }
 //////////////////////////////////////////////////////////////////////////
-//InitThixotropyBlockVisitor::InitThixotropyBlockVisitor(LBMReal lambda /*LBMReal nu, LBMReal D, LBMReal rho, LBMReal vx1, LBMReal vx2, LBMReal vx3, LBMReal c, LBMReal f1, LBMReal f2, LBMReal f3*/)
+//InitThixotropyBlockVisitor::InitThixotropyBlockVisitor(real lambda /*real nu, real D, real rho, real vx1, real vx2, real vx3, real c, real f1, real f2, real f3*/)
 //    : Block3DVisitor(0, D3Q27System::MAXLEVEL)
 //{
 //    //this->setVx1(vx1);
@@ -169,51 +169,51 @@ void InitThixotropyBlockVisitor::setLambda(const std::string& muParserString)
    this->checkFunction(muLambda);
 }
 ////////////////////////////////////////////////////////////////////////////
-//void InitThixotropyBlockVisitor::setVx1(LBMReal vx1)
+//void InitThixotropyBlockVisitor::setVx1(real vx1)
 //{
-//    this->muVx1.SetExpr(UbSystem::toString(vx1, D3Q27RealLim::digits10));
+//    this->muVx1.SetExpr(UbSystem::toString(vx1, realLim::digits10));
 //    this->checkFunction(muVx1);
 //}
 ////////////////////////////////////////////////////////////////////////////
-//void InitThixotropyBlockVisitor::setVx2(LBMReal vx2)
+//void InitThixotropyBlockVisitor::setVx2(real vx2)
 //{
-//    this->muVx2.SetExpr(UbSystem::toString(vx2, D3Q27RealLim::digits10));
+//    this->muVx2.SetExpr(UbSystem::toString(vx2, realLim::digits10));
 //    this->checkFunction(muVx2);
 //}
 ////////////////////////////////////////////////////////////////////////////
-//void InitThixotropyBlockVisitor::setVx3(LBMReal vx3)
+//void InitThixotropyBlockVisitor::setVx3(real vx3)
 //{
-//    this->muVx3.SetExpr(UbSystem::toString(vx3, D3Q27RealLim::digits10));
+//    this->muVx3.SetExpr(UbSystem::toString(vx3, realLim::digits10));
 //    this->checkFunction(muVx3);
 //}
 ////////////////////////////////////////////////////////////////////////////
-//void InitThixotropyBlockVisitor::setRho(LBMReal rho)
+//void InitThixotropyBlockVisitor::setRho(real rho)
 //{
-//    this->muRho.SetExpr(UbSystem::toString(rho, D3Q27RealLim::digits10));
+//    this->muRho.SetExpr(UbSystem::toString(rho, realLim::digits10));
 //    this->checkFunction(muRho);
 //}
 ////////////////////////////////////////////////////////////////////////////
-//void InitThixotropyBlockVisitor::setf1(LBMReal f1)
+//void InitThixotropyBlockVisitor::setf1(real f1)
 //{
-//    this->muf1.SetExpr(UbSystem::toString(f1, D3Q27RealLim::digits10));
+//    this->muf1.SetExpr(UbSystem::toString(f1, realLim::digits10));
 //    this->checkFunction(muf1);
 //}
 ////////////////////////////////////////////////////////////////////////////
-//void InitThixotropyBlockVisitor::setf2(LBMReal f2)
+//void InitThixotropyBlockVisitor::setf2(real f2)
 //{
-//    this->muf2.SetExpr(UbSystem::toString(f2, D3Q27RealLim::digits10));
+//    this->muf2.SetExpr(UbSystem::toString(f2, realLim::digits10));
 //    this->checkFunction(muf2);
 //}
 ////////////////////////////////////////////////////////////////////////////
-//void InitThixotropyBlockVisitor::setf3(LBMReal f3)
+//void InitThixotropyBlockVisitor::setf3(real f3)
 //{
-//    this->muf3.SetExpr(UbSystem::toString(f3, D3Q27RealLim::digits10));
+//    this->muf3.SetExpr(UbSystem::toString(f3, realLim::digits10));
 //    this->checkFunction(muf3);
 //}
 //////////////////////////////////////////////////////////////////////////
 void InitThixotropyBlockVisitor::setLambda(real lambda)
 {
-   this->muLambda.SetExpr(UbSystem::toString(lambda, D3Q27RealLim::digits10));
+   this->muLambda.SetExpr(UbSystem::toString(lambda, realLim::digits10));
    this->checkFunction(muLambda);
 }
 //////////////////////////////////////////////////////////////////////////
@@ -323,12 +323,12 @@ void InitThixotropyBlockVisitor::checkFunction(mu::Parser fct)
    }
 }
 //////////////////////////////////////////////////////////////////////////
-//void InitThixotropyBlockVisitor::setNu(LBMReal nu)
+//void InitThixotropyBlockVisitor::setNu(real nu)
 //{
 //    this->nu = nu;
 //}
 ////////////////////////////////////////////////////////////////////////////
-//void InitThixotropyBlockVisitor::setD(LBMReal D)
+//void InitThixotropyBlockVisitor::setD(real D)
 //{
 //    this->D = D;
 //}
@@ -337,7 +337,7 @@ void InitThixotropyBlockVisitor::checkFunction(mu::Parser fct)
 //{
 //   using namespace D3Q27System;
 //   //Funktionszeiger
-//   typedef void(*CalcFeqsFct)(LBMReal* const& /*feq[27]*/, const LBMReal& /*(d)rho*/, const LBMReal& /*vx1*/, const LBMReal& /*vx2*/, const LBMReal& /*vx3*/);
+//   typedef void(*CalcFeqsFct)(real* const& /*feq[27]*/, const real& /*(d)rho*/, const real& /*vx1*/, const real& /*vx2*/, const real& /*vx3*/);
 //   CalcFeqsFct   calcFeqsFct = NULL;
 //
 //
@@ -407,9 +407,9 @@ void InitThixotropyBlockVisitor::checkFunction(mu::Parser fct)
 //   double bz = (vx2Plusx3 - vx2Minusx3) / (2.0 * deltaX) * dx;
 //   double cz = (vx3Plusx3 - vx3Minusx3) / (2.0 * deltaX) * dx;
 //   double eps_new = 1.0;
-//   LBMReal op = 1.;
+//   real op = 1.;
 //
-//   LBMReal feq[27];
+//   real feq[27];
 //
 //   calcFeqsFct(feq, rho, vx1, vx2, vx3);
 //
diff --git a/src/cpu/core/Visitors/InitThixotropyBlockVisitor.h b/src/cpu/core/Visitors/InitThixotropyBlockVisitor.h
index 3822ffceddde2116d5b34154a18a55ca4e1b4f35..b883e33f10eb0043d02791b9cf0adeb391af6f70 100644
--- a/src/cpu/core/Visitors/InitThixotropyBlockVisitor.h
+++ b/src/cpu/core/Visitors/InitThixotropyBlockVisitor.h
@@ -41,28 +41,18 @@
 
 #include <muParser.h>
 
-/*================================================================================*/
-/*  D3Q27ETInitThixotropyBlockVisitor                                             */
-/*                                                                                */
-
-
-
-
 class InitThixotropyBlockVisitor : public Block3DVisitor
 {
-public:
-    typedef std::numeric_limits<real> D3Q27RealLim;
-
 public:
     InitThixotropyBlockVisitor();
-    //D3Q27ETInitThixotropyBlockVisitor(LBMReal rho, LBMReal vx1=0.0, LBMReal vx2=0.0, LBMReal vx3=0.0);
+    //D3Q27ETInitThixotropyBlockVisitor(real rho, real vx1=0.0, real vx2=0.0, real vx3=0.0);
     //! Constructor
     //! \param nu - viscosity
     //! \param rho - density
     //! \param vx1 - velocity in x
     //! \param vx2 - velocity in y
     //! \param vx3 - velocity in z
-    //InitThixotropyBlockVisitor(LBMReal lambda /*LBMReal nu, LBMReal D, LBMReal rho, LBMReal vx1 = 0.0, LBMReal vx2 = 0.0, LBMReal vx3 = 0.0, LBMReal c=0.0, LBMReal f1 = 0.0, LBMReal f2 = 0.0, LBMReal f3 = 0.0*/);
+    //InitThixotropyBlockVisitor(real lambda /*real nu, real D, real rho, real vx1 = 0.0, real vx2 = 0.0, real vx3 = 0.0, real c=0.0, real f1 = 0.0, real f2 = 0.0, real f3 = 0.0*/);
     //////////////////////////////////////////////////////////////////////////
     //automatic vars are: x1,x2, x3
     //ussage example: setVx1("x1*0.01+x2*0.003")
@@ -77,11 +67,11 @@ public:
     //void setVx3(const std::string& muParserString);
     //void setRho(const std::string& muParserString);
     ////////////////////////////////////////////////////////////////////////////
-    //void setVx1(LBMReal vx1);
-    //void setVx2(LBMReal vx2);
-    //void setVx3(LBMReal vx3);
-    //void setRho(LBMReal rho);
-    //void setNu(LBMReal nu);
+    //void setVx1(real vx1);
+    //void setVx2(real vx2);
+    //void setVx3(real vx3);
+    //void setRho(real rho);
+    //void setNu(real nu);
 
     //////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////
@@ -95,11 +85,11 @@ public:
     //void setf3(const std::string& muParserString);
     void setLambda(const std::string& muParserString);
     //////////////////////////////////////////////////////////////////////////
-    //void setf1(LBMReal f1);
-    //void setf2(LBMReal f2);
-    //void setf3(LBMReal f3);
+    //void setf1(real f1);
+    //void setf2(real f2);
+    //void setf3(real f3);
     void setLambda(real lambda);
-    //void setD(LBMReal D);
+    //void setD(real D);
 
     //void initialize(double* f, double x1, double x2, double x3, double vx1, double vx2, double vx3, double rho, UbTupleDouble3 coords, double dx, double o, bool NSE);
 
@@ -114,13 +104,13 @@ private:
     mu::Parser muVx2;
     mu::Parser muVx3;
     //mu::Parser muRho;
-    //LBMReal nu;
+    //real nu;
 
     //mu::Parser muf1;
     //mu::Parser muf2;
     //mu::Parser muf3;
     mu::Parser muLambda;
-    //LBMReal D;
+    //real D;
 };
 
 #endif //D3Q27INITDISTRIBUTIONSPATCHVISITOR_H
diff --git a/src/cpu/core/Visitors/SetConnectorsBlockVisitor.h b/src/cpu/core/Visitors/SetConnectorsBlockVisitor.h
index f54f3f210dd8a62a30de03f08948c7cd6de7ff7f..3185ddc79ba133ccf5c824e4c30ad44e57a63049 100644
--- a/src/cpu/core/Visitors/SetConnectorsBlockVisitor.h
+++ b/src/cpu/core/Visitors/SetConnectorsBlockVisitor.h
@@ -52,7 +52,8 @@
 #include "ThreeDistributionsFullVectorConnector.h"
 #include "ThreeDistributionsDoubleGhostLayerFullDirectConnector.h"
 #include "ThreeDistributionsDoubleGhostLayerFullVectorConnector.h"
-#include <basics/transmitter/TbTransmitterLocal.h>
+
+#include <parallel/transmitter/TbTransmitterLocal.h>
 
 //! \brief  A class sets connectors between blocks.
 template <class T1, class T2>
diff --git a/src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.cpp b/src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.cpp
index 2be052f4bccba1e804551d60d58408ca6b486297..4f882353f1ce6d7675271e753bd1ebf9f9962c8e 100644
--- a/src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.cpp
+++ b/src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.cpp
@@ -37,9 +37,10 @@
 #include "TwoDistributionsFullDirectConnector.h"
 #include "TwoDistributionsFullVectorConnector.h"
 #include "D3Q27System.h"
-#include <basics/transmitter/TbTransmitterLocal.h>
 
 #include <parallel/Communicator.h>
+#include <parallel/transmitter/TbTransmitterLocal.h>
+
 #include "Interpolator.h"
 
 SetInterpolationConnectorsBlockVisitor::SetInterpolationConnectorsBlockVisitor(std::shared_ptr<vf::parallel::Communicator> comm, real nue, SPtr<Interpolator> iProcessor) :
diff --git a/src/parallel/CMakeLists.txt b/src/parallel/CMakeLists.txt
index 5fe3586c83bf9ffb3c46bf84ed9c91f57558ea6c..4f4498404d8fc7d93b57c8d4b8936d81b92ceeff 100644
--- a/src/parallel/CMakeLists.txt
+++ b/src/parallel/CMakeLists.txt
@@ -1,5 +1,5 @@
 
-vf_add_library(PUBLIC_LINK logger)
+vf_add_library(PUBLIC_LINK logger basics)
 
 if(MSVC)
     target_link_libraries(parallel PRIVATE ws2_32)
diff --git a/src/basics/transmitter/TbTransmitter.h b/src/parallel/transmitter/TbTransmitter.h
similarity index 86%
rename from src/basics/transmitter/TbTransmitter.h
rename to src/parallel/transmitter/TbTransmitter.h
index 22fff52a1d1a9d2219b78e933d63e3e1c208897f..ad58295359127370d6fa327dc612de8abeb29c2f 100644
--- a/src/basics/transmitter/TbTransmitter.h
+++ b/src/parallel/transmitter/TbTransmitter.h
@@ -26,29 +26,13 @@
 //  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 TbTransmitter.h
-//! \ingroup transmitter
 //! \author Soeren Freudiger, Sebastian Geller
 //=======================================================================================
-#ifndef TBTRANSMITTER_H
-#define TBTRANSMITTER_H
+#ifndef PARALLEL_TBTRANSMITTER_H
+#define PARALLEL_TBTRANSMITTER_H
 
 #include <string>
 
-/*================================================================================*/
-/*  TbTransmitter                                                                 */
-/*                                                                                */
-/**
-This Class provides the base for sending and receiving of data.
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 08.11.07
-*/
-
-/*
-usage: ...
-*/
-
 //////////////////////////////////////////////////////////////////////////
 // Transmitter
 // macht nichts ausser daten senden und empfangen
diff --git a/src/basics/transmitter/TbTransmitterLocal.h b/src/parallel/transmitter/TbTransmitterLocal.h
similarity index 89%
rename from src/basics/transmitter/TbTransmitterLocal.h
rename to src/parallel/transmitter/TbTransmitterLocal.h
index 39a2592c19cbb23d56c880ef501a89b506b974d7..7272abe5eb16e89c262f0ade5dc7723e33c452b9 100644
--- a/src/basics/transmitter/TbTransmitterLocal.h
+++ b/src/parallel/transmitter/TbTransmitterLocal.h
@@ -26,30 +26,15 @@
 //  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 TbTransmitterLocal.h
-//! \ingroup transmitter
 //! \author Soeren Freudiger, Sebastian Geller
 //=======================================================================================
-#ifndef TOTRANSMITTERLOCAL_H
-#define TOTRANSMITTERLOCAL_H
+#ifndef PARALLEL_TOTRANSMITTERLOCAL_H
+#define PARALLEL_TOTRANSMITTERLOCAL_H
 
-#include <PointerDefinitions.h>
-#include <basics/transmitter/TbTransmitter.h>
+#include <basics/PointerDefinitions.h>
 #include <basics/utilities/UbException.h>
 
-/*================================================================================*/
-/*   TbLocalTransmitter, TbVectorSenderLocal, TbVectorReceiverLocal               */
-/*                                                                                */
-/**
-This Class provides the base for exception handling.
-<BR><BR>
-@author <A HREF="mailto:muffmolch@gmx.de">S. Freudiger</A>
-@version 1.0 - 08.11.07
-*/
-
-/*
-usage: ...
-*/
+#include "parallel/transmitter/TbTransmitter.h"
 
 //////////////////////////////////////////////////////////////////////////
 // LocalTransmitter lokalen Datenaustausch
diff --git a/src/basics/transmitter/TbTransmitterMpiPool.h b/src/parallel/transmitter/TbTransmitterMpiPool.h
similarity index 99%
rename from src/basics/transmitter/TbTransmitterMpiPool.h
rename to src/parallel/transmitter/TbTransmitterMpiPool.h
index 83c0b1e396364840d4ec03a666f482791e098462..e8bb469625bd74faf179d7d29b9b881a98c62713 100644
--- a/src/basics/transmitter/TbTransmitterMpiPool.h
+++ b/src/parallel/transmitter/TbTransmitterMpiPool.h
@@ -26,12 +26,10 @@
 //  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 TbTransmitterMpiPool.h
-//! \ingroup transmitter
 //! \author Soeren Freudiger, Sebastian Geller
 //=======================================================================================
-#ifndef TBTRANSMITTERMPIPOOL_H
-#define TBTRANSMITTERMPIPOOL_H
+#ifndef PARALLEL_TBTRANSMITTERMPIPOOL_H
+#define PARALLEL_TBTRANSMITTERMPIPOOL_H
 
 #ifdef VF_MPI
 
@@ -43,11 +41,12 @@
 
 #include <mpi.h>
 
+#include <basics/PointerDefinitions.h>
 #include <basics/container/CbVector.h>
 #include <basics/container/CbVectorPool.h>
-#include <basics/transmitter/TbTransmitter.h>
 
-#include <PointerDefinitions.h>
+#include "parallel/transmitter/TbTransmitter.h"
+
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 // TbCbVectorMpiPoolSender/Receiver