diff --git a/alib2aux/src/stats/SizeStat.cpp b/alib2aux/src/stats/SizeStat.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..64272f3ad1cdc71b106b42639c5a551832091893
--- /dev/null
+++ b/alib2aux/src/stats/SizeStat.cpp
@@ -0,0 +1,19 @@
+/*
+ * SetSizeStat.cpp
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#include "SizeStat.h"
+
+#include <container/ObjectsSet.h>
+
+#include <registration/AlgoRegistration.hpp>
+
+namespace {
+
+auto SizeStatObjectsSet = registration::AbstractRegister < stats::SizeStat, unsigned, const container::ObjectsSet < > & > ( stats::SizeStat::stat );
+auto SizeStatSetUnsigned = registration::AbstractRegister < stats::SizeStat, unsigned, const std::set < unsigned > & > ( stats::SizeStat::stat );
+
+}
diff --git a/alib2aux/src/stats/SizeStat.h b/alib2aux/src/stats/SizeStat.h
new file mode 100644
index 0000000000000000000000000000000000000000..a914674c67115b3cb6b79680277d4ebcfca2079b
--- /dev/null
+++ b/alib2aux/src/stats/SizeStat.h
@@ -0,0 +1,26 @@
+/*
+ * SizeStat.h
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#ifndef _SIZE_STAT_H_
+#define _SIZE_STAT_H_
+
+namespace stats {
+
+class SizeStat {
+public:
+	template < class T >
+	static unsigned stat ( const T & object );
+};
+
+template < class T >
+unsigned SizeStat::stat ( const T & object ) {
+	return object.size ( );
+}
+
+}
+
+#endif /* _SIZE_STAT_H_ */
diff --git a/alib2common/src/abstraction/PrimitiveRegistrator.cpp b/alib2common/src/abstraction/PrimitiveRegistrator.cpp
index 04809c22b60f5a642bd6102179eff3007a092d55..85238acd0d9df2593d012f90d4c6ca1f99aeedda 100644
--- a/alib2common/src/abstraction/PrimitiveRegistrator.cpp
+++ b/alib2common/src/abstraction/PrimitiveRegistrator.cpp
@@ -43,6 +43,7 @@ public:
 		abstraction::ContainerRegistry::registerSet < int > ( );
 
 		abstraction::ValuePrinterRegistry::registerValuePrinter < int > ( );
+		abstraction::ValuePrinterRegistry::registerValuePrinter < unsigned > ( );
 		abstraction::ValuePrinterRegistry::registerValuePrinter < double > ( );
 		abstraction::ValuePrinterRegistry::registerValuePrinter < std::string > ( );
 		abstraction::ValuePrinterRegistry::registerValuePrinter < void > ( );
diff --git a/astat2/makefile.conf b/astat2/makefile.conf
index d811d00b11d043f3f3adf1afa0426d7b09fed466..b42e68f476ae5de66ce0af3091400277f9b83392 100644
--- a/astat2/makefile.conf
+++ b/astat2/makefile.conf
@@ -1,4 +1,4 @@
 EXECUTABLE:=astat2
-LINK_PATHS=../alib2cli/ ../alib2elgo/ ../alib2algo/ ../alib2str/ ../alib2data/ ../alib2xml/ ../alib2measure/ ../alib2common/  ../alib2std/
-LINK_LIBRARIES=alib2cli alib2elgo alib2algo alib2str alib2data alib2xml alib2measure alib2common  alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2elgo/src/ \$$(SOURCES_BASE_DIR)/../../alib2algo/src/ \$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/  \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+LINK_PATHS=../alib2cli/ ../alib2str/ ../alib2aux/ ../alib2data/ ../alib2xml/ ../alib2measure/ ../alib2common/  ../alib2std/
+LINK_LIBRARIES=alib2cli alib2str alib2aux alib2data alib2xml alib2measure alib2common  alib2std xml2
+INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2cli/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/  \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
diff --git a/astat2/src/SizeStat.cpp b/astat2/src/SizeStat.cpp
deleted file mode 100644
index 1c8166680d906f9a7270fe4cb95a5d9997a531d1..0000000000000000000000000000000000000000
--- a/astat2/src/SizeStat.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * SizeStat.cpp
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#include "SizeStat.h"
-#include <registration/AlgoRegistration.hpp>
-
-void SizeStat::stat ( const container::Container & container ) {
-	dispatch ( container.getData ( ) );
-}
-
-void SizeStat::stat ( const container::ObjectsSet < > & set ) {
-	std::cout << set.size ( ) << std::endl;
-}
-
-auto SizeStatObjectsSet = registration::OverloadRegister < SizeStat, void, container::ObjectsSet < > > ( SizeStat::stat );
diff --git a/astat2/src/SizeStat.h b/astat2/src/SizeStat.h
deleted file mode 100644
index ef3a0cd4fe1b306d5e294bfcb045e4a4d70361b1..0000000000000000000000000000000000000000
--- a/astat2/src/SizeStat.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * SizeStat.h
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#ifndef SIZE_STAT_H_
-#define SIZE_STAT_H_
-
-#include <core/multipleDispatch.hpp>
-
-#include "container/Container.h"
-#include "container/ObjectsSet.h"
-
-class SizeStat : public alib::SingleDispatch < SizeStat, void, const container::ContainerBase & > {
-public:
-	static void stat ( const container::Container & container );
-	static void stat ( const container::ObjectsSet < > & set );
-};
-
-#endif /* SIZE_STAT_H_ */
diff --git a/astat2/src/astat.cpp b/astat2/src/astat.cpp
index cbd8839df39a5da99cf35bdc688778e70b35149d..d39dc73aa3e0922ba15d70b6f3a9b101b4a19c80 100644
--- a/astat2/src/astat.cpp
+++ b/astat2/src/astat.cpp
@@ -8,19 +8,12 @@
 #include <tclap/CmdLine.h>
 #include <global/GlobalData.h>
 #include <measure>
-#include <vector>
-#include <sax/FromXMLParserHelper.h>
 
-#include <factory/XmlDataFactory.hpp>
 #include <exception/CommonException.h>
+#include <lexer/Lexer.h>
+#include <parser/Parser.h>
 
-#include "SizeStat.h"
-
-template < class T >
-void printStat ( const T & data, TCLAP::ValueArg < std::string > & presentation ) {
-	if ( presentation.getValue ( ) == "size" )
-		SizeStat::stat ( data );
-}
+#include <factory/XmlDataFactory.hpp>
 
 int main ( int argc, char * argv[] ) {
 	try {
@@ -32,7 +25,7 @@ int main ( int argc, char * argv[] ) {
 		// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 		std::vector < std::string > allowedPrintingOptions {
-			"size", "unique_size"
+			"size"
 		};
 		TCLAP::ValuesConstraint < std::string > allowedPrintingOptionsVals ( allowedPrintingOptions );
 
@@ -41,8 +34,8 @@ int main ( int argc, char * argv[] ) {
 
 		// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-		TCLAP::ValueArg < std::string > file ( "i", "input", "Read from file", false, "-", "file" );
-		cmd.add ( file );
+		TCLAP::ValueArg < std::string > input ( "i", "input", "Read from file", false, "-", "file" );
+		cmd.add ( input );
 
 		TCLAP::SwitchArg measure ( "m", "measure", "Measure times", false );
 		cmd.add ( measure );
@@ -58,24 +51,32 @@ int main ( int argc, char * argv[] ) {
 		if ( measure.isSet ( ) )
 			common::GlobalData::measure = true;
 
+		cli::Environment environment;
+		environment.setBinding ( "stdin", input.getValue ( ) );
+		environment.setBinding ( "stdout", "-" );
+
 		measurements::start ( "Overal", measurements::Type::OVERALL );
 		measurements::start ( "Input read", measurements::Type::AUXILIARY );
 
-		ext::deque < sax::Token > tokens = sax::FromXMLParserHelper::parseInput ( file );
+		cli::Parser parser ( cli::Lexer ( "execute <#stdin > $input" ) );
+		parser.parse ( )->run ( environment );
 
-		if ( alib::XmlDataFactory::first < container::Container > ( tokens ) ) {
-			container::Container data = alib::XmlDataFactory::fromTokens ( std::move ( tokens ) );
-
-			measurements::end ( );
-			measurements::start ( "Stats print", measurements::Type::MAIN );
+		measurements::end ( );
+		measurements::start ( "Algorithm", measurements::Type::MAIN );
 
-			printStat ( data, presentation );
-		} else {
-			throw exception::CommonException ( "Input not recognized." );
+		if ( presentation.getValue ( ) == "size" ) {
+			parser = cli::Parser ( cli::Lexer ( "execute stats::SizeStat $input > $output" ) );
+			parser.parse ( )->run ( environment );
 		}
 
 		measurements::end ( );
-		measurements::end ( );
+		measurements::start ( "Output write", measurements::Type::AUXILIARY );
+
+		parser = cli::Parser ( cli::Lexer ( "execute $output" ) );
+		parser.parse ( )->run ( environment );
+
+		measurements::end();
+		measurements::end();
 
 		if ( measure.getValue ( ) ) common::Streams::measure << measurements::results ( ) << std::endl;