diff --git a/alib2algo/src/measurements/MeasurementResults.cpp b/alib2algo/src/measurements/MeasurementResults.cpp
index 01ea0d03e5c8fe2710506ec94b5cc5705abc261f..dfd9d5a50dff5716e7ce9cd10884f1fd9f9d8925 100644
--- a/alib2algo/src/measurements/MeasurementResults.cpp
+++ b/alib2algo/src/measurements/MeasurementResults.cpp
@@ -104,9 +104,24 @@ void MeasurementResults::print_as_tree ( std::ostream & os, unsigned idx, std::s
 	}
 }
 
+const int MeasurementXalloc::FORMAT = std::ios::xalloc ( );
+
 std::ostream & operator <<( std::ostream & os, const MeasurementResults & mr ) {
+	MeasurementFormat mf = static_cast < MeasurementFormat > ( os.iword ( MeasurementXalloc::FORMAT ) );
+
+	switch ( mf ) {
+	case MeasurementFormat::LIST:
+		mr.print_as_list ( os );
+		break;
 
-	mr.print_as_tree ( os );
+	case MeasurementFormat::TREE:
+		mr.print_as_tree ( os );
+		break;
+
+	case MeasurementFormat::XML:
+		sax::SaxComposeInterface::printStream ( os, mr.xml_tokens ( ) );
+		break;
+	}
 
 	return os;
 }
diff --git a/alib2algo/src/measurements/MeasurementResults.hpp b/alib2algo/src/measurements/MeasurementResults.hpp
index 4a7dd5f4509402e9b929e92017264591ad8de909..56b665342613b017e9f15ce331f277793761f9a0 100644
--- a/alib2algo/src/measurements/MeasurementResults.hpp
+++ b/alib2algo/src/measurements/MeasurementResults.hpp
@@ -12,6 +12,14 @@
 
 namespace measurements {
 
+enum class MeasurementFormat {
+	LIST = 1, TREE = 2,	XML = 4
+};
+
+struct MeasurementXalloc {
+	static const int FORMAT;
+};
+
 struct MeasurementResults {
 	measurements::stealth_vector < MeasurementFrame > frames;
 
@@ -28,6 +36,13 @@ private:
 };
 
 std::ostream & operator <<( std::ostream &, const MeasurementResults & );
+
+template < typename _CharT, typename _Traits >
+inline std::basic_ostream < _CharT, _Traits > & operator <<( std::basic_ostream < _CharT, _Traits > & x, MeasurementFormat f ) {
+	x.iword ( MeasurementXalloc::FORMAT ) = static_cast < int > ( f );
+	return x;
+}
+
 }
 
 #endif /* MEASUREMENT_RESULTS_HPP_ */
diff --git a/alib2algo/test-src/measurements/MeasurementsTest.cpp b/alib2algo/test-src/measurements/MeasurementsTest.cpp
index 9bc30fc45ea4951ca9eb5090c3117e7d52d3cc55..59f8ca838349e138d166a194727d9d71ab375de4 100644
--- a/alib2algo/test-src/measurements/MeasurementsTest.cpp
+++ b/alib2algo/test-src/measurements/MeasurementsTest.cpp
@@ -58,9 +58,9 @@ void MeasurementsTest::testTimeMeasurements ( ) {
 	measurements::end ( );
 	measurements::end ( );
 
-	std::cout << measurements::results ( ) << std::endl;
-
-	sax::SaxComposeInterface::printStdout ( measurements::results ( ).xml_tokens ( ) );
+	std::cout << measurements::MeasurementFormat::LIST << measurements::results ( ) << std::endl;
+	std::cout << measurements::MeasurementFormat::TREE << measurements::results ( ) << std::endl;
+	std::cout << measurements::MeasurementFormat::XML << measurements::results ( ) << std::endl;
 }
 
 void MeasurementsTest::testMemoryMeasurements ( ) {
@@ -80,7 +80,7 @@ void MeasurementsTest::testMemoryMeasurements ( ) {
 	delete[] bar;
 	measurements::end ( );
 
-	std::cout << measurements::results ( ) << std::endl;
-
-	sax::SaxComposeInterface::printStdout ( measurements::results ( ).xml_tokens ( ) );
+	std::cout << measurements::MeasurementFormat::LIST << measurements::results ( ) << std::endl;
+	std::cout << measurements::MeasurementFormat::TREE << measurements::results ( ) << std::endl;
+	std::cout << measurements::MeasurementFormat::XML << measurements::results ( ) << std::endl;
 }