diff --git a/alib2aux/src/compare/PrimitiveCompare.cpp b/alib2aux/src/compare/PrimitiveCompare.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f5048063d512a327f2aad5293b406a0b3602c4a6
--- /dev/null
+++ b/alib2aux/src/compare/PrimitiveCompare.cpp
@@ -0,0 +1,17 @@
+/*
+ * PrimitiveCompare.cpp
+ *
+ *  Created on: Feb 4, 2019
+ *      Author: Tomas Pecka
+ */
+
+#include "PrimitiveCompare.h"
+#include <registration/AlgoRegistration.hpp>
+
+#include <string/LinearString.h>
+
+namespace compare {
+
+auto PrimitiveCompareUnsignedInt  = registration::AbstractRegister < PrimitiveCompare, bool, const unsigned int &, const unsigned int & > ( PrimitiveCompare::compare );
+
+} /* namespace compare */
diff --git a/alib2aux/src/compare/PrimitiveCompare.h b/alib2aux/src/compare/PrimitiveCompare.h
new file mode 100644
index 0000000000000000000000000000000000000000..eeeb92b818bfc17df2fe023743f1d9671aedcb0d
--- /dev/null
+++ b/alib2aux/src/compare/PrimitiveCompare.h
@@ -0,0 +1,25 @@
+/*
+ * PrimitiveCompare.h
+ *
+ *  Created on: Feb 4, 2019
+ *      Author: Tomas Pecka
+ */
+
+#ifndef PRIMITIVE_COMPARE_H_
+#define PRIMITIVE_COMPARE_H_
+
+#include <alib/set>
+
+namespace compare {
+
+class PrimitiveCompare {
+public:
+	template < class T >
+	static bool compare ( const T & a, const T & b ) {
+		return a == b;
+	}
+};
+
+} /* namespace compare */
+
+#endif /* PRIMITIVE_COMPARE_H_ */
diff --git a/alib2aux/src/compare/SetCompare.cpp b/alib2aux/src/compare/SetCompare.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..05a58405a2200a0e6a54e4b6458c29a5bd72527d
--- /dev/null
+++ b/alib2aux/src/compare/SetCompare.cpp
@@ -0,0 +1,18 @@
+/*
+ * SetCompare.cpp
+ *
+ *  Created on: Jna 14, 2019
+ *      Author: Tomas Pecka
+ */
+
+#include "SetCompare.h"
+#include <registration/AlgoRegistration.hpp>
+
+#include <string/LinearString.h>
+
+namespace compare {
+
+auto SetCompareLinearString = registration::AbstractRegister < SetCompare, bool, const ext::set < string::LinearString < > > &, const ext::set < string::LinearString < > > & > ( SetCompare::compare );
+auto SetCompareUnsignedInt  = registration::AbstractRegister < SetCompare, bool, const ext::set < unsigned > &, const ext::set < unsigned > & > ( SetCompare::compare );
+
+} /* namespace compare */
diff --git a/alib2aux/src/compare/SetCompare.h b/alib2aux/src/compare/SetCompare.h
new file mode 100644
index 0000000000000000000000000000000000000000..176285965d3235093a16c4a8bcf858f211e62e07
--- /dev/null
+++ b/alib2aux/src/compare/SetCompare.h
@@ -0,0 +1,25 @@
+/*
+ * SetCompare.h
+ *
+ *  Created on: Jan 14, 2019
+ *      Author: Tomas Pecka
+ */
+
+#ifndef SET_COMPARE_H_
+#define SET_COMPARE_H_
+
+#include <alib/set>
+
+namespace compare {
+
+class SetCompare {
+public:
+	template < class T >
+	static bool compare ( const ext::set < T > & a, const ext::set < T > & b ) {
+		return a == b;
+	}
+};
+
+} /* namespace compare */
+
+#endif /* SET_COMPARE_H_ */
diff --git a/alib2aux/src/compare/TreeCompare.cpp b/alib2aux/src/compare/TreeCompare.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0cfc5e5549939b35b844291ffa4da460262e635b
--- /dev/null
+++ b/alib2aux/src/compare/TreeCompare.cpp
@@ -0,0 +1,17 @@
+/*
+ * TreeCompare.cpp
+ *
+ *  Created on: Feb 9, 2019
+ *      Author: Tomas Pecka
+ */
+
+#include "TreeCompare.h"
+#include <registration/AlgoRegistration.hpp>
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace compare {
+
+auto TreeCompareRankedTree = registration::AbstractRegister < TreeCompare, bool, const tree::RankedTree < DefaultSymbolType, DefaultRankType> &, const tree::RankedTree < DefaultSymbolType, DefaultRankType > & > ( TreeCompare::compare );
+
+} /* namespace compare */
diff --git a/alib2aux/src/compare/TreeCompare.h b/alib2aux/src/compare/TreeCompare.h
new file mode 100644
index 0000000000000000000000000000000000000000..bc8e0bf671f96b6b6c9fca964dc5faa2059209cc
--- /dev/null
+++ b/alib2aux/src/compare/TreeCompare.h
@@ -0,0 +1,25 @@
+/*
+ * TreeCompare.h
+ *
+ *  Created on: Feb 9, 2019
+ *      Author: Tomas Pecka
+ */
+
+#ifndef TREE_COMPARE_H_
+#define TREE_COMPARE_H_
+
+#include <tree/ranked/RankedTree.h>
+
+namespace compare {
+
+class TreeCompare {
+public:
+	template < class SymbolType, class RankType >
+	static bool compare ( const tree::RankedTree < SymbolType, RankType > & a, const tree::RankedTree < SymbolType, RankType > & b ) {
+		return a == b;
+	}
+};
+
+} /* namespace compare */
+
+#endif /* TREE_COMPARE_H_ */
diff --git a/alib2aux/src/compare/TrieCompare.cpp b/alib2aux/src/compare/TrieCompare.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5d3ede9f112cdecb9b77c3563258633113b0667e
--- /dev/null
+++ b/alib2aux/src/compare/TrieCompare.cpp
@@ -0,0 +1,15 @@
+/*
+ * TrieCompare.cpp
+ *
+ *  Created on: Jan 15, 2019
+ *      Author: Tomas Pecka
+ */
+
+#include "TrieCompare.h"
+#include <registration/AlgoRegistration.hpp>
+
+namespace compare {
+
+auto TrieCompareLinearString = registration::AbstractRegister < TrieCompare, bool, const ext::trie < DefaultSymbolType, bool > &, const ext::trie < DefaultSymbolType, bool > & > ( TrieCompare::compare );
+
+} /* namespace compare */
diff --git a/alib2aux/src/compare/TrieCompare.h b/alib2aux/src/compare/TrieCompare.h
new file mode 100644
index 0000000000000000000000000000000000000000..15514256e3411e3aa89783d641a553e5bcb16919
--- /dev/null
+++ b/alib2aux/src/compare/TrieCompare.h
@@ -0,0 +1,26 @@
+/*
+ * TrieCompare.h
+ *
+ *  Created on: Jan 15, 2019
+ *      Author: Tomas Pecka
+ */
+
+#ifndef TRIE_COMPARE_H_
+#define TRIE_COMPARE_H_
+
+#include <alib/trie>
+#include <common/DefaultSymbolType.h>
+
+namespace compare {
+
+class TrieCompare {
+public:
+	template < class R, class T >
+	static bool compare ( const ext::trie < R, T > & a, const ext::trie < R, T > & b ) {
+		return a == b;
+	}
+};
+
+} /* namespace compare */
+
+#endif /* TRIE_COMPARE_H_ */