diff --git a/ameasure2/src/provisioner/MeasurementProvisioner.cpp b/ameasure2/src/provisioner/MeasurementProvisioner.cpp
index c085b1895c7abe395a61c679394183c974e3c104..dae789db7664138336dd853a6e077f5c2f85c3f1 100644
--- a/ameasure2/src/provisioner/MeasurementProvisioner.cpp
+++ b/ameasure2/src/provisioner/MeasurementProvisioner.cpp
@@ -101,7 +101,7 @@ MPRPipelineResults MeasurementProvisioner::runPipeline ( const MPPipeline & pipe
 			lseek ( 1, SEEK_SET, 0 );
 		}
 
-		string command = mppcIter->substitute ( substitutionMap ) + " -m";
+		string command = mppcIter->substitute ( substitutionMap );
 
 		ofdlog << command << endl;
 
@@ -120,22 +120,24 @@ MPRPipelineResults MeasurementProvisioner::runPipeline ( const MPPipeline & pipe
 			break;
 		}
 
-		 // since we are at the end of file after the output, we need to rewind
-		lseek ( measurementsFd, SEEK_SET, 0 );
-		ifdstream ifd ( measurementsFd );
+		if ( mppcIter->getMeasure ( ) ) {
+			 // since we are at the end of file after the output, we need to rewind
+			lseek ( measurementsFd, SEEK_SET, 0 );
+			ifdstream ifd ( measurementsFd );
 
-		deque < sax::Token > tokens;
-		sax::SaxParseInterface::parseStream ( ifd, tokens );
+			deque < sax::Token > tokens;
+			sax::SaxParseInterface::parseStream ( ifd, tokens );
 
-		measurements::MeasurementResults measurementResults = measurements::MeasurementXmlFactory::parseMeasurementResults ( tokens );
+			measurements::MeasurementResults measurementResults = measurements::MeasurementXmlFactory::parseMeasurementResults ( tokens );
 
-		ofdlog << measurements::MeasurementFormat::TREE << measurementResults << endl;
+			ofdlog << measurements::MeasurementFormat::TREE << measurementResults << endl;
 
-		pipelineResults.commandResults.push_back ( { mppcIter->getRawCommand ( ), std::move ( measurementResults ) } );
+			pipelineResults.commandResults.push_back ( { mppcIter->getRawCommand ( ), std::move ( measurementResults ) } );
 
-		 // destroy the contents and rewind for another commands measurements
-		ftruncate ( measurementsFd, 0 );
-		lseek ( measurementsFd, SEEK_SET, 0 );
+			 // destroy the contents and rewind for another commands measurements
+			ftruncate ( measurementsFd, 0 );
+			lseek ( measurementsFd, SEEK_SET, 0 );
+		}
 	}
 
 	 // close tmp files, which results in their deletion
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerConfiguration.hpp b/ameasure2/src/provisioner/MeasurementProvisionerConfiguration.hpp
index fb524b75eb166c565ca217aef81f2a5e273bb65a..5d1dafece0c6f915a9b323dd1b1b7bd3abe2f941 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerConfiguration.hpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerConfiguration.hpp
@@ -27,7 +27,12 @@ struct MPCInputBatch {
 	bool						  forcedDependencyBatch;
 };
 
-using MPCPipeline = std::vector < std::string >;
+struct MPCPipelineCommand {
+	std::string command;
+	bool		measure;
+};
+
+using MPCPipeline = std::vector < MPCPipelineCommand >;
 
 struct MeasurementProvisionerConfiguration {
 	std::string binariesDirectory;
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerConfigurationXml.cpp b/ameasure2/src/provisioner/MeasurementProvisionerConfigurationXml.cpp
index 09eda48dbcfecb3b34c70b07c2f6b0eb33bb337e..2a55961df1d88c74a3b1852c413e59021a1bfa45 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerConfigurationXml.cpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerConfigurationXml.cpp
@@ -182,7 +182,7 @@ void MeasurementProvisionerConfigurationXml::parsePipelines ( MeasurementProvisi
 	FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, PIPELINES_TAG );
 }
 
-void MeasurementProvisionerConfigurationXml::parsePipeline ( std::vector < std::string > & pipeline, std::deque < sax::Token >::iterator & iter ) {
+void MeasurementProvisionerConfigurationXml::parsePipeline ( MPCPipeline & pipeline, std::deque < sax::Token >::iterator & iter ) {
 	FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, PIPELINE_TAG );
 
 	for ( ; ; ) {
@@ -190,18 +190,43 @@ void MeasurementProvisionerConfigurationXml::parsePipeline ( std::vector < std::
 
 		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 {
+		if ( data == COMMAND_TAG )
+			pipeline.push_back ( parsePipelineCommand ( iter ) );
+		else
 			break;
-		}
 	}
 
 	FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, PIPELINE_TAG );
 }
 
+MPCPipelineCommand MeasurementProvisionerConfigurationXml::parsePipelineCommand ( std::deque < sax::Token >::iterator & iter ) {
+
+	FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, COMMAND_TAG );
+
+	MPCPipelineCommand mpcpc;
+
+	mpcpc.measure = true;
+
+	if ( FromXMLParserHelper::isTokenType ( iter, Token::TokenType::START_ATTRIBUTE ) ) {
+		string attrName = FromXMLParserHelper::getTokenData ( iter, Token::TokenType::START_ATTRIBUTE );
+
+		if ( attrName == COMMAND_ATTR_MEASURE_NAME ) {
+			FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ATTRIBUTE, attrName );
+			string attrVal = FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER );
+
+			if ( attrVal == "false" )
+				mpcpc.measure = false;
+
+			FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ATTRIBUTE, attrName );
+		}
+	}
+
+	mpcpc.command = FromXMLParserHelper::popTokenData ( iter, Token::TokenType::CHARACTER );
+	FromXMLParserHelper::popToken ( iter, Token::TokenType::END_ELEMENT, COMMAND_TAG );
+
+	return mpcpc;
+}
+
 void MeasurementProvisionerConfigurationXml::parseMeasurementConfiguration ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & iter ) {
 	FromXMLParserHelper::popToken ( iter, Token::TokenType::START_ELEMENT, MEASUREMENT_CONFIGURATION_TAG );
 
@@ -228,8 +253,9 @@ string MeasurementProvisionerConfigurationXml::INPUT_DATA_ATTR_ID_NAME = "id";
 string MeasurementProvisionerConfigurationXml::INPUT_DATA_ATTR_COUNT_NAME = "count";
 
 string MeasurementProvisionerConfigurationXml::PIPELINES_TAG = "Pipelines";
-string MeasurementProvisionerConfigurationXml::PIPELINE_TAG  = "Pipeline";
+string MeasurementProvisionerConfigurationXml::PIPELINE_TAG	 = "Pipeline";
 string MeasurementProvisionerConfigurationXml::COMMAND_TAG = "Command";
+string MeasurementProvisionerConfigurationXml::COMMAND_ATTR_MEASURE_NAME = "measure";
 
 string MeasurementProvisionerConfigurationXml::MEASUREMENT_CONFIGURATION_TAG = "MeasurementConfiguration";
 }
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerConfigurationXml.hpp b/ameasure2/src/provisioner/MeasurementProvisionerConfigurationXml.hpp
index 8ca73655b6f880d61e238c31395049301dda0b28..eb594b8ac025e3d9d4ad2c56128669e5776d3219 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerConfigurationXml.hpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerConfigurationXml.hpp
@@ -32,6 +32,8 @@ class MeasurementProvisionerConfigurationXml {
 	static std::string PIPELINE_TAG;
 	static std::string COMMAND_TAG;
 
+	static std::string COMMAND_ATTR_MEASURE_NAME;
+
 	static std::string MEASUREMENT_CONFIGURATION_TAG;
 
 	static void parseMeasurementProvisioner ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & );
@@ -43,7 +45,8 @@ class MeasurementProvisionerConfigurationXml {
 	static MPCInputDatum parseInputDatum ( const std::string &, std::deque < sax::Token >::iterator & );
 
 	static void parsePipelines ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & );
-	static void parsePipeline ( std::vector < std::string > &, std::deque < sax::Token >::iterator & );
+	static void parsePipeline ( MPCPipeline &, std::deque < sax::Token >::iterator & );
+	static MPCPipelineCommand parsePipelineCommand ( std::deque < sax::Token >::iterator & );
 	static void parseMeasurementConfiguration ( MeasurementProvisionerConfiguration &, std::deque < sax::Token >::iterator & );
 
 public:
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerInputData.cpp b/ameasure2/src/provisioner/MeasurementProvisionerInputData.cpp
index 1d247d58e5356f9e6eaa49b7ec76b05df42435d3..d935eec9437cd8fcf6d8509ff7c99a1b4c00a428 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerInputData.cpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerInputData.cpp
@@ -103,13 +103,26 @@ bool MPSubstitution::containsSubstitution ( const string & str ) {
 
 /*---------------------------------------------------------------------------------------------------------------*/
 
-MPPipelineCommand::MPPipelineCommand ( std::string str ) : MPSubstitution ( str ), rawCommand ( std::move ( str ) ) {
+MPPipelineCommand::MPPipelineCommand ( std::string str, bool measure ) : MPSubstitution ( str ), rawCommand ( std::move ( str ) ), measure ( measure ) {
+}
+
+string MPPipelineCommand::substitute ( const MPSubstitutionMap & substitutionMap ) const {
+	string res = MPSubstitution::substitute ( substitutionMap );
+
+	if ( measure )
+		res += " -m";
+
+	return res;
 }
 
 const string & MPPipelineCommand::getRawCommand ( ) const {
 	return rawCommand;
 }
 
+bool MPPipelineCommand::getMeasure ( ) const {
+	return measure;
+}
+
 /*---------------------------------------------------------------------------------------------------------------*/
 
 MPInputData::MPInputData ( const MeasurementProvisionerConfiguration & mpc ) {
@@ -137,8 +150,8 @@ void MPInputData::processMPCInputData ( const MeasurementProvisionerConfiguratio
 	for ( const MPCPipeline & pipeline : mpc.pipelines ) {
 		MPPipeline mpp;
 
-		for ( const string & command : pipeline ) {
-			MPPipelineCommand mppc ( command );
+		for ( const MPCPipelineCommand & mpcpc : pipeline ) {
+			MPPipelineCommand mppc ( mpcpc.command, mpcpc.measure );
 
 			if ( this->requiredSubstitutionPattern.size ( ) == 0 )
 				this->requiredSubstitutionPattern = mppc.getSubstitutionPattern ( );
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerInputData.hpp b/ameasure2/src/provisioner/MeasurementProvisionerInputData.hpp
index 4c81d98649d5c0d6e7954464534c743a0ea53d28..538964034a204b487277b5d8f939fd1b831570f2 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerInputData.hpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerInputData.hpp
@@ -41,7 +41,7 @@ class MPSubstitution {
 
 public:
 	MPSubstitution ( const std::string & );
-	std::string substitute ( const MPSubstitutionMap & ) const;
+	virtual std::string substitute ( const MPSubstitutionMap & ) const;
 	const std::set < int > & getSubstitutionPattern ( ) const;
 
 private:
@@ -56,10 +56,13 @@ public:
 
 class MPPipelineCommand : public MPSubstitution {
 	std::string rawCommand;
+	bool measure;
 
 public:
-	MPPipelineCommand ( std::string );
+	MPPipelineCommand ( std::string, bool );
+	std::string substitute ( const MPSubstitutionMap & ) const;
 	const std::string & getRawCommand ( ) const;
+	bool getMeasure ( ) const;
 };
 
 using MPPipeline = std::list < MPPipelineCommand >;
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerResultsXml.cpp b/ameasure2/src/provisioner/MeasurementProvisionerResultsXml.cpp
index 85c6aee6addb0efe092baebf791ee43dbaf634c9..ac2be88969d24984ab33f2ff07ab18868f4a32e5 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerResultsXml.cpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerResultsXml.cpp
@@ -118,7 +118,7 @@ string MeasurementProvisionerResultsXml::PIPELINE_TAG  = "Pipeline";
 string MeasurementProvisionerResultsXml::PIPELINE_STATUS_TAG = "PipelineStatus";
 string MeasurementProvisionerResultsXml::EXIT_CODE_TAG = "ExitCode";
 string MeasurementProvisionerResultsXml::ERROR_ORIGIN_TAG = "ErrorOrigin";
-string MeasurementProvisionerResultsXml::ERROR_VALUE_TAG	= "ErrorValue";
+string MeasurementProvisionerResultsXml::ERROR_VALUE_TAG  = "ErrorValue";
 
 string MeasurementProvisionerResultsXml::COMMANDS_TAG = "Commands";
 string MeasurementProvisionerResultsXml::COMMAND_TAG  = "Command";
diff --git a/ameasure2/src/provisioner/MeasurementProvisionerUtils.cpp b/ameasure2/src/provisioner/MeasurementProvisionerUtils.cpp
index c8037d55bb804e3ff5e7f91823ced767d16da854..4792ae68ac35488d1e156f1f36e704aab2049089 100644
--- a/ameasure2/src/provisioner/MeasurementProvisionerUtils.cpp
+++ b/ameasure2/src/provisioner/MeasurementProvisionerUtils.cpp
@@ -38,7 +38,6 @@ std::string MPUtils::generateTmpfileFromCommand ( const std::string & command )
 	close ( 1 );
 	dup ( tempfd );
 
-
 	int status = system ( command.c_str ( ) );
 
 	close ( 1 );
diff --git a/examples2/measurements/ameasure.xml b/examples2/measurements/ameasure.xml
index 7dd2871420a71d9acb013a5da3f30a6275e20cd3..7e28dce01c21abf5e74d7f7ed6cf4d7888f90c8d 100644
--- a/examples2/measurements/ameasure.xml
+++ b/examples2/measurements/ameasure.xml
@@ -23,10 +23,10 @@
 		</InputData>
 		<Pipelines>
 			<Pipeline>
-				<Command>./astringology2 -a boyerMooreHorspool -s $1 -p $2</Command>
+				<Command >./astringology2 -a boyerMooreHorspool -s $1 -p $2</Command>
 			</Pipeline>
 			<Pipeline>
-				<Command>./astringology2 -a deadZoneUsingBadCharacterShift -s $1 -p $2</Command>
+				<Command >./astringology2 -a deadZoneUsingBadCharacterShift -s $1 -p $2</Command>
 			</Pipeline>
 		</Pipelines>
 		<MeasurementConfiguration>