diff --git a/aaccess2/makefile.conf b/aaccess2/makefile.conf
index 47187447951cf2c78e1ab54e446f14abd93bc0bf..7d042f3c2ba00a8882b4ac597070096d6f60b158 100644
--- a/aaccess2/makefile.conf
+++ b/aaccess2/makefile.conf
@@ -1,4 +1,4 @@
 EXECUTABLE:=aaccess2
-LINK_PATHS=../alib2aux/ ../alib2str/  ../alib2data/ ../alib2xml/ ../alib2measure/ ../alib2common/  ../alib2std/
-LINK_LIBRARIES=alib2aux alib2str alib2data alib2xml alib2measure alib2common  alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2aux/src/ \$$(SOURCES_BASE_DIR)/../../alib2str/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/ ../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)/../../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/aaccess2/src/aaccess.cpp b/aaccess2/src/aaccess.cpp
index fb0f415ab86d8a8c397f05ec469b12e32070f32b..39d7de7de43f4cb8be129fbffc66d06b717b3921 100644
--- a/aaccess2/src/aaccess.cpp
+++ b/aaccess2/src/aaccess.cpp
@@ -8,24 +8,24 @@
 #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 <access/AutomatonAccess.h>
-#include <access/GrammarAccess.h>
-#include <access/RegExpAccess.h>
-#include <access/StringAccess.h>
-#include <access/ExceptionAccess.h>
-#include <access/TreeAccess.h>
-#include <access/PairSetAccess.h>
+#include <factory/XmlDataFactory.hpp>
 
-#include <access/settings/OperationSettings.h>
+#include "access/AutomatonAccess.h"
+#include "access/GrammarAccess.h"
+#include "access/RegExpAccess.h"
+#include "access/StringAccess.h"
+#include "access/TreeAccess.h"
 
-#include <container/xml/ObjectsSet.h>
-#include <container/xml/ObjectsPair.h>
+#include "access/settings/AutomatonSettings.h"
+#include "access/settings/GrammarSettings.h"
+#include "access/settings/RegExpSettings.h"
+#include "access/settings/StringSettings.h"
+#include "access/settings/TreeSettings.h"
 
 int main ( int argc, char * argv[] ) {
 	try {
@@ -65,16 +65,6 @@ int main ( int argc, char * argv[] ) {
 
 		// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-		std::vector < std::string > exceptionSettings {
-			dataAccess::ExceptionSettings::stringsVector ( )
-		};
-
-		TCLAP::ValuesConstraint < std::string > exceptionPrintingOptionsVals ( exceptionSettings );
-
-		TCLAP::ValueArg < std::string > exceptionInput ( "", "exception", "Access components of exceptions", false, "", & exceptionPrintingOptionsVals );
-
-		// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
 		std::vector < std::string > stringSettings {
 			dataAccess::StringSettings::stringsVector ( )
 		};
@@ -95,28 +85,16 @@ int main ( int argc, char * argv[] ) {
 
 		// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-		std::vector < std::string > pairSetSettings {
-			dataAccess::PairSetSettings::stringsVector ( )
-		};
-
-		TCLAP::ValuesConstraint < std::string > pairSetPrintingOptionsVals ( pairSetSettings );
-
-		TCLAP::ValueArg < std::string > pairSetInput ( "", "pairSet", "Access components of set of pairs", false, "", & pairSetPrintingOptionsVals );
-
-		// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
 		std::vector < TCLAP::Arg * > xorlist;
 		xorlist.push_back ( & automatonInput );
 		xorlist.push_back ( & grammarInput );
 		xorlist.push_back ( & regexpInput );
-		xorlist.push_back ( & exceptionInput );
 		xorlist.push_back ( & stringInput );
 		xorlist.push_back ( & treeInput );
-		xorlist.push_back ( & pairSetInput );
 		cmd.xorAdd ( xorlist );
 
 		std::vector < std::string > operationSettings {
-			dataAccess::OperationSettings::stringsVector ( )
+			"get", "set", "add", "remove"
 		};
 		TCLAP::ValuesConstraint < std::string > allowedVals ( operationSettings );
 
@@ -126,8 +104,11 @@ 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 > argument ( "a", "argument", "Operation argument", false, "", "file" );
-		cmd.add ( argument );
+		TCLAP::ValueArg < std::string > element ( "e", "element", "Operation argument", false, "-", "file" );
+		cmd.add ( element );
+
+		TCLAP::ValueArg < std::string > collection ( "c", "collection", "Operation arguments collection", false, "-", "file" );
+		cmd.add ( collection );
 
 		TCLAP::SwitchArg measure ( "m", "measure", "Measure times", false );
 		cmd.add ( measure );
@@ -143,70 +124,81 @@ int main ( int argc, char * argv[] ) {
 		if ( measure.isSet ( ) )
 			common::GlobalData::measure = true;
 
+		cli::Environment environment;
+		environment.setBinding ( "stdin", file.getValue ( ) );
+		environment.setBinding ( "element", element.getValue ( ) );
+		environment.setBinding ( "collection", collection.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 );
-
-		ext::deque < sax::Token > argumentTokens;
-		if ( argument.isSet ( ) )
-			argumentTokens = sax::FromXMLParserHelper::parseInput( argument );
+		cli::Parser parser ( cli::Lexer ( "execute <#stdin > $data" ) );
+		parser.parse ( )->run ( environment );
 
-		if ( alib::XmlDataFactory::first < automaton::Automaton > ( tokens ) && automatonInput.isSet ( ) ) {
-			automaton::Automaton automaton = alib::XmlDataFactory::fromTokens ( std::move ( tokens ) );
-
-			measurements::end ( );
-			measurements::start ( "Accesss print", measurements::Type::MAIN );
-
-			dataAccess::AutomatonAccess::access ( automaton, dataAccess::AutomatonSettings::fromString ( automatonInput.getValue ( ) ), dataAccess::OperationSettings::fromString ( operation.getValue ( ) ), argumentTokens );
-		} else if ( alib::XmlDataFactory::first < grammar::Grammar > ( tokens ) && grammarInput.isSet ( ) ) {
-			grammar::Grammar grammar = alib::XmlDataFactory::fromTokens ( std::move ( tokens ) );
-
-			measurements::end ( );
-			measurements::start ( "Accesss print", measurements::Type::MAIN );
-
-			dataAccess::GrammarAccess::access ( grammar, dataAccess::GrammarSettings::fromString ( grammarInput.getValue ( ) ), dataAccess::OperationSettings::fromString ( operation.getValue ( ) ), argumentTokens );
-		} else if ( alib::XmlDataFactory::first < regexp::RegExp > ( tokens ) && regexpInput.isSet ( ) ) {
-			regexp::RegExp regexp = alib::XmlDataFactory::fromTokens ( std::move ( tokens ) );
-
-			measurements::end ( );
-			measurements::start ( "Accesss print", measurements::Type::MAIN );
-
-			dataAccess::RegExpAccess::access ( regexp, dataAccess::RegExpSettings::fromString ( regexpInput.getValue ( ) ), dataAccess::OperationSettings::fromString ( operation.getValue ( ) ), argumentTokens );
-		} else if ( alib::XmlDataFactory::first < exception::CommonException > ( tokens ) && exceptionInput.isSet ( ) ) {
-			exception::CommonException exception = alib::XmlDataFactory::fromTokens ( std::move ( tokens ) );
-
-			measurements::end ( );
-			measurements::start ( "Accesss print", measurements::Type::MAIN );
+		if ( collection.isSet ( )
+		&& ( operation.getValue ( ) == "set" || operation.getValue ( ) == "add" || operation.getValue ( ) == "remove" )
+		&& ( automatonInput.isSet ( ) || grammarInput.isSet ( ) || regexpInput.isSet ( ) || stringInput.isSet ( ) ) ) {
+			parser = cli::Parser ( cli::Lexer ( "execute < { :Object } #collection > $argument" ) );
+			parser.parse ( )->run ( environment );
+		}
+		if ( collection.isSet ( )
+		&& ( operation.getValue ( ) == "add" || operation.getValue ( ) == "remove" ) && ( treeInput.isSet ( ) ) ) {
+			parser = cli::Parser ( cli::Lexer ( "execute < { :ranked_symbol } #collection > $argument" ) );
+			parser.parse ( )->run ( environment );
+		}
 
-			dataAccess::ExceptionAccess::access ( exception, dataAccess::ExceptionSettings::fromString ( exceptionInput.getValue ( ) ), dataAccess::OperationSettings::fromString ( operation.getValue ( ) ) );
-		} else if ( alib::XmlDataFactory::first < string::String > ( tokens ) && stringInput.isSet ( ) ) {
-			string::String string = alib::XmlDataFactory::fromTokens ( std::move ( tokens ) );
+		if ( element.isSet ( )
+		&& ( operation.getValue ( ) == "set" || operation.getValue ( ) == "add" || operation.getValue ( ) == "remove" )
+		&& ( automatonInput.isSet ( ) || grammarInput.isSet ( ) || regexpInput.isSet ( ) || stringInput.isSet ( ) ) ) {
+			parser = cli::Parser ( cli::Lexer ( "execute < :Object #element > $argument" ) );
+			parser.parse ( )->run ( environment );
+		}
+		if ( element.isSet ( ) && ( operation.getValue ( ) == "add" || operation.getValue ( ) == "remove" ) && ( treeInput.isSet ( ) ) ) {
+			parser = cli::Parser ( cli::Lexer ( "execute < :ranked_symbol #element > $argument" ) );
+			parser.parse ( )->run ( environment );
+		}
 
-			measurements::end ( );
-			measurements::start ( "Accesss print", measurements::Type::MAIN );
+		measurements::end();
+		measurements::start ( "Algorithm", measurements::Type::MAIN );
+
+		std::string cliString;
+		if ( automatonInput.isSet ( ) ) {
+			cliString = "execute " + dataAccess::AutomatonAccess::access ( automatonInput.getValue ( ) ) + "::" + operation.getValue ( ) + " $data";
+		} else if ( grammarInput.isSet ( ) ) {
+			cliString = "execute " + dataAccess::GrammarAccess::access ( grammarInput.getValue ( ) ) + "::" + operation.getValue ( ) + " $data";
+		} else if ( regexpInput.isSet ( ) ) {
+			cliString = "execute " + dataAccess::RegExpAccess::access ( regexpInput.getValue ( ) ) + "::" + operation.getValue ( ) + " $data";
+		} else if ( stringInput.isSet ( ) ) {
+			cliString = "execute " + dataAccess::StringAccess::access ( stringInput.getValue ( ) ) + "::" + operation.getValue ( ) + " $data";
+		} else if ( treeInput.isSet ( ) ) {
+			cliString = "execute " + dataAccess::TreeAccess::access ( treeInput.getValue ( ) ) + "::" + operation.getValue ( ) + " $data";
+		} else {
+			throw exception::CommonException ( "Input not recognized." );
+		}
 
-			dataAccess::StringAccess::access ( string, dataAccess::StringSettings::fromString ( stringInput.getValue ( ) ), dataAccess::OperationSettings::fromString ( operation.getValue ( ) ), argumentTokens );
-		} else if ( alib::XmlDataFactory::first < tree::Tree > ( tokens ) && treeInput.isSet ( ) ) {
-			tree::Tree tree = alib::XmlDataFactory::fromTokens ( std::move ( tokens ) );
+		if ( operation.getValue ( ) == "add" || operation.getValue ( ) == "remove" )
+			cliString += " $argument";
 
-			measurements::end ( );
-			measurements::start ( "Accesss print", measurements::Type::MAIN );
+		if ( operation.getValue ( ) == "get" ) {
+			cliString += " >$output";
+		}
 
-			dataAccess::TreeAccess::access ( tree, dataAccess::TreeSettings::fromString ( treeInput.getValue ( ) ), dataAccess::OperationSettings::fromString ( operation.getValue ( ) ), argumentTokens );
-		} else if ( alib::XmlDataFactory::first < ext::set < ext::pair < alib::Object, alib::Object > > > ( tokens ) && pairSetInput.isSet ( ) ) {
-			ext::set < ext::pair < alib::Object, alib::Object > > pairSet = alib::XmlDataFactory::fromTokens ( std::move ( tokens ) );
+		parser = cli::Parser ( cli::Lexer ( cliString ) );
+		parser.parse ( )->run ( environment );
 
-			measurements::end ( );
-			measurements::start ( "Accesss print", measurements::Type::MAIN );
+		measurements::end();
+		measurements::start("Output write", measurements::Type::AUXILIARY);
 
-			dataAccess::PairSetAccess::access ( pairSet, dataAccess::PairSetSettings::fromString ( pairSetInput.getValue ( ) ), dataAccess::OperationSettings::fromString ( operation.getValue ( ) ) );
+		if ( operation.getValue ( ) == "get" ) {
+			parser = cli::Parser ( cli::Lexer ( "execute $output >#stdout" ) );
 		} else {
-			throw exception::CommonException ( "Input not recognized." );
+			parser = cli::Parser ( cli::Lexer ( "execute $data >#stdout" ) );
 		}
+		parser.parse ( )->run ( environment );
 
-		measurements::end ( );
-		measurements::end ( );
+		measurements::end();
+		measurements::end();
 
 		if ( measure.getValue ( ) ) common::Streams::measure << measurements::results ( ) << std::endl;
 
diff --git a/aaccess2/src/access/AutomatonAccess.cpp b/aaccess2/src/access/AutomatonAccess.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..44709e8c16537cde3e6c5ca99c4d1560359df4a5
--- /dev/null
+++ b/aaccess2/src/access/AutomatonAccess.cpp
@@ -0,0 +1,34 @@
+/*
+ * AutomatonAccess.cpp
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#include "AutomatonAccess.h"
+#include "settings/AutomatonSettings.h"
+
+namespace dataAccess {
+
+std::string AutomatonAccess::access ( const std::string & component ) {
+	AutomatonSettings::Settings settings = dataAccess::AutomatonSettings::fromString ( component );
+
+	if ( settings == AutomatonSettings::Settings::STATES )
+		return "automaton::States";
+
+	if ( settings == AutomatonSettings::Settings::FINAL_STATES )
+		return "automaton::FinalStates";
+
+	if ( settings == AutomatonSettings::Settings::INITIAL_STATES )
+		return "automaton::InitialState";
+
+	if ( settings == AutomatonSettings::Settings::INPUT_ALPHABET )
+		return "automaton::InputAlphabet";
+
+	if ( settings == AutomatonSettings::Settings::TRANSITIONS )
+		return "automaton::Transitions";
+
+	throw exception::CommonException ( "Component not available" );
+}
+
+} /* namespace dataAccess */
diff --git a/aaccess2/src/access/AutomatonAccess.h b/aaccess2/src/access/AutomatonAccess.h
new file mode 100644
index 0000000000000000000000000000000000000000..5b58d03ec652974b43f5c5d9d3cbfb26bfc60f09
--- /dev/null
+++ b/aaccess2/src/access/AutomatonAccess.h
@@ -0,0 +1,22 @@
+/*
+ * AutomatonAccess.h
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#ifndef AUTOMATA_ACCESS_H_
+#define AUTOMATA_ACCESS_H_
+
+#include <string>
+
+namespace dataAccess {
+
+class AutomatonAccess {
+public:
+	static std::string access ( const std::string & settings );
+};
+
+} /* namespace dataAccess */
+
+#endif /* AUTOMATA_ACCESS_H_ */
diff --git a/aaccess2/src/access/GrammarAccess.cpp b/aaccess2/src/access/GrammarAccess.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7996e43a95b4498d26220d874f14143b2f8e3894
--- /dev/null
+++ b/aaccess2/src/access/GrammarAccess.cpp
@@ -0,0 +1,31 @@
+/*
+ * GrammarAccess.cpp
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#include "GrammarAccess.h"
+#include "settings/GrammarSettings.h"
+
+namespace dataAccess {
+
+std::string GrammarAccess::access ( const std::string & component ) {
+	GrammarSettings::Settings settings = dataAccess::GrammarSettings::fromString ( component );
+
+	if ( settings == GrammarSettings::Settings::NONTERMINALS )
+		return "grammar::NonterminalAlphabet";
+
+	if ( settings == GrammarSettings::Settings::TERMINALS )
+		return "grammar::TerminalAlphabet";
+
+	if ( settings == GrammarSettings::Settings::INITIAL_SYMBOLS )
+		return "grammar::InitialSymbol";
+
+	if ( settings == GrammarSettings::Settings::RULES )
+		return "grammar::Rules";
+
+	throw exception::CommonException ( "Component not available" );
+}
+
+} /* namespace dataAccess */
diff --git a/aaccess2/src/access/GrammarAccess.h b/aaccess2/src/access/GrammarAccess.h
new file mode 100644
index 0000000000000000000000000000000000000000..0970d469f05f7e89160bc5747f6e93f3a5fb07ca
--- /dev/null
+++ b/aaccess2/src/access/GrammarAccess.h
@@ -0,0 +1,22 @@
+/*
+ * GrammarAccess.h
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#ifndef GRAMMAR_ACCESS_H_
+#define GRAMMAR_ACCESS_H_
+
+#include <string>
+
+namespace dataAccess {
+
+class GrammarAccess {
+public:
+	static std::string access ( const std::string & settings );
+};
+
+} /* namespace dataAccess */
+
+#endif /* GRAMMAR_ACCESS_H_ */
diff --git a/aaccess2/src/access/RegExpAccess.cpp b/aaccess2/src/access/RegExpAccess.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fa11a9371dd8ad1d8f711de30244a9b14c2e7288
--- /dev/null
+++ b/aaccess2/src/access/RegExpAccess.cpp
@@ -0,0 +1,25 @@
+/*
+ * RegExpAccess.cpp
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#include "RegExpAccess.h"
+#include "settings/RegExpSettings.h"
+
+namespace dataAccess {
+
+std::string RegExpAccess::access ( const std::string & component ) {
+	RegExpSettings::Settings settings = dataAccess::RegExpSettings::fromString ( component );
+
+	if ( settings == RegExpSettings::Settings::ALPHABET )
+		return "regexp::Alphabet";
+
+	if ( settings == RegExpSettings::Settings::CONTENT )
+		return "regexp::Content";
+
+	throw exception::CommonException ( "Component not available" );
+}
+
+} /* namespace dataAccess */
diff --git a/aaccess2/src/access/RegExpAccess.h b/aaccess2/src/access/RegExpAccess.h
new file mode 100644
index 0000000000000000000000000000000000000000..18529ba3613b5222bb1e53fcc83f9322d1753989
--- /dev/null
+++ b/aaccess2/src/access/RegExpAccess.h
@@ -0,0 +1,22 @@
+/*
+ * RegExpAccess.h
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#ifndef REG_EXP_ACCESS_H_
+#define REG_EXP_ACCESS_H_
+
+#include <string>
+
+namespace dataAccess {
+
+class RegExpAccess {
+public:
+	static std::string access ( const std::string & settings );
+};
+
+} /* namespace dataAccess */
+
+#endif /* REG_EXP_ACCESS_H_ */
diff --git a/aaccess2/src/access/StringAccess.cpp b/aaccess2/src/access/StringAccess.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a729b82fd544c009e78a9079b9b2525a6d48c8ad
--- /dev/null
+++ b/aaccess2/src/access/StringAccess.cpp
@@ -0,0 +1,25 @@
+/*
+ * StringAccess.cpp
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#include "StringAccess.h"
+#include "settings/StringSettings.h"
+
+namespace dataAccess {
+
+std::string StringAccess::access ( const std::string & component ) {
+	StringSettings::Settings settings = dataAccess::StringSettings::fromString ( component );
+
+	if ( settings == StringSettings::Settings::ALPHABET )
+		return "string::GeneralAlphabet";
+
+	if ( settings == StringSettings::Settings::CONTENT )
+		return "string::Content";
+
+	throw exception::CommonException ( "Component not available" );
+}
+
+} /* namespace dataAccess */
diff --git a/aaccess2/src/access/StringAccess.h b/aaccess2/src/access/StringAccess.h
new file mode 100644
index 0000000000000000000000000000000000000000..cfa16f68315802aaf470c8b35f3dea48023449e1
--- /dev/null
+++ b/aaccess2/src/access/StringAccess.h
@@ -0,0 +1,22 @@
+/*
+ * StringAccess.h
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#ifndef STRING_ACCESS_H_
+#define STRING_ACCESS_H_
+
+#include <string>
+
+namespace dataAccess {
+
+class StringAccess {
+public:
+	static std::string access ( const std::string & settings );
+};
+
+} /* namespace dataAccess */
+
+#endif /* STRING_ACCESS_H_ */
diff --git a/aaccess2/src/access/TreeAccess.cpp b/aaccess2/src/access/TreeAccess.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dd389ea71eeca33ee4eda6cb6a447fd66a8228cf
--- /dev/null
+++ b/aaccess2/src/access/TreeAccess.cpp
@@ -0,0 +1,31 @@
+/*
+ * TreeAccess.cpp
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#include "TreeAccess.h"
+#include "settings/TreeSettings.h"
+
+namespace dataAccess {
+
+std::string TreeAccess::access ( const std::string & component ) {
+	TreeSettings::Settings settings = dataAccess::TreeSettings::fromString ( component );
+
+	if ( settings == TreeSettings::Settings::ALPHABET )
+		return "tree::GeneralAlphabet";
+
+	if ( settings == TreeSettings::Settings::CONTENT )
+		return "tree::Content";
+
+	if ( settings == TreeSettings::Settings::SUBTREE_WILDCARD )
+		return "tree::SubtreeWildcard";
+
+	if ( settings == TreeSettings::Settings::NONLINEAR_VARIABLES )
+		return "tree::NonlinearAlphabet";
+
+	throw exception::CommonException ( "Component not available" );
+}
+
+} /* namespace dataAccess */
diff --git a/aaccess2/src/access/TreeAccess.h b/aaccess2/src/access/TreeAccess.h
new file mode 100644
index 0000000000000000000000000000000000000000..b05d1cfd29f3287fe0d2fd572c144aa7906b1f98
--- /dev/null
+++ b/aaccess2/src/access/TreeAccess.h
@@ -0,0 +1,22 @@
+/*
+ * TreeAccess.h
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#ifndef TREE_ACCESS_H_
+#define TREE_ACCESS_H_
+
+#include <string>
+
+namespace dataAccess {
+
+class TreeAccess {
+public:
+	static std::string access ( const std::string & settings );
+};
+
+} /* namespace dataAccess */
+
+#endif /* TREE_ACCESS_H_ */
diff --git a/alib2aux/src/access/settings/AutomatonSettings.h b/aaccess2/src/access/settings/AutomatonSettings.h
similarity index 100%
rename from alib2aux/src/access/settings/AutomatonSettings.h
rename to aaccess2/src/access/settings/AutomatonSettings.h
diff --git a/alib2aux/src/access/settings/GrammarSettings.h b/aaccess2/src/access/settings/GrammarSettings.h
similarity index 100%
rename from alib2aux/src/access/settings/GrammarSettings.h
rename to aaccess2/src/access/settings/GrammarSettings.h
diff --git a/alib2aux/src/access/settings/RegExpSettings.h b/aaccess2/src/access/settings/RegExpSettings.h
similarity index 100%
rename from alib2aux/src/access/settings/RegExpSettings.h
rename to aaccess2/src/access/settings/RegExpSettings.h
diff --git a/alib2aux/src/access/settings/SettingsHelper.h b/aaccess2/src/access/settings/SettingsHelper.h
similarity index 100%
rename from alib2aux/src/access/settings/SettingsHelper.h
rename to aaccess2/src/access/settings/SettingsHelper.h
diff --git a/alib2aux/src/access/settings/StringSettings.h b/aaccess2/src/access/settings/StringSettings.h
similarity index 100%
rename from alib2aux/src/access/settings/StringSettings.h
rename to aaccess2/src/access/settings/StringSettings.h
diff --git a/alib2aux/src/access/settings/TreeSettings.h b/aaccess2/src/access/settings/TreeSettings.h
similarity index 100%
rename from alib2aux/src/access/settings/TreeSettings.h
rename to aaccess2/src/access/settings/TreeSettings.h
diff --git a/alib2aux/src/access/AutomatonAccess.cpp b/alib2aux/src/access/AutomatonAccess.cpp
deleted file mode 100644
index 0c2561ae80ec2d7a041444562e956fa1bcbf7260..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/AutomatonAccess.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * AutomatonAccess.cpp
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#include "AutomatonAccess.h"
-
-#include <automaton/FSM/NFA.h>
-#include <automaton/FSM/DFA.h>
-
-#include <automaton/PDA/InputDrivenNPDA.h>
-#include <automaton/PDA/InputDrivenDPDA.h>
-
-#include <automaton/PDA/DPDA.h>
-#include <automaton/PDA/NPDA.h>
-
-#include <factory/XmlDataFactory.hpp>
-#include <container/xml/ObjectsSet.h>
-#include <container/xml/ObjectsMap.h>
-#include <container/xml/ObjectsTuple.h>
-#include <container/xml/ObjectsVector.h>
-#include <container/xml/ObjectsVariant.h>
-#include <container/xml/ObjectsPair.h>
-#include <container/xml/ObjectsTree.h>
-
-#include "common/AccessHelpers.hpp"
-#include <registration/AlgoRegistration.hpp>
-
-namespace dataAccess {
-
-void AutomatonAccess::access ( automaton::Automaton & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	dispatch ( automaton.getData ( ), settings, operation, argument );
-}
-
-void AutomatonAccess::access ( automaton::NFA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == AutomatonSettings::Settings::STATES )
-		return handleComponent < automaton::States > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::FINAL_STATES )
-		return handleComponent < automaton::FinalStates > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INITIAL_STATES )
-		return handleElement < automaton::InitialState > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INPUT_ALPHABET )
-		return handleComponent < automaton::InputAlphabet > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::TRANSITIONS && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( automaton.getTransitions ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto AutomatonAccessNFA = registration::OverloadRegister < AutomatonAccess, void, automaton::NFA < > > ( AutomatonAccess::access );
-
-void AutomatonAccess::access ( automaton::DFA<> & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == AutomatonSettings::Settings::STATES )
-		return handleComponent < automaton::States > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::FINAL_STATES )
-		return handleComponent < automaton::FinalStates > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INITIAL_STATES )
-		return handleElement < automaton::InitialState > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INPUT_ALPHABET )
-		return handleComponent < automaton::InputAlphabet > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::TRANSITIONS && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( automaton.getTransitions ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto AutomatonAccessDFA = registration::OverloadRegister < AutomatonAccess, void, automaton::DFA<> > ( AutomatonAccess::access );
-
-void AutomatonAccess::access ( automaton::InputDrivenNPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == AutomatonSettings::Settings::STATES )
-		return handleComponent < automaton::States > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::FINAL_STATES )
-		return handleComponent < automaton::FinalStates > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INITIAL_STATES )
-		return handleElement < automaton::InitialState > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INPUT_ALPHABET )
-		return handleComponent < automaton::InputAlphabet > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::TRANSITIONS && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( automaton.getTransitions ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto AutomatonAccessInputDrivenNPDA = registration::OverloadRegister < AutomatonAccess, void, automaton::InputDrivenNPDA < > > ( AutomatonAccess::access );
-
-void AutomatonAccess::access ( automaton::InputDrivenDPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == AutomatonSettings::Settings::STATES )
-		return handleComponent < automaton::States > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::FINAL_STATES )
-		return handleComponent < automaton::FinalStates > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INITIAL_STATES )
-		return handleElement < automaton::InitialState > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INPUT_ALPHABET )
-		return handleComponent < automaton::InputAlphabet > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::TRANSITIONS && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( automaton.getTransitions ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto AutomatonAccessInputDrivenDPDA = registration::OverloadRegister < AutomatonAccess, void, automaton::InputDrivenDPDA < > > ( AutomatonAccess::access );
-
-void AutomatonAccess::access ( automaton::NPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == AutomatonSettings::Settings::STATES )
-		return handleComponent < automaton::States > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::FINAL_STATES )
-		return handleComponent < automaton::FinalStates > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INITIAL_STATES )
-		return handleElement < automaton::InitialState > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INPUT_ALPHABET )
-		return handleComponent < automaton::InputAlphabet > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::TRANSITIONS && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( automaton.getTransitions ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto AutomatonAccessNPDA = registration::OverloadRegister < AutomatonAccess, void, automaton::NPDA < > > ( AutomatonAccess::access );
-
-void AutomatonAccess::access ( automaton::DPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == AutomatonSettings::Settings::STATES )
-		return handleComponent < automaton::States > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::FINAL_STATES )
-		return handleComponent < automaton::FinalStates > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INITIAL_STATES )
-		return handleElement < automaton::InitialState > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::INPUT_ALPHABET )
-		return handleComponent < automaton::InputAlphabet > ( automaton, operation, argument );
-
-	if ( settings == AutomatonSettings::Settings::TRANSITIONS && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( automaton.getTransitions ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto AutomatonAccessDPDA = registration::OverloadRegister < AutomatonAccess, void, automaton::DPDA < > > ( AutomatonAccess::access );
-
-} /* namespace dataAccess */
diff --git a/alib2aux/src/access/AutomatonAccess.h b/alib2aux/src/access/AutomatonAccess.h
deleted file mode 100644
index 1629f1c22e074ca154695a68cd3fe00b39093a82..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/AutomatonAccess.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * AutomatonAccess.h
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#ifndef AUTOMATA_ACCESS_H_
-#define AUTOMATA_ACCESS_H_
-
-#include <core/multipleDispatch.hpp>
-
-#include "automaton/Automaton.h"
-#include "automaton/AutomatonFeatures.h"
-
-#include "settings/AutomatonSettings.h"
-#include "settings/OperationSettings.h"
-#include <set>
-
-namespace dataAccess {
-
-class AutomatonAccess : public alib::SingleDispatch < AutomatonAccess, void, automaton::AutomatonBase &, const AutomatonSettings::Settings &, const OperationSettings::Settings &, ext::deque < sax::Token > & > {
-public:
-	static void access ( automaton::Automaton & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-
-	static void access ( automaton::NFA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-	static void access ( automaton::DFA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-
-	static void access ( automaton::InputDrivenNPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-	static void access ( automaton::InputDrivenDPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-
-	static void access ( automaton::DPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-	static void access ( automaton::NPDA < > & automaton, const AutomatonSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-};
-
-} /* namespace dataAccess */
-
-#endif /* AUTOMATA_ACCESS_H_ */
diff --git a/alib2aux/src/access/ExceptionAccess.cpp b/alib2aux/src/access/ExceptionAccess.cpp
deleted file mode 100644
index 9d0f93685027adb33913131e56ffb4a3a2b9371a..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/ExceptionAccess.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * ExceptionAccess.cpp
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#include "ExceptionAccess.h"
-
-#include <factory/XmlDataFactory.hpp>
-#include <container/xml/ObjectsSet.h>
-#include <container/xml/ObjectsMap.h>
-#include <container/xml/ObjectsTuple.h>
-#include <container/xml/ObjectsVector.h>
-#include <container/xml/ObjectsVariant.h>
-#include <container/xml/ObjectsPair.h>
-#include <container/xml/ObjectsTree.h>
-
-namespace dataAccess {
-
-void ExceptionAccess::access ( const exception::CommonException & exception, const ExceptionSettings::Settings & settings, const OperationSettings::Settings & operation ) {
-	if ( settings == ExceptionSettings::Settings::CAUSE && operation == OperationSettings::Settings::GET ) {
-		common::Streams::out << exception.getCause ( );
-		return;
-	}
-
-	if ( settings == ExceptionSettings::Settings::BACKTRACE && operation == OperationSettings::Settings::GET ) {
-		common::Streams::out << exception.getBacktrace ( );
-		return;
-	}
-
-	if ( settings == ExceptionSettings::Settings::COMMAND && operation == OperationSettings::Settings::GET ) {
-		common::Streams::out << exception.getCommand ( );
-		return;
-	}
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-} /* namespace dataAccess */
diff --git a/alib2aux/src/access/ExceptionAccess.h b/alib2aux/src/access/ExceptionAccess.h
deleted file mode 100644
index 52852269c0222e5bb7489e3106e9b869e7cb484c..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/ExceptionAccess.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * ExceptionAccess.h
- *
- *  Created on: 10. 7. 2016
- *	  Author: Jan Travnicek
- */
-
-#ifndef EXCEPTION_ACCESS_H_
-#define EXCEPTION_ACCESS_H_
-
-#include <exception/CommonException.h>
-
-#include "settings/ExceptionSettings.h"
-#include "settings/OperationSettings.h"
-#include <set>
-
-namespace dataAccess {
-
-class ExceptionAccess {
-public:
-	static void access ( const exception::CommonException & exception, const ExceptionSettings::Settings & settings, const OperationSettings::Settings & operation );
-};
-
-} /* namespace dataAccess */
-
-#endif /* EXCEPTION_ACCESS_H_ */
diff --git a/alib2aux/src/access/GrammarAccess.cpp b/alib2aux/src/access/GrammarAccess.cpp
deleted file mode 100644
index 82ec360fef417b354a9bbf034be0e261f01f24fa..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/GrammarAccess.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * GrammarAccess.cpp
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#include "GrammarAccess.h"
-
-#include <grammar/Regular/RightRG.h>
-#include <grammar/Regular/RightLG.h>
-
-#include <factory/XmlDataFactory.hpp>
-#include <container/xml/ObjectsSet.h>
-#include <container/xml/ObjectsMap.h>
-#include <container/xml/ObjectsTuple.h>
-#include <container/xml/ObjectsVector.h>
-#include <container/xml/ObjectsVariant.h>
-#include <container/xml/ObjectsPair.h>
-#include <container/xml/ObjectsTree.h>
-
-#include "common/AccessHelpers.hpp"
-#include <registration/AlgoRegistration.hpp>
-
-namespace dataAccess {
-
-void GrammarAccess::access ( grammar::Grammar & grammar, const GrammarSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	dispatch ( grammar.getData ( ), settings, operation, argument );
-}
-
-void GrammarAccess::access ( grammar::RightRG < > & grammar, const GrammarSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == GrammarSettings::Settings::NONTERMINALS )
-		return handleComponent < grammar::NonterminalAlphabet > ( grammar, operation, argument );
-
-	if ( settings == GrammarSettings::Settings::TERMINALS )
-		return handleComponent < grammar::TerminalAlphabet > ( grammar, operation, argument );
-
-	if ( settings == GrammarSettings::Settings::INITIAL_SYMBOLS )
-		return handleElement < grammar::InitialSymbol > ( grammar, operation, argument );
-
-	if ( settings == GrammarSettings::Settings::RULES && operation == OperationSettings::Settings::GET )
-		alib::XmlDataFactory::toStdout ( grammar.getRules ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto GrammarAccessRightRG = registration::OverloadRegister < GrammarAccess, void, grammar::RightRG < > > ( GrammarAccess::access );
-
-void GrammarAccess::access ( grammar::RightLG < > & grammar, const GrammarSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == GrammarSettings::Settings::NONTERMINALS )
-		return handleComponent < grammar::NonterminalAlphabet > ( grammar, operation, argument );
-
-	if ( settings == GrammarSettings::Settings::TERMINALS )
-		return handleComponent < grammar::TerminalAlphabet > ( grammar, operation, argument );
-
-	if ( settings == GrammarSettings::Settings::INITIAL_SYMBOLS )
-		return handleElement < grammar::InitialSymbol > ( grammar, operation, argument );
-
-	if ( settings == GrammarSettings::Settings::RULES && operation == OperationSettings::Settings::GET )
-		alib::XmlDataFactory::toStdout ( grammar.getRules ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto GrammarAccessRightLG = registration::OverloadRegister < GrammarAccess, void, grammar::RightLG < > > ( GrammarAccess::access );
-
-} /* namespace dataAccess */
diff --git a/alib2aux/src/access/GrammarAccess.h b/alib2aux/src/access/GrammarAccess.h
deleted file mode 100644
index 6331b97357ba61e65168e2fe3f0d013f5d04cdce..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/GrammarAccess.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * GrammarAccess.h
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#ifndef GRAMMAR_ACCESS_H_
-#define GRAMMAR_ACCESS_H_
-
-#include <core/multipleDispatch.hpp>
-
-#include "grammar/Grammar.h"
-#include "grammar/GrammarFeatures.h"
-
-#include "settings/GrammarSettings.h"
-#include "settings/OperationSettings.h"
-#include <set>
-
-namespace dataAccess {
-
-class GrammarAccess : public alib::SingleDispatch < GrammarAccess, void, grammar::GrammarBase &, const GrammarSettings::Settings &, const OperationSettings::Settings &, ext::deque < sax::Token > & > {
-public:
-	static void access ( grammar::Grammar & grammar, const GrammarSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-
-	static void access ( grammar::RightRG < > & grammar, const GrammarSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-	static void access ( grammar::RightLG < > & grammar, const GrammarSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-};
-
-} /* namespace dataAccess */
-
-#endif /* GRAMMAR_ACCESS_H_ */
diff --git a/alib2aux/src/access/PairSetAccess.cpp b/alib2aux/src/access/PairSetAccess.cpp
deleted file mode 100644
index 67e6522fade0fa1281f2f8be84e9053fbdb58006..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/PairSetAccess.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * PairSetAccess.cpp
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#include "PairSetAccess.h"
-
-#include <factory/XmlDataFactory.hpp>
-#include <container/xml/ObjectsSet.h>
-#include <container/xml/ObjectsMap.h>
-#include <container/xml/ObjectsTuple.h>
-#include <container/xml/ObjectsVector.h>
-#include <container/xml/ObjectsVariant.h>
-#include <container/xml/ObjectsPair.h>
-#include <container/xml/ObjectsTree.h>
-
-namespace dataAccess {
-
-void PairSetAccess::access ( const ext::set < ext::pair < alib::Object, alib::Object > > & pairSet, const PairSetSettings::Settings & settings, const OperationSettings::Settings & operation ) {
-	if ( settings == PairSetSettings::Settings::FIRST && operation == OperationSettings::Settings::GET ) {
-		ext::set < alib::Object > res;
-		for ( const ext::pair < alib::Object, alib::Object > & pair : pairSet )
-			res.insert ( pair.first );
-
-		return alib::XmlDataFactory::toStdout ( res );
-	}
-
-	if ( settings == PairSetSettings::Settings::SECOND && operation == OperationSettings::Settings::GET ) {
-		ext::set < alib::Object > res;
-		for ( const ext::pair < alib::Object, alib::Object > & pair : pairSet )
-			res.insert ( pair.second );
-
-		return alib::XmlDataFactory::toStdout ( res );
-	}
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-} /* namespace dataAccess */
diff --git a/alib2aux/src/access/PairSetAccess.h b/alib2aux/src/access/PairSetAccess.h
deleted file mode 100644
index 796dbaff1283b141f128fd2be3f820e699511073..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/PairSetAccess.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * PairSetAccess.h
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#ifndef PAIR_SET_ACCESS_H_
-#define PAIR_SET_ACCESS_H_
-
-#include <core/multipleDispatch.hpp>
-
-#include <object/Object.h>
-
-#include "settings/PairSetSettings.h"
-#include "settings/OperationSettings.h"
-#include <set>
-#include <pair>
-
-namespace dataAccess {
-
-class PairSetAccess {
-public:
-	static void access ( const ext::set < ext::pair < alib::Object, alib::Object > > & pairSet, const PairSetSettings::Settings & settings, const OperationSettings::Settings & operation );
-
-};
-
-} /* namespace dataAccess */
-
-#endif /* PAIR_SET_ACCESS_H_ */
diff --git a/alib2aux/src/access/PairSetFirst.cpp b/alib2aux/src/access/PairSetFirst.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e0e33dc5c51d3c31ebac14d86a37abffb24c95d2
--- /dev/null
+++ b/alib2aux/src/access/PairSetFirst.cpp
@@ -0,0 +1,16 @@
+/*
+ * PairSetFirst.cpp
+ *
+ *  Created on: Nov 24, 2017
+ *      Author: Jan Travnicek
+ */
+
+#include "PairSetFirst.h"
+
+#include <registration/AlgoRegistration.hpp>
+
+namespace {
+
+auto pairSetFirstObjectObject = registration::AbstractRegister < dataAccess::PairSetFirst, ext::set < alib::Object >, const ext::set < ext::pair < alib::Object, alib::Object > > & > ( dataAccess::PairSetFirst::access );
+
+} /* namespace */
diff --git a/alib2aux/src/access/PairSetFirst.h b/alib2aux/src/access/PairSetFirst.h
new file mode 100644
index 0000000000000000000000000000000000000000..f52555a960178521867923007ca835aea0a80cf6
--- /dev/null
+++ b/alib2aux/src/access/PairSetFirst.h
@@ -0,0 +1,31 @@
+/*
+ * PairSetFirst.h
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#ifndef PAIR_SET_FIRST_H_
+#define PAIR_SET_FIRST_H_
+
+#include <set>
+#include <pair>
+
+namespace dataAccess {
+
+class PairSetFirst {
+public:
+	template < class First, class Second >
+	static ext::set < First > access ( const ext::set < ext::pair < First, Second > > & pairSet ) {
+		ext::set < First > res;
+		for ( const ext::pair < First, Second > & pair : pairSet )
+			res.insert ( pair.first );
+
+		return res;
+	}
+
+};
+
+} /* namespace dataAccess */
+
+#endif /* PAIR_SET_FIRST_H_ */
diff --git a/alib2aux/src/access/PairSetSecond.cpp b/alib2aux/src/access/PairSetSecond.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7d6516ba880b0f0855bc22b991264b719c55a3f2
--- /dev/null
+++ b/alib2aux/src/access/PairSetSecond.cpp
@@ -0,0 +1,16 @@
+/*
+ * PairSetSecond.cpp
+ *
+ *  Created on: Nov 24, 2017
+ *      Author: Jan Travnicek
+ */
+
+#include "PairSetSecond.h"
+
+#include <registration/AlgoRegistration.hpp>
+
+namespace {
+
+auto pairSetSecondObjectObject = registration::AbstractRegister < dataAccess::PairSetSecond, ext::set < alib::Object >, const ext::set < ext::pair < alib::Object, alib::Object > > & > ( dataAccess::PairSetSecond::access );
+
+} /* namespace */
diff --git a/alib2aux/src/access/PairSetSecond.h b/alib2aux/src/access/PairSetSecond.h
new file mode 100644
index 0000000000000000000000000000000000000000..8101f7d1f40489ff32c30be8dbeee4a02488e59e
--- /dev/null
+++ b/alib2aux/src/access/PairSetSecond.h
@@ -0,0 +1,31 @@
+/*
+ * PairSetSecond.h
+ *
+ *  Created on: 20. 9. 2014
+ *	  Author: Jan Travnicek
+ */
+
+#ifndef PAIR_SET_FIRST_H_
+#define PAIR_SET_FIRST_H_
+
+#include <set>
+#include <pair>
+
+namespace dataAccess {
+
+class PairSetSecond {
+public:
+	template < class First, class Second >
+	static ext::set < Second > access ( const ext::set < ext::pair < First, Second > > & pairSet ) {
+		ext::set < Second > res;
+		for ( const ext::pair < First, Second > & pair : pairSet )
+			res.insert ( pair.first );
+
+		return res;
+	}
+
+};
+
+} /* namespace dataAccess */
+
+#endif /* PAIR_SET_FIRST_H_ */
diff --git a/alib2aux/src/access/RegExpAccess.cpp b/alib2aux/src/access/RegExpAccess.cpp
deleted file mode 100644
index 37699120661be6fc34860f24834a955e2c53407a..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/RegExpAccess.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * RegExpAccess.cpp
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#include "RegExpAccess.h"
-
-#include <exception/CommonException.h>
-
-#include <regexp/formal/FormalRegExp.h>
-#include <regexp/formal/FormalRegExpElement.h>
-#include <regexp/unbounded/UnboundedRegExp.h>
-#include <regexp/unbounded/UnboundedRegExpElement.h>
-
-#include <factory/XmlDataFactory.hpp>
-#include <container/xml/ObjectsSet.h>
-#include <container/xml/ObjectsMap.h>
-#include <container/xml/ObjectsTuple.h>
-#include <container/xml/ObjectsVector.h>
-#include <container/xml/ObjectsVariant.h>
-#include <container/xml/ObjectsPair.h>
-#include <container/xml/ObjectsTree.h>
-
-#include "common/AccessHelpers.hpp"
-#include <registration/AlgoRegistration.hpp>
-
-namespace dataAccess {
-
-void RegExpAccess::access ( regexp::RegExp & regexp, const RegExpSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	dispatch ( regexp.getData ( ), settings, operation, argument );
-}
-
-void RegExpAccess::access ( regexp::FormalRegExp < > & regexp, const RegExpSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == RegExpSettings::Settings::ALPHABET )
-		return handleComponent < regexp::GeneralAlphabet > ( regexp, operation, argument );
-
-	if ( settings == RegExpSettings::Settings::CONTENT && operation == OperationSettings::Settings::GET ) alib::XmlDataFactory::toStdout ( regexp.getRegExp ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto RegExpAccessFormalRegExp = registration::OverloadRegister < RegExpAccess, void, regexp::FormalRegExp < > > ( RegExpAccess::access );
-
-void RegExpAccess::access ( regexp::UnboundedRegExp < > & regexp, const RegExpSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == RegExpSettings::Settings::ALPHABET )
-		return handleComponent < regexp::GeneralAlphabet > ( regexp, operation, argument );
-
-	if ( settings == RegExpSettings::Settings::CONTENT && operation == OperationSettings::Settings::GET ) alib::XmlDataFactory::toStdout ( regexp.getRegExp ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto RegExpAccessUnboundedRegExp = registration::OverloadRegister < RegExpAccess, void, regexp::UnboundedRegExp < > > ( RegExpAccess::access );
-
-} /* namespace dataAccess */
diff --git a/alib2aux/src/access/RegExpAccess.h b/alib2aux/src/access/RegExpAccess.h
deleted file mode 100644
index a9c3d9b143ff914774c5bc2f7a9df173f230bf0a..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/RegExpAccess.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * RegExpAccess.h
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#ifndef REG_EXP_ACCESS_H_
-#define REG_EXP_ACCESS_H_
-
-#include <core/multipleDispatch.hpp>
-
-#include "regexp/RegExp.h"
-#include "regexp/RegExpFeatures.h"
-
-#include "settings/RegExpSettings.h"
-#include "settings/OperationSettings.h"
-#include <set>
-
-namespace dataAccess {
-
-class RegExpAccess : public alib::SingleDispatch < RegExpAccess, void, regexp::RegExpBase &, const RegExpSettings::Settings &, const OperationSettings::Settings &, ext::deque < sax::Token > & > {
-public:
-	static void access ( regexp::RegExp & regexp, const RegExpSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-
-	static void access ( regexp::UnboundedRegExp < > & regexp, const RegExpSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-	static void access ( regexp::FormalRegExp < > & regexp, const RegExpSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-};
-
-} /* namespace dataAccess */
-
-#endif /* REG_EXP_ACCESS_H_ */
diff --git a/alib2aux/src/access/StringAccess.cpp b/alib2aux/src/access/StringAccess.cpp
deleted file mode 100644
index b50c58294152d27151511e056df62c4888909f5e..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/StringAccess.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * StringAccess.cpp
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#include "StringAccess.h"
-
-#include <string/LinearString.h>
-#include <string/CyclicString.h>
-
-#include <factory/XmlDataFactory.hpp>
-#include <container/xml/ObjectsSet.h>
-#include <container/xml/ObjectsMap.h>
-#include <container/xml/ObjectsTuple.h>
-#include <container/xml/ObjectsVector.h>
-#include <container/xml/ObjectsVariant.h>
-#include <container/xml/ObjectsPair.h>
-#include <container/xml/ObjectsTree.h>
-
-#include "common/AccessHelpers.hpp"
-#include <registration/AlgoRegistration.hpp>
-
-namespace dataAccess {
-
-void StringAccess::access ( string::String & string, const StringSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	dispatch ( string.getData ( ), settings, operation, argument );
-}
-
-void StringAccess::access ( string::LinearString < > & string, const StringSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == StringSettings::Settings::ALPHABET )
-		return handleComponent < string::GeneralAlphabet > ( string, operation, argument );
-
-	if ( settings == StringSettings::Settings::CONTENT && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( string.getContent ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto StringAccessFormalString = registration::OverloadRegister < StringAccess, void, string::LinearString < > > ( StringAccess::access );
-
-void StringAccess::access ( string::CyclicString < > & string, const StringSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == StringSettings::Settings::ALPHABET )
-		return handleComponent < string::GeneralAlphabet > ( string, operation, argument );
-
-	if ( settings == StringSettings::Settings::CONTENT && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( string.getContent ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto StringAccessUnboundedString = registration::OverloadRegister < StringAccess, void, string::CyclicString < > > ( StringAccess::access );
-
-} /* namespace dataAccess */
diff --git a/alib2aux/src/access/StringAccess.h b/alib2aux/src/access/StringAccess.h
deleted file mode 100644
index 7a8e94f05a2cbd1fe0c26ca8261e6cd117a1ecb1..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/StringAccess.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * StringAccess.h
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#ifndef STRING_ACCESS_H_
-#define STRING_ACCESS_H_
-
-#include <core/multipleDispatch.hpp>
-
-#include "string/String.h"
-#include "string/StringFeatures.h"
-
-#include "settings/StringSettings.h"
-#include "settings/OperationSettings.h"
-#include <set>
-
-namespace dataAccess {
-
-class StringAccess : public alib::SingleDispatch < StringAccess, void, string::StringBase &, const StringSettings::Settings &, const OperationSettings::Settings &, ext::deque < sax::Token > & > {
-public:
-	static void access ( string::String & string, const StringSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-
-	static void access ( string::LinearString < > & string, const StringSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-	static void access ( string::CyclicString < > & string, const StringSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-};
-
-} /* namespace dataAccess */
-
-#endif /* STRING_ACCESS_H_ */
diff --git a/alib2aux/src/access/TreeAccess.cpp b/alib2aux/src/access/TreeAccess.cpp
deleted file mode 100644
index a296586e8b7b6a6b1580ba5a440c29abafbe7a93..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/TreeAccess.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * TreeAccess.cpp
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#include "TreeAccess.h"
-
-#include <tree/ranked/RankedTree.h>
-#include <tree/ranked/RankedPattern.h>
-#include <tree/ranked/RankedNonlinearPattern.h>
-#include <tree/unranked/UnrankedTree.h>
-
-#include <factory/XmlDataFactory.hpp>
-#include <container/xml/ObjectsSet.h>
-#include <container/xml/ObjectsMap.h>
-#include <container/xml/ObjectsTuple.h>
-#include <container/xml/ObjectsVector.h>
-#include <container/xml/ObjectsVariant.h>
-#include <container/xml/ObjectsPair.h>
-#include <container/xml/ObjectsTree.h>
-
-#include "common/AccessHelpers.hpp"
-#include <registration/AlgoRegistration.hpp>
-
-namespace dataAccess {
-
-void TreeAccess::access ( tree::Tree & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	dispatch ( tree.getData ( ), settings, operation, argument );
-}
-
-void TreeAccess::access ( tree::RankedTree < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == TreeSettings::Settings::ALPHABET )
-		return handleComponent < tree::GeneralAlphabet > ( tree, operation, argument );
-
-	if ( settings == TreeSettings::Settings::CONTENT && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( tree.getContent ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto TreeAccessRankedTree = registration::OverloadRegister < TreeAccess, void, tree::RankedTree < > > ( TreeAccess::access );
-
-void TreeAccess::access ( tree::RankedPattern < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == TreeSettings::Settings::ALPHABET )
-		return handleComponent < tree::GeneralAlphabet > ( tree, operation, argument );
-
-	if ( settings == TreeSettings::Settings::CONTENT && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( tree.getContent ( ) );
-
-	if ( settings == TreeSettings::Settings::SUBTREE_WILDCARD && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( tree.getSubtreeWildcard ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto TreeAccessRankedPattern = registration::OverloadRegister < TreeAccess, void, tree::RankedPattern < > > ( TreeAccess::access );
-
-void TreeAccess::access ( tree::RankedNonlinearPattern < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == TreeSettings::Settings::ALPHABET )
-		return handleComponent < tree::GeneralAlphabet > ( tree, operation, argument );
-
-	if ( settings == TreeSettings::Settings::CONTENT )
-		return alib::XmlDataFactory::toStdout ( tree.getContent ( ) );
-
-	if ( settings == TreeSettings::Settings::SUBTREE_WILDCARD && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( tree.getSubtreeWildcard ( ) );
-
-	if ( settings == TreeSettings::Settings::NONLINEAR_VARIABLES && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( tree.getNonlinearVariables ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto TreeAccessRankedNonlinearPattern = registration::OverloadRegister < TreeAccess, void, tree::RankedNonlinearPattern < > > ( TreeAccess::access );
-
-void TreeAccess::access ( tree::UnrankedTree < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	if ( settings == TreeSettings::Settings::ALPHABET )
-		return handleComponent < tree::GeneralAlphabet > ( tree, operation, argument );
-
-	if ( settings == TreeSettings::Settings::CONTENT && operation == OperationSettings::Settings::GET )
-		return alib::XmlDataFactory::toStdout ( tree.getContent ( ) );
-
-	throw exception::CommonException ( "Component not available" );
-}
-
-auto TreeAccessUnrankedTree = registration::OverloadRegister < TreeAccess, void, tree::UnrankedTree < > > ( TreeAccess::access );
-
-} /* namespace dataAccess */
diff --git a/alib2aux/src/access/TreeAccess.h b/alib2aux/src/access/TreeAccess.h
deleted file mode 100644
index f609b1d4bbd057e4d162179044e81ae107cc67e7..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/TreeAccess.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * TreeAccess.h
- *
- *  Created on: 20. 9. 2014
- *	  Author: Jan Travnicek
- */
-
-#ifndef TREE_ACCESS_H_
-#define TREE_ACCESS_H_
-
-#include <core/multipleDispatch.hpp>
-
-#include "tree/Tree.h"
-#include "tree/TreeFeatures.h"
-
-#include "settings/TreeSettings.h"
-#include "settings/OperationSettings.h"
-#include <set>
-
-namespace dataAccess {
-
-class TreeAccess : public alib::SingleDispatch < TreeAccess, void, tree::TreeBase &, const TreeSettings::Settings &, const OperationSettings::Settings &, ext::deque < sax::Token > & > {
-public:
-	static void access ( tree::Tree & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-
-	static void access ( tree::RankedTree < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-	static void access ( tree::RankedPattern < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-	static void access ( tree::RankedNonlinearPattern < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-	static void access ( tree::UnrankedTree < > & tree, const TreeSettings::Settings & settings, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument );
-};
-
-} /* namespace dataAccess */
-
-#endif /* TREE_ACCESS_H_ */
diff --git a/alib2aux/src/access/common/AccessHelpers.hpp b/alib2aux/src/access/common/AccessHelpers.hpp
deleted file mode 100644
index d1a9b9e71cbc996a49b017835c83363ad9413d35..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/common/AccessHelpers.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * AccessHelpers.h
- *
- *  Created on: 5. 8. 2016
- *	  Author: Jan Travnicek
- */
-
-#ifndef ACCESS_HELPERS_HPP_
-#define ACCESS_HELPERS_HPP_
-
-namespace dataAccess {
-
-template < class Element, class DataType >
-void handleElement ( DataType & data, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	typedef typename std::remove_const < typename std::remove_reference < decltype ( data.template accessComponent < Element > ( ).get ( ) ) >::type >::type ElementDataType;
-
-	if ( operation == OperationSettings::Settings::GET ) {
-		alib::XmlDataFactory::toStdout ( data.template accessComponent < Element > ( ).get ( ) );
-	}
-
-	if ( operation == OperationSettings::Settings::SET ) {
-		ElementDataType symbols = alib::XmlDataFactory::fromTokens ( std::move ( argument ) );
-
-		data.template accessComponent < Element > ( ).set ( std::move ( symbols ) );
-
-		alib::XmlDataFactory::toStdout ( data );
-	}
-
-	if ( operation == OperationSettings::Settings::ADD || operation == OperationSettings::Settings::REMOVE )
-		throw exception::CommonException ( "Invalid access operation" );
-}
-
-template < class Component, class DataType >
-void handleComponent ( DataType & data, const OperationSettings::Settings & operation, ext::deque < sax::Token > & argument ) {
-	typedef typename std::remove_const < typename std::remove_reference < decltype ( data.template accessComponent < Component > ( ).get ( ) ) >::type >::type ComponentDataType;
-
-	if ( operation == OperationSettings::Settings::GET ) {
-		alib::XmlDataFactory::toStdout ( data.template accessComponent < Component > ( ).get ( ) );
-	}
-
-	if ( operation == OperationSettings::Settings::ADD ) {
-		ComponentDataType symbols = alib::XmlDataFactory::fromTokens ( std::move ( argument ) );
-
-		data.template accessComponent < Component > ( ).add ( std::move ( symbols ) );
-
-		alib::XmlDataFactory::toStdout ( data );
-	}
-
-	if ( operation == OperationSettings::Settings::SET ) {
-		ComponentDataType symbols = alib::XmlDataFactory::fromTokens ( std::move ( argument ) );
-
-		data.template accessComponent < Component > ( ).set ( std::move ( symbols ) );
-
-		alib::XmlDataFactory::toStdout ( data );
-	}
-
-	if ( operation == OperationSettings::Settings::REMOVE ) {
-		ComponentDataType symbols = alib::XmlDataFactory::fromTokens ( std::move ( argument ) );
-
-		data.template accessComponent < Component > ( ).remove ( std::move ( symbols ) );
-
-		alib::XmlDataFactory::toStdout ( data );
-	}
-}
-
-} /* namespace dataAccess */
-
-#endif /* ACCESS_HELPERS_HPP_ */
diff --git a/alib2aux/src/access/settings/ExceptionSettings.h b/alib2aux/src/access/settings/ExceptionSettings.h
deleted file mode 100644
index 3d8274e82b5bee57201268ed6466f8a8d36df852..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/settings/ExceptionSettings.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ExceptionSettings.h
- *
- *  Created on: 10. 7. 2016
- *	  Author: Jan Travnicek
- */
-
-#ifndef __EXCEPTION_SETTINGS_H__
-#define __EXCEPTION_SETTINGS_H__
-
-#include "SettingsHelper.h"
-
-namespace dataAccess {
-
-class ExceptionEnum {
-public:
-	enum class Settings {
-		CAUSE, BACKTRACE, COMMAND, __MAX__
-	};
-
-	static std::string toString ( ExceptionEnum::Settings settings ) {
-		switch ( settings ) {
-		case ExceptionEnum::Settings::CAUSE:
-			return "cause";
-
-		case ExceptionEnum::Settings::BACKTRACE:
-			return "backtrace";
-
-		case ExceptionEnum::Settings::COMMAND:
-			return "command";
-
-		case ExceptionEnum::Settings::__MAX__:
-			throw exception::CommonException ( "Invalid enumeration" );
-		}
-		throw exception::CommonException ( "Invalid enumeration" );
-	}
-
-};
-
-class ExceptionSettings : public ExceptionEnum, public EnumClassHelper < ExceptionEnum > {
-};
-
-} /* namespace dataAccess */
-
-#endif /* __EXCEPTION_SETTINGS_H__ */
diff --git a/alib2aux/src/access/settings/OperationSettings.h b/alib2aux/src/access/settings/OperationSettings.h
deleted file mode 100644
index 0913d8c8bced85500d4fc8d0b456d34a9d32c71b..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/settings/OperationSettings.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * OperationSettings.h
- *
- *  Created on: 26. 3. 2014
- *	  Author: Jan Travnicek
- */
-
-#ifndef __OPERATION_SETTINGS_H__
-#define __OPERATION_SETTINGS_H__
-
-#include "SettingsHelper.h"
-
-namespace dataAccess {
-
-class OperationEnum {
-public:
-	enum class Settings {
-		GET, SET, ADD, REMOVE, __MAX__
-	};
-
-	static std::string toString ( OperationEnum::Settings settings ) {
-		switch ( settings ) {
-		case OperationEnum::Settings::GET:
-			return "get";
-
-		case OperationEnum::Settings::SET:
-			return "set";
-
-		case OperationEnum::Settings::ADD:
-			return "add";
-
-		case OperationEnum::Settings::REMOVE:
-			return "remove";
-
-		case OperationEnum::Settings::__MAX__:
-			throw exception::CommonException ( "Invalid enumeration" );
-		}
-		throw exception::CommonException ( "Invalid enumeration" );
-	}
-
-};
-
-class OperationSettings : public OperationEnum, public EnumClassHelper < OperationEnum > {
-};
-
-} /* namespace dataAccess */
-
-#endif /* __OPERATION_SETTINGS_H__ */
diff --git a/alib2aux/src/access/settings/PairSetSettings.h b/alib2aux/src/access/settings/PairSetSettings.h
deleted file mode 100644
index 5721e87a737d83dcfa726c9e195257ed915ead07..0000000000000000000000000000000000000000
--- a/alib2aux/src/access/settings/PairSetSettings.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * PairSetSettings.h
- *
- *  Created on: 26. 3. 2014
- *	  Author: Jan Travnicek
- */
-
-#ifndef __PAIR_SET_SETTINGS_H__
-#define __PAIR_SET_SETTINGS_H__
-
-#include "SettingsHelper.h"
-
-namespace dataAccess {
-
-class PairSetEnum {
-public:
-	enum class Settings {
-		FIRST, SECOND, __MAX__
-	};
-
-	static std::string toString ( PairSetEnum::Settings settings ) {
-		switch ( settings ) {
-		case PairSetEnum::Settings::FIRST:
-			return "first";
-
-		case PairSetEnum::Settings::SECOND:
-			return "second";
-
-		case PairSetEnum::Settings::__MAX__:
-			throw exception::CommonException ( "Invalid enumeration" );
-		}
-		throw exception::CommonException ( "Invalid enumeration" );
-	}
-
-};
-
-class PairSetSettings : public PairSetEnum, public EnumClassHelper < PairSetEnum > {
-};
-
-} /* namespace dataAccess */
-
-#endif /* __PAIR_SET_SETTINGS_H__ */
diff --git a/tests.aarbology.sh b/tests.aarbology.sh
index 54638e2655f7327e692e0fb7736b75cb59de8778..92d264058a5dbedddfc856c66d422e9bbf983dfb 100755
--- a/tests.aarbology.sh
+++ b/tests.aarbology.sh
@@ -424,30 +424,30 @@ runTestPattern "Exact Pattern Matching Using Compressed Bit Vectors (PrefixRanke
 
 runTestPatternEnds "Exact Pattern Matching Using Compressed Bit Vectors (PrefixRanked)" "./aarbology2 -a compressedBitParallelIndex -s <(./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) | ./aquery2 -q compressedBitParallelismPatterns -i - -p <( ./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
 
-runTestPatternEnds "Exact Pattern Matching Automaton (PrefixRanked)" "./aarbology2 -a exactPatternMatchingAutomaton -p <(./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <( ./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\" ) ) ) | ./adeterminize2 | ./arun2 -t occurrences -a - -i <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size"
+runTestPatternEnds "Exact Pattern Matching Automaton (PrefixRanked)" "./aarbology2 -a exactPatternMatchingAutomaton -p <(./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <( ./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\" ) ) ) | ./adeterminize2 | ./arun2 -t occurrences -a - -i <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size"
 
 RAND_SIZE_SUBJECT=120
 runTestPatternEnds "Exact Tree Pattern Automaton (PrefixRanked)" "./aarbology2 -a exactTreePatternAutomaton -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -w <( ./aaccess2 --tree subtree_wildcard -o get -i \"\$PATTERN_FILE\" ) | ./adeterminize2 | ./arun2 -t result -i <(./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size"
 RAND_SIZE_SUBJECT=80
-runTestNonlinearPatternEnds "Exact Nonlinear Tree Pattern Automaton (PrefixRanked)" "./aarbology2 -a exactNonlinearTreePatternAutomaton -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -w <( ./aaccess2 --tree subtree_wildcard -o get -i \"\$PATTERN_FILE\" ) -n <( ./aaccess2 --tree nonlinear_variables -o get -i \"\$PATTERN_FILE\" ) | ./adeterminize2 | ./arun2 -t result -i <(./acast2 -t PrefixRankedNonlinearPattern -i \"\$PATTERN_FILE\" | ./acast2 -t LinearString ) -f <(echo '<Set />') | ./aaccess2 --pairSet first -o get | ./astat2 -p size"
+runTestNonlinearPatternEnds "Exact Nonlinear Tree Pattern Automaton (PrefixRanked)" "./aarbology2 -a exactNonlinearTreePatternAutomaton -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -w <( ./aaccess2 --tree subtree_wildcard -o get -i \"\$PATTERN_FILE\" ) -n <( ./aaccess2 --tree nonlinear_variables -o get -i \"\$PATTERN_FILE\" ) | ./adeterminize2 | ./arun2 -t result -i <(./acast2 -t PrefixRankedNonlinearPattern -i \"\$PATTERN_FILE\" | ./acast2 -t LinearString ) -f <(echo '<Set />') | ./aql2 -q 'execute < :pair_set #stdin | dataAccess::PairSetFirst - >#stdout' | ./astat2 -p size"
 
 
 RAND_SIZE_SUBJECT=1000
-runTestSubtree "Exact Boyer Moore Horspool (Subtree PrefixRankedBar)" "./aarbology2 -a boyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarTree -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestSubtree "Exact Boyer Moore Horspool (Subtree PrefixRankedBar)" "./aarbology2 -a boyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarTree -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
 runTestSubtree "Exact Subtree Automaton (Tree)" "./arun2 -t occurrences -a <(./aarbology2 -a exactSubtreeMatchingAutomaton -p \"\$PATTERN_FILE\" | ./adeterminize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
 runTestSubtree "Exact Minimized Subtree Automaton (Tree)" "./arun2 -t occurrences -a <(./aarbology2 -a exactSubtreeMatchingAutomaton -p \"\$PATTERN_FILE\" | ./adeterminize2 | ./atrim2 -r -u | ./aminimize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
 
-runTestPattern "Exact Boyer Moore Horspool (Pattern PrefixRankedBar)" "./aarbology2 -a boyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Pattern Match (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a exactPatternMatch -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Boyer Moore Horspool (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a boyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Reversed Boyer Moore Horspool (Pattern PrefixRankedBar)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Reversed Boyer Moore Horspool (Pattern PrefixRanked)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Reversed Boyer Moore Horspool (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Reversed Boyer Moore Horspool (NonlinearPattern PrefixRanked)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestPattern "Exact Boyer Moore Horspool (Pattern PrefixRankedBar)" "./aarbology2 -a boyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestNonlinearPattern "Exact Pattern Match (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a exactPatternMatch -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestNonlinearPattern "Exact Boyer Moore Horspool (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a boyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestPattern "Exact Reversed Boyer Moore Horspool (Pattern PrefixRankedBar)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestPattern "Exact Reversed Boyer Moore Horspool (Pattern PrefixRanked)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestNonlinearPattern "Exact Reversed Boyer Moore Horspool (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestNonlinearPattern "Exact Reversed Boyer Moore Horspool (NonlinearPattern PrefixRanked)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
 runTestPattern "Exact Knuth Morris Pratt (Pattern PrefixRankedBar)" "./aarbology2 -a knuthMorrisPratt -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
 runTestPattern "Exact Knuth Morris Pratt (Pattern PrefixRanked)" "./aarbology2 -a knuthMorrisPratt -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-runTestPattern "Exact Dead Zone Using Bad Character Shift And Border Array (Pattern PrefixRanked)" "./aarbology2 -a deadZoneUsingBadCharacterShiftAndBorderArray -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Dead Zone Using Bad Character Shift And Border Array (Pattern PrefixRankedBar)" "./aarbology2 -a deadZoneUsingBadCharacterShiftAndBorderArray -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestPattern "Exact Dead Zone Using Bad Character Shift And Border Array (Pattern PrefixRanked)" "./aarbology2 -a deadZoneUsingBadCharacterShiftAndBorderArray -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
+runTestPattern "Exact Dead Zone Using Bad Character Shift And Border Array (Pattern PrefixRankedBar)" "./aarbology2 -a deadZoneUsingBadCharacterShiftAndBorderArray -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
 
-runTestPattern "Exact Pattern Matching Automaton (Pattern Tree)" "./arun2 -t occurrences -a <(./aarbology2 -a exactPatternMatchingAutomaton -p <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\")) | ./adeterminize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
-runTestPattern "Exact Pattern Matching Automaton (PrefixRankedBar)" "./aarbology2 -a exactPatternMatchingAutomaton -p <(./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -a <( ./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\" ) ) ) | ./adeterminize2 | ./arun2 -t occurrences -a - -i <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size"
+runTestPattern "Exact Pattern Matching Automaton (Pattern Tree)" "./arun2 -t occurrences -a <(./aarbology2 -a exactPatternMatchingAutomaton -p <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\")) | ./adeterminize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
+runTestPattern "Exact Pattern Matching Automaton (PrefixRankedBar)" "./aarbology2 -a exactPatternMatchingAutomaton -p <(./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <( ./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\" ) ) ) | ./adeterminize2 | ./arun2 -t occurrences -a - -i <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size"
diff --git a/tests.astringology.sh b/tests.astringology.sh
index da14ddd99fed4e809906bd90954595e1d046cc93..56110840da3fe6905ac64190f6d1b10034bf54bb 100755
--- a/tests.astringology.sh
+++ b/tests.astringology.sh
@@ -214,13 +214,13 @@ function runTest {
 
 runTest "DAWG Factors" "./astringology2 -a suffixAutomaton -s \"\$SUBJECT_FILE\" | ./aquery2 -q suffixAutomatonFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
 runTest "BNDM Matcher" "./astringology2 -a bndmMatcher -p \"\$PATTERN_FILE\" | ./astringology2 -a bndmOccurrences -p - -s \"\$SUBJECT_FILE\" | ./astat2 -p size"
-runTest "Exact Boyer Moore" "./astringology2 -a boyerMoore -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
+runTest "Exact Boyer Moore" "./astringology2 -a boyerMoore -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
 runTest "Compressed Bit Parallelism Factors" "./astringology2 -a compressedBitParallelIndex -s \"\$SUBJECT_FILE\" | ./aquery2 -q compressedBitParallelismFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
 runTest "Bit Parallelism Factors" "./astringology2 -a bitParallelIndex -s \"\$SUBJECT_FILE\" | ./aquery2 -q bitParallelismFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
 runTest "Position Heap Factors" "./astringology2 -a positionHeap -s \"\$SUBJECT_FILE\" | ./aquery2 -q positionHeapFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
 runTest "Suffix Array Factors" "./astringology2 -a suffixArray -s \"\$SUBJECT_FILE\" | ./aquery2 -q suffixArrayFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
 runTest "Suffix Trie Factors" "./astringology2 -a suffixTrie -s \"\$SUBJECT_FILE\" | ./aquery2 -q suffixTrieFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-runTest "Exact Boyer Moore Horspool" "./astringology2 -a boyerMooreHorspool -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
-runTest "Exact Reversed Boyer Moore Horspool" "./astringology2 -a reversedBoyerMooreHorspool -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
-runTest "Exact Matching Automaton" "./arun2 -t occurrences -a <(./astringology2 -a exactMatchingAutomaton -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./adeterminize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
-runTest "Exact Dead Zone Using Bad Character Shift" "./astringology2 -a deadZoneUsingBadCharacterShift -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -a <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
+runTest "Exact Boyer Moore Horspool" "./astringology2 -a boyerMooreHorspool -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
+runTest "Exact Reversed Boyer Moore Horspool" "./astringology2 -a reversedBoyerMooreHorspool -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
+runTest "Exact Matching Automaton" "./arun2 -t occurrences -a <(./astringology2 -a exactMatchingAutomaton -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./adeterminize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
+runTest "Exact Dead Zone Using Bad Character Shift" "./astringology2 -a deadZoneUsingBadCharacterShift -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"