diff --git a/alib2algo/src/regexp/glushkov/GlushkovFirst.h b/alib2algo/src/regexp/glushkov/GlushkovFirst.h
index f3f472db226e0090f8d97ab5991263a76cfffb5e..154cab05009e0e25cd9fc3238fa9f2e4a629964e 100644
--- a/alib2algo/src/regexp/glushkov/GlushkovFirst.h
+++ b/alib2algo/src/regexp/glushkov/GlushkovFirst.h
@@ -11,7 +11,6 @@
 #include <alib/set>
 
 #include <regexp/unbounded/UnboundedRegExp.h>
-#include <regexp/RegExpFeatures.h>
 
 #include <regexp/unbounded/UnboundedRegExpAlternation.h>
 #include <regexp/unbounded/UnboundedRegExpConcatenation.h>
diff --git a/alib2algo/src/regexp/glushkov/GlushkovFollow.h b/alib2algo/src/regexp/glushkov/GlushkovFollow.h
index 261c91e180f91f113c1e338bd6859e1eb855b2f4..ee96b1b6824d9d1cbc4a6f12bd083e534dc27bd7 100644
--- a/alib2algo/src/regexp/glushkov/GlushkovFollow.h
+++ b/alib2algo/src/regexp/glushkov/GlushkovFollow.h
@@ -12,7 +12,6 @@
 #include <alib/iterator>
 
 #include <regexp/unbounded/UnboundedRegExp.h>
-#include <regexp/RegExpFeatures.h>
 
 #include <regexp/unbounded/UnboundedRegExpAlternation.h>
 #include <regexp/unbounded/UnboundedRegExpConcatenation.h>
diff --git a/alib2algo/src/regexp/glushkov/GlushkovIndexate.h b/alib2algo/src/regexp/glushkov/GlushkovIndexate.h
index aaea3adb38919fe0a9b2e565f65693a3ff8f81b6..c21d7f465354ad567b4050973a9a8081ebc6beec 100644
--- a/alib2algo/src/regexp/glushkov/GlushkovIndexate.h
+++ b/alib2algo/src/regexp/glushkov/GlushkovIndexate.h
@@ -9,7 +9,6 @@
 #define GLUSHKOV_INDEXATE_H_
 
 #include <regexp/unbounded/UnboundedRegExp.h>
-#include <regexp/RegExpFeatures.h>
 
 #include <regexp/unbounded/UnboundedRegExpAlternation.h>
 #include <regexp/unbounded/UnboundedRegExpConcatenation.h>
diff --git a/alib2algo/src/regexp/glushkov/GlushkovLast.h b/alib2algo/src/regexp/glushkov/GlushkovLast.h
index 50cb57cf1dba2f244f29c24b2447915a6a1e4ea9..d13559fe49d6ebe9c241e801a89c3aaca43d1781 100644
--- a/alib2algo/src/regexp/glushkov/GlushkovLast.h
+++ b/alib2algo/src/regexp/glushkov/GlushkovLast.h
@@ -11,7 +11,6 @@
 #include <alib/set>
 
 #include <regexp/unbounded/UnboundedRegExp.h>
-#include <regexp/RegExpFeatures.h>
 
 #include <regexp/unbounded/UnboundedRegExpAlternation.h>
 #include <regexp/unbounded/UnboundedRegExpConcatenation.h>
diff --git a/alib2algo/src/regexp/glushkov/GlushkovPos.h b/alib2algo/src/regexp/glushkov/GlushkovPos.h
index fbcf18c1dc62810dbffd63a89e038838e7fcb049..18ca52bf7a8582c520683e2d41d7ceb25ff953ca 100644
--- a/alib2algo/src/regexp/glushkov/GlushkovPos.h
+++ b/alib2algo/src/regexp/glushkov/GlushkovPos.h
@@ -9,7 +9,6 @@
 #define GLUSHKOV_POS_H_
 
 #include <regexp/unbounded/UnboundedRegExp.h>
-#include <regexp/RegExpFeatures.h>
 
 #include <regexp/unbounded/UnboundedRegExpAlternation.h>
 #include <regexp/unbounded/UnboundedRegExpConcatenation.h>
diff --git a/alib2data/src/regexp/RegExpFeatures.h b/alib2data/src/regexp/RegExpFeatures.h
deleted file mode 100644
index 2cf6fc27dc0a209c326a446cbc572c4a45bfab87..0000000000000000000000000000000000000000
--- a/alib2data/src/regexp/RegExpFeatures.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * RegExpFeatures.h
- *
- *  Created on: Jun 19, 2014
- *      Author: Jan Travnicek
- */
-
-#ifndef REG_EXP_FEATURES_H_
-#define REG_EXP_FEATURES_H_
-
-#include <common/DefaultSymbolType.h>
-
-namespace regexp {
-
-class RegExp;
-class RegExpBase;
-
-template < class SymbolType = DefaultSymbolType >
-class UnboundedRegExp;
-template < class SymbolType >
-class UnboundedRegExpStructure;
-
-template < class SymbolType >
-class UnboundedRegExpElement;
-template < class SymbolType >
-class UnboundedRegExpAlternation;
-template < class SymbolType >
-class UnboundedRegExpConcatenation;
-template < class SymbolType >
-class UnboundedRegExpIteration;
-template < class SymbolType >
-class UnboundedRegExpSymbol;
-template < class SymbolType >
-class UnboundedRegExpEmpty;
-template < class SymbolType >
-class UnboundedRegExpEpsilon;
-
-
-template < class SymbolType = DefaultSymbolType >
-class FormalRegExp;
-template < class SymbolType >
-class FormalRegExpStructure;
-
-template < class SymbolType >
-class FormalRegExpElement;
-template < class SymbolType >
-class FormalRegExpAlternation;
-template < class SymbolType >
-class FormalRegExpConcatenation;
-template < class SymbolType >
-class FormalRegExpIteration;
-template < class SymbolType >
-class FormalRegExpSymbol;
-template < class SymbolType >
-class FormalRegExpEmpty;
-template < class SymbolType >
-class FormalRegExpEpsilon;
-
-} /* namespace regexp */
-
-#endif /* REG_EXP_FEATURES_H_ */
diff --git a/alib2data/src/regexp/formal/FormalRegExp.h b/alib2data/src/regexp/formal/FormalRegExp.h
index dadbb8b8e8586fee901752cf08d2c0a02c79d2d9..b236203d104f3d64adad1092289296afeee1ba02 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.h
+++ b/alib2data/src/regexp/formal/FormalRegExp.h
@@ -24,6 +24,15 @@
 #ifndef FORMAL_REG_EXP_H_
 #define FORMAL_REG_EXP_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace regexp {
+
+template < class SymbolType = DefaultSymbolType >
+class FormalRegExp;
+
+} /* namespace regexp */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/iostream>
@@ -33,14 +42,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 #include <exception/CommonException.h>
-#include <alphabet/common/SymbolNormalize.h>
-
-#include "../RegExpBase.h"
-#include "../RegExpFeatures.h"
 
+#include <regexp/RegExpBase.h>
 #include "FormalRegExpStructure.h"
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+
+#include "../unbounded/UnboundedRegExp.h"
 
 namespace regexp {
 
@@ -184,12 +193,6 @@ public:
 	virtual object::ObjectBase * inc ( ) && override;
 };
 
-} /* namespace regexp */
-
-#include "../unbounded/UnboundedRegExp.h"
-
-namespace regexp {
-
 template < class SymbolType >
 FormalRegExp < SymbolType >::FormalRegExp ( ext::set < SymbolType > alphabet, FormalRegExpStructure < SymbolType > regExp ) : core::Components < FormalRegExp, ext::set < SymbolType >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ), m_regExp ( std::move ( regExp ) ) {
 	if ( !this->m_regExp.getStructure ( ).checkAlphabet ( getAlphabet ( ) ) )
diff --git a/alib2data/src/regexp/formal/FormalRegExpElement.h b/alib2data/src/regexp/formal/FormalRegExpElement.h
index 5fba955efa68e62a9caf0832df9ed22ff77622c0..a6a16517833d40d11178839703afe8bfc69670e8 100644
--- a/alib2data/src/regexp/formal/FormalRegExpElement.h
+++ b/alib2data/src/regexp/formal/FormalRegExpElement.h
@@ -24,13 +24,37 @@
 #ifndef FORMAL_REG_EXP_ELEMENT_H_
 #define FORMAL_REG_EXP_ELEMENT_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace regexp {
+
+template < class SymbolType >
+class FormalRegExpElement;
+
+} /* namespace regexp */
+
 #include <alib/set>
 #include <alib/tree>
 #include <core/visitor.hpp>
-#include "../RegExpFeatures.h"
+#include <base/CommonBase.hpp>
+
+#include "../unbounded/UnboundedRegExpElement.h"
 
 namespace regexp {
 
+template < class SymbolType >
+class FormalRegExpAlternation;
+template < class SymbolType >
+class FormalRegExpConcatenation;
+template < class SymbolType >
+class FormalRegExpIteration;
+template < class SymbolType >
+class FormalRegExpSymbol;
+template < class SymbolType >
+class FormalRegExpEmpty;
+template < class SymbolType >
+class FormalRegExpEpsilon;
+
 /**
  * Abstract class representing element in the formal regular expression. Can be an operator, special node, or a symbol.
  *
diff --git a/alib2data/src/regexp/formal/FormalRegExpStructure.h b/alib2data/src/regexp/formal/FormalRegExpStructure.h
index 6ad2916e400b00df3d40bb3de945e1b3bf0d3309..229c275f400c194be9829d5f36437c83858b73fa 100644
--- a/alib2data/src/regexp/formal/FormalRegExpStructure.h
+++ b/alib2data/src/regexp/formal/FormalRegExpStructure.h
@@ -24,9 +24,14 @@
 #ifndef FORMAL_REG_EXP_STRUCTURE_H_
 #define FORMAL_REG_EXP_STRUCTURE_H_
 
-#include <exception/CommonException.h>
+namespace regexp {
 
-#include "../RegExpFeatures.h"
+template < class SymbolType >
+class UnboundedRegExpStructure;
+
+} /* namespace regexp */
+
+#include <exception/CommonException.h>
 
 #include "FormalRegExpEmpty.h"
 
@@ -144,23 +149,6 @@ public:
 	}
 };
 
-} /* namespace regexp */
-
-namespace ext {
-
-template < class SymbolType >
-struct compare < regexp::FormalRegExpStructure < SymbolType > > {
-	int operator()(const regexp::FormalRegExpStructure < SymbolType > & first, const regexp::FormalRegExpStructure < SymbolType > & second) const {
-		return first.getStructure().compare(second.getStructure());
-	}
-};
-
-} /* namespace ext */
-
-#include "../unbounded/UnboundedRegExpStructure.h"
-
-namespace regexp {
-
 template < class SymbolType >
 FormalRegExpStructure < SymbolType >::FormalRegExpStructure ( FormalRegExpElement < SymbolType > && structure ) : m_structure ( NULL ) {
 	setStructure ( std::move ( structure ) );
@@ -200,4 +188,15 @@ void FormalRegExpStructure < SymbolType >::setStructure ( FormalRegExpElement <
 
 } /* namespace regexp */
 
+namespace ext {
+
+template < class SymbolType >
+struct compare < regexp::FormalRegExpStructure < SymbolType > > {
+	int operator()(const regexp::FormalRegExpStructure < SymbolType > & first, const regexp::FormalRegExpStructure < SymbolType > & second) const {
+		return first.getStructure().compare(second.getStructure());
+	}
+};
+
+} /* namespace ext */
+
 #endif /* FORMAL_REG_EXP_STRUCTURE_H_ */
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.h b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
index 877d77fcaff0847609106b14079bafd5010625c6..4f00e8b655aa425e32235e6a0c4aae901a1ec2d8 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
@@ -24,6 +24,15 @@
 #ifndef UNBOUNDED_REG_EXP_H_
 #define UNBOUNDED_REG_EXP_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace regexp {
+
+template < class SymbolType = DefaultSymbolType >
+class UnboundedRegExp;
+
+} /* namespace regexp */
+
 #include <alib/string>
 #include <alib/set>
 #include <alib/iostream>
@@ -33,14 +42,14 @@
 #include <core/components.hpp>
 #include <object/UniqueObject.h>
 #include <exception/CommonException.h>
-#include <alphabet/common/SymbolNormalize.h>
-
-#include "../RegExpBase.h"
-#include "../RegExpFeatures.h"
 
+#include <regexp/RegExpBase.h>
 #include "UnboundedRegExpStructure.h"
 
 #include <core/normalize.hpp>
+#include <alphabet/common/SymbolNormalize.h>
+
+#include "../formal/FormalRegExp.h"
 
 namespace regexp {
 
@@ -186,12 +195,6 @@ public:
 	virtual object::ObjectBase * inc ( ) && override;
 };
 
-} /* namespace regexp */
-
-#include "../formal/FormalRegExp.h"
-
-namespace regexp {
-
 template < class SymbolType >
 UnboundedRegExp < SymbolType >::UnboundedRegExp ( ext::set < SymbolType > alphabet, UnboundedRegExpStructure < SymbolType > regExp ) : core::Components < UnboundedRegExp, ext::set < SymbolType >, component::Set, GeneralAlphabet > ( std::move ( alphabet ) ), m_regExp ( std::move ( regExp ) ) {
 	if ( !this->m_regExp.getStructure ( ).checkAlphabet ( getAlphabet ( ) ) )
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpElement.h b/alib2data/src/regexp/unbounded/UnboundedRegExpElement.h
index d54b6fb5bdaca56a5a8927f2f34e8e7ce4b7023c..d228a142010c105a19165edd1deebb96421001be 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpElement.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpElement.h
@@ -24,13 +24,37 @@
 #ifndef UNBOUNDED_REG_EXP_ELEMENT_H_
 #define UNBOUNDED_REG_EXP_ELEMENT_H_
 
+#include <common/DefaultSymbolType.h>
+
+namespace regexp {
+
+template < class SymbolType >
+class UnboundedRegExpElement;
+
+} /* namespace regexp */
+
 #include <alib/set>
 #include <alib/tree>
 #include <core/visitor.hpp>
-#include "../RegExpFeatures.h"
+#include <base/CommonBase.hpp>
+
+#include "../formal/FormalRegExpElement.h"
 
 namespace regexp {
 
+template < class SymbolType >
+class UnboundedRegExpAlternation;
+template < class SymbolType >
+class UnboundedRegExpConcatenation;
+template < class SymbolType >
+class UnboundedRegExpIteration;
+template < class SymbolType >
+class UnboundedRegExpSymbol;
+template < class SymbolType >
+class UnboundedRegExpEmpty;
+template < class SymbolType >
+class UnboundedRegExpEpsilon;
+
 /**
  * Abstract class representing element in the unbounded regular expression. Can be an operator, special node, or a symbol.
  *
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpStructure.h b/alib2data/src/regexp/unbounded/UnboundedRegExpStructure.h
index 66345324853432ca879c3258826ea0d23a170aed..6c01e2409813b5122fc6c797fb1670c180f6b45f 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpStructure.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpStructure.h
@@ -24,12 +24,19 @@
 #ifndef UNBOUNDED_REG_EXP_STRUCTURE_H_
 #define UNBOUNDED_REG_EXP_STRUCTURE_H_
 
-#include <exception/CommonException.h>
+namespace regexp {
+
+template < class SymbolType >
+class UnboundedRegExpStructure;
+
+} /* namespace regexp */
 
-#include "../RegExpFeatures.h"
+#include <exception/CommonException.h>
 
 #include "UnboundedRegExpEmpty.h"
 
+#include "../formal/FormalRegExpStructure.h"
+
 namespace regexp {
 
 /**
@@ -144,23 +151,6 @@ public:
 	}
 };
 
-} /* namespace regexp */
-
-namespace ext {
-
-template < class SymbolType >
-struct compare < regexp::UnboundedRegExpStructure < SymbolType > > {
-	int operator()(const regexp::UnboundedRegExpStructure < SymbolType > & first, const regexp::UnboundedRegExpStructure < SymbolType > & second) const {
-		return first.getStructure().compare(second.getStructure());
-	}
-};
-
-} /* namespace ext */
-
-#include "../formal/FormalRegExpStructure.h"
-
-namespace regexp {
-
 template < class SymbolType >
 UnboundedRegExpStructure < SymbolType >::UnboundedRegExpStructure ( UnboundedRegExpElement < SymbolType > && structure ) : m_structure ( NULL ) {
 	setStructure ( std::move ( structure ) );
@@ -200,4 +190,15 @@ void UnboundedRegExpStructure < SymbolType >::setStructure ( UnboundedRegExpElem
 
 } /* namespace regexp */
 
+namespace ext {
+
+template < class SymbolType >
+struct compare < regexp::UnboundedRegExpStructure < SymbolType > > {
+	int operator()(const regexp::UnboundedRegExpStructure < SymbolType > & first, const regexp::UnboundedRegExpStructure < SymbolType > & second) const {
+		return first.getStructure().compare(second.getStructure());
+	}
+};
+
+} /* namespace ext */
+
 #endif /* UNBOUNDED_REG_EXP_STRUCTURE_H_ */
diff --git a/alib2data/src/regexp/xml/common/RegExpFromXmlParser.h b/alib2data/src/regexp/xml/common/RegExpFromXmlParser.h
index 0d240c9b78e4734101c9a14d68131b0894a4b82b..899ad4d9a2c21f97d6f1e85973df80dd1a42be3f 100644
--- a/alib2data/src/regexp/xml/common/RegExpFromXmlParser.h
+++ b/alib2data/src/regexp/xml/common/RegExpFromXmlParser.h
@@ -10,7 +10,6 @@
 
 #include <alib/set>
 #include <alib/deque>
-#include <regexp/RegExpFeatures.h>
 #include <sax/Token.h>
 
 #include <sax/FromXMLParserHelper.h>
diff --git a/alib2data/src/regexp/xml/common/RegExpToXmlComposer.h b/alib2data/src/regexp/xml/common/RegExpToXmlComposer.h
index 996213f4df0d6dd3b4db111b15c9fd96c00871f7..2b0a145ffcfb427479f57d2f9e37ad164d1d92b3 100644
--- a/alib2data/src/regexp/xml/common/RegExpToXmlComposer.h
+++ b/alib2data/src/regexp/xml/common/RegExpToXmlComposer.h
@@ -9,7 +9,6 @@
 #define REG_EXP_TO_XML_COMPOSER_H_
 
 #include <alib/deque>
-#include <regexp/RegExpFeatures.h>
 #include <regexp/unbounded/UnboundedRegExpElement.h>
 #include <regexp/formal/FormalRegExpElement.h>
 #include <sax/Token.h>