diff --git a/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp b/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp
index b29e813b146a3f0b66e099381e117d450736a060..383fd24d49c5eff79a2475d8ef73a8cb8a038be4 100644
--- a/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp
+++ b/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp
@@ -17,13 +17,14 @@
 #include "PointerDefinitions.h"
 
 #include "Core/LbmOrGks.h"
-#include "Core/Input/Input.h"
 #include "Core/StringUtilities/StringUtil.h"
-#include "Core/Input/ConfigFileReader/ConfigFileReader.h"
 
 #include "Core/VectorTypes.h"
 #include "Core/Logger/Logger.h"
 
+#include <basics/config/ConfigurationFile.h>
+
+
 //////////////////////////////////////////////////////////////////////////
 
 #include "GridGenerator/grid/GridBuilder/LevelGridBuilder.h"
@@ -102,8 +103,6 @@ const real mach = 0.1;
 
 const uint nodes_per_D = 8;
 
-//std::string path("F:/Work/Computations/out/DrivenCavity/"); //LEGOLAS
-//std::string path("D:/out/DrivenCavity"); //Mollok
 std::string path(".");
 
 std::string simulationName("ActuatorLine");
@@ -117,6 +116,7 @@ const uint timeStepEnd = 1000;
 
 void multipleLevel(const std::string& configPath)
 {
+
     logging::Logger::addStream(&std::cout);
     logging::Logger::setDebugLevel(logging::Logger::Level::INFO_LOW);
     logging::Logger::timeStamp(logging::Logger::ENABLE);
@@ -128,11 +128,7 @@ void multipleLevel(const std::string& configPath)
 
     auto gridBuilder = MultipleGridBuilder::makeShared(gridFactory);
     
-	vf::gpu::Communicator* comm = vf::gpu::Communicator::getInstanz();
-	SPtr<ConfigFileReader> configReader = ConfigFileReader::getNewInstance();
 
-    std::cout << configPath << std::endl;
-	SPtr<ConfigData> configData = configReader->readConfigFile(configPath.c_str());
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -158,10 +154,12 @@ void multipleLevel(const std::string& configPath)
 
     if( lbmOrGks == LBM )
     {
+        vf::gpu::Communicator* comm = vf::gpu::Communicator::getInstanz();
 
+        vf::basics::ConfigurationFile config;
+        config.load(configPath);
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-        SPtr<Parameter>    para         = Parameter::make(configData, comm);
+        SPtr<Parameter> para = std::make_shared<Parameter>(config, comm->getNummberOfProcess(), comm->getPID());
 
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -178,7 +176,6 @@ void multipleLevel(const std::string& configPath)
 
 		para->setDevices(std::vector<uint>{(uint)0});
 
-        para->setOutputPath( path );
         para->setOutputPrefix( simulationName );
 
         para->setFName(para->getOutputPath() + "/" + para->getOutputPrefix());
@@ -235,6 +232,7 @@ void multipleLevel(const std::string& configPath)
         std::vector<real> probeCoordsZ = {3*D,3*D,3*D};
         probe->setProbePointsFromList(probeCoordsX,probeCoordsY,probeCoordsZ);
         probe->addPostProcessingVariable(PostProcessingVariable::Means);
+        probe->addPostProcessingVariable(PostProcessingVariable::Variances);
         para->addProbe( probe );
 
         Simulation sim;
@@ -381,7 +379,7 @@ int main( int argc, char* argv[])
 
 			// targetPath = targetPath.substr(0, targetPath.find_last_of('/') + 1);
 
-
+            if( argc > 1){ path = argv[1]; }
 
 			// std::cout << targetPath << std::endl;
 
diff --git a/apps/gpu/LBM/ActuatorLine/configActuatorLine.txt b/apps/gpu/LBM/ActuatorLine/configActuatorLine.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3b590b29f71f7e965828f3821608e0013fb281b1
--- /dev/null
+++ b/apps/gpu/LBM/ActuatorLine/configActuatorLine.txt
@@ -0,0 +1,8 @@
+##################################################
+#informations for Writing
+##################################################
+Path = "."
+##################################################
+#informations for reading
+##################################################
+GridPath="."
diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
index b2ad86c7df9583aa76e52e630bb1ea7a926c089a..275e5e51ba0eb6a8fc6e502b70281953121db22a 100644
--- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
+++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp
@@ -80,7 +80,12 @@ void Simulation::init(SPtr<Parameter> para, SPtr<GridProvider> gridProvider, std
    comm = vf::gpu::Communicator::getInstanz();
    this->para = para;
 
-   devCheck(comm->mapCudaDevice(para->getMyID(), para->getNumprocs(), para->getDevices(), para->getMaxDev()));
+	printf("para ID %d, numProcs: %d, nDevices: %ld, devices: %d, maxDev: %d \n", para->getMyID(), para->getNumprocs(), para->getDevices().size(), para->getDevices()[0], para->getMaxDev());
+	printf("comm numproces %d, pid %d \n", comm->getNummberOfProcess(), comm->getPID());
+	int dev = comm->mapCudaDevice(para->getMyID(), para->getNumprocs(), para->getDevices(), para->getMaxDev());
+	printf("dev: %d \n", dev);
+   int devcheck = devCheck(dev);
+   printf("devcheck return: %d", devcheck);
    
    para->initLBMSimulationParameter();