diff --git a/alib2data/src/tree/TreeFeatures.h b/alib2data/src/tree/TreeFeatures.h
deleted file mode 100644
index 28cbc533ea7900236acdcbc6a024697cd26b92a8..0000000000000000000000000000000000000000
--- a/alib2data/src/tree/TreeFeatures.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * TreeFeatures.h
- *
- *  Created on: Nov 16, 2014
- *      Author: Stepan Plachy
- */
-
-#ifndef TREE_FEATURES_H_
-#define TREE_FEATURES_H_
-
-#include <common/DefaultSymbolType.h>
-#include <common/DefaultRankType.h>
-
-namespace tree {
-
-class Tree;
-class TreeBase;
-
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class RankedTree;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class RankedPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class RankedNonlinearPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedTree;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedBarTree;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedNonlinearPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedBarPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PrefixRankedBarNonlinearPattern;
-template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
-class PostfixRankedTree;
-template < class SymbolType = DefaultSymbolType >
-class UnrankedTree;
-template < class SymbolType = DefaultSymbolType >
-class UnrankedPattern;
-template < class SymbolType = DefaultSymbolType >
-class UnrankedNonlinearPattern;
-template < class SymbolType = DefaultSymbolType >
-class PrefixBarTree;
-
-} /* namespace tree */
-
-#endif /* TREE_FEATURES_H_ */
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.h b/alib2data/src/tree/ranked/PostfixRankedTree.h
index 1dc8e04963f11691bec85908c58edd6469bd1659..5940556bbd7c002901b57d8a75aa72f81f7f111a 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.h
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.h
@@ -24,6 +24,16 @@
 #ifndef POSTFIX_RANKED_TREE_H_
 #define POSTFIX_RANKED_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PostfixRankedTree;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,16 +45,17 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -206,12 +217,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PostfixRankedTree < SymbolType, RankType >::PostfixRankedTree ( ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PostfixRankedTree, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index fbe4ea5311f55f32df0b26920fb50cb51ef074b8..51d97524a889dc8ea77b27abb010122dd48fe1e2 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_
 #define PREFIX_RANKED_BAR_NONLINEAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedBarNonlinearPattern;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,20 +45,25 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/BarSymbol.h>
 #include <alphabet/VariablesBarSymbol.h>
 #include <alphabet/WildcardSymbol.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "PrefixRankedBarTree.h"
+#include "PrefixRankedBarPattern.h"
+#include "RankedTree.h"
+#include "RankedPattern.h"
+#include "RankedNonlinearPattern.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -374,16 +389,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "PrefixRankedBarTree.h"
-#include "PrefixRankedBarPattern.h"
-#include "RankedTree.h"
-#include "RankedPattern.h"
-#include "RankedNonlinearPattern.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedBarNonlinearPattern < SymbolType, RankType >::PrefixRankedBarNonlinearPattern ( ext::set < common::ranked_symbol < SymbolType, RankType > > bars, common::ranked_symbol < SymbolType, RankType > variablesBar, common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedBarNonlinearPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, NonlinearAlphabet, BarSymbols >, common::ranked_symbol < SymbolType, RankType >, component::Value, std::tuple < SubtreeWildcard, VariablesBarSymbol > > ( std::move ( alphabet ), std::move ( nonlinearVariables ), std::move ( bars ), std::move ( subtreeWildcard ), std::move ( variablesBar ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index 342800c38c7347306c70e5032c6d9b63c20ebf60..2290109be675d53c8453c0f59fef25e3d7c9972a 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_BAR_PATTERN_H_
 #define PREFIX_RANKED_BAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedBarPattern;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,20 +45,22 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/BarSymbol.h>
 #include <alphabet/VariablesBarSymbol.h>
 #include <alphabet/WildcardSymbol.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedPattern.h"
+#include "PrefixRankedBarTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -303,13 +315,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedPattern.h"
-#include "PrefixRankedBarTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedBarPattern < SymbolType, RankType >::PrefixRankedBarPattern ( ext::set < common::ranked_symbol < SymbolType, RankType > > bars, common::ranked_symbol < SymbolType, RankType > variablesBar, common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedBarPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, BarSymbols >, common::ranked_symbol < SymbolType, RankType >, component::Value, std::tuple < SubtreeWildcard, VariablesBarSymbol > > ( std::move ( alphabet ), std::move ( bars ), std::move ( subtreeWildcard ), std::move ( variablesBar ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index 8273f36475784b9e9eb11c792633a7c2a5f973fe..e9b3080caa822d43c70c5d66091be32350332b73 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_BAR_TREE_H_
 #define PREFIX_RANKED_BAR_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedBarTree;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,18 +45,19 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/BarSymbol.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -249,12 +260,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedBarTree < SymbolType, RankType >::PrefixRankedBarTree ( ext::set < common::ranked_symbol < SymbolType, RankType > > bars, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedBarTree, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, BarSymbols > > ( std::move ( alphabet ), std::move ( bars ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index c9fc012a9a8d898f970d2d7db6354eab7404705e..762b8b5302f09bca337f81cc784841201f3a420d 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_NONLINEAR_PATTERN_H_
 #define PREFIX_RANKED_NONLINEAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedNonlinearPattern;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,17 +45,22 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/WildcardSymbol.h>
 
 #include <core/normalize.hpp>
 
 #include <string/LinearString.h>
+#include <tree/common/TreeNormalize.h>
+
+#include "PrefixRankedTree.h"
+#include "PrefixRankedPattern.h"
+#include "RankedTree.h"
+#include "RankedPattern.h"
+#include "RankedNonlinearPattern.h"
 
 namespace tree {
 
@@ -288,16 +303,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "PrefixRankedTree.h"
-#include "PrefixRankedPattern.h"
-#include "RankedTree.h"
-#include "RankedPattern.h"
-#include "RankedNonlinearPattern.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedNonlinearPattern < SymbolType, RankType >::PrefixRankedNonlinearPattern ( common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedNonlinearPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, NonlinearAlphabet >, common::ranked_symbol < SymbolType, RankType >, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( nonlinearVariables ), std::move ( subtreeWildcard ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index 4336b3c93a457598bf2b6094f9a0f788c7a9f873..dac08544000b8e6233e2057c6bb9e6a99e3ccc3a 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_PATTERN_H_
 #define PREFIX_RANKED_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedPattern;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,18 +45,20 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <alphabet/WildcardSymbol.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedPattern.h"
+#include "PrefixRankedTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -237,13 +249,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedPattern.h"
-#include "PrefixRankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedPattern < SymbolType, RankType >::PrefixRankedPattern ( common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet, common::ranked_symbol < SymbolType, RankType >, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( subtreeWildcard ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index a53b6604697d7c61cffc5b70afab374753d23a84..be4c8fdcf22977c92e2cd6e047bfb325453de9dd 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -24,6 +24,16 @@
 #ifndef PREFIX_RANKED_TREE_H_
 #define PREFIX_RANKED_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class PrefixRankedTree;
+
+} /* namespace tree */
+
 #include <alib/set>
 #include <alib/vector>
 #include <alib/tree>
@@ -35,15 +45,16 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
 
 #include <string/LinearString.h>
 
+#include "RankedTree.h"
+
 namespace tree {
 
 class GeneralAlphabet;
@@ -212,12 +223,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "RankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 PrefixRankedTree < SymbolType, RankType >::PrefixRankedTree ( ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::vector < common::ranked_symbol < SymbolType, RankType > > data ) : core::Components < PrefixRankedTree, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index 85e7b80cbf424c8079890551705301b6d3e3291a..8280c0ae2bc69b4f0a1f0cb33bf1feb960a18436 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -24,6 +24,16 @@
 #ifndef RANKED_NONLINEAR_PATTERN_H_
 #define RANKED_NONLINEAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class RankedNonlinearPattern;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -35,13 +45,14 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "../unranked/UnrankedNonlinearPattern.h"
 
 namespace tree {
 
@@ -260,12 +271,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../unranked/UnrankedNonlinearPattern.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 RankedNonlinearPattern < SymbolType, RankType >::RankedNonlinearPattern ( common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > nonlinearVariables, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::tree < common::ranked_symbol < SymbolType, RankType > > pattern ) : core::Components < RankedNonlinearPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, std::tuple < GeneralAlphabet, NonlinearAlphabet >, common::ranked_symbol < SymbolType, RankType >, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( nonlinearVariables ), std::move ( subtreeWildcard ) ), m_content ( std::move ( pattern ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index 20cf26a31466f1ab072f37f4770e4a887c75fb4d..46d6c27d2937a9cbf7c8743dbd6707903573b235 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -24,6 +24,16 @@
 #ifndef RANKED_PATTERN_H_
 #define RANKED_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class RankedPattern;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -35,13 +45,14 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeException.h>
+#include <tree/TreeBase.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "../unranked/UnrankedPattern.h"
 
 namespace tree {
 
@@ -230,12 +241,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../unranked/UnrankedPattern.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 RankedPattern < SymbolType, RankType >::RankedPattern ( common::ranked_symbol < SymbolType, RankType > subtreeWildcard, ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::tree < common::ranked_symbol < SymbolType, RankType > > pattern ) : core::Components < RankedPattern, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet, common::ranked_symbol < SymbolType, RankType >, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( subtreeWildcard ) ), m_content ( std::move ( pattern ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index f9a09bc1c39a7b43965735c16d2fb4d9c9c428dc..3e211ba48fccce5d689d70f1fc040e06a452e738 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -24,6 +24,16 @@
 #ifndef RANKED_TREE_H_
 #define RANKED_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+#include <common/DefaultRankType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType, class RankType = DefaultRankType >
+class RankedTree;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -35,14 +45,15 @@
 #include <object/UniqueObject.h>
 #include <common/ranked_symbol.hpp>
 
-#include "../TreeFeatures.h"
-#include "../TreeBase.h"
-#include "../TreeException.h"
-#include "../common/TreeAuxiliary.h"
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
 
+#include <core/normalize.hpp>
 #include <tree/common/TreeNormalize.h>
 
-#include <core/normalize.hpp>
+#include "../unranked/UnrankedTree.h"
+#include "PostfixRankedTree.h"
 
 namespace tree {
 
@@ -216,13 +227,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../unranked/UnrankedTree.h"
-#include "PostfixRankedTree.h"
-
-namespace tree {
-
 template < class SymbolType, class RankType >
 RankedTree < SymbolType, RankType >::RankedTree ( ext::set < common::ranked_symbol < SymbolType, RankType > > alphabet, ext::tree < common::ranked_symbol < SymbolType, RankType > > tree ) : core::Components < RankedTree, ext::set < common::ranked_symbol < SymbolType, RankType > >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ), m_content ( std::move ( tree ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index f1c803cb028b2c60c8f4b721f90f67ceff8860ad..38ed95cf4f50d195969be90f43dc4ba61803b0f2 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -24,6 +24,15 @@
 #ifndef PREFIX_BAR_TREE_H_
 #define PREFIX_BAR_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType >
+class PrefixBarTree;
+
+} /* namespace tree */
+
 #include <sstream>
 #include <alib/algorithm>
 #include <alib/deque>
@@ -34,15 +43,16 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../TreeFeatures.h"
-#include "../TreeBase.h"
-#include "../TreeException.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
-
 #include <alphabet/BarSymbol.h>
 
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
+
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "UnrankedTree.h"
 
 #include <string/LinearString.h>
 
@@ -58,7 +68,7 @@ class BarSymbol;
  * The bars represent end mark of all subtrees in the notation.
  *
  * \details
- * T = (A, B \in A, C),
+ * T = ( A, B \in A, C ),
  * A (Alphabet) = finite set of unranked symbols,
  * B (Bar) = unranked symbol representing bar,
  * C (Content) = linear representation of the tree content
@@ -238,12 +248,6 @@ public:
 	}
 };
 
-} /* namespace tree */
-
-#include "UnrankedTree.h"
-
-namespace tree {
-
 template < class SymbolType >
 PrefixBarTree < SymbolType >::PrefixBarTree ( SymbolType bar, ext::set < SymbolType > alphabet, ext::vector < SymbolType > data ) : core::Components < PrefixBarTree, ext::set < SymbolType >, component::Set, GeneralAlphabet, SymbolType, component::Value, BarSymbol > ( std::move ( alphabet ), std::move ( bar ) ) {
 	setContent ( std::move ( data ) );
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index 7321f6db9b7cb706d28c140d2da82f5ce13c89d7..26604dc827757ca46a1f61c7dc3474450dc35019 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -24,6 +24,15 @@
 #ifndef UNRANKED_NONLINEAR_PATTERN_H_
 #define UNRANKED_NONLINEAR_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType >
+class UnrankedNonlinearPattern;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -34,13 +43,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include <tree/ranked/RankedNonlinearPattern.h>
 
 namespace tree {
 
@@ -53,7 +63,7 @@ class NonlinearAlphabet;
  * Nonlinear tree pattern represented in its natural representation. The representation is so called unranked, therefore it consists of unranked symbols. Additionally the pattern contains a special wildcard symbol representing any subtree and nonlinear variables each to represent same subtree (in the particular occurrence in a tree).
  *
  * \details
- * T = (A, C, W \in ( A \minus B ), V \in ( A \minus B) ),
+ * T = ( A, C, W \in A, V \in A ),
  * A (Alphabet) = finite set of symbols,
  * C (Content) = pattern in its natural representation
  * W (Wildcard) = special symbol representing any subtree
@@ -250,12 +260,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../ranked/RankedNonlinearPattern.h"
-
-namespace tree {
-
 template < class SymbolType >
 UnrankedNonlinearPattern < SymbolType >::UnrankedNonlinearPattern ( SymbolType subtreeWildcard, ext::set < SymbolType > nonlinearVariables, ext::set < SymbolType > alphabet, ext::tree < SymbolType > pattern ) : core::Components < UnrankedNonlinearPattern, ext::set < SymbolType >, component::Set, std::tuple < GeneralAlphabet, NonlinearAlphabet >, SymbolType, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( nonlinearVariables ), std::move ( subtreeWildcard ) ), m_content ( std::move ( pattern ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index 1fd8290864c8eb23e2ee24a831aa1de30c4dfe50..cf2995cb9f0aa8693bba6530847d0abd7dba4cc7 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -24,6 +24,15 @@
 #ifndef UNRANKED_PATTERN_H_
 #define UNRANKED_PATTERN_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType >
+class UnrankedPattern;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -34,13 +43,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../TreeFeatures.h"
-#include "../TreeException.h"
-#include "../TreeBase.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "../ranked/RankedPattern.h"
 
 namespace tree {
 
@@ -52,7 +62,7 @@ class SubtreeWildcard;
  * Tree pattern represented in its natural representation. The representation is so called unranked, therefore it consists of unranked symbols. Additionally the pattern contains a special wildcard symbol representing any subtree and nonlinear variables each to represent same subtree (in the particular occurrence in a tree).
  *
  * \details
- * T = (A, C, W \in ( A \minus B ), V \in ( A \minus B) ),
+ * T = ( A, C, W \in A, V \in A ),
  * A (Alphabet) = finite set of symbols,
  * C (Content) = pattern in its natural representation
  * W (Wildcard) = special symbol representing any subtree
@@ -221,12 +231,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../ranked/RankedPattern.h"
-
-namespace tree {
-
 template < class SymbolType >
 UnrankedPattern < SymbolType >::UnrankedPattern ( SymbolType subtreeWildcard, ext::set < SymbolType > alphabet, ext::tree < SymbolType > pattern ) : core::Components < UnrankedPattern, ext::set < SymbolType >, component::Set, GeneralAlphabet, SymbolType, component::Value, SubtreeWildcard > ( std::move ( alphabet ), std::move ( subtreeWildcard ) ), m_content ( std::move ( pattern ) ) {
 	checkAlphabet ( m_content );
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index 35c77d48d6e526d915d3bb394b54ff12b7203ba3..86c3c9b6c96651b1cc42f2ee481778b7bf65ef7f 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -24,6 +24,15 @@
 #ifndef UNRANKED_TREE_H_
 #define UNRANKED_TREE_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace tree {
+
+template < class SymbolType = DefaultSymbolType >
+class UnrankedTree;
+
+} /* namespace tree */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/tree>
@@ -34,13 +43,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 
-#include "../TreeFeatures.h"
-#include "../TreeBase.h"
-#include "../TreeException.h"
-#include "../common/TreeAuxiliary.h"
-#include <tree/common/TreeNormalize.h>
+#include <tree/TreeBase.h>
+#include <tree/TreeException.h>
+#include <tree/common/TreeAuxiliary.h>
 
 #include <core/normalize.hpp>
+#include <tree/common/TreeNormalize.h>
+
+#include "../ranked/RankedTree.h"
 
 namespace tree {
 
@@ -51,7 +61,7 @@ class GeneralAlphabet;
  * Tree pattern represented in its natural representation. The representation is so called unranked, therefore it consists of unranked symbols. Additionally the pattern contains a special wildcard symbol representing any subtree and nonlinear variables each to represent same subtree (in the particular occurrence in a tree).
  *
  * \details
- * T = (A, C, W \in ( A \minus B ) ),
+ * T = ( A, C, W \in A ),
  * A (Alphabet) = finite set of symbols,
  * C (Content) = pattern in its natural representation
  * W (Wildcard) = special symbol representing any subtree
@@ -199,12 +209,6 @@ public:
 	void nicePrint ( std::ostream & os ) const;
 };
 
-} /* namespace tree */
-
-#include "../ranked/RankedTree.h"
-
-namespace tree {
-
 template < class SymbolType >
 UnrankedTree < SymbolType >::UnrankedTree ( ext::set < SymbolType > alphabet, ext::tree < SymbolType > tree ) : core::Components < UnrankedTree, ext::set < SymbolType >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ), m_content ( std::move ( tree ) ) {
 	checkAlphabet ( m_content );