diff --git a/src/GksGpu/BoundaryConditions/AdiabaticWall.cu b/src/GksGpu/BoundaryConditions/AdiabaticWall.cu
index 642dcbe8091f5023f269ab34fc3505d7ed6f6ee6..47786d2147963b3501b2d42a350f03938425ad05 100644
--- a/src/GksGpu/BoundaryConditions/AdiabaticWall.cu
+++ b/src/GksGpu/BoundaryConditions/AdiabaticWall.cu
@@ -22,6 +22,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -156,3 +158,5 @@ bool AdiabaticWall::secondCellsNeeded()
     return true;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/AdiabaticWall.h b/src/GksGpu/BoundaryConditions/AdiabaticWall.h
index a499fd031e999e3bf76e3c27654c9b76f2e334a6..55cabf1b117f0e761b3afa601c670816843c5285 100644
--- a/src/GksGpu/BoundaryConditions/AdiabaticWall.h
+++ b/src/GksGpu/BoundaryConditions/AdiabaticWall.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct AdiabaticWallStruct
 {
     uint  numberOfCells;
@@ -60,4 +62,6 @@ struct VF_PUBLIC AdiabaticWall : public BoundaryCondition //, public IsothermalW
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/BoundaryCondition.cpp b/src/GksGpu/BoundaryConditions/BoundaryCondition.cpp
index 9ef87ba1c928d264b9a85207cc1e15d2a1cdf49c..1fca7d9b3bbf26bcec8c13876a760b6758f92670 100644
--- a/src/GksGpu/BoundaryConditions/BoundaryCondition.cpp
+++ b/src/GksGpu/BoundaryConditions/BoundaryCondition.cpp
@@ -11,6 +11,8 @@
 #include "DataBase/DataBaseAllocator.h"
 #include "DataBase/DataBaseStruct.h"
 
+namespace GksGpu{
+
 BoundaryCondition::BoundaryCondition( SPtr<DataBase> dataBase )
     : myAllocator ( dataBase->myAllocator )
 {
@@ -125,3 +127,5 @@ bool BoundaryCondition::secondCellsNeeded()
 {
     return false;
 }
+
+} // namespace GksGpu
\ No newline at end of file
diff --git a/src/GksGpu/BoundaryConditions/BoundaryCondition.h b/src/GksGpu/BoundaryConditions/BoundaryCondition.h
index 1aee9660d424fec89ef0a1b4698324c9e3a8616e..8ec82c2c0693ef5c6d4bf5be06aab9814600654b 100644
--- a/src/GksGpu/BoundaryConditions/BoundaryCondition.h
+++ b/src/GksGpu/BoundaryConditions/BoundaryCondition.h
@@ -17,7 +17,8 @@
 class  GksMeshAdapter;
 class  DataBaseAllocator;
 struct DataBase;
-struct BoundaryConditionStruct;
+
+namespace GksGpu{
 
 struct BoundaryConditionStruct
 {
@@ -53,6 +54,21 @@ struct VF_PUBLIC BoundaryCondition : virtual public BoundaryConditionStruct, pub
                                              const Parameters parameters, 
                                              const uint level ) = 0;
 
+    BoundaryConditionStruct toStruct()
+    {
+        BoundaryConditionStruct boundaryCondition;
+
+        boundaryCondition.numberOfCells = this->numberOfCells;
+
+        boundaryCondition.ghostCells      = this->ghostCells;
+        boundaryCondition.domainCells     = this->domainCells;
+        boundaryCondition.secondCells     = this->secondCells;
+
+        return boundaryCondition;
+    }
+
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/ConcreteHeatFlux.cu b/src/GksGpu/BoundaryConditions/ConcreteHeatFlux.cu
index 08112425a7bf380dc153bc8a3aeecc64e3f9df6e..00691bd4e639ccf3836d71488d77b572d9c57565 100644
--- a/src/GksGpu/BoundaryConditions/ConcreteHeatFlux.cu
+++ b/src/GksGpu/BoundaryConditions/ConcreteHeatFlux.cu
@@ -33,6 +33,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -225,3 +227,5 @@ bool ConcreteHeatFlux::secondCellsNeeded()
     return true;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/ConcreteHeatFlux.h b/src/GksGpu/BoundaryConditions/ConcreteHeatFlux.h
index 0df8bb4b7f3d2e4efbec1451ac6336fac2e15482..899e82eb15d401adf7eca0ddcbed387800aaa556 100644
--- a/src/GksGpu/BoundaryConditions/ConcreteHeatFlux.h
+++ b/src/GksGpu/BoundaryConditions/ConcreteHeatFlux.h
@@ -15,6 +15,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct ConcreteHeatFluxStruct
 {
     uint  numberOfCells;
@@ -102,4 +104,6 @@ struct VF_PUBLIC ConcreteHeatFlux : public BoundaryCondition //, public Isotherm
     void writeVTKFile( SPtr<DataBase> dataBase, Parameters& parameters, std::string filename );
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/CreepingMassFlux.cu b/src/GksGpu/BoundaryConditions/CreepingMassFlux.cu
index c8bb75f37bd09bb40c8d5e61d7fa21326f70e84c..d7b7f72ce0d2af993b6f4a44d9dda061d7728d07 100644
--- a/src/GksGpu/BoundaryConditions/CreepingMassFlux.cu
+++ b/src/GksGpu/BoundaryConditions/CreepingMassFlux.cu
@@ -29,6 +29,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -144,3 +146,5 @@ bool CreepingMassFlux::secondCellsNeeded()
     return false;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/CreepingMassFlux.h b/src/GksGpu/BoundaryConditions/CreepingMassFlux.h
index cc9ceea771379ab919751002e0c4f207469cdee2..7f60f7a8806d9043db0ddb1a16f5723672f24a74 100644
--- a/src/GksGpu/BoundaryConditions/CreepingMassFlux.h
+++ b/src/GksGpu/BoundaryConditions/CreepingMassFlux.h
@@ -13,6 +13,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct CreepingMassFluxStruct
 {
     uint  numberOfCells;
@@ -62,4 +64,6 @@ struct VF_PUBLIC CreepingMassFlux : public BoundaryCondition //, public Isotherm
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/Extrapolation.cu b/src/GksGpu/BoundaryConditions/Extrapolation.cu
index 7a24585cbfd12faf9c9559f9873cf17b8900b5ca..67e936759b2cbee8fd024db2be77c283b9bb0329 100644
--- a/src/GksGpu/BoundaryConditions/Extrapolation.cu
+++ b/src/GksGpu/BoundaryConditions/Extrapolation.cu
@@ -21,6 +21,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -102,3 +104,5 @@ bool Extrapolation::secondCellsNeeded()
     return false;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/Extrapolation.h b/src/GksGpu/BoundaryConditions/Extrapolation.h
index 9502a9fe1a712cc0bf5773c60a8e970430791b92..c089085c09f10eef4b269cb7084d7e9720547cf9 100644
--- a/src/GksGpu/BoundaryConditions/Extrapolation.h
+++ b/src/GksGpu/BoundaryConditions/Extrapolation.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct ExtrapolationStruct
 {
     uint  numberOfCells;
@@ -46,4 +48,6 @@ struct VF_PUBLIC Extrapolation : public BoundaryCondition //, public IsothermalW
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/HeatFlux.cu b/src/GksGpu/BoundaryConditions/HeatFlux.cu
index 4ae79ee756133cdb2f17ff48da2ac7193f1eed8d..402ca580bbf356f60d77c4cc61196a26af751863 100644
--- a/src/GksGpu/BoundaryConditions/HeatFlux.cu
+++ b/src/GksGpu/BoundaryConditions/HeatFlux.cu
@@ -29,6 +29,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -131,3 +133,5 @@ bool HeatFlux::secondCellsNeeded()
     return false;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/HeatFlux.h b/src/GksGpu/BoundaryConditions/HeatFlux.h
index 28f5f36e8ec401ed1b5833bd066a8a772110f9e5..ec3ee0b438ee0bfd0f307a34f7b127601ea7042c 100644
--- a/src/GksGpu/BoundaryConditions/HeatFlux.h
+++ b/src/GksGpu/BoundaryConditions/HeatFlux.h
@@ -13,6 +13,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct HeatFluxStruct
 {
     uint  numberOfCells;
@@ -56,4 +58,6 @@ struct VF_PUBLIC HeatFlux : public BoundaryCondition //, public IsothermalWallSt
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/Inflow.cu b/src/GksGpu/BoundaryConditions/Inflow.cu
index 1308566b2d2b533e0bb95c053951bf85d5800c1f..cf7e8a1c01f27b49f50e72bf49a1bb7f4cfa46a9 100644
--- a/src/GksGpu/BoundaryConditions/Inflow.cu
+++ b/src/GksGpu/BoundaryConditions/Inflow.cu
@@ -22,6 +22,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -161,3 +163,5 @@ bool Inflow::secondCellsNeeded()
     return false;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/Inflow.h b/src/GksGpu/BoundaryConditions/Inflow.h
index 18df4173f4fd12dd72419075f74627440ea6773c..27eb602df1996eaafe41d08c04639889b4266bfb 100644
--- a/src/GksGpu/BoundaryConditions/Inflow.h
+++ b/src/GksGpu/BoundaryConditions/Inflow.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct InflowStruct
 {
     uint  numberOfCells;
@@ -72,4 +74,6 @@ struct VF_PUBLIC Inflow : public BoundaryCondition //, public IsothermalWallStru
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/InflowComplete.cu b/src/GksGpu/BoundaryConditions/InflowComplete.cu
index 336f07bb218e4c623832256110eee7df77e1cb5c..b8e62893c80a728629825bf316e7c04191fc95e4 100644
--- a/src/GksGpu/BoundaryConditions/InflowComplete.cu
+++ b/src/GksGpu/BoundaryConditions/InflowComplete.cu
@@ -29,6 +29,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -316,3 +318,5 @@ bool InflowComplete::secondCellsNeeded()
     return false;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/InflowComplete.h b/src/GksGpu/BoundaryConditions/InflowComplete.h
index e444bd1ba066f0915e6a4d104b4d4d5d3e673b6f..04eead9f4e7a9caf5b081ab64913d3bbe147e83d 100644
--- a/src/GksGpu/BoundaryConditions/InflowComplete.h
+++ b/src/GksGpu/BoundaryConditions/InflowComplete.h
@@ -13,6 +13,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct InflowCompleteStruct
 {
     uint  numberOfCells;
@@ -56,4 +58,6 @@ struct VF_PUBLIC InflowComplete : public BoundaryCondition //, public Isothermal
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/IsothermalWall.cu b/src/GksGpu/BoundaryConditions/IsothermalWall.cu
index ec613629373bafb4aac74affe506ecd1c3d6dc50..f53387adb88100cc835900854713f55184f64497 100644
--- a/src/GksGpu/BoundaryConditions/IsothermalWall.cu
+++ b/src/GksGpu/BoundaryConditions/IsothermalWall.cu
@@ -22,6 +22,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -153,3 +155,5 @@ bool IsothermalWall::secondCellsNeeded()
     return true;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/IsothermalWall.h b/src/GksGpu/BoundaryConditions/IsothermalWall.h
index 75481f6d96733a0a548706ef05eebd1c163143ce..b6db014598e4041214e3441cf3d49b0fb3c72a16 100644
--- a/src/GksGpu/BoundaryConditions/IsothermalWall.h
+++ b/src/GksGpu/BoundaryConditions/IsothermalWall.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct IsothermalWallStruct
 {
     uint  numberOfCells;
@@ -67,4 +69,6 @@ struct VF_PUBLIC IsothermalWall : public BoundaryCondition //, public Isothermal
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/MassCompensation.cu b/src/GksGpu/BoundaryConditions/MassCompensation.cu
index 668a60aeb9cd9c37b18d6758bf5977ad7e43618f..b010ae8e3694350726d408632147cd1917635bb6 100644
--- a/src/GksGpu/BoundaryConditions/MassCompensation.cu
+++ b/src/GksGpu/BoundaryConditions/MassCompensation.cu
@@ -29,6 +29,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -148,3 +150,5 @@ bool MassCompensation::secondCellsNeeded()
     return false;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/MassCompensation.h b/src/GksGpu/BoundaryConditions/MassCompensation.h
index 9ca10cc80eb274a5da002a48440dd9d5568fb7cb..3a10a2e48bf5f1d2580ff4b2f58bbf1e773af079 100644
--- a/src/GksGpu/BoundaryConditions/MassCompensation.h
+++ b/src/GksGpu/BoundaryConditions/MassCompensation.h
@@ -13,6 +13,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct MassCompensationStruct
 {
     uint  numberOfCells;
@@ -62,4 +64,6 @@ struct VF_PUBLIC MassCompensation : public BoundaryCondition //, public Isotherm
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/Open.cu b/src/GksGpu/BoundaryConditions/Open.cu
index ceaf06fb100d5bb1cc3ba2286acc4b8db7bc1bb2..8afcee1b1ca001f6b390607964917ca57e52e9e4 100644
--- a/src/GksGpu/BoundaryConditions/Open.cu
+++ b/src/GksGpu/BoundaryConditions/Open.cu
@@ -22,6 +22,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -187,3 +189,5 @@ bool Open::secondCellsNeeded()
     return true;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/Open.h b/src/GksGpu/BoundaryConditions/Open.h
index 1fdb0e8916e61d7d3f9e64551b889790900c0c51..9630c7fdb738b4a46449e072bf0cbee55f69fa69 100644
--- a/src/GksGpu/BoundaryConditions/Open.h
+++ b/src/GksGpu/BoundaryConditions/Open.h
@@ -13,6 +13,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct OpenStruct
 {
     uint  numberOfCells;
@@ -60,4 +62,6 @@ struct VF_PUBLIC Open : public BoundaryCondition //, public IsothermalWallStruct
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/PassiveScalarDiriclet.cu b/src/GksGpu/BoundaryConditions/PassiveScalarDiriclet.cu
index ff31d1010e4e8f59ffd89727f0865b022b159439..169afb42203ecb5dae867dd31bc13b8418848f0d 100644
--- a/src/GksGpu/BoundaryConditions/PassiveScalarDiriclet.cu
+++ b/src/GksGpu/BoundaryConditions/PassiveScalarDiriclet.cu
@@ -22,6 +22,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -197,3 +199,5 @@ bool PassiveScalarDiriclet::secondCellsNeeded()
     return true;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h b/src/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h
index 4e415c3d11c602ee3ca6cb5799aaad6406f426ed..c4cbeac9d0e943f6e4c58ee4689b132e00e4a82a 100644
--- a/src/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h
+++ b/src/GksGpu/BoundaryConditions/PassiveScalarDiriclet.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 //struct IsothermalWallStruct : virtual public BoundaryConditionStruct
 //{
 //    Vec3 velocity;
@@ -62,4 +64,6 @@ struct VF_PUBLIC PassiveScalarDiriclet : public BoundaryCondition
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/Periodic.cu b/src/GksGpu/BoundaryConditions/Periodic.cu
index 80205485438f6633a2acf3405918e434d0dace7e..c3811d5a1656cafcb971d43acb9e29fcfb01b0b6 100644
--- a/src/GksGpu/BoundaryConditions/Periodic.cu
+++ b/src/GksGpu/BoundaryConditions/Periodic.cu
@@ -24,6 +24,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -148,3 +150,5 @@ bool Periodic::isWall()
 {
     return false;
 }
+
+} // namespace GksGpu
diff --git a/src/GksGpu/BoundaryConditions/Periodic.h b/src/GksGpu/BoundaryConditions/Periodic.h
index e0418d3e7ef992ff2002ada09395420db200a9bc..73ff2242e3a80acb4e73138adaf9ba5b9b510963 100644
--- a/src/GksGpu/BoundaryConditions/Periodic.h
+++ b/src/GksGpu/BoundaryConditions/Periodic.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct VF_PUBLIC Periodic : public BoundaryCondition
 {
     Periodic( SPtr<DataBase> dataBase ) : BoundaryCondition( dataBase ){}
@@ -37,4 +39,6 @@ struct VF_PUBLIC Periodic : public BoundaryCondition
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/Pressure.cu b/src/GksGpu/BoundaryConditions/Pressure.cu
index fba52d0adba21580f1b1aa1411873d8ecc5d6ea6..1823029a466eb7f303b863ab28dc018f0c0e36bd 100644
--- a/src/GksGpu/BoundaryConditions/Pressure.cu
+++ b/src/GksGpu/BoundaryConditions/Pressure.cu
@@ -22,6 +22,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -144,3 +146,5 @@ bool Pressure::secondCellsNeeded()
     return true;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/Pressure.h b/src/GksGpu/BoundaryConditions/Pressure.h
index ffb2889a28e9eb36f3546969f62c2e02d6a6efe3..5e302b60e3ea1bb196b84d324fb82c302782572d 100644
--- a/src/GksGpu/BoundaryConditions/Pressure.h
+++ b/src/GksGpu/BoundaryConditions/Pressure.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 //struct IsothermalWallStruct : virtual public BoundaryConditionStruct
 //{
 //    Vec3 velocity;
@@ -59,4 +61,6 @@ struct VF_PUBLIC Pressure : public BoundaryCondition
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/Pressure2.cu b/src/GksGpu/BoundaryConditions/Pressure2.cu
index 0652c9eaad51039d31dab05c56cef7d3f73c1216..2caafeec36362dbd5bd69e5d153ead2dd7d402b6 100644
--- a/src/GksGpu/BoundaryConditions/Pressure2.cu
+++ b/src/GksGpu/BoundaryConditions/Pressure2.cu
@@ -22,6 +22,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -182,3 +184,5 @@ bool Pressure2::secondCellsNeeded()
     return true;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/Pressure2.h b/src/GksGpu/BoundaryConditions/Pressure2.h
index 59bede385b456c4d02981ba55f994e1a2c860166..5861083271841d563b0012789f6cd001c179fbfa 100644
--- a/src/GksGpu/BoundaryConditions/Pressure2.h
+++ b/src/GksGpu/BoundaryConditions/Pressure2.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 //struct IsothermalWallStruct : virtual public BoundaryConditionStruct
 //{
 //    Vec3 velocity;
@@ -59,4 +61,6 @@ struct VF_PUBLIC Pressure2 : public BoundaryCondition
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/SalinasVazquez.cu b/src/GksGpu/BoundaryConditions/SalinasVazquez.cu
index d1169f9ca6fd98935f9cc2c93e11b75aab2d575c..158378c4263095d20e4730008c4b0f1d511e6515 100644
--- a/src/GksGpu/BoundaryConditions/SalinasVazquez.cu
+++ b/src/GksGpu/BoundaryConditions/SalinasVazquez.cu
@@ -22,6 +22,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -170,3 +172,5 @@ bool SalinasVazquez::secondCellsNeeded()
     return true;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/SalinasVazquez.h b/src/GksGpu/BoundaryConditions/SalinasVazquez.h
index 3104f9f9ef13465c41e89df177c4120e6e687f6e..6e0f639067adefd82bb7780abaddd7d2a38636f5 100644
--- a/src/GksGpu/BoundaryConditions/SalinasVazquez.h
+++ b/src/GksGpu/BoundaryConditions/SalinasVazquez.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct SalinasVazquezStruct
 {
     uint  numberOfCells;
@@ -70,4 +72,6 @@ struct VF_PUBLIC SalinasVazquez : public BoundaryCondition //, public Isothermal
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/BoundaryConditions/Symmetry.cu b/src/GksGpu/BoundaryConditions/Symmetry.cu
index 152b4239574973b7d4abaae762c99002ab3008bc..dc14b8b2dbde255e1e5f64ed3b65ff88d0dfb130 100644
--- a/src/GksGpu/BoundaryConditions/Symmetry.cu
+++ b/src/GksGpu/BoundaryConditions/Symmetry.cu
@@ -22,6 +22,8 @@
 
 #include "CudaUtility/CudaRunKernel.hpp"
 
+namespace GksGpu{
+
 //////////////////////////////////////////////////////////////////////////
 
 __global__                 void boundaryConditionKernel  ( const DataBaseStruct dataBase, 
@@ -122,3 +124,5 @@ bool Symmetry::secondCellsNeeded()
     return false;
 }
 
+} // namespace GksGpu
+
diff --git a/src/GksGpu/BoundaryConditions/Symmetry.h b/src/GksGpu/BoundaryConditions/Symmetry.h
index 165ad040a2967d9c2184419c32c10fa25be1cba2..84385e0ac77cff70c121641fde740c177acca6e9 100644
--- a/src/GksGpu/BoundaryConditions/Symmetry.h
+++ b/src/GksGpu/BoundaryConditions/Symmetry.h
@@ -11,6 +11,8 @@
 
 #include "BoundaryConditions/BoundaryCondition.h"
 
+namespace GksGpu{
+
 struct SymmetryStruct
 {
     uint  numberOfCells;
@@ -52,4 +54,6 @@ struct VF_PUBLIC Symmetry : public BoundaryCondition //, public IsothermalWallSt
     }
 };
 
+} // namespace GksGpu
+
 #endif
diff --git a/src/GksGpu/DataBase/DataBase.h b/src/GksGpu/DataBase/DataBase.h
index e6b5dd6d33f503dbf32d561ed0cdf5d044e5778d..5a8820aced5b6e1f86d95d951ceb61b1bc184c9c 100644
--- a/src/GksGpu/DataBase/DataBase.h
+++ b/src/GksGpu/DataBase/DataBase.h
@@ -19,7 +19,7 @@
 
 class  GksMeshAdapter;
 
-struct BoundaryCondition;
+namespace GksGpu{ struct BoundaryCondition; }
 class  DataBaseAllocator;
 struct DataBase;
 struct PerLevelCounts;
@@ -34,7 +34,7 @@ struct VF_PUBLIC DataBase : public std::enable_shared_from_this<DataBase>
 
     SPtr<DataBaseAllocator> myAllocator;
 
-    std::vector< SPtr<BoundaryCondition> > boundaryConditions;
+    std::vector< SPtr<GksGpu::BoundaryCondition> > boundaryConditions;
 
     std::vector< std::array< SPtr< Communicator >, 6 > > communicators;
 
diff --git a/src/GksGpu/DataBase/DataBaseAllocator.h b/src/GksGpu/DataBase/DataBaseAllocator.h
index 397951e67b1c3e4b43a97a2e3be09b1498846ad7..b6905889854c04c35960b7277dbcd6dd2923f82a 100644
--- a/src/GksGpu/DataBase/DataBaseAllocator.h
+++ b/src/GksGpu/DataBase/DataBaseAllocator.h
@@ -11,7 +11,7 @@
 
 class  GksMeshAdapter;
 struct DataBase;
-struct BoundaryCondition;
+namespace GksGpu { struct BoundaryCondition; };
 struct Communicator;
 
 class VF_PUBLIC DataBaseAllocator {
@@ -36,9 +36,9 @@ public:
 
     //////////////////////////////////////////////////////////////////////////
 
-    virtual void freeMemory( BoundaryCondition& boundaryCondition ) = 0;
+    virtual void freeMemory( GksGpu::BoundaryCondition& boundaryCondition ) = 0;
 
-    virtual void allocateMemory( SPtr<BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells ) = 0;
+    virtual void allocateMemory( SPtr<GksGpu::BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells ) = 0;
 
     //////////////////////////////////////////////////////////////////////////
 
diff --git a/src/GksGpu/DataBase/DataBaseAllocatorCPU.cpp b/src/GksGpu/DataBase/DataBaseAllocatorCPU.cpp
index ecf1ed5b937cbcff8303452796b0d5206b465217..8ec4898d38966de4ad879db0f0ab00a8b759b4be 100644
--- a/src/GksGpu/DataBase/DataBaseAllocatorCPU.cpp
+++ b/src/GksGpu/DataBase/DataBaseAllocatorCPU.cpp
@@ -192,14 +192,14 @@ int DataBaseAllocatorCPU::getCrashCellIndex(SPtr<DataBase> dataBase)
     return *dataBase->crashCellIndex;
 }
 
-void DataBaseAllocatorCPU::freeMemory(BoundaryCondition& boundaryCondition)
+void DataBaseAllocatorCPU::freeMemory(GksGpu::BoundaryCondition& boundaryCondition)
 {
     delete [] boundaryCondition.ghostCells ;
     delete [] boundaryCondition.domainCells;
     delete [] boundaryCondition.secondCells;
 }
 
-void DataBaseAllocatorCPU::allocateMemory(SPtr<BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells)
+void DataBaseAllocatorCPU::allocateMemory(SPtr<GksGpu::BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells)
 {
     boundaryCondition->ghostCells  = new uint[ ghostCells.size()  ];
     boundaryCondition->domainCells = new uint[ domainCells.size() ];
diff --git a/src/GksGpu/DataBase/DataBaseAllocatorCPU.h b/src/GksGpu/DataBase/DataBaseAllocatorCPU.h
index dfcb8d68dec998ec424d9086d03d6e2a403f5638..30829ae915b370c6e2d9bd496908211c34310f2f 100644
--- a/src/GksGpu/DataBase/DataBaseAllocatorCPU.h
+++ b/src/GksGpu/DataBase/DataBaseAllocatorCPU.h
@@ -26,9 +26,9 @@ public:
 
     //////////////////////////////////////////////////////////////////////////
 
-    virtual void freeMemory( BoundaryCondition& boundaryCondition ) override;
+    virtual void freeMemory( GksGpu::BoundaryCondition& boundaryCondition ) override;
 
-    virtual void allocateMemory( SPtr<BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells ) override;
+    virtual void allocateMemory( SPtr<GksGpu::BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells ) override;
 
     //////////////////////////////////////////////////////////////////////////
 
diff --git a/src/GksGpu/DataBase/DataBaseAllocatorGPU.cpp b/src/GksGpu/DataBase/DataBaseAllocatorGPU.cpp
index f0b5985dd4a52276051c1cdb87d88b887a0ee5fe..f5b88d37db0506bacabe40d0367a71d2ed73f670 100644
--- a/src/GksGpu/DataBase/DataBaseAllocatorGPU.cpp
+++ b/src/GksGpu/DataBase/DataBaseAllocatorGPU.cpp
@@ -233,14 +233,14 @@ int DataBaseAllocatorGPU::getCrashCellIndex(SPtr<DataBase> dataBase)
     return crashCellIndex;
 }
 
-void DataBaseAllocatorGPU::freeMemory(BoundaryCondition& boundaryCondition)
+void DataBaseAllocatorGPU::freeMemory(GksGpu::BoundaryCondition& boundaryCondition)
 {
     checkCudaErrors( cudaFree ( boundaryCondition.ghostCells  ) );
     checkCudaErrors( cudaFree ( boundaryCondition.domainCells ) );
     checkCudaErrors( cudaFree ( boundaryCondition.secondCells ) );
 }
 
-void DataBaseAllocatorGPU::allocateMemory(SPtr<BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells)
+void DataBaseAllocatorGPU::allocateMemory(SPtr<GksGpu::BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells)
 {
     checkCudaErrors( cudaMalloc ( &boundaryCondition->ghostCells , sizeof(uint) * ghostCells.size()  ) );
     checkCudaErrors( cudaMalloc ( &boundaryCondition->domainCells, sizeof(uint) * domainCells.size() ) );
diff --git a/src/GksGpu/DataBase/DataBaseAllocatorGPU.h b/src/GksGpu/DataBase/DataBaseAllocatorGPU.h
index 0741584ede376028ea408e15ce596467b4c8d299..4f60d18553114eb48920597178e79bcfa97ddf1e 100644
--- a/src/GksGpu/DataBase/DataBaseAllocatorGPU.h
+++ b/src/GksGpu/DataBase/DataBaseAllocatorGPU.h
@@ -26,9 +26,9 @@ public:
 
     //////////////////////////////////////////////////////////////////////////
 
-    virtual void freeMemory( BoundaryCondition& boundaryCondition ) override;
+    virtual void freeMemory( GksGpu::BoundaryCondition& boundaryCondition ) override;
 
-    virtual void allocateMemory( SPtr<BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells ) override;
+    virtual void allocateMemory( SPtr<GksGpu::BoundaryCondition> boundaryCondition, std::vector<uint> ghostCells, std::vector<uint> domainCells, std::vector<uint> secondCells ) override;
 
     //////////////////////////////////////////////////////////////////////////
 
diff --git a/src/GksGpu/Definitions/PassiveScalar.h b/src/GksGpu/Definitions/PassiveScalar.h
index 97fca44e5285a9b9850ba5690eae0a420ce60449..b71ada48a0c05eaa726abae31bf76f7b56a2c0fd 100644
--- a/src/GksGpu/Definitions/PassiveScalar.h
+++ b/src/GksGpu/Definitions/PassiveScalar.h
@@ -1,6 +1,6 @@
 #ifndef PassiveScalar_H
 #define PassiveScalar_H
 
-#define USE_PASSIVE_SCALAR
+//#define USE_PASSIVE_SCALAR
 
 #endif
diff --git a/src/GksGpu/TimeStepping/NestedTimeStep.cpp b/src/GksGpu/TimeStepping/NestedTimeStep.cpp
index 05c7459506e8b9cf880e7a03aa6a6bf14d516fec..4653d93b54a6304198c9908d73ad43c809078eaa 100644
--- a/src/GksGpu/TimeStepping/NestedTimeStep.cpp
+++ b/src/GksGpu/TimeStepping/NestedTimeStep.cpp
@@ -30,7 +30,7 @@ void TimeStepping::nestedTimeStep( SPtr<DataBase> dataBase,
 
     //////////////////////////////////////////////////////////////////////////
 
-    for( SPtr<BoundaryCondition> bc : dataBase->boundaryConditions )
+    for( SPtr<GksGpu::BoundaryCondition> bc : dataBase->boundaryConditions )
     {
         bc->runBoundaryConditionKernel( dataBase, parameters, level );
     }
diff --git a/src/GksVtkAdapter/VTKAdapter.cpp b/src/GksVtkAdapter/VTKAdapter.cpp
index 00657f9509a5d77c0978bcf51a1c813140c985f1..d8db04f9d5fcca7215ab6fa04a6c196c8bfcb617 100644
--- a/src/GksVtkAdapter/VTKAdapter.cpp
+++ b/src/GksVtkAdapter/VTKAdapter.cpp
@@ -712,7 +712,7 @@ void mapFlowField(std::shared_ptr<DataBase> base, std::shared_ptr<DataBase> targ
     }
 }
 
-void VF_PUBLIC writeConcreteHeatFluxVtkXML(std::shared_ptr<DataBase> dataBase, std::shared_ptr<ConcreteHeatFlux> bc, Parameters parameters, int mode, std::string filename)
+void VF_PUBLIC writeConcreteHeatFluxVtkXML(std::shared_ptr<DataBase> dataBase, std::shared_ptr<GksGpu::ConcreteHeatFlux> bc, Parameters parameters, int mode, std::string filename)
 {
     *logging::out << logging::Logger::INFO_INTERMEDIATE << "Write " << filename << ".vtu" << " ... \n";
 
diff --git a/src/GksVtkAdapter/VTKInterface.h b/src/GksVtkAdapter/VTKInterface.h
index 61f68937e6d306b4ffb088ae1475b5c0b85053f7..a25a049f7a9fa84ba371759288e648f9e2a309c7 100644
--- a/src/GksVtkAdapter/VTKInterface.h
+++ b/src/GksVtkAdapter/VTKInterface.h
@@ -7,7 +7,7 @@
 
 struct DataBase;
 class TurbulenceAnalyzer;
-struct ConcreteHeatFlux;
+namespace GksGpu{ struct ConcreteHeatFlux; }
 
 void VF_PUBLIC writeVtkXML(std::shared_ptr<DataBase> dataBase, 
                            Parameters parameters, 
@@ -33,7 +33,7 @@ void VF_PUBLIC writeTurbulenceVtkXMLParallelSummaryFile(std::shared_ptr<DataBase
 void VF_PUBLIC mapFlowField( std::shared_ptr<DataBase> base, std::shared_ptr<DataBase> target );
 
 void VF_PUBLIC writeConcreteHeatFluxVtkXML(std::shared_ptr<DataBase> dataBase, 
-                                           std::shared_ptr<ConcreteHeatFlux> bc, 
+                                           std::shared_ptr<GksGpu::ConcreteHeatFlux> bc, 
                                            Parameters parameters, 
                                            int mode, 
                                            std::string filename);