diff --git a/ameasure2/makefile.conf b/ameasure2/makefile.conf
index fac0c87316125822255e9ffb542b3d6391cfcc67..572f34f10b472c3485c1ab0431c9166f30ab69b9 100644
--- a/ameasure2/makefile.conf
+++ b/ameasure2/makefile.conf
@@ -1,4 +1,4 @@
 EXECUTABLE:=ameasure2
-LINK_PATHS=../alib2data/ ../alib2std/
-LINK_LIBRARIES=alib2data alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+LINK_PATHS=../alib2measure/ ../alib2data/ ../alib2std/
+LINK_LIBRARIES=alib2measure alib2data alib2std xml2
+INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
diff --git a/ameasure2/src/ameasure.cpp b/ameasure2/src/ameasure.cpp
index 3bae884909cd12b021ddc21929b979c03b208f0a..20c2fa0e8d1942e92c9e5f6b7e4beadd39be27a0 100644
--- a/ameasure2/src/ameasure.cpp
+++ b/ameasure2/src/ameasure.cpp
@@ -24,7 +24,7 @@ int main ( int argc, char * * argv ) {
 		else
 			sax::SaxParseInterface::parseFile ( input.getValue ( ), tokens );
 
-		auto configuration = provisioner::MeasurementProvisionerXmlFactory::configurationFromTokens ( tokens );
+		auto configuration = provisioner::MeasurementProvisionerXmlFactory::parseMeasurementProvisionerConfiguration ( tokens );
 		provisioner::MeasurementProvisioner::runConfiguration ( configuration );
 
 		// auto results =
diff --git a/ameasure2/src/provisioner/MeasurementProvisioner.cpp b/ameasure2/src/provisioner/MeasurementProvisioner.cpp
index 2c3f6c8bb4e8b703d5093158d3d24925ca19bd0d..8ad5fbbc4391bf0051edf0f04dff9e15447473a1 100644
--- a/ameasure2/src/provisioner/MeasurementProvisioner.cpp
+++ b/ameasure2/src/provisioner/MeasurementProvisioner.cpp
@@ -59,21 +59,30 @@ void MeasurementProvisioner::runProvision ( const MeasurementProvision & mp, Mea
 		expandedInputDataFiles.splice ( expandedInputDataFiles.end ( ), shellExpand ( inputDataFile ) );
 
 	for ( const std::string & expandedInputDataFile : expandedInputDataFiles )
-		runPipeline ( expandedInputDataFile, mp.pipeCommands );
+		for ( const std::vector < std::string > & pipeline : mp.pipelines ) {
+
+			PipelineResults pipelineResults = runPipeline ( expandedInputDataFile, pipeline );
+
+			std::cout << "Pipeline on " << expandedInputDataFile << ":" << std::endl;
+
+			for ( auto & measurementResult : pipelineResults.measurementResults )
+				std::cout << measurements::MeasurementFormat::TREE << measurementResult << std::endl;
+		}
+
 }
 
-void MeasurementProvisioner::runPipeline ( const std::string & inputDataFile, const std::vector < std::string > & pipelineCommands ) {
+PipelineResults MeasurementProvisioner::runPipeline ( const std::string & inputDataFile, const std::vector < std::string > & pipeline ) {
 
-	std::vector < std::string > pipeline;
+	PipelineResults pipelineResults;
 
-	std::vector < std::deque < sax::Token > > measurementsOutputTokens;
+	std::vector < std::string > processedPipeline;
 
-	std::vector < std::string >::const_iterator iter = pipelineCommands.cbegin ( );
+	std::vector < std::string >::const_iterator iter = pipeline.cbegin ( );
 
-	pipeline.emplace_back ( * ( iter++ ) + " -m -i " + inputDataFile );
+	processedPipeline.emplace_back ( * ( iter++ ) + " -m -i " + inputDataFile );
 
-	for ( ; iter != pipelineCommands.cend ( ); ++iter )
-		pipeline.emplace_back ( * iter + " -m" );
+	for ( ; iter != pipeline.cend ( ); ++iter )
+		processedPipeline.emplace_back ( * iter + " -m" );
 
 	int measurementsTmpfileFd = open ( "/tmp", O_RDWR | O_TMPFILE, S_IRUSR | S_IWUSR );
 
@@ -104,8 +113,8 @@ void MeasurementProvisioner::runPipeline ( const std::string & inputDataFile, co
 	close ( 1 );
 	close ( 2 );
 
-	for ( iter = pipeline.cbegin ( ); iter != pipeline.cend ( ); ++iter ) {
-		if ( iter == pipeline.cbegin ( ) ) {
+	for ( iter = processedPipeline.cbegin ( ); iter != processedPipeline.cend ( ); ++iter ) {
+		if ( iter == processedPipeline.cbegin ( ) ) {
 			dup ( inputTmpfileFd );
 			dup ( outputTmpfileFd );
 		} else {
@@ -135,7 +144,7 @@ void MeasurementProvisioner::runPipeline ( const std::string & inputDataFile, co
 
 		std::deque < sax::Token > tokens;
 		sax::SaxParseInterface::parseStream ( ifd, tokens );
-		measurementsOutputTokens.emplace_back ( std::move ( tokens ) );
+		pipelineResults.measurementResults.emplace_back ( measurements::MeasurementXmlFactory::parseMeasurementResults ( tokens ) );
 
 		 // destroy the contents and rewind for another commands measurements
 		ftruncate ( measurementsFd, 0 );
@@ -159,14 +168,7 @@ void MeasurementProvisioner::runPipeline ( const std::string & inputDataFile, co
 	dup ( curStdoutFd );
 	dup ( curStderrFd );
 
-	std::cout << measurementsOutputTokens.size ( ) << std::endl;
-
-	for ( auto & tokens : measurementsOutputTokens ) {
-		for ( auto & token : tokens )
-			std::cout << token << std::endl;
-
-		std::cout << std::endl;
-	}
+	return pipelineResults;
 }
 
 }
diff --git a/ameasure2/src/provisioner/MeasurementProvisioner.hpp b/ameasure2/src/provisioner/MeasurementProvisioner.hpp
index b4b3c3b12801070512951f364ec230c3a35d33b1..5574ce109d7c782be6ed5f1c7513ff00842a7478 100644
--- a/ameasure2/src/provisioner/MeasurementProvisioner.hpp
+++ b/ameasure2/src/provisioner/MeasurementProvisioner.hpp
@@ -16,7 +16,7 @@ class MeasurementProvisioner {
 	static std::list < std::string > shellExpand ( const std::string & );
 
 	static void runProvision ( const MeasurementProvision &, MeasurementProvisionerResults & );
-	static void runPipeline ( const std::string &, const std::vector < std::string > & );
+	static PipelineResults runPipeline ( const std::string &, const std::vector < std::string > & );
 
 public:
 	static MeasurementProvisionerResults runConfiguration ( const MeasurementProvisionerConfiguration & );
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerConfiguration.hpp b/ameasure2/src/provisioner/MeasurementProvisionerConfiguration.hpp
index c0cbae83cb54e18f07e4d2569511f48d0d7f7e0d..5e3847271212ae4c60a328b729a0eac8324d9a74 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerConfiguration.hpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerConfiguration.hpp
@@ -15,9 +15,9 @@ struct MeasurementConfiguration {
 };
 
 struct MeasurementProvision {
-	std::vector < std::string > inputDataFiles;
-	std::vector < std::string > pipeCommands;
-	MeasurementConfiguration	measurementConfiguration;
+	std::vector < std::string >					inputDataFiles;
+	std::vector < std::vector < std::string > > pipelines;
+	MeasurementConfiguration					measurementConfiguration;
 };
 
 struct MeasurementProvisionerConfiguration {
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerResults.hpp b/ameasure2/src/provisioner/MeasurementProvisionerResults.hpp
index ff9c79eacb4141785f4cf41fedf740e8593dec85..067a56096face2b56b422e3db2a2e2ed10176b59 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerResults.hpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerResults.hpp
@@ -5,8 +5,15 @@
 #ifndef MEASUREMENT_PROVISIONER_RESULTS_HPP_
 #define MEASUREMENT_PROVISIONER_RESULTS_HPP_
 
+#include <measure>
+
 namespace provisioner {
 
+struct PipelineResults {
+	std::vector < std::string >		   pipeline;
+	std::vector < measurements::MeasurementResults > measurementResults;
+};
+
 struct MeasurementProvisionerResults {
 };
 
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerXmlFactory.cpp b/ameasure2/src/provisioner/MeasurementProvisionerXmlFactory.cpp
index 366d33053a3630581ad94d9b419f8ea535954953..35feb37b031d03eae6bad42f143063b7138c8390 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerXmlFactory.cpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerXmlFactory.cpp
@@ -11,7 +11,7 @@ using namespace sax;
 
 namespace provisioner {
 
-MeasurementProvisionerConfiguration MeasurementProvisionerXmlFactory::configurationFromTokens ( deque < Token > & tokens ) {
+MeasurementProvisionerConfiguration MeasurementProvisionerXmlFactory::parseMeasurementProvisionerConfiguration ( deque < Token > & tokens ) {
 	MeasurementProvisionerConfiguration configuration;
 
 	deque < Token >::iterator iter = tokens.begin ( );
@@ -76,8 +76,8 @@ void MeasurementProvisionerXmlFactory::parseMeasurementProvision ( MeasurementPr
 
 		if ( data == INPUT_DATA_FILES_TAG )
 			parseInputDataFiles ( mp, iter );
-		else if ( data == PIPE_COMMANDS_TAG )
-			parsePipeCommands ( mp, iter );
+		else if ( data == PIPELINES_TAG )
+			parsePipelines ( mp, iter );
 		else if ( data == MEASUREMENT_CONFIGURATION_TAG )
 			parseMeasurementConfiguration ( mp, iter );
 		else
@@ -109,24 +109,43 @@ void MeasurementProvisionerXmlFactory::parseInputDataFiles ( MeasurementProvisio
 	FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, INPUT_DATA_FILES_TAG );
 }
 
-void MeasurementProvisionerXmlFactory::parsePipeCommands ( MeasurementProvision & mp, std::deque < sax::Token >::iterator & iter ) {
-	FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, PIPE_COMMANDS_TAG );
+void MeasurementProvisionerXmlFactory::parsePipelines ( MeasurementProvision & mp, std::deque < sax::Token >::iterator & iter ) {
+	FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, PIPELINES_TAG );
 
 	for ( ; ; ) {
 		if ( !FromXMLParserHelper::isTokenType ( iter, Token::TokenType::START_ELEMENT ) ) break;
 
 		string data = FromXMLParserHelper::getTokenData ( iter, Token::TokenType::START_ELEMENT );
 
-		if ( data == PIPE_COMMAND_TAG ) {
-			FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, PIPE_COMMAND_TAG );
-			mp.pipeCommands.emplace_back ( FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER ) );
-			FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, PIPE_COMMAND_TAG );
+		if ( data == PIPELINE_TAG ) {
+			mp.pipelines.push_back ( { } );
+			parsePipeline ( mp.pipelines.back ( ), iter );
 		} else {
 			break;
 		}
 	}
 
-	FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, PIPE_COMMANDS_TAG );
+	FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, PIPELINES_TAG );
+}
+
+void MeasurementProvisionerXmlFactory::parsePipeline ( std::vector < std::string > & pipeline, std::deque < sax::Token >::iterator & iter ) {
+	FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, PIPELINE_TAG );
+
+	for ( ; ; ) {
+		if ( !FromXMLParserHelper::isTokenType ( iter, Token::TokenType::START_ELEMENT ) ) break;
+
+		string data = FromXMLParserHelper::getTokenData ( iter, Token::TokenType::START_ELEMENT );
+
+		if ( data == COMMAND_TAG ) {
+			FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, COMMAND_TAG );
+			pipeline.emplace_back ( FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER ) );
+			FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, COMMAND_TAG );
+		} else {
+			break;
+		}
+	}
+
+	FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, PIPELINE_TAG );
 }
 
 void MeasurementProvisionerXmlFactory::parseMeasurementConfiguration ( MeasurementProvision &, std::deque < sax::Token >::iterator & iter ) {
@@ -148,8 +167,9 @@ string MeasurementProvisionerXmlFactory::MEASUREMENT_PROVISION_TAG	= "Measuremen
 string MeasurementProvisionerXmlFactory::INPUT_DATA_FILES_TAG = "InputDataFiles";
 string MeasurementProvisionerXmlFactory::INPUT_DATA_FILE_TAG  = "InputDataFile";
 
-string MeasurementProvisionerXmlFactory::PIPE_COMMANDS_TAG = "PipeCommands";
-string MeasurementProvisionerXmlFactory::PIPE_COMMAND_TAG  = "PipeCommand";
+string MeasurementProvisionerXmlFactory::PIPELINES_TAG = "Pipelines";
+string MeasurementProvisionerXmlFactory::PIPELINE_TAG  = "Pipeline";
+string MeasurementProvisionerXmlFactory::COMMAND_TAG = "Command";
 
 string MeasurementProvisionerXmlFactory::MEASUREMENT_CONFIGURATION_TAG = "MeasurementConfiguration";
 }
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerXmlFactory.hpp b/ameasure2/src/provisioner/MeasurementProvisionerXmlFactory.hpp
index 7f22a391521cb23aed9777455eb39a9d6defc2fb..ae7e0060619b5c79fe81cbbf90c11b78097383df 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerXmlFactory.hpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerXmlFactory.hpp
@@ -22,8 +22,9 @@ class MeasurementProvisionerXmlFactory {
 	static std::string INPUT_DATA_FILES_TAG;
 	static std::string INPUT_DATA_FILE_TAG;
 
-	static std::string PIPE_COMMANDS_TAG;
-	static std::string PIPE_COMMAND_TAG;
+	static std::string PIPELINES_TAG;
+	static std::string PIPELINE_TAG;
+	static std::string COMMAND_TAG;
 
 	static std::string MEASUREMENT_CONFIGURATION_TAG;
 
@@ -32,11 +33,12 @@ class MeasurementProvisionerXmlFactory {
 
 	static void parseMeasurementProvision ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & );
 	static void parseInputDataFiles ( MeasurementProvision &, std::deque < sax::Token >::iterator & );
-	static void parsePipeCommands ( MeasurementProvision &, std::deque < sax::Token >::iterator & );
+	static void parsePipelines ( MeasurementProvision &, std::deque < sax::Token >::iterator & );
+	static void parsePipeline ( std::vector < std::string > &, std::deque < sax::Token >::iterator & );
 	static void parseMeasurementConfiguration ( MeasurementProvision &, std::deque < sax::Token >::iterator & );
 
 public:
-	static MeasurementProvisionerConfiguration configurationFromTokens ( std::deque < sax::Token > & );
+	static MeasurementProvisionerConfiguration parseMeasurementProvisionerConfiguration ( std::deque < sax::Token > & );
 };
 
 }
diff --git a/examples2/measurements/ameasure.xml b/examples2/measurements/ameasure.xml
index 14c0e0a996d54b36ce3228b08667ca21449405e4..1e694196b884f952358a2860660dd5acef077160 100644
--- a/examples2/measurements/ameasure.xml
+++ b/examples2/measurements/ameasure.xml
@@ -4,12 +4,18 @@
 	<MeasurementProvisions>
 		<MeasurementProvision>
 			<InputDataFiles>
-				<InputDataFile>~/repositories/automata-library/examples2/automaton/NFSM1.xml</InputDataFile>
+				<InputDataFile>~/repositories/automata-library/examples2/automaton/NFSM[12].xml</InputDataFile>
 			</InputDataFiles>
-			<PipeCommands>
-				<PipeCommand>./adeterminize2</PipeCommand>
-				<PipeCommand>./aminimize2</PipeCommand>
-			</PipeCommands>
+			<Pipelines>
+				<Pipeline>
+					<Command>./adeterminize2</Command>
+					<Command>./aminimize2</Command>
+				</Pipeline>
+				<Pipeline>
+					<Command>./adeterminize2</Command>
+					<Command>./aminimize2</Command>
+				</Pipeline>
+			</Pipelines>
 			<MeasurementConfiguration>
 				<Engines>
 					<Engine>TIME</Engine>