diff --git a/src/helper_files/helper.cpp b/src/helper_files/helper.cpp
index d7690732aa314a047ad116d13feff8ebfc1d6dcb..7f7568af71d955c320ecbf5ccef5b770804e6d84 100644
--- a/src/helper_files/helper.cpp
+++ b/src/helper_files/helper.cpp
@@ -3,7 +3,7 @@
 
 // Extra functions to reduce some code for the conversion between arma and float *array
 
-float *convertArmaToArray(colvec vec)
+float *convertToArray(colvec vec)
 {
 	vector<float> vectorData = conv_to<vector<float>>::from(vec);
 	int vectorSize = vectorData.size();
@@ -18,10 +18,16 @@ float *convertArmaToArray(colvec vec)
 	}
 	return arr;
 }
-float *convertArmaToArray(rowvec vec)
+float *convertToArray(rowvec vec)
 {
 	colvec newVec = conv_to<colvec>::from(vec);
-	return convertArmaToArray(newVec);
+	return convertToArray(newVec);
+}
+
+float *convertToArray(vector<size_t> vec)
+{
+	colvec newVec = conv_to<colvec>::from(vec);
+	return convertToArray(newVec);
 }
 
 rowvec convertArrayToRowvec(float *arr, int vecSize)
diff --git a/src/helper_files/helper.hpp b/src/helper_files/helper.hpp
index 408868d5d918798f33f1eac42691b6de54343607..1093c1a88fa3c3498549f8310acb2940afb2b6ed 100644
--- a/src/helper_files/helper.hpp
+++ b/src/helper_files/helper.hpp
@@ -7,9 +7,14 @@ using namespace arma;
 using namespace mlpack;
 using namespace std;
 
-float *convertArmaToArray(colvec vec);
+float *convertToArray(colvec vec);
+
+float *convertToArray(rowvec vec);
+
+float *convertToArray(mat matrix);
+
+float *convertToArray(vector<size_t> vec);
 
-float *convertArmaToArray(rowvec vec);
 
 rowvec convertArrayToRowvec(float *arr, int vecSize);
 
diff --git a/src/methods/bayesian_linear_regression/bayesian_linear_regression.cpp b/src/methods/bayesian_linear_regression/bayesian_linear_regression.cpp
index d79b7bb428c6dc0a751d994e4b254a47a96c0145..78813e645edd158279acb6dbb548cd3dc12a3cb4 100644
--- a/src/methods/bayesian_linear_regression/bayesian_linear_regression.cpp
+++ b/src/methods/bayesian_linear_regression/bayesian_linear_regression.cpp
@@ -47,7 +47,7 @@ float * dataOffset(SP_integer *arraySize)
 
 	*arraySize = armaDataOffset.n_elem;
 
-	return convertArmaToArray(armaDataOffset);
+	return convertToArray(armaDataOffset);
 }
 
 // input:
@@ -59,7 +59,7 @@ float * dataScale(SP_integer *arraySize)
 
 	*arraySize = armaDataScale.n_elem;
 
-	return convertArmaToArray(armaDataScale);
+	return convertToArray(armaDataScale);
 }
 
 // input:
@@ -71,7 +71,7 @@ float * omega(SP_integer *arraySize)
 
 	*arraySize = armaOmega.n_elem;
 
-	return convertArmaToArray(armaOmega);
+	return convertToArray(armaOmega);
 }
 
 // input: const arma::mat &points, arma::rowvec &predictions
@@ -89,7 +89,7 @@ void predict(float *pointsArr, SP_integer pointsSize, SP_integer pointsRowNum, f
 	// give back the sizes and the converted results as arrays
 	*predicSize = predictions.n_elem;
 
-	*predicArr = convertArmaToArray(predictions);
+	*predicArr = convertToArray(predictions);
 }
 
 // input: const arma::mat &points, arma::rowvec &predictions, arma::rowvec &std
@@ -108,8 +108,8 @@ void predictWithStd(float *pointsArr, SP_integer pointsSize, SP_integer pointsRo
 	*predicSize = predictions.n_elem;
 	*stdSize = std.n_elem;
 
-	*predicArr = convertArmaToArray(predictions);
-	*stdArr = convertArmaToArray(std);
+	*predicArr = convertToArray(predictions);
+	*stdArr = convertToArray(std);
 }
 
 
diff --git a/src/methods/lars/lars.cpp b/src/methods/lars/lars.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3e26a3ae41f0194b5c77a74dd7303bdbb4171639
--- /dev/null
+++ b/src/methods/lars/lars.cpp
@@ -0,0 +1,184 @@
+#include <sicstus/sicstus.h>
+/* ex_glue.h is generated by splfr from the foreign/[2,3] facts.
+   Always include the glue header in your foreign resource code.
+*/
+#include "lars_glue.h"
+#include <mlpack/methods/lars/lars.hpp>
+#include <mlpack/core.hpp>
+
+// including helper functions for converting between arma structures and arrays
+#include "../../helper_files/helper.hpp"
+
+using namespace arma;
+using namespace mlpack;
+using namespace std;
+using namespace mlpack::regression;
+
+// Global Variable of the Lars regressor object so it can be accessed from all functions
+LARS regressor;
+
+// input:	const bool useCholesky, const double lambda1, const double lambda2, const double tolerance
+// output: 
+void initModelNoDataNoGram(SP_integer useCholesky, double lambda1, double lambda2, double tol)
+{
+	regressor = new LARS((useCholesky == 1), lambda1, lambda2, tol);
+}
+
+// input:	const bool useCholesky, const arma::mat & gramMatrix, const double lambda1, const double lambda2, const double tolerance
+// output: 
+void initModelNoDataWithGram(SP_integer useCholesky, float *gramArr, SP_integer gramSize, SP_integer gramRowNum, SP_integer lambda1, SP_integer lambda2, double tol)
+{
+	mat gramMatrix = convertArrayToMat(gramArr, gramSize, gramRowNum);
+
+	regressor = new LARS((useCholesky == 1), gramMatrix, lambda1, lambda2, tol);
+}
+
+// input:	const arma::mat & dataMatrix, const arma::rowvec & responses, const bool transposeData, const bool useCholesky, const double lambda1, const double lambda2, const double tolerance
+// output: 
+void initModelWithDataNoGram(float *dataArr, SP_integer dataSize, SP_integer dataRowNum, float *responsesArr, SP_integer responsesSize, SP_integer transposeData,
+				 SP_integer useCholesky, SP_integer lambda1, SP_integer lambda2, double tol)
+{
+	if(dataSize / dataRowNum != responsesSize)
+	{
+		cout << "Target dim doesnt fit to the Data dim" << endl;
+		return;
+	}
+	// convert the Prolog arrays to arma::rowvec and arma::mat
+	mat data = convertArrayToMat(dataArr, dataSize, dataRowNum);
+	rowvec responses = convertArrayToRowvec(responsesArr, responsesSize);
+
+	regressor = new LARS(data, responses, (transposedata == 1), (useCholesky == 1), lambda1, lambda2, tol);
+}
+
+// input:	const arma::mat & dataMatrix, const arma::rowvec & responses, const bool transposeData, const bool useCholesky, const arma::mat & gramMatrix, const double lambda1, const double lambda2, const double tolerance
+// output: 
+void initModelWithDataWithGram(float *dataArr, SP_integer dataSize, SP_integer dataRowNum, float *responsesArr, SP_integer responsesSize, SP_integer transposeData,
+				 SP_integer useCholesky, float *gramArr, SP_integer gramSize, SP_integer gramRowNum, SP_integer lambda1, SP_integer lambda2, double tol)
+{
+	if(dataSize / dataRowNum != responsesSize)
+	{
+		cout << "Target dim doesnt fit to the Data dim" << endl;
+		return;
+	}
+	// convert the Prolog arrays to arma::rowvec and arma::mat
+	mat data = convertArrayToMat(dataArr, dataSize, dataRowNum);
+	rowvec responses = convertArrayToRowvec(responsesArr, responsesSize);
+	mat gramMatrix = convertArrayToMat(gramArr, gramSize, gramRowNum);
+
+	regressor = new LARS(data, responses, (transposedata == 1), (useCholesky == 1), gramMatrix, lambda1, lambda2, tol);
+}
+
+// TODO: conversion of std::vector to array
+// input:
+// output: const std::vector<size_t>&
+void activeSet(SP_integer a)
+{
+	vector<size_t> active = regressor.ActiveSet();
+	for (size_t i = 0; i < active.size(); i++)
+	{
+		cout << active[i] << endl;
+	}
+}
+
+// input:
+// output: arma::vec& 
+void beta( float **betaArr, SP_integer *betaSize)
+{
+	rowvec betasolution = regressor.Beta();
+	*betaSize = betasolution.n_elem;
+
+	*betaArr = convertToArray(betasolution);
+}
+
+// TODO: adding matrix as a return 
+// input:
+// output: std::vector<arma::vec>&
+void betaPath()
+{
+	
+}
+
+// input: const arma::mat &data, const arma::rowvec &responses, const bool rowMajor
+// output: double minimum cost error
+SP_integer computeError(float *points_mat_arr, SP_integer dataSize, SP_integer dataRowNum, float *responses_arr, SP_integer responsesSize, SP_integer rowMajor)
+{
+	if(dataSize / dataRowNum != responsesSize)
+	{
+		cout << "Target dim doesnt fit to the Data dim" << endl;
+		return 0;
+	}
+	// convert the Prolog arrays to arma::rowvec and arma::mat
+	mat data = convertArrayToMat(points_mat_arr, dataSize, dataRowNum);
+	rowvec responses = convertArrayToRowvec(responses_arr, responsesSize);
+
+	// run the model function
+	return regressor.ComputeError(data, responses);
+}
+
+// TODO: conversion of vector to array
+// input:
+// output: std::vector<double>&
+void lambdaPath()
+{
+	
+}
+
+// TODO: adding matrix as a return 
+// input:
+// output: arma::mat& upper triangular cholesky factor
+void matUtriCholFactor()
+{
+	mat UtriCholFact = regressor.MatUtriCholFactor();
+}
+
+// input: const arma::mat &points, arma::rowvec &predictions, const bool rowMajor
+// output:
+void predict(float *pointsArr, SP_integer pointsSize, SP_integer pointsRowNum, float **predicArr, SP_integer *predicSize, SP_integer rowMajor)
+{
+	// convert the Prolog arrays to std::vec for easy conversion to arma::mat
+	mat data = convertArrayToMat(pointsArr, pointsSize, pointsRowNum);
+
+	// run the prediction and save the result in arma::rowvec
+	rowvec predictions;
+	regressor.Predict(data, predictions);
+
+
+	// give back the sizes and the converted results as arrays
+	*predicSize = predictions.n_elem;
+
+	*predicArr = convertToArray(predictions);
+}
+
+// input: const arma::mat &data, const arma::rowvec &responses, arma::vec& beta, const bool transposeData
+// output: double minimum cost error
+void train(float *dataArr, SP_integer dataSize, SP_integer dataRowNum, float *responsesArr, SP_integer responsesSize, float **betaArr, SP_integer *betaSize, SP_integer transposeData)
+{
+	if(dataSize / dataRowNum != responsesSize)
+	{
+		cout << "Target dim doesnt fit to the Data dim" << endl;
+		return;
+	}
+	// convert the Prolog arrays to arma::rowvec and arma::mat
+	mat data = convertArrayToMat(dataArr, dataSize, dataRowNum);
+	rowvec responses = convertArrayToRowvec(responsesArr, responsesSize);
+
+	// run the model function
+	regressor.Train(data, responses);
+}
+
+// input: const arma::mat &data, const arma::rowvec &responses, const bool transposeData
+// output: double minimum cost error
+void trainNoBetaReturn(float *dataArr, SP_integer dataSize, SP_integer dataRowNum, float *responsesArr, SP_integer responsesSize, SP_integer transposeData)
+{
+	if(dataSize / dataRowNum != responsesSize)
+	{
+		cout << "Target dim doesnt fit to the Data dim" << endl;
+		return;
+	}
+	// convert the Prolog arrays to arma::rowvec and arma::mat
+	rowvec responses = convertArrayToRowvec(responsesArr, responsesSize);
+	mat data = convertArrayToMat(dataArr, dataSize, dataRowNum);
+
+	// run the model function
+	regressor.Train(data, responses);
+}
\ No newline at end of file
diff --git a/src/methods/lars/lars.pl b/src/methods/lars/lars.pl
new file mode 100644
index 0000000000000000000000000000000000000000..aef6aeb4f4ef0ee04cf8078f59115471a6a17e54
--- /dev/null
+++ b/src/methods/lars/lars.pl
@@ -0,0 +1,105 @@
+:- module(lars, [function/4, function/1, function/2, function/6]).
+
+:- load_files(library(str_decl),
+              [when(compile_time), if(changed)]).
+
+%% needed for using the array type and for reading from csv
+:- use_module(library(structs)).
+:- use_module('../../helper_files/helper.pl').
+
+%% type definitions for the float array
+:- foreign_type
+       float32          = float_32,
+       float_array      = array(float32).
+
+%% definitions for the connected function and what there inputs and output arguments are
+
+%% Funktion const bool useCholesky, const double lambda1, const double lambda2, const double tolerance
+foreign(initModelNoDataNoGram, c, initModelNoDataNoGram(+integer, +float32, +float32, +float32)).
+
+%% Funktion const bool useCholesky, const arma::mat & gramMatrix, const double lambda1, const double lambda2, const double tolerance
+foreign(initModelNoDataWithGram, c, initModelNoDataWithGram(+integer, +pointer(float_array), +integer, +integer, +float32, +float32, +float32)).
+
+%% Funktion const arma::mat & dataMatrix, const arma::rowvec & responses, const bool transposeData, const bool useCholesky, const double lambda1, const double lambda2, const double tolerance
+foreign(initModelWithDataNoGram, c, initModelWithDataNoGram(+pointer(float_array), +integer, +pointer(float_array), +integer, +integer, +integer, +float32, +float32, +float32)).
+
+%% Funktion const arma::mat & dataMatrix, const arma::rowvec & responses, const bool transposeData, const bool useCholesky, const arma::mat & gramMatrix, const double lambda1, const double lambda2, const double tolerance
+foreign(initModelWithDataWithGram, c, initModelWithDataWithGram(+pointer(float_array), +integer, +pointer(float_array), +integer, +integer, +integer, +pointer(float_array), +integer, +integer, +float32, +float32, +float32)).
+
+%% TODO:
+%% Funktion that takes data from Prolog
+%% input 
+%% output  const std::vector<size_t>&
+foreign(activeSet, c, activeSet(+integer, +integer, +integer, +float32)).
+
+%% Funktion that takes data from Prolog
+%% input 
+%% output arma::vec& 
+foreign(beta, c, beta(+integer, +integer, +integer, +float32)).
+
+%% TODO:
+%% Funktion that takes data from Prolog
+%% input 
+%% output std::vector<arma::vec>&
+foreign(betaPath, c, betaPath(+integer, +integer, +integer, +float32)).
+
+%% Funktion that takes data from Prolog
+%% input: const arma::mat &data, const arma::rowvec &responses, const bool rowMajor
+%% output: double minimum cost error
+foreign(computeError, c, computeError(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +integer, [-float32])).
+
+%% TODO:
+%% Funktion that takes data from Prolog
+%% input 
+%% output std::vector<double>&
+foreign(lambdaPath, c, lambdaPath(+integer, +integer, +integer, +float32)).
+
+%% TODO:
+%% Funktion that takes data from Prolog
+%% input 
+%% output arma::mat& upper triangular cholesky factor
+foreign(matUtriCholFactor, c, matUtriCholFactor(+integer)).
+
+%% Funktion that takes data from Prolog
+%% input const arma::mat &points, arma::rowvec &predictions, const bool rowMajor
+%% output 
+foreign(predict, c, predict(+pointer(float_array), +integer, +integer, -pointer(float_array), -integer, +integer)).
+
+%% Funktion that takes data from Prolog
+%% input const arma::mat &data, const arma::rowvec &responses, arma::vec& beta, const bool transposeData
+%% output double minimum cost error
+foreign(train, c, train(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, -pointer(float_array), -integer, +integer, [-integer])).
+
+%% Funktion that takes data from Prolog
+%% input const arma::mat &data, const arma::rowvec &responses, const bool transposeData
+%% output double minimum cost error
+foreign(trainNoBetaReturn, c, trainNoBetaReturn(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, +integer, [-integer])).
+
+%% Funktion that takes data from Prolog
+%% input 
+%% output 
+foreign(function, c, function(+integer, +integer, +integer, +float32)).
+%% Funktion that return data to Prolog
+foreign(function, c, function([-integer])).
+%% Funktion that returns a array 
+foreign(function, c, function(-integer, [-pointer(float_array)])).
+%% Funktion that takes a Matrix and a Array
+foreign(function, c, function(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, [-integer])).
+
+%% Defines what functions should be connected from main.cpp
+foreign_resource(lars, [
+              initModelNoDataNoGram, 
+              initModelNoDataWithGram,
+              initModelWithDataNoGram,
+              initModelWithDataWithGram,
+              activeSet, 
+              beta,
+              betaPath,
+              computeError,
+              lambdaPath,
+              matUtriCholFactor,
+              predict,
+              train,
+              trainNoBetaReturn]).
+
+:- load_foreign_resource(lars).
\ No newline at end of file
diff --git a/src/methods/lars/new_method.cpp b/src/methods/lars/new_method.cpp
deleted file mode 100644
index dba044b94fdbb2bdc397bc75fab7a829824fd6a5..0000000000000000000000000000000000000000
--- a/src/methods/lars/new_method.cpp
+++ /dev/null
@@ -1,196 +0,0 @@
-#include <sicstus/sicstus.h>
-/* ex_glue.h is generated by splfr from the foreign/[2,3] facts.
-   Always include the glue header in your foreign resource code.
-*/
-#include "new_method_glue.h"
-#include <mlpack/methods/new_method.hpp>
-#include <mlpack/core.hpp>
-
-// including helper functions for converting between arma structures and arrays
-#include "../../helper_files/helper.hpp"
-
-using namespace arma;
-using namespace mlpack;
-using namespace std;
-using namespace mlpack::regression;
-
-// Global Variable of the BayesianLinearRegression object so it can be accessed from all functions
-BayesianLinearRegression regressor;
-
-
-// input:	const bool , const bool , const size_t , const double
-// output: double
-void initModel(SP_integer centerData, SP_integer scaleData, SP_integer nIterMax, double tol)
-{
-	regressor = new BayesianLinearRegression((centerData == 1), (scaleData == 1), nIterMax, tol);
-}
-
-// input:
-// output: double
-SP_integer alpha()
-{
-	return regressor.Alpha();
-}
-
-// input:
-// output: double
-SP_integer beta()
-{
-	return regressor.Beta();
-}
-
-// input:
-// output: const arma::colvec &
-float * dataOffset(SP_integer *arraySize)
-{
-	// save the DataOffset output in colvec
-	colvec armaDataOffset = regressor.DataOffset();
-
-	*arraySize = armaDataOffset.n_elem;
-
-	return convertArmaToArray(armaDataOffset);
-}
-
-// input:
-// output: const arma::colvec &
-float * dataScale(SP_integer *arraySize)
-{
-	// save the DataScale output in colvec
-	colvec armaDataScale = regressor.DataScale();
-
-	*arraySize = armaDataScale.n_elem;
-
-	return convertArmaToArray(armaDataScale);
-}
-
-// input:
-// output: const arma::colvec &
-float * omega(SP_integer *arraySize)
-{
-	// save the Omega output in colvec
-	colvec armaOmega = regressor.Omega();
-
-	*arraySize = armaOmega.n_elem;
-
-	return convertArmaToArray(armaOmega);
-}
-
-// input: const arma::mat &points, arma::rowvec &predictions
-// output:
-void predict(float *pointsArr, SP_integer pointsSize, SP_integer pointsRowNum, float **predicArr, SP_integer *predicSize)
-{
-	// convert the Prolog arrays to std::vec for easy conversion to arma::mat
-	mat data = convertArrayToMat(pointsArr, pointsSize, pointsRowNum);
-
-	// run the prediction and save the result in arma::rowvec
-	rowvec predictions;
-	regressor.Predict(data, predictions);
-
-
-	// give back the sizes and the converted results as arrays
-	*predicSize = predictions.n_elem;
-
-	*predicArr = convertArmaToArray(predictions);
-}
-
-// input: const arma::mat &points, arma::rowvec &predictions, arma::rowvec &std
-// output:
-void predictWithStd(float *pointsArr, SP_integer pointsSize, SP_integer pointsRowNum, float **predicArr, SP_integer *predicSize, float **stdArr, SP_integer *stdSize)
-{
-	// convert the Prolog arrays to std::vec for easy conversion to arma::mat
-	mat data = convertArrayToMat(pointsArr, pointsSize, pointsRowNum);
-
-	// run the prediction and save the results in arma::rowvecs
-	rowvec predictions;
-	rowvec std;
-	regressor.Predict(data, predictions, std);
-
-	// give back the sizes and the converted results as arrays
-	*predicSize = predictions.n_elem;
-	*stdSize = std.n_elem;
-
-	*predicArr = convertArmaToArray(predictions);
-	*stdArr = convertArmaToArray(std);
-}
-
-
-// input:
-// output: double
-SP_integer responsesOffset()
-{
-	return regressor.ResponsesOffset();
-}
-
-// input: const arma::mat &data, const arma::rowvec &responses
-// output: double
-SP_integer rmse(float *matrix, SP_integer matSize, SP_integer matRowNum, float *arr, SP_integer vecSize)
-{
-	// convert the Prolog arrays to arma::rowvec and arma::mat
-	rowvec responses = convertArrayToRowvec(arr, vecSize);
-	mat data = convertArrayToMat(matrix, matSize, matRowNum);
-
-	// run the model function and return the error
-	return regressor.RMSE(data, responses);
-}
-
-// input: const arma::mat &data, const arma::rowvec &responses
-// output:
-void train(float *matrix, SP_integer matSize, SP_integer matRowNum, float *arr, SP_integer vecSize)
-{
-	if(matSize / matRowNum != vecSize)
-	{
-		cout << "Target dim doesnt fit to the Data dim" << endl;
-		return;
-	}
-	// convert the Prolog arrays to arma::rowvec and arma::mat
-	rowvec responses = convertArrayToRowvec(arr, vecSize);
-	mat data = convertArrayToMat(matrix, matSize, matRowNum);
-
-	// run the model function
-	regressor.Train(data, responses);
-}
-
-// input:
-// output: double
-SP_integer variance()
-{
-	return regressor.Variance();
-}
-
-/*
-void testing()
-{
-	// load the iris data
-	mat dataset;
-	bool loaded = mlpack::data::Load("iris.csv", dataset);
-
-	// split the data into train and test
-	mat trainData = dataset.cols(1, 4);
-	trainData.shed_row(trainData.n_rows - 1);
-	rowvec trainTarget = trainData.row(trainData.n_rows - 1);
-	trainData.shed_row(trainData.n_rows - 1);
-
-	mat testData = dataset.col(dataset.n_cols - 1);
-	testData.shed_row(testData.n_rows - 1);
-	rowvec testTarget = testData.row(testData.n_rows - 1);
-	testData.shed_row(testData.n_rows - 1);
-
-
-	// init the bayesian linear regressor model
-
-
-	// train the model
-	regressor.Train(trainData, trainTarget);
-
-	// predict with the test data
-	rowvec prediction;
-	regressor.Predict(testData, prediction);
-
-
-	// compare test target and prediction
-	cout << "Train Data: " << trainData << endl;
-	cout << "Train Target: " << trainTarget << endl;
-	cout << "Alpha" << alpha() << endl;
-	cout << "Beta" << beta() << endl;
-}
-*/
diff --git a/src/methods/lars/new_method.pl b/src/methods/lars/new_method.pl
deleted file mode 100644
index 2ba4630ba07bc285076c0bce10f0231484ea8cd3..0000000000000000000000000000000000000000
--- a/src/methods/lars/new_method.pl
+++ /dev/null
@@ -1,29 +0,0 @@
-:- module(new_method, [function/4, function/1, function/2, function/6]).
-
-:- load_files(library(str_decl),
-              [when(compile_time), if(changed)]).
-
-%% needed for using the array type and for reading from csv
-:- use_module(library(structs)).
-:- use_module('../../helper_files/helper.pl').
-
-%% type definitions for the float array
-:- foreign_type
-       float32          = float_32,
-       float_array      = array(float32).
-
-%% definitions for the connected function and what there inputs and output arguments are
-
-%% Funktion that takes data from Prolog
-foreign(function, c, function(+integer, +integer, +integer, +float32)).
-%% Funktion that return data to Prolog
-foreign(function, c, function([-integer])).
-%% Funktion that returns a array 
-foreign(function, c, function(-integer, [-pointer(float_array)])).
-%% Funktion that takes a Matrix and a Array
-foreign(function, c, function(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, [-integer])).
-
-%% Defines what functions should be connected from main.cpp
-foreign_resource(new_method, [function, function, function, function]).
-
-:- load_foreign_resource(new_method).
\ No newline at end of file
diff --git a/src/methods/linear_regression/linear_regression.cpp b/src/methods/linear_regression/linear_regression.cpp
index 7dd7bbd2b2f6d9a2e4b7787baff6af1df5ee36a4..47b9ea2d533148c669e2e29a8872b21f0c9f8815 100644
--- a/src/methods/linear_regression/linear_regression.cpp
+++ b/src/methods/linear_regression/linear_regression.cpp
@@ -112,7 +112,7 @@ float * parameters(SP_integer *arraySize)
 	*arraySize = armaDataOffset.n_elem;
 
 	// convert b vector to array and return 
-	return convertArmaToArray(armaDataOffset);
+	return convertToArray(armaDataOffset);
 }
 
 // input: arma::vec & new b vector
@@ -144,7 +144,7 @@ void predict(float *pointsArr, SP_integer pointsSize, SP_integer pointsRowNum, f
 	// give back the sizes and the converted results as arrays
 	*predicSize = predictions.n_elem;
 
-	*predicArr = convertArmaToArray(predictions);
+	*predicArr = convertToArray(predictions);
 }
 
 // input: const arma::mat &data, const arma::rowvec &responses, const bool intercept
diff --git a/src/methods/new_method/new_method.cpp b/src/methods/new_method/new_method.cpp
index dba044b94fdbb2bdc397bc75fab7a829824fd6a5..7224c8805d9dc598920a36aecbf0fced66b3c00c 100644
--- a/src/methods/new_method/new_method.cpp
+++ b/src/methods/new_method/new_method.cpp
@@ -48,7 +48,7 @@ float * dataOffset(SP_integer *arraySize)
 
 	*arraySize = armaDataOffset.n_elem;
 
-	return convertArmaToArray(armaDataOffset);
+	return convertToArray(armaDataOffset);
 }
 
 // input:
@@ -60,7 +60,7 @@ float * dataScale(SP_integer *arraySize)
 
 	*arraySize = armaDataScale.n_elem;
 
-	return convertArmaToArray(armaDataScale);
+	return convertToArray(armaDataScale);
 }
 
 // input:
@@ -72,7 +72,7 @@ float * omega(SP_integer *arraySize)
 
 	*arraySize = armaOmega.n_elem;
 
-	return convertArmaToArray(armaOmega);
+	return convertToArray(armaOmega);
 }
 
 // input: const arma::mat &points, arma::rowvec &predictions
@@ -90,7 +90,7 @@ void predict(float *pointsArr, SP_integer pointsSize, SP_integer pointsRowNum, f
 	// give back the sizes and the converted results as arrays
 	*predicSize = predictions.n_elem;
 
-	*predicArr = convertArmaToArray(predictions);
+	*predicArr = convertToArray(predictions);
 }
 
 // input: const arma::mat &points, arma::rowvec &predictions, arma::rowvec &std
@@ -109,8 +109,8 @@ void predictWithStd(float *pointsArr, SP_integer pointsSize, SP_integer pointsRo
 	*predicSize = predictions.n_elem;
 	*stdSize = std.n_elem;
 
-	*predicArr = convertArmaToArray(predictions);
-	*stdArr = convertArmaToArray(std);
+	*predicArr = convertToArray(predictions);
+	*stdArr = convertToArray(std);
 }
 
 
diff --git a/src/methods/new_method/new_method.pl b/src/methods/new_method/new_method.pl
index 2ba4630ba07bc285076c0bce10f0231484ea8cd3..35488cbd497d7899b1f34af8f0aeb7af0154a88f 100644
--- a/src/methods/new_method/new_method.pl
+++ b/src/methods/new_method/new_method.pl
@@ -15,13 +15,24 @@
 %% definitions for the connected function and what there inputs and output arguments are
 
 %% Funktion that takes data from Prolog
-foreign(function, c, function(+integer, +integer, +integer, +float32)).
-%% Funktion that return data to Prolog
-foreign(function, c, function([-integer])).
-%% Funktion that returns a array 
-foreign(function, c, function(-integer, [-pointer(float_array)])).
-%% Funktion that takes a Matrix and a Array
-foreign(function, c, function(+pointer(float_array), +integer, +integer, +pointer(float_array), +integer, [-integer])).
+%% input 
+%% output 
+foreign(function, c, function(arguments)).
+
+%% +integer , +float32
+%% [-integer] , [-float32]
+
+%% matrix input
+%% +pointer(float_array), +integer, +integer
+
+%% array input
+%% +pointer(float_array), +integer
+
+%% matrix return
+%% -pointer(float_array), -integer, -integer
+
+%% array return
+%% -pointer(float_array), -integer
 
 %% Defines what functions should be connected from main.cpp
 foreign_resource(new_method, [function, function, function, function]).