diff --git a/targets/tests/NumericalTests/Utilities/KernelConfiguration/KernelConfiguration.h b/targets/tests/NumericalTests/Utilities/KernelConfiguration/KernelConfiguration.h
new file mode 100644
index 0000000000000000000000000000000000000000..0cf6048f6019ff916c2fbb00e512339e9318f9b2
--- /dev/null
+++ b/targets/tests/NumericalTests/Utilities/KernelConfiguration/KernelConfiguration.h
@@ -0,0 +1,17 @@
+#ifndef KERNEL_CONFIGURATION_H
+#define KERNEL_CONFIGURATION_H
+
+#include <vector>
+
+class KernelConfiguration
+{
+public:
+	virtual std::string getMainKernel() = 0;
+	virtual bool getMultiKernelOn() = 0;
+	virtual	std::vector<int> getMultiKernelLevel() = 0;
+	virtual std::vector<std::string> getMultiKernelName() = 0;
+
+private:	
+
+};
+#endif 
\ No newline at end of file
diff --git a/targets/tests/NumericalTests/Utilities/KernelConfiguration/KernelConfigurationImp.cpp b/targets/tests/NumericalTests/Utilities/KernelConfiguration/KernelConfigurationImp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..04a556978035bae05bc0c5f7d808957ff39e7da0
--- /dev/null
+++ b/targets/tests/NumericalTests/Utilities/KernelConfiguration/KernelConfigurationImp.cpp
@@ -0,0 +1,47 @@
+#include "KernelConfigurationImp.h"
+
+std::string KernelConfigurationImp::getMainKernel()
+{
+	return mainKernelName;
+}
+
+bool KernelConfigurationImp::getMultiKernelOn()
+{
+	return multiKernelOn;
+}
+
+std::vector<int> KernelConfigurationImp::getMultiKernelLevel()
+{
+	return multiKernelLevel;
+}
+
+std::vector<std::string> KernelConfigurationImp::getMultiKernelName()
+{
+	return multiKernelName;
+}
+
+std::shared_ptr<KernelConfigurationImp> KernelConfigurationImp::getNewInstance(std::string kernelName)
+{
+	return std::shared_ptr<KernelConfigurationImp>(new KernelConfigurationImp(kernelName));
+}
+
+std::shared_ptr<KernelConfigurationImp> KernelConfigurationImp::getNewInstance(std::string kernelName, std::vector<int> multiKernelLevel, std::vector<std::string> multiKernelName)
+{
+	return std::shared_ptr<KernelConfigurationImp>(new KernelConfigurationImp(kernelName, multiKernelLevel, multiKernelName));
+}
+
+KernelConfigurationImp::KernelConfigurationImp(std::string kernelName)
+{
+	this->mainKernelName = kernelName;
+	multiKernelOn = false;
+	multiKernelLevel.resize(0);
+	multiKernelName.resize(0);
+}
+
+KernelConfigurationImp::KernelConfigurationImp(std::string mainKernelName, std::vector<int> multiKernelLevel, std::vector<std::string> multiKernelName)
+{
+	this->mainKernelName = mainKernelName;
+	multiKernelOn = true;
+	this->multiKernelLevel = multiKernelLevel;
+	this->multiKernelName = multiKernelName;
+}
\ No newline at end of file
diff --git a/targets/tests/NumericalTests/Utilities/KernelConfiguration/KernelConfigurationImp.h b/targets/tests/NumericalTests/Utilities/KernelConfiguration/KernelConfigurationImp.h
new file mode 100644
index 0000000000000000000000000000000000000000..1dd3d63f214ae3b8bd400174b49e07804aa68279
--- /dev/null
+++ b/targets/tests/NumericalTests/Utilities/KernelConfiguration/KernelConfigurationImp.h
@@ -0,0 +1,29 @@
+#ifndef KERNEL_CONFIGURATION_IMP_H
+#define KERNEL_CONFIGURATION_IMP_H
+
+#include "KernelConfiguration.h"
+
+#include <memory>
+
+class KernelConfigurationImp : public KernelConfiguration
+{
+public:
+	std::string getMainKernel();
+	bool getMultiKernelOn();
+	std::vector<int> getMultiKernelLevel();
+	std::vector<std::string> getMultiKernelName();
+
+	static std::shared_ptr< KernelConfigurationImp> getNewInstance(std::string kernelName);
+	static std::shared_ptr< KernelConfigurationImp> getNewInstance(std::string mainKernelName, std::vector<int> multiKernelLevel, std::vector<std::string> multiKernelName);
+
+private:
+	KernelConfigurationImp(std::string kernelName);
+	KernelConfigurationImp(std::string kernelName, std::vector<int> multiKernelLevel, std::vector<std::string> multiKernelName);
+	KernelConfigurationImp() {};
+
+	std::string mainKernelName;
+	bool multiKernelOn;
+	std::vector<int> multiKernelLevel;
+	std::vector<std::string> multiKernelName;
+};
+#endif 
\ No newline at end of file
diff --git a/targets/tests/NumericalTests/Utilities/KernelConfiguration/package.include b/targets/tests/NumericalTests/Utilities/KernelConfiguration/package.include
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameter.h b/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameter.h
index bb6ce002ace47c1d66ed7626884d3714f39a6f15..8dd72a8a9c94e48d2632c32a3476516019652fea 100644
--- a/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameter.h
+++ b/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameter.h
@@ -6,8 +6,7 @@
 #include <vector>
 
 class InitialCondition;
-class Calculator;
-class TestResults;
+class KernelConfiguration;
 
 class SimulationParameter
 {
@@ -27,8 +26,7 @@ public:
 	virtual std::string getFilePath() = 0;
 	virtual std::vector< int> getDevices() = 0;
 	virtual std::shared_ptr< InitialCondition> getInitialCondition() = 0;
-	virtual std::shared_ptr< Calculator> getCalculator() = 0;
-	virtual std::shared_ptr< TestResults> getTestResults() = 0;
+	virtual std::shared_ptr< KernelConfiguration> getKernelConfiguration() = 0;
 
 private:
 
diff --git a/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameterImp.cpp b/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameterImp.cpp
index b092648dc69f36158cf9aedc51407d6dbf684dcf..b2136b373f89141acbdb153921407eb385e3db48 100644
--- a/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameterImp.cpp
+++ b/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameterImp.cpp
@@ -1,21 +1,18 @@
 #include "SimulationParameterImp.h"
 
-#include "Utilities/TestResults/TestResults.h"
+#include <experimental/filesystem>
 
-SimulationParameterImp::SimulationParameterImp(
-	real viscosity, real lx, real lz, real l0,
+SimulationParameterImp::SimulationParameterImp(std::string simName, real viscosity, real lx, real lz, real l0,
 	unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, 
 	unsigned int startStepCalculation, unsigned int ySliceForCalculation, 
 	std::string gridPath, unsigned int maxLevel, unsigned int numberOfGridLevels,
-	bool writeFiles, unsigned int startStepFileWriter, 
-	std::shared_ptr<TestResults> testResults,
+	bool writeFiles, unsigned int startStepFileWriter,
 	std::vector<int> devices)
-		:viscosity(viscosity), lx(lx), l0(l0), lz(lz),
+		:simName(simName), viscosity(viscosity), lx(lx), l0(l0), lz(lz),
 		numberOfTimeSteps(numberOfTimeSteps), basisTimeStepLength(basisTimeStepLength), 
 		startStepCalculation(startStepCalculation), ySliceForCalculation(ySliceForCalculation), 
 		gridPath(gridPath), maxLevel(maxLevel), numberOfGridLevels(numberOfGridLevels),
-		writeFiles(writeFiles), startStepFileWriter(startStepFileWriter), 
-		testResults(testResults), devices(devices)
+		writeFiles(writeFiles), startStepFileWriter(startStepFileWriter), devices(devices)
 {
 	timeStepLength = basisTimeStepLength*(lx / l0)*(lx / l0);
 	startTimeCalculation = timeStepLength * startStepCalculation;
@@ -24,6 +21,13 @@ SimulationParameterImp::SimulationParameterImp(
 
 }
 
+void SimulationParameterImp::generateFilePath(std::string filePath)
+{
+	std::experimental::filesystem::path dir(filePath);
+	if (!(std::experimental::filesystem::exists(dir)))
+		std::experimental::filesystem::create_directories(dir);
+}
+
 double SimulationParameterImp::getViscosity()
 {
 	return viscosity;
@@ -94,12 +98,7 @@ std::shared_ptr<InitialCondition> SimulationParameterImp::getInitialCondition()
 	return initialCondition;
 }
 
-std::shared_ptr<Calculator> SimulationParameterImp::getCalculator()
-{
-	return calculator;
-}
-
-std::shared_ptr<TestResults> SimulationParameterImp::getTestResults()
+std::shared_ptr<KernelConfiguration> SimulationParameterImp::getKernelConfiguration()
 {
-	return testResults;
+	return kernelConfig;
 }
\ No newline at end of file
diff --git a/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameterImp.h b/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameterImp.h
index ded4dd9c87a7ff3913bb7aa92ac12004d44f4370..1fccf31a9b899dbeb3d594db9a765d6c2cfad410 100644
--- a/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameterImp.h
+++ b/targets/tests/NumericalTests/Utilities/SimulationParameter/SimulationParameterImp.h
@@ -5,8 +5,6 @@
 
 #include "LBM\LB.h"
 
-class SimulationResults;
-
 class SimulationParameterImp : public SimulationParameter
 {
 public:
@@ -24,25 +22,26 @@ public:
 	unsigned int getStartTimeDataWriter();
 	std::vector< int> getDevices();
 	std::shared_ptr< InitialCondition> getInitialCondition();
-	std::shared_ptr< Calculator> getCalculator();
-	std::shared_ptr< TestResults> getTestResults();
+	std::shared_ptr< KernelConfiguration> getKernelConfiguration();
 
 protected:
 	SimulationParameterImp() {};
-	SimulationParameterImp(real viscosity, real lx, real lz, real l0,
+	SimulationParameterImp(std::string simName, real viscosity, real lx, real lz, real l0,
 		unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
 		unsigned int startStepCalculation, unsigned int ySliceForCalculation,
 		std::string gridPath, unsigned int maxLevel, unsigned int numberOfGridLevels,
 		bool writeFiles, unsigned int startStepFileWriter,
-		std::shared_ptr<TestResults> testResults,
 		std::vector<int> devices);
 
+	void generateFilePath(std::string filePath);
+
 	real viscosity;
 	real lx, l0, lz;
 	unsigned int numberOfTimeSteps, basisTimeStepLength;
 	unsigned int startStepCalculation, startStepFileWriter, ySliceForCalculation;
 	std::string gridPath;
 	std::string filePath;
+	std::string simName;
 	bool writeFiles;
 	std::vector<int> devices;
 
@@ -52,9 +51,7 @@ protected:
 	unsigned int endTime;
 
 	std::shared_ptr< InitialCondition> initialCondition;
-	std::shared_ptr< Calculator> calculator;
-	std::shared_ptr< SimulationResults> simResults;
-	std::shared_ptr< TestResults> testResults;
+	std::shared_ptr< KernelConfiguration> kernelConfig;
 };
 
 #endif