diff --git a/pythonbindings/src/gpu/gpu.cpp b/pythonbindings/src/gpu/gpu.cpp
index be236654782c5538f9e50f4ead3185c169d7b65c..983465cb3a11b98b439b1875c81bae84af1b3655 100644
--- a/pythonbindings/src/gpu/gpu.cpp
+++ b/pythonbindings/src/gpu/gpu.cpp
@@ -12,6 +12,7 @@
 #include "submodules/grid_generator.cpp"
 #include "submodules/turbulence_models.cpp"
 #include "submodules/velocity_setter.cpp"
+#include "submodules/actuator_farm.cpp"
 
 namespace gpu
 {
diff --git a/pythonbindings/src/gpu/submodules/actuator_farm.cpp b/pythonbindings/src/gpu/submodules/actuator_farm.cpp
index 7963b92e4b04cb7e78a4574cac66de3363d000aa..2ab2f5128f00a84feb4520724e9fd0215b52b283 100644
--- a/pythonbindings/src/gpu/submodules/actuator_farm.cpp
+++ b/pythonbindings/src/gpu/submodules/actuator_farm.cpp
@@ -9,7 +9,7 @@ public:
     using ActuatorFarm::ActuatorFarm; // Inherit constructors
     void calcBladeForces() override 
     { 
-        PYBIND11_OVERRIDE_NAME(void, ActuatorFarm, "calc_blade_forces", calcBladeForces,); 
+        PYBIND11_OVERRIDE_NAME(void, ActuatorFarm, "calc_blade_forces", calcBladeForces); 
     }
 };
 namespace actuator_farm
@@ -29,9 +29,9 @@ namespace actuator_farm
                         const real,
                         const real,
                         const bool>(), 
-                        "n_blades", 
+                        "number_of_blades_per_turbine", 
                         "density", 
-                        "n_blade_nodes", 
+                        "number_of_nodes_per_blade", 
                         "epsilon",
                         "level", 
                         "delta_t", 
@@ -41,16 +41,23 @@ namespace actuator_farm
         .def_property_readonly("number_of_nodes_per_blade", &ActuatorFarm::getNumberOfNodesPerBlade)
         .def_property_readonly("number_of_blades_per_turbine", &ActuatorFarm::getNumberOfBladesPerTurbine)
         .def_property_readonly("number_of_nodes", &ActuatorFarm::getNumberOfNodes)
-        .def_property_readonly("number_of_indices", &ActuatorFarm::getNumerOfIndices)
+        .def_property_readonly("number_of_indices", &ActuatorFarm::getNumberOfIndices)
         .def_property_readonly("density", &ActuatorFarm::getDensity)
+        .def_property_readonly("delta_t", &ActuatorFarm::getDeltaT)
+        .def_property_readonly("delta_x", &ActuatorFarm::getDeltaX)
 
         .def("add_turbine", &ActuatorFarm::addTurbine)
 
-        .def("get_turbine_pos" [](ActuatorFarm& al, uint turbine){ return arr(3, {al.getTurbinePosX(turbine), al.getTurbinePosY(turbine), al.getTurbinePosZ(turbine)}); })
-
-        .def("get_all_turbine_pos_x", [](ActuatorFarm& al){ return arr(al.getTurbines(), al.getAllTurbinePosX()); })
-        .def("get_all_turbine_pos_y", [](ActuatorFarm& al){ return arr(al.getTurbines(), al.getAllTurbinePosY()); })
-        .def("get_all_turbine_pos_z", [](ActuatorFarm& al){ return arr(al.getTurbines(), al.getAllTurbinePosZ()); })
+        .def("get_turbine_pos", [](ActuatorFarm& al, uint turbine){ real position[3] = {al.getTurbinePosX(turbine), al.getTurbinePosY(turbine), al.getTurbinePosZ(turbine)}; return arr(3,  position); } )
+        .def("get_turbine_azimuth", &ActuatorFarm::getTurbineAzimuth)
+        .def("get_turbine_yaw", &ActuatorFarm::getTurbineYaw)
+        .def("get_turbine_omega", &ActuatorFarm::getTurbineOmega)
+        .def("get_all_azimuths", [](ActuatorFarm& al){ return arr(al.getNumberOfTurbines(), al.getAllAzimuths()); } )
+        .def("get_all_yaws", [](ActuatorFarm& al){ return arr(al.getNumberOfTurbines(), al.getAllYaws()); } )
+        .def("get_all_omegas", [](ActuatorFarm& al){ return arr(al.getNumberOfTurbines(), al.getAllOmegas()); } )
+        .def("get_all_turbine_pos_x", [](ActuatorFarm& al){ return arr(al.getNumberOfTurbines(), al.getAllTurbinePosX()); } )
+        .def("get_all_turbine_pos_y", [](ActuatorFarm& al){ return arr(al.getNumberOfTurbines(), al.getAllTurbinePosY()); } )
+        .def("get_all_turbine_pos_z", [](ActuatorFarm& al){ return arr(al.getNumberOfTurbines(), al.getAllTurbinePosZ()); } )
     
         .def("get_all_blade_radii", [](ActuatorFarm& al){ return arr({al.getNumberOfTurbines(), al.getNumberOfNodesPerBlade()}, al.getAllBladeRadii()); } )
         .def("get_all_blade_coords_x", [](ActuatorFarm& al){ return arr({al.getNumberOfTurbines(), al.getNumberOfBladesPerTurbine(), al.getNumberOfNodesPerBlade()}, al.getAllBladeCoordsX()); } )
@@ -96,10 +103,14 @@ namespace actuator_farm
         .def("get_turbine_blade_forces_y_device", [](ActuatorFarm& al, uint turbine) -> intptr_t { return reinterpret_cast<intptr_t>(al.getTurbineBladeForcesYDevice(turbine)); } )
         .def("get_turbine_blade_forces_z_device", [](ActuatorFarm& al, uint turbine) -> intptr_t { return reinterpret_cast<intptr_t>(al.getTurbineBladeForcesZDevice(turbine)); } )
 
+        .def("set_turbine_azimuth", &ActuatorFarm::setTurbineAzimuth)
+        .def("set_turbine_yaw", &ActuatorFarm::setTurbineYaw)
+        .def("set_turbine_omega", &ActuatorFarm::setTurbineOmega)
+
         .def("set_all_blade_coords", [](ActuatorFarm& al, arr coordsX, arr coordsY, arr coordsZ)
         { 
             al.setAllBladeCoords(static_cast<float *>(coordsX.request().ptr), static_cast<float *>(coordsY.request().ptr), static_cast<float *>(coordsZ.request().ptr)); 
-        })
+        } )
         .def("set_all_blade_velocities", [](ActuatorFarm& al, arr velocitiesX, arr velocitiesY, arr velocitiesZ)
         { 
             al.setAllBladeVelocities(static_cast<float *>(velocitiesX.request().ptr), static_cast<float *>(velocitiesY.request().ptr), static_cast<float *>(velocitiesZ.request().ptr)); 
diff --git a/pythonbindings/src/gpu/submodules/boundary_conditions.cpp b/pythonbindings/src/gpu/submodules/boundary_conditions.cpp
index 9ab758ffd6e9fc68e03eef40676508c093567df2..13e4fb56bd57569e7227298d05848068824d84cd 100644
--- a/pythonbindings/src/gpu/submodules/boundary_conditions.cpp
+++ b/pythonbindings/src/gpu/submodules/boundary_conditions.cpp
@@ -1,6 +1,6 @@
 #include <pybind11/pybind11.h>
 #include <gpu/GridGenerator/grid/BoundaryConditions/Side.h>
-#include "gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h"
+#include "gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h"
 
 namespace boundary_conditions
 {
diff --git a/pythonbindings/src/gpu/submodules/simulation.cpp b/pythonbindings/src/gpu/submodules/simulation.cpp
index 88716ebb38f765a94ae4c6c42e27eae4c93e1adb..501f7e59113a261593088af4091e95ba1865a247 100644
--- a/pythonbindings/src/gpu/submodules/simulation.cpp
+++ b/pythonbindings/src/gpu/submodules/simulation.cpp
@@ -8,7 +8,7 @@
 #include <gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h>
 #include <gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h>
 #include <gpu/VirtualFluids_GPU/Output/DataWriter.h>
-#include "gpu/VirtualFluids_GPU/BoundaryConditions/BoundaryConditionFactory.h"
+#include "gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h"
 #include "gpu/VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h"
 
 namespace simulation
diff --git a/setup.py b/setup.py
index b5cd97056bd4696df8cfd1df1794f3689c23376f..5367d423e0382f3ac05da80e94c269ea55832fd9 100644
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@ install via python:
     set CMAKE Flags via -DBUILD_VF_GPU:BOOL=1
 or install via pip:
     pip install -e .
-    set CMAKE Flags via --configure-settings -DBUILD_VF_GPU=1
+    set CMAKE Flags via --config-settings -DBUILD_VF_GPU=1
 """
 
 init_py = inspect.cleandoc(
diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/TurbulentViscosityKernels/FluidFlow/Compressible/CumulantK17chim/TurbulentViscosityCumulantK17CompChim_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/TurbulentViscosityKernels/FluidFlow/Compressible/CumulantK17chim/TurbulentViscosityCumulantK17CompChim_Device.cu
index ba0cf7bfa4cf0f05229e189a0ab9be5c06b5d824..6b64b05f16df0c0bc3bed6997cfdab4314d78d8d 100644
--- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/TurbulentViscosityKernels/FluidFlow/Compressible/CumulantK17chim/TurbulentViscosityCumulantK17CompChim_Device.cu
+++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/TurbulentViscosityKernels/FluidFlow/Compressible/CumulantK17chim/TurbulentViscosityCumulantK17CompChim_Device.cu
@@ -45,10 +45,10 @@
 #include "Kernel/Utilities/DistributionHelper.cuh"
 #include "VirtualFluids_GPU/GPU/KernelUtilities.h"
 #include "GPU/TurbulentViscosityInlines.cuh"
+#include "Kernel/Utilities/ChimeraTransformation.h"
 
 using namespace vf::lbm::constant;
 using namespace vf::lbm::dir;
-#include "Kernel/Utilities/ChimeraTransformation.h"
 
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h
index 346df7622c649acead19f966c73457123ebe8c7d..c9a842c994711830c5c4926d7371cdd0a2931961 100644
--- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h
+++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h
@@ -45,11 +45,16 @@ public:
     void write(uint t);
 
     real getDensity(){ return this->density; };
+    real getDeltaT(){ return this->deltaT; };
+    real getDeltaX(){ return this->deltaX; };
 
     uint getNumberOfTurbines(){ return this->numberOfTurbines; };
     uint getNumberOfNodesPerBlade(){ return this->numberOfBladeNodes; };
     uint getNumberOfBladesPerTurbine(){ return this->numberOfBlades; };
 
+    uint getNumberOfIndices(){ return this->numberOfIndices; };
+    uint getNumberOfNodes(){ return this->numberOfNodes; };
+
     real* getAllAzimuths(){ return azimuthsH; };
     real* getAllOmegas(){ return omegasH; };
     real* getAllYaws(){ return yawsH; };
@@ -66,9 +71,6 @@ public:
     real getTurbinePosY(uint turbine){ return turbinePosYH[turbine]; };
     real getTurbinePosZ(uint turbine){ return turbinePosZH[turbine]; };
 
-    uint getNumberOfIndices(){ return this->numberOfIndices; };
-    uint getNumberOfNodes(){ return this->numberOfNodes; };
-
     real* getAllBladeRadii(){ return this->bladeRadiiH; };
     real* getAllBladeCoordsX(){ return this->bladeCoordsXH; };
     real* getAllBladeCoordsY(){ return this->bladeCoordsYH; };
@@ -113,6 +115,10 @@ public:
     real* getTurbineBladeForcesYDevice(uint turbine){ return &this->bladeForcesYD[turbine*numberOfBladeNodes*numberOfBlades]; };
     real* getTurbineBladeForcesZDevice(uint turbine){ return &this->bladeForcesZD[turbine*numberOfBladeNodes*numberOfBlades]; };
 
+    void setTurbineAzimuth(uint turbine, real azimuth){ azimuthsH[turbine] = azimuth; };
+    void setTurbineYaw(uint turbine, real yaw){ yawsH[turbine] = yaw; };
+    void setTurbineOmega(uint turbine, real omega){ omegasH[turbine] = omega; };
+
     void setAllBladeCoords(real* _bladeCoordsX, real* _bladeCoordsY, real* _bladeCoordsZ);
     void setAllBladeVelocities(real* _bladeVelocitiesX, real* _bladeVelocitiesY, real* _bladeVelocitiesZ);
     void setAllBladeForces(real* _bladeForcesX, real* _bladeForcesY, real* _bladeForcesZ);
@@ -121,6 +127,7 @@ public:
     void setTurbineBladeVelocities(uint turbine, real* _bladeVelocitiesX, real* _bladeVelocitiesY, real* _bladeVelocitiesZ);
     void setTurbineBladeForces(uint turbine, real* _bladeForcesX, real* _bladeForcesY, real* _bladeForcesZ);
 
+    virtual void calcBladeForces();
 
 private:
     void initTurbineGeometries(CudaMemoryManager* cudaManager);
@@ -131,7 +138,6 @@ private:
     void initBladeIndices(Parameter* para, CudaMemoryManager* cudaManager);
 
     void calcForcesEllipticWing();
-    void calcBladeForces();
     void rotateBlades(real angle, uint turbineID);
 
     void writeBladeCoords(uint t);