diff --git a/acast2/src/acast.cpp b/acast2/src/acast.cpp
index f7389b8362267b31261ea0f2cba5759b41a2b7d3..0e1a2fcd60023e10d4184c4cabb5768e0d33173e 100644
--- a/acast2/src/acast.cpp
+++ b/acast2/src/acast.cpp
@@ -20,9 +20,9 @@
 
 alib::Object doCast ( const alib::Object & in, const std::string & to ) {
 	const alib::ObjectBase & inObject = in.getData ( );
-	std::type_index inType = std::type_index ( typeid ( inObject ) );
+	ext::type_index inType = ext::type_index ( typeid ( inObject ) );
 
-	for ( const std::type_index & toType : alib::namingApi::getTypes ( to ) )
+	for ( const ext::type_index & toType : alib::namingApi::getTypes ( to ) )
 		if ( alib::castApi::getCastPool ( toType ).castAvailable ( inType ) )
 			return alib::castApi::getCastPool ( toType ).cast ( inObject );
 
diff --git a/alib2cli/src/ast/statements/SingleStatement.h b/alib2cli/src/ast/statements/SingleStatement.h
index 271b7cfb94d50f644084c7f171ece0d2151f2e25..0adc69ed7d574c25c07b92a1b7773ed4206edd4f 100644
--- a/alib2cli/src/ast/statements/SingleStatement.h
+++ b/alib2cli/src/ast/statements/SingleStatement.h
@@ -21,7 +21,7 @@ public:
 			params.push_back ( param->translateAndEval ( prev, environment ) );
 		}
 
-		ext::vector < std::type_index > paramTypes;
+		ext::vector < ext::type_index > paramTypes;
 		for ( const  std::shared_ptr < abstraction::OperationAbstraction > & param : params ) {
 			paramTypes.push_back ( param->type ( ) );
 		}
diff --git a/alib2common/src/abstraction/AlgorithmRegistry.hpp b/alib2common/src/abstraction/AlgorithmRegistry.hpp
index 336fa8f245435425ab0ab0c2dd6b3d39c635ad8d..26a0f8ba0aaf9717eeb41a35663d204e142880c0 100644
--- a/alib2common/src/abstraction/AlgorithmRegistry.hpp
+++ b/alib2common/src/abstraction/AlgorithmRegistry.hpp
@@ -61,8 +61,8 @@ class AlgorithmRegistry {
 		virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( ) const override;
 	};
 
-	static ext::map < std::string, ext::map < ext::vector < std::type_index >, std::unique_ptr < Entry > > > & getEntries ( ) {
-		static ext::map < std::string, ext::map < ext::vector < std::type_index >, std::unique_ptr < Entry > > > algorithmGroups;
+	static ext::map < std::string, ext::map < ext::vector < ext::type_index >, std::unique_ptr < Entry > > > & getEntries ( ) {
+		static ext::map < std::string, ext::map < ext::vector < ext::type_index >, std::unique_ptr < Entry > > > algorithmGroups;
 		return algorithmGroups;
 	};
 
@@ -71,14 +71,14 @@ public:
 	static void registerAlgorithm ( ReturnType ( * callback ) ( ParamTypes ... ), bool downcast, bool normalize ) {
 		std::string algorithm = ext::to_string < Algo > ( );
 
-		ext::vector < std::type_index > params;
-		( void ) std::initializer_list < int > { ( params.push_back ( std::type_index ( typeid ( typename std::decay < ParamTypes >::type ) ) ), 0 ) ... };
+		ext::vector < ext::type_index > params;
+		( void ) std::initializer_list < int > { ( params.push_back ( ext::type_index ( typeid ( typename std::decay < ParamTypes >::type ) ) ), 0 ) ... };
 
 		if ( ! getEntries ( ) [ algorithm ].insert ( std::make_pair ( params, std::unique_ptr < Entry > ( new EntryImpl < ReturnType, ParamTypes ... > ( callback, downcast, normalize ) ) ) ).second )
 			throw ::exception::CommonException ( "Callback for " + algorithm + " already registered." );
 	}
 
-	static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string name, const ext::vector < std::type_index > & paramTypes, bool & downcast, bool & normalize ) {
+	static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string name, const ext::vector < ext::type_index > & paramTypes, bool & downcast, bool & normalize ) {
 		auto group = getEntries ( ).find ( name );
 		if ( group == getEntries ( ).end ( ) )
 			throw exception::CommonException ( "Entry " + name + " not available" );
@@ -97,14 +97,14 @@ public:
 		return overload->second->getAbstraction ( );
 	}
 
-	static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string name, const ext::vector < std::type_index > & paramTypes ) {
+	static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string name, const ext::vector < ext::type_index > & paramTypes ) {
 		bool downcast;
 		bool normalize;
 		return getAbstraction ( std::move ( name ), paramTypes, downcast, normalize );
 	}
 
 	static void listGroup ( const std::string & group ) {
-		for ( const std::pair < const std::string, ext::map < ext::vector < std::type_index >, std::unique_ptr < Entry > > > & entry : getEntries ( ) ) {
+		for ( const std::pair < const std::string, ext::map < ext::vector < ext::type_index >, std::unique_ptr < Entry > > > & entry : getEntries ( ) ) {
 			if ( entry.first.find ( group ) == 0 ) //found at the begining
 				std::cout << entry.first << std::endl;
 		}
@@ -115,15 +115,15 @@ public:
 		if ( group == getEntries ( ).end ( ) )
 			throw exception::CommonException ( "Entry " + algorithm + " not available" );
 
-		for ( const std::pair < const ext::vector < std::type_index >, std::unique_ptr < Entry > > & overloads : group->second ) {
-			for ( const std::type_index & param : overloads.first ) {
+		for ( const std::pair < const ext::vector < ext::type_index >, std::unique_ptr < Entry > > & overloads : group->second ) {
+			for ( const ext::type_index & param : overloads.first ) {
 				std::cout << param << " " << std::endl;
 			}
 		}
 	}
 
 	static void list ( ) {
-		for ( const std::pair < const std::string, ext::map < ext::vector < std::type_index >, std::unique_ptr < Entry > > > & entry : getEntries ( ) ) {
+		for ( const std::pair < const std::string, ext::map < ext::vector < ext::type_index >, std::unique_ptr < Entry > > > & entry : getEntries ( ) ) {
 			std::cout << entry.first << std::endl;
 		}
 	}
diff --git a/alib2common/src/abstraction/OperationAbstraction.hpp b/alib2common/src/abstraction/OperationAbstraction.hpp
index 11f3e9edf3407e5ec88ce833a769bb439fae207f..81f702f64d11643e9b176982ba3187b4951f01f1 100644
--- a/alib2common/src/abstraction/OperationAbstraction.hpp
+++ b/alib2common/src/abstraction/OperationAbstraction.hpp
@@ -30,8 +30,8 @@ public:
 	virtual bool inputsAttached ( ) const = 0;
 	virtual bool run ( ) = 0;
 	virtual bool eval ( ) = 0;
-	virtual std::type_index type ( ) const = 0;
-	virtual std::type_index runtime_type ( ) const = 0;
+	virtual ext::type_index type ( ) const = 0;
+	virtual ext::type_index runtime_type ( ) const = 0;
 	virtual unsigned numberOfParams ( ) const = 0;
 	virtual bool cached ( ) const = 0;
 
diff --git a/alib2common/src/abstraction/Registry.cpp b/alib2common/src/abstraction/Registry.cpp
index 4764822dea7452f029848c5465323864305df2be..6ae0f879db7cf4841b9fd824850f9a9e5df9d9d5 100644
--- a/alib2common/src/abstraction/Registry.cpp
+++ b/alib2common/src/abstraction/Registry.cpp
@@ -30,11 +30,11 @@ void Registry::listAlgorithms ( ) {
 	AlgorithmRegistry::list ( );
 }
 
-std::shared_ptr < abstraction::OperationAbstraction > Registry::getAlgorithmAbstraction ( std::string name, const ext::vector < std::type_index > & paramTypes ) {
+std::shared_ptr < abstraction::OperationAbstraction > Registry::getAlgorithmAbstraction ( std::string name, const ext::vector < ext::type_index > & paramTypes ) {
 	return AlgorithmRegistry::getAbstraction ( std::move ( name ), paramTypes );
 }
 
-std::shared_ptr < abstraction::OperationAbstraction > Registry::getAlgorithmAbstraction ( std::string name, const ext::vector < std::type_index > & paramTypes, bool & unwrap, bool & normalize ) {
+std::shared_ptr < abstraction::OperationAbstraction > Registry::getAlgorithmAbstraction ( std::string name, const ext::vector < ext::type_index > & paramTypes, bool & unwrap, bool & normalize ) {
 	return AlgorithmRegistry::getAbstraction ( std::move ( name ), paramTypes, unwrap, normalize );
 }
 
diff --git a/alib2common/src/abstraction/Registry.h b/alib2common/src/abstraction/Registry.h
index 79b57d5881d81c0c00217dc51bec49b8015524ce..5daefbb8cf15111b221316133535428a25acf912 100644
--- a/alib2common/src/abstraction/Registry.h
+++ b/alib2common/src/abstraction/Registry.h
@@ -18,8 +18,8 @@ public:
 	static void listAlgorithmOverloads ( const std::string & algorithm );
 	static void listAlgorithms ( );
 
-	static std::shared_ptr < abstraction::OperationAbstraction > getAlgorithmAbstraction ( std::string name, const ext::vector < std::type_index > & paramTypes );
-	static std::shared_ptr < abstraction::OperationAbstraction > getAlgorithmAbstraction ( std::string name, const ext::vector < std::type_index > & paramTypes, bool & unwrap, bool & normalize );
+	static std::shared_ptr < abstraction::OperationAbstraction > getAlgorithmAbstraction ( std::string name, const ext::vector < ext::type_index > & paramTypes );
+	static std::shared_ptr < abstraction::OperationAbstraction > getAlgorithmAbstraction ( std::string name, const ext::vector < ext::type_index > & paramTypes, bool & unwrap, bool & normalize );
 	static std::shared_ptr < abstraction::OperationAbstraction > getCastAbstraction ( std::string target, std::string param );
 	static std::shared_ptr < abstraction::OperationAbstraction > getImmediateAbstraction ( std::string result, std::string value );
 	static std::shared_ptr < abstraction::OperationAbstraction > getNormalizeAbstraction ( std::string param );
diff --git a/alib2common/src/abstraction/ValueOperationAbstraction.hpp b/alib2common/src/abstraction/ValueOperationAbstraction.hpp
index 2d2e9c9e5a9dc3b165dc3f19115485f76b3b1bfd..ec43b9ad3fb7bd5dfd235d002bb56785ff72f650 100644
--- a/alib2common/src/abstraction/ValueOperationAbstraction.hpp
+++ b/alib2common/src/abstraction/ValueOperationAbstraction.hpp
@@ -70,13 +70,13 @@ public:
 		return Registry::getDowncastAbstraction ( concrete, base );
 	}
 
-	virtual std::type_index type ( ) const override {
-		return std::type_index ( typeid ( ReturnType ) );
+	virtual ext::type_index type ( ) const override {
+		return ext::type_index ( typeid ( ReturnType ) );
 	}
 
-	virtual std::type_index runtime_type ( ) const override {
+	virtual ext::type_index runtime_type ( ) const override {
 		if ( isReady ( ) )
-			return std::type_index ( typeid ( getData ( ) ) );
+			return ext::type_index ( typeid ( getData ( ) ) );
 		else
 			throw exception::CommonException ( "Runtime type unknown before evaluation." );
 	}
diff --git a/alib2common/src/abstraction/VoidOperationAbstraction.hpp b/alib2common/src/abstraction/VoidOperationAbstraction.hpp
index db172bb0c489fa69855daeefdded313cf62f31a4..b686c7ee4719537d0e2ce27dfef0b43d25d8fcbf 100644
--- a/alib2common/src/abstraction/VoidOperationAbstraction.hpp
+++ b/alib2common/src/abstraction/VoidOperationAbstraction.hpp
@@ -45,12 +45,12 @@ public:
 		throw exception::CommonException ( "Void algorithm does not have a result." );
 	}
 
-	virtual std::type_index type ( ) const override {
-		return std::type_index ( typeid ( void ) );
+	virtual ext::type_index type ( ) const override {
+		return ext::type_index ( typeid ( void ) );
 	}
 
-	virtual std::type_index runtime_type ( ) const override {
-		return std::type_index ( typeid ( void ) );
+	virtual ext::type_index runtime_type ( ) const override {
+		return ext::type_index ( typeid ( void ) );
 	}
 
 	virtual bool cached ( ) const override {
diff --git a/alib2common/src/container/ObjectsDeque.h b/alib2common/src/container/ObjectsDeque.h
index 8f9205fc17e646e93bdbea6f85ba6dac76ac1a17..e25e0ba8fa236fa5d615304195bac941525c558b 100644
--- a/alib2common/src/container/ObjectsDeque.h
+++ b/alib2common/src/container/ObjectsDeque.h
@@ -36,9 +36,9 @@ public:
 	virtual ContainerBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ObjectsDeque & other ) const;
diff --git a/alib2common/src/container/ObjectsList.h b/alib2common/src/container/ObjectsList.h
index 12b53d70013e944dcefe6d86aee013521c057c12..9cbf7e4d0c02d3f64de6f16902d210646576ca0a 100644
--- a/alib2common/src/container/ObjectsList.h
+++ b/alib2common/src/container/ObjectsList.h
@@ -36,9 +36,9 @@ public:
 	virtual ContainerBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ObjectsList & other ) const;
diff --git a/alib2common/src/container/ObjectsMap.h b/alib2common/src/container/ObjectsMap.h
index a1d09007ffcaa47e111bc7846712da6fe2a6fd91..8e0f38bcdfb6b9cdd4a95a901c5b57e4387b1322 100644
--- a/alib2common/src/container/ObjectsMap.h
+++ b/alib2common/src/container/ObjectsMap.h
@@ -38,9 +38,9 @@ public:
 	virtual ContainerBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ObjectsMap & other ) const;
diff --git a/alib2common/src/container/ObjectsPair.h b/alib2common/src/container/ObjectsPair.h
index b6282cc376a8f08975141e2c645a92125fa669fd..6b237194f52a6752605d733ab1332ee6b9c8e413 100644
--- a/alib2common/src/container/ObjectsPair.h
+++ b/alib2common/src/container/ObjectsPair.h
@@ -36,9 +36,9 @@ public:
 	virtual ContainerBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ObjectsPair & other ) const;
diff --git a/alib2common/src/container/ObjectsSet.h b/alib2common/src/container/ObjectsSet.h
index f7492634b73e42b0037a959bb1ead495d149afc0..e20bb49d4bb32fc032667f8c0a54088fdca5017f 100644
--- a/alib2common/src/container/ObjectsSet.h
+++ b/alib2common/src/container/ObjectsSet.h
@@ -36,9 +36,9 @@ public:
 	virtual ContainerBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ObjectsSet & other ) const;
diff --git a/alib2common/src/container/ObjectsTree.h b/alib2common/src/container/ObjectsTree.h
index e230dc85083dcaaf88959b7dc17ed51dad0e42f9..4a742defa975707221d8df62fd9ccc9bf508c285 100644
--- a/alib2common/src/container/ObjectsTree.h
+++ b/alib2common/src/container/ObjectsTree.h
@@ -35,9 +35,9 @@ public:
 	virtual ContainerBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ObjectsTree & other ) const;
diff --git a/alib2common/src/container/ObjectsTrie.h b/alib2common/src/container/ObjectsTrie.h
index fab4a853e97faec53ead8660fe7f9f2358b1c970..89bb303338f896ba5d1e4a1f15bef8f1594b32ec 100644
--- a/alib2common/src/container/ObjectsTrie.h
+++ b/alib2common/src/container/ObjectsTrie.h
@@ -35,9 +35,9 @@ public:
 	virtual ContainerBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ObjectsTrie & other ) const;
diff --git a/alib2common/src/container/ObjectsVector.h b/alib2common/src/container/ObjectsVector.h
index 6ca4118c950834f663b30edb884521d232f5a0a9..c7b3a214b7504f745785288a07beddc91c457b3f 100644
--- a/alib2common/src/container/ObjectsVector.h
+++ b/alib2common/src/container/ObjectsVector.h
@@ -36,9 +36,9 @@ public:
 	virtual ContainerBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ObjectsVector & other ) const;
diff --git a/alib2common/src/core/castApi.hpp b/alib2common/src/core/castApi.hpp
index 7b2b0c17c54ee6156b63e4a53265c82a921edb45..9e5787d85caf3ac4cef96a5b1d4983d8a54e0bcf 100644
--- a/alib2common/src/core/castApi.hpp
+++ b/alib2common/src/core/castApi.hpp
@@ -23,7 +23,7 @@ struct castApi {
 private:
 	class CastPoolBase {
 	protected:
-		ext::map < std::type_index, std::function < alib::Object ( const alib::ObjectBase & ) > > castFunctions;
+		ext::map < ext::type_index, std::function < alib::Object ( const alib::ObjectBase & ) > > castFunctions;
 
 		virtual std::string toType ( ) = 0;
 
@@ -32,7 +32,7 @@ private:
 		}
 
 		alib::Object cast ( const alib::ObjectBase & from ) {
-			ext::map < std::type_index, std::function < alib::Object ( const alib::ObjectBase & ) > >::iterator res = castFunctions.find ( std::type_index ( typeid ( from ) ) );
+			ext::map < ext::type_index, std::function < alib::Object ( const alib::ObjectBase & ) > >::iterator res = castFunctions.find ( ext::type_index ( typeid ( from ) ) );
 
 			if ( res == castFunctions.end ( ) ) {
 				std::string fromType = ext::to_string ( typeid ( from ) );
@@ -43,7 +43,7 @@ private:
 			return res->second ( from );
 		}
 
-		bool castAvailable ( std::type_index from ) {
+		bool castAvailable ( ext::type_index from ) {
 			return castFunctions.count ( from );
 		}
 
@@ -54,7 +54,7 @@ private:
 	public:
 		template < class From >
 		void add ( std::function < To ( const From & ) > castFunction ) {
-			bool res = castFunctions.insert ( std::make_pair ( std::type_index ( typeid ( From ) ), [=] ( const alib::ObjectBase & from ) {
+			bool res = castFunctions.insert ( std::make_pair ( ext::type_index ( typeid ( From ) ), [=] ( const alib::ObjectBase & from ) {
 					return alib::Object ( castFunction ( static_cast < const From & > ( from ) ) );
 				} ) ).second;
 			if ( ! res ) {
@@ -82,7 +82,7 @@ private:
 
 		template < class From >
 		bool test ( ) {
-			return castFunctions.count ( std::type_index ( typeid ( From ) ) );
+			return castFunctions.count ( ext::type_index ( typeid ( From ) ) );
 		}
 
 		std::string toType ( ) {
@@ -92,25 +92,25 @@ private:
 	};
 
 private:
-	class CastPoolBaseMap : public ext::map < std::type_index, CastPoolBase * > {
+	class CastPoolBaseMap : public ext::map < ext::type_index, CastPoolBase * > {
 	public:
 		~CastPoolBaseMap ( ) {
-			for ( const std::pair < const std::type_index, CastPoolBase * > & item : * this )
+			for ( const std::pair < const ext::type_index, CastPoolBase * > & item : * this )
 				delete item.second;
 		}
 
 	};
 
 	 // INFO: Function exist to handle static order of initialisation
-	static ext::map < std::type_index, CastPoolBase * > & castFunctionsById ( ) {
+	static ext::map < ext::type_index, CastPoolBase * > & castFunctionsById ( ) {
 		static CastPoolBaseMap res;
 
 		return res;
 	}
 
 public:
-	static CastPoolBase & getCastPool ( std::type_index typeId ) {
-		ext::map < std::type_index, CastPoolBase * >::iterator res = castFunctionsById ( ).find ( typeId );
+	static CastPoolBase & getCastPool ( ext::type_index typeId ) {
+		ext::map < ext::type_index, CastPoolBase * >::iterator res = castFunctionsById ( ).find ( typeId );
 
 		if ( res == castFunctionsById ( ).end ( ) ) {
 			std::string toType = ext::to_string ( typeId );
@@ -123,19 +123,19 @@ public:
 
 	template < class To >
 	static CastPool < To > & getCastPool ( ) {
-		ext::map < std::type_index, CastPoolBase * >::iterator res = castFunctionsById ( ).find ( std::type_index ( typeid ( To ) ) );
+		ext::map < ext::type_index, CastPoolBase * >::iterator res = castFunctionsById ( ).find ( ext::type_index ( typeid ( To ) ) );
 
 		if ( res == castFunctionsById ( ).end ( ) ) {
 			CastPool < To > * castPool = new CastPool < To > ( );
 			castPool->template add < To > ( );
-			return * ( CastPool < To > * )( castFunctionsById ( ).insert ( std::make_pair ( std::type_index ( typeid ( To ) ), castPool ) ).first->second );
+			return * ( CastPool < To > * )( castFunctionsById ( ).insert ( std::make_pair ( ext::type_index ( typeid ( To ) ), castPool ) ).first->second );
 		} else {
 			return * ( CastPool < To > * )res->second;
 		}
 	}
 
-	static bool castAvailable ( std::type_index to, std::type_index from ) {
-		ext::map < std::type_index, CastPoolBase * >::iterator res = castFunctionsById ( ).find ( to );
+	static bool castAvailable ( ext::type_index to, ext::type_index from ) {
+		ext::map < ext::type_index, CastPoolBase * >::iterator res = castFunctionsById ( ).find ( to );
 
 		if ( res == castFunctionsById ( ).end ( ) )
 			return false;
@@ -145,7 +145,7 @@ public:
 
 	template < class To, class From >
 	static bool castAvailable ( ) {
-		return castAvailable ( std::type_index ( typeid ( To ) ), std::type_index ( typeid ( From ) ) );
+		return castAvailable ( ext::type_index ( typeid ( To ) ), ext::type_index ( typeid ( From ) ) );
 	}
 
 };
diff --git a/alib2common/src/core/multipleDispatch.hpp b/alib2common/src/core/multipleDispatch.hpp
index c253b6a0fe7f47522d8b97e494e6fcc246894078..c518d10926538d3cf325a3f282b263f77c0eccae 100644
--- a/alib2common/src/core/multipleDispatch.hpp
+++ b/alib2common/src/core/multipleDispatch.hpp
@@ -59,7 +59,7 @@ private:
 
 	};
 
-	ext::map < typename ext::TupleBuilder < std::type_index, sizeof ... ( DispatchedParameterTypes ) >::type, std::unique_ptr < RegistratorWrapperBase > > registeredFunctions;
+	ext::map < typename ext::TupleBuilder < ext::type_index, sizeof ... ( DispatchedParameterTypes ) >::type, std::unique_ptr < RegistratorWrapperBase > > registeredFunctions;
 
 	static MultipleDispatch < Algorithm, ReturnType, ext::tuple < FrontStaticParamTypes ... >, ext::tuple < DispatchedParameterTypes ... >, ext::tuple < BackStaticParamTypes ... > > & getInstance ( ) {
 		static MultipleDispatch < Algorithm, ReturnType, ext::tuple < FrontStaticParamTypes ... >, ext::tuple < DispatchedParameterTypes ... >, ext::tuple < BackStaticParamTypes ... > > res;
@@ -72,7 +72,7 @@ public:
 //	static void registerOverload ( overload < RealReturnType, RealParameterTypeBases ... > callback ) { causes clang 4.0.0 to crash...
 //	static void registerOverload ( rawOverload < RealReturnType, RealParameterTypeBases ... > callback ) { causes clang 4.0.0 to crash...
 	static void registerOverload ( RealReturnType ( * callback ) ( FrontStaticParamTypes ..., typename ext::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type && ..., BackStaticParamTypes ... ) ) {
-		auto key = ext::make_tuple ( std::type_index ( typeid ( typename ext::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type ) ) ... );
+		auto key = ext::make_tuple ( ext::type_index ( typeid ( typename ext::match_cv_ref < DispatchedParameterTypes, RealParameterTypeBases >::type ) ) ... );
 		std::unique_ptr < RegistratorWrapperBase > value ( new RegistratorWrapper < RealReturnType, RealParameterTypeBases ... > ( callback ) );
 
 		bool res = getInstance ( ).registeredFunctions.insert ( std::make_pair ( std::move ( key ), std::move ( value ) ) ).second;
@@ -88,7 +88,7 @@ public:
 	}
 
 	static ReturnType dispatch ( FrontStaticParamTypes ... front, DispatchedParameterTypes && ... dispatched, BackStaticParamTypes ... back ) {
-		auto callback = getInstance ( ).registeredFunctions.find ( ext::make_tuple ( std::type_index ( typeid ( dispatched ) ) ... ) );
+		auto callback = getInstance ( ).registeredFunctions.find ( ext::make_tuple ( ext::type_index ( typeid ( dispatched ) ) ... ) );
 
 		if ( callback == getInstance ( ).registeredFunctions.end ( ) ) {
 			std::stringstream ss;
@@ -138,7 +138,7 @@ private:
 	class RegistratorWrapperBase {
 	public:
 		virtual ReturnType eval ( bool firstAttempt, ParametersType &&, ParametersType && ) = 0;
-		virtual bool available ( bool firstAttempt, std::type_index first, std::type_index second ) = 0;
+		virtual bool available ( bool firstAttempt, ext::type_index first, ext::type_index second ) = 0;
 	};
 
 	template < class RealReturnType, class RealParametersTypeBase >
@@ -149,19 +149,19 @@ private:
 
 	public:
 		ReturnType eval ( bool firstAttempt, ParametersType && first, ParametersType && second ) {
-			if ( std::type_index ( typeid ( first ) ) == std::type_index ( typeid ( second ) ) )
+			if ( ext::type_index ( typeid ( first ) ) == ext::type_index ( typeid ( second ) ) )
 				return ReturnType ( m_callback ( std::forward < RealParametersType > ( static_cast < RealParametersType && > ( first ) ), std::forward < RealParametersType > ( static_cast < RealParametersType && > ( second ) ) ) );
 
 			if ( firstAttempt ) {
-				alib::Object casted = alib::castApi::getCastPool ( std::type_index ( typeid ( first ) ) ).cast ( std::forward < ParametersType > ( second ) );
+				alib::Object casted = alib::castApi::getCastPool ( ext::type_index ( typeid ( first ) ) ).cast ( std::forward < ParametersType > ( second ) );
 				return ReturnType ( m_callback ( std::forward < RealParametersType > ( static_cast < RealParametersType && > ( first ) ), std::forward < RealParametersType > ( static_cast < RealParametersType && > ( casted.getData ( ) ) ) ) );
 			} else {
-				alib::Object casted = alib::castApi::getCastPool ( std::type_index ( typeid ( second ) ) ).cast ( std::forward < ParametersType > ( first ) );
+				alib::Object casted = alib::castApi::getCastPool ( ext::type_index ( typeid ( second ) ) ).cast ( std::forward < ParametersType > ( first ) );
 				return ReturnType ( m_callback ( std::forward < RealParametersType > ( static_cast < RealParametersType && > ( casted.getData ( ) ) ), std::forward < RealParametersType > ( static_cast < RealParametersType && > ( second ) ) ) );
 			}
 		}
 
-		bool available ( bool firstAttempt, std::type_index first, std::type_index second ) {
+		bool available ( bool firstAttempt, ext::type_index first, ext::type_index second ) {
 			if ( first == second ) return true;
 
 			if ( firstAttempt )
@@ -175,7 +175,7 @@ private:
 
 	};
 
-	ext::map < std::type_index, std::unique_ptr < RegistratorWrapperBase > > registeredFunctions;
+	ext::map < ext::type_index, std::unique_ptr < RegistratorWrapperBase > > registeredFunctions;
 
 	static PromotingDoubleDispatch < Algorithm, ReturnType, ParametersType > & getInstance ( ) {
 		static PromotingDoubleDispatch < Algorithm, ReturnType, ParametersType > res;
@@ -188,7 +188,7 @@ public:
 	static void registerOverload ( RealReturnType ( * callback ) ( typename ext::match_cv_ref < ParametersType, RealParametersTypeBase >::type &&, typename ext::match_cv_ref < ParametersType, RealParametersTypeBase >::type && ) ) {
 		std::unique_ptr < RegistratorWrapperBase > value ( new RegistratorWrapper < RealReturnType, RealParametersTypeBase > ( callback ) );
 
-		bool res = getInstance ( ).registeredFunctions.insert ( std::make_pair ( std::type_index ( typeid ( typename ext::match_cv_ref < ParametersType, RealParametersTypeBase >::type ) ), std::move ( value ) ) ).second;
+		bool res = getInstance ( ).registeredFunctions.insert ( std::make_pair ( ext::type_index ( typeid ( typename ext::match_cv_ref < ParametersType, RealParametersTypeBase >::type ) ), std::move ( value ) ) ).second;
 		if ( ! res ) {
 			std::string paramsType = ext::to_string < typename ext::match_cv_ref < ParametersType, RealParametersTypeBase >::type > ( );
 
@@ -199,14 +199,14 @@ public:
 	}
 
 	static ReturnType dispatch ( ParametersType && first, ParametersType && second ) {
-		typename ext::map < std::type_index, std::unique_ptr < RegistratorWrapperBase > >::iterator callback = getInstance ( ).registeredFunctions.find ( std::type_index ( typeid ( first ) ) );
+		typename ext::map < ext::type_index, std::unique_ptr < RegistratorWrapperBase > >::iterator callback = getInstance ( ).registeredFunctions.find ( ext::type_index ( typeid ( first ) ) );
 
-		if ( ( callback != getInstance ( ).registeredFunctions.end ( ) ) && callback->second->available ( true, std::type_index ( typeid ( first ) ), std::type_index ( typeid ( second ) ) ) )
+		if ( ( callback != getInstance ( ).registeredFunctions.end ( ) ) && callback->second->available ( true, ext::type_index ( typeid ( first ) ), ext::type_index ( typeid ( second ) ) ) )
 			return callback->second->eval ( true, std::forward < ParametersType > ( first ), std::forward < ParametersType > ( second ) );
 
-		callback = getInstance ( ).registeredFunctions.find ( std::type_index ( typeid ( second ) ) );
+		callback = getInstance ( ).registeredFunctions.find ( ext::type_index ( typeid ( second ) ) );
 
-		if ( ( callback != getInstance ( ).registeredFunctions.end ( ) ) && callback->second->available ( false, std::type_index ( typeid ( first ) ), std::type_index ( typeid ( second ) ) ) )
+		if ( ( callback != getInstance ( ).registeredFunctions.end ( ) ) && callback->second->available ( false, ext::type_index ( typeid ( first ) ), ext::type_index ( typeid ( second ) ) ) )
 			return callback->second->eval ( false, std::forward < ParametersType > ( first ), std::forward < ParametersType > ( second ) );
 
 		std::string firstType = ext::to_string ( typeid ( first ) );
diff --git a/alib2common/src/core/namingApi.hpp b/alib2common/src/core/namingApi.hpp
index abf732674ab0611a49ab588e4e216539e48dc410..b4681f14b0eb1f2208a1e14f75191d799c191740 100644
--- a/alib2common/src/core/namingApi.hpp
+++ b/alib2common/src/core/namingApi.hpp
@@ -18,21 +18,21 @@
 namespace alib {
 
 class namingApi {
-	static ext::map < std::string, ext::set < std::type_index > > & getNames ( ) {
-		static ext::map < std::string, ext::set < std::type_index > > names;
+	static ext::map < std::string, ext::set < ext::type_index > > & getNames ( ) {
+		static ext::map < std::string, ext::set < ext::type_index > > names;
 		return names;
 	}
 
 public:
 	template < typename Type >
 	static void registerName ( std::string name ) {
-		std::type_index type = std::type_index ( typeid ( Type ) );
-		std::pair < ext::set < std::type_index >::iterator, bool > res = getNames ( ) [ name ].insert ( type );
+		ext::type_index type = ext::type_index ( typeid ( Type ) );
+		std::pair < ext::set < ext::type_index >::iterator, bool > res = getNames ( ) [ name ].insert ( type );
 		if ( ! res.second && * res.first != type )
 			throw exception::CommonException ( "Type for name " + name + " already registered.");
 	}
 
-	static ext::set < std::type_index > & getTypes ( std::string stringname ) {
+	static ext::set < ext::type_index > & getTypes ( std::string stringname ) {
 		auto name = getNames ( ).find ( stringname );
 		if ( name == getNames ( ).end ( ) )
 			throw exception::CommonException ( "Types for name " + stringname + " not registered.");
diff --git a/alib2common/src/exception/CommonException.h b/alib2common/src/exception/CommonException.h
index a41a54139dbbe193181001c69800eb43c2db8b55..7434c628c629fe118992230880bd7a7f8f1e6e02 100644
--- a/alib2common/src/exception/CommonException.h
+++ b/alib2common/src/exception/CommonException.h
@@ -39,9 +39,9 @@ public:
 	virtual alib::ObjectBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const CommonException & other ) const;
diff --git a/alib2common/src/object/AnyObject.h b/alib2common/src/object/AnyObject.h
index 77471cb53aca8988c34583fbaebcda13f8ddbe5a..9b2bbb4d12f1fce7afbf5a2c5fe5e6463cff9307 100644
--- a/alib2common/src/object/AnyObject.h
+++ b/alib2common/src/object/AnyObject.h
@@ -39,9 +39,9 @@ public:
 	const T & getData ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const AnyObject & other ) const;
diff --git a/alib2common/src/object/UniqueObject.h b/alib2common/src/object/UniqueObject.h
index b323091170eddb2012db73ecc4a695bac8e3abc2..262831382389f9229534f216eeadfa9305384e24 100644
--- a/alib2common/src/object/UniqueObject.h
+++ b/alib2common/src/object/UniqueObject.h
@@ -42,9 +42,9 @@ public:
 	primitive::Integer & getId ( );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const UniqueObject & other ) const;
diff --git a/alib2common/src/object/Void.h b/alib2common/src/object/Void.h
index 46ab9c0dc601743afbc63ff07e5b60998f682455..317aba435d3ee8bdfe4001297c76b125b7c7663d 100644
--- a/alib2common/src/object/Void.h
+++ b/alib2common/src/object/Void.h
@@ -30,9 +30,9 @@ public:
 	virtual ObjectBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const Void & other ) const;
diff --git a/alib2common/src/primitive/Bool.h b/alib2common/src/primitive/Bool.h
index d8f1c8326bfb9d30d3bcaf1e973f355a2b856e3c..7e91b70344df590d5d4dd5f963797fec56b95c86 100644
--- a/alib2common/src/primitive/Bool.h
+++ b/alib2common/src/primitive/Bool.h
@@ -44,9 +44,9 @@ public:
 	void setData ( bool data );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const Bool & other ) const;
diff --git a/alib2common/src/primitive/Character.h b/alib2common/src/primitive/Character.h
index 78e5ef1b5a1644adbcd254cf2e68f6ca99bc1e10..62814d844e3127a3c2e8e5189c8e54227ea1e380 100644
--- a/alib2common/src/primitive/Character.h
+++ b/alib2common/src/primitive/Character.h
@@ -44,9 +44,9 @@ public:
 	void setData ( char data );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const Character & other ) const;
diff --git a/alib2common/src/primitive/Double.h b/alib2common/src/primitive/Double.h
index 2ca6999aad3d34cf6fb1d1a8ea5fae1fb960e830..f3c3a2280b3b626c61ce8027b74cf3b85db552f4 100644
--- a/alib2common/src/primitive/Double.h
+++ b/alib2common/src/primitive/Double.h
@@ -44,9 +44,9 @@ public:
 	void setData ( double data );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const Double & other ) const;
diff --git a/alib2common/src/primitive/Integer.h b/alib2common/src/primitive/Integer.h
index 59ce6a740d10fa0a181b3b9fcf6add79ed2fe137..da6cd69b075ab2339e06205b63aeca087540c5cf 100644
--- a/alib2common/src/primitive/Integer.h
+++ b/alib2common/src/primitive/Integer.h
@@ -44,9 +44,9 @@ public:
 	void setData ( int data );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const Integer & other ) const;
diff --git a/alib2common/src/primitive/String.h b/alib2common/src/primitive/String.h
index 88d34f8d12cb8dbbf6f5a87ef65698408316edd0..06a188734eb577cae50c4e77705356d0e1946ce1 100644
--- a/alib2common/src/primitive/String.h
+++ b/alib2common/src/primitive/String.h
@@ -45,9 +45,9 @@ public:
 	std::string & getData ( );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const String & other ) const;
diff --git a/alib2common/src/primitive/Unsigned.h b/alib2common/src/primitive/Unsigned.h
index a27e78f61c9f3f24a021c3a1b2144c26f6ae1bca..97ed5d602e71c77540401c8dc660a58a84633cd6 100644
--- a/alib2common/src/primitive/Unsigned.h
+++ b/alib2common/src/primitive/Unsigned.h
@@ -46,9 +46,9 @@ public:
 	void setData ( unsigned data );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const Unsigned & other ) const;
diff --git a/alib2common/src/primitive/UnsignedLong.h b/alib2common/src/primitive/UnsignedLong.h
index f1abcdca565253439b9ab9a0eb5a6cfd6c1fd440..bd4cfbf0829e67bd80011d838d47dda7b759340a 100644
--- a/alib2common/src/primitive/UnsignedLong.h
+++ b/alib2common/src/primitive/UnsignedLong.h
@@ -44,9 +44,9 @@ public:
 	void setData ( unsigned long data );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const UnsignedLong & other ) const;
diff --git a/alib2data/src/alphabet/BarSymbol.h b/alib2data/src/alphabet/BarSymbol.h
index ca97ca7358c7705c964c4d6666055794934a5e1e..1ed96e6f4f607cbf1a2da4e1b9d54a7dac10c239 100644
--- a/alib2data/src/alphabet/BarSymbol.h
+++ b/alib2data/src/alphabet/BarSymbol.h
@@ -29,9 +29,9 @@ public:
 	virtual SymbolBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const BarSymbol & other ) const;
diff --git a/alib2data/src/alphabet/BlankSymbol.h b/alib2data/src/alphabet/BlankSymbol.h
index a7ff17b9b146e22576dc77e30679b8dd6af359d8..c6de00c362991ebb977b92df66ed4fe5c2ebe79d 100644
--- a/alib2data/src/alphabet/BlankSymbol.h
+++ b/alib2data/src/alphabet/BlankSymbol.h
@@ -29,9 +29,9 @@ public:
 	virtual SymbolBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const BlankSymbol & other ) const;
diff --git a/alib2data/src/alphabet/BottomOfTheStackSymbol.h b/alib2data/src/alphabet/BottomOfTheStackSymbol.h
index 7c9f0252734c3b76aa9985886b9ad20a350af236..c6180b293ebc34b8a83feb6d9af70a82e6d21ce8 100644
--- a/alib2data/src/alphabet/BottomOfTheStackSymbol.h
+++ b/alib2data/src/alphabet/BottomOfTheStackSymbol.h
@@ -29,9 +29,9 @@ public:
 	virtual SymbolBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const BottomOfTheStackSymbol & other ) const;
diff --git a/alib2data/src/alphabet/EndSymbol.h b/alib2data/src/alphabet/EndSymbol.h
index 4e8c6c97d7086aa5ea060e67bc47e3033228e4a8..d3c4fca72ca7a80419c0c4434d8b3d350ef741a6 100644
--- a/alib2data/src/alphabet/EndSymbol.h
+++ b/alib2data/src/alphabet/EndSymbol.h
@@ -29,9 +29,9 @@ public:
 	virtual SymbolBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const EndSymbol & other ) const;
diff --git a/alib2data/src/alphabet/InitialSymbol.h b/alib2data/src/alphabet/InitialSymbol.h
index ffa2ad08edc83f2bb1455940f448523ace2e6f02..523db64b1d7fd334225e51cfa634de0e595cc34f 100644
--- a/alib2data/src/alphabet/InitialSymbol.h
+++ b/alib2data/src/alphabet/InitialSymbol.h
@@ -30,9 +30,9 @@ public:
 	virtual SymbolBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const InitialSymbol & other ) const;
diff --git a/alib2data/src/alphabet/LabeledSymbol.h b/alib2data/src/alphabet/LabeledSymbol.h
index e73d419db68ce4c2c64f14d2c07d4b4b38208d24..5577891bfc3fb5446141de4701a2f301222671c6 100644
--- a/alib2data/src/alphabet/LabeledSymbol.h
+++ b/alib2data/src/alphabet/LabeledSymbol.h
@@ -42,9 +42,9 @@ public:
 	label::Label & getLabel ( );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const LabeledSymbol & other ) const;
diff --git a/alib2data/src/alphabet/NonlinearVariableSymbol.h b/alib2data/src/alphabet/NonlinearVariableSymbol.h
index edbd068a96ca68c7536b731379ea520f5d802505..5954ea0ffbab690a36874a6be77b5896a4b2f6a7 100644
--- a/alib2data/src/alphabet/NonlinearVariableSymbol.h
+++ b/alib2data/src/alphabet/NonlinearVariableSymbol.h
@@ -51,9 +51,9 @@ public:
 	SymbolType & getSymbol ( );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const NonlinearVariableSymbol & other ) const;
diff --git a/alib2data/src/alphabet/RankedSymbol.h b/alib2data/src/alphabet/RankedSymbol.h
index e140130602127ae95c6773ca1e426f7e0bcf9895..84e0b2f45cf9427b73df18aafbe913d241642b91 100644
--- a/alib2data/src/alphabet/RankedSymbol.h
+++ b/alib2data/src/alphabet/RankedSymbol.h
@@ -34,9 +34,9 @@ public:
 	virtual SymbolBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const RankedSymbol & other ) const;
diff --git a/alib2data/src/alphabet/StartSymbol.h b/alib2data/src/alphabet/StartSymbol.h
index 8d26e1f5b7184a47a483ecbb0b07384673fe1244..eaaa9a9c94a02b561e068db07cef1147e16a198b 100644
--- a/alib2data/src/alphabet/StartSymbol.h
+++ b/alib2data/src/alphabet/StartSymbol.h
@@ -29,9 +29,9 @@ public:
 	virtual SymbolBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const StartSymbol & other ) const;
diff --git a/alib2data/src/alphabet/SubtreeWildcardSymbol.h b/alib2data/src/alphabet/SubtreeWildcardSymbol.h
index 2998b05f90cd47fff84e40bacb7fc1120115a727..f76fa44fab73db1d503b59d7f3fb56b50cc879de 100644
--- a/alib2data/src/alphabet/SubtreeWildcardSymbol.h
+++ b/alib2data/src/alphabet/SubtreeWildcardSymbol.h
@@ -30,9 +30,9 @@ public:
 	virtual SymbolBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const SubtreeWildcardSymbol & other ) const;
diff --git a/alib2data/src/alphabet/UniqueSymbol.h b/alib2data/src/alphabet/UniqueSymbol.h
index cdca43cd10fa84d60f81da08d6e818e515ce9ef8..91b205e3f58e872eae549981fdc6a558b457eb57 100644
--- a/alib2data/src/alphabet/UniqueSymbol.h
+++ b/alib2data/src/alphabet/UniqueSymbol.h
@@ -42,9 +42,9 @@ public:
 	primitive::Integer & getId ( );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const UniqueSymbol & other ) const;
diff --git a/alib2data/src/alphabet/VariablesBarSymbol.h b/alib2data/src/alphabet/VariablesBarSymbol.h
index a8b0c8bb70de268110200905813d03e1f87721d3..0608d7181ec0ca312cb3927c2e7b741718c944f3 100644
--- a/alib2data/src/alphabet/VariablesBarSymbol.h
+++ b/alib2data/src/alphabet/VariablesBarSymbol.h
@@ -30,9 +30,9 @@ public:
 	virtual SymbolBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const VariablesBarSymbol & other ) const;
diff --git a/alib2data/src/automaton/FSM/CompactNFA.h b/alib2data/src/automaton/FSM/CompactNFA.h
index 19c866b4f407da2ad81e0bdcb1a608130d1c1eeb..86126da059044d9cb0fcefa0832fed5fd5f9703f 100644
--- a/alib2data/src/automaton/FSM/CompactNFA.h
+++ b/alib2data/src/automaton/FSM/CompactNFA.h
@@ -158,9 +158,9 @@ public:
 	ext::map < ext::pair < StateType, ext::vector < SymbolType > >, ext::set < StateType > > getTransitionsToState ( const StateType & from ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const CompactNFA & other ) const;
diff --git a/alib2data/src/automaton/FSM/DFA.h b/alib2data/src/automaton/FSM/DFA.h
index 966555271789c9419c6b305c305413ed14803cb8..ffb889aa43b4dedbd2568cc4b1f212082a32ab7e 100644
--- a/alib2data/src/automaton/FSM/DFA.h
+++ b/alib2data/src/automaton/FSM/DFA.h
@@ -150,9 +150,9 @@ public:
 	bool isTotal ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const DFA & other ) const;
diff --git a/alib2data/src/automaton/FSM/EpsilonNFA.h b/alib2data/src/automaton/FSM/EpsilonNFA.h
index e6c7631c70e7b03a9a79d0fbfdced9c9c750b53f..9eb1cac09b45cb38f246a2276c1e795e67814419 100644
--- a/alib2data/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2data/src/automaton/FSM/EpsilonNFA.h
@@ -251,9 +251,9 @@ public:
 	bool isTotal ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const EpsilonNFA & other ) const;
diff --git a/alib2data/src/automaton/FSM/ExtendedNFA.h b/alib2data/src/automaton/FSM/ExtendedNFA.h
index 24fb17a703b2b81b9fdece8a69dad801e56e9f0f..4de6209c925ac2540928edde24ca6858f1748454 100644
--- a/alib2data/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2data/src/automaton/FSM/ExtendedNFA.h
@@ -162,9 +162,9 @@ public:
 	ext::map < ext::pair < StateType, regexp::UnboundedRegExpStructure < SymbolType > >, ext::set < StateType > > getTransitionsToState ( const StateType & from ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ExtendedNFA & other ) const;
diff --git a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
index 93ee6d78908f52125d47ce14278bc6e4b5cdcc80..e94dcae431c3a5abecd1d36b87acb6fa20c416a5 100644
--- a/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
+++ b/alib2data/src/automaton/FSM/MultiInitialStateNFA.h
@@ -176,9 +176,9 @@ public:
 	unsigned transitionsSize ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const MultiInitialStateNFA & other ) const;
diff --git a/alib2data/src/automaton/FSM/NFA.h b/alib2data/src/automaton/FSM/NFA.h
index 7acac6898591b0fe54ec30c21352682aa1026dc4..2c6210f1eb845977bc9dbb420924a4e999f85ed8 100644
--- a/alib2data/src/automaton/FSM/NFA.h
+++ b/alib2data/src/automaton/FSM/NFA.h
@@ -168,9 +168,9 @@ public:
 	unsigned transitionsSize ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const NFA & other ) const;
diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h
index a487f4ca4e61d295de88a9289e34698842b20456..b83d4df3a154d77899ff042a861d67859e4eeb63 100644
--- a/alib2data/src/automaton/PDA/DPDA.h
+++ b/alib2data/src/automaton/PDA/DPDA.h
@@ -183,9 +183,9 @@ public:
 	ext::map < ext::tuple < StateType, ext::variant < EpsilonType, InputSymbolType >, ext::vector < PushdownStoreSymbolType > >, ext::pair < StateType, ext::vector < PushdownStoreSymbolType > > > getTransitionsToState ( const StateType & from ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const DPDA & other ) const;
diff --git a/alib2data/src/automaton/PDA/InputDrivenDPDA.h b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
index 67973530aee582077eaa533f03ac4249e6912258..c76cf6f04ba7ec458ab9be144d4438945e797656 100644
--- a/alib2data/src/automaton/PDA/InputDrivenDPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenDPDA.h
@@ -187,9 +187,9 @@ public:
 	bool isDeterministic ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const InputDrivenDPDA & other ) const;
diff --git a/alib2data/src/automaton/PDA/InputDrivenNPDA.h b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
index 6eaa97730bf81229180e76f3fc8c207b23be44de..f3f37735597088068911d9a7898f70b4d6c257f6 100644
--- a/alib2data/src/automaton/PDA/InputDrivenNPDA.h
+++ b/alib2data/src/automaton/PDA/InputDrivenNPDA.h
@@ -196,9 +196,9 @@ public:
 	bool isDeterministic ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const InputDrivenNPDA & other ) const;
diff --git a/alib2data/src/automaton/PDA/NPDA.h b/alib2data/src/automaton/PDA/NPDA.h
index 8e2a7feefd00f032e308764f4a688a44191ed053..1f04d9d88f5a1173c2cc2bda38ba46ebf167f42e 100644
--- a/alib2data/src/automaton/PDA/NPDA.h
+++ b/alib2data/src/automaton/PDA/NPDA.h
@@ -181,9 +181,9 @@ public:
 	const ext::map < ext::tuple < StateType, ext::variant < EpsilonType, InputSymbolType >, ext::vector < PushdownStoreSymbolType > >, ext::set < ext::pair < StateType, ext::vector < PushdownStoreSymbolType > > > > & getTransitions ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const NPDA & other ) const;
diff --git a/alib2data/src/automaton/PDA/NPDTA.h b/alib2data/src/automaton/PDA/NPDTA.h
index f13f6656551e7b1dbc1a0957a1c9dbb30ce2ea9e..f57147b46188b84f57e50cf4279a771ea38e6d10 100644
--- a/alib2data/src/automaton/PDA/NPDTA.h
+++ b/alib2data/src/automaton/PDA/NPDTA.h
@@ -205,9 +205,9 @@ public:
 	ext::map < ext::tuple < StateType, ext::variant < EpsilonType, InputSymbolType >, ext::vector < PushdownStoreSymbolType > >, ext::tuple < StateType, ext::vector < PushdownStoreSymbolType >, ext::vector < OutputSymbolType > > > getTransitionsFromState ( const StateType & from ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const NPDTA & other ) const;
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
index 10f7bcda8c14eebea1debc49a813fa4bab1d706a..084a4f34b3fe831b8c8fca48bb6f1dad0110a8d6 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicDPDA.h
@@ -209,9 +209,9 @@ public:
 	const ext::map < ext::pair < StateType, ext::variant < EpsilonType, InputSymbolType > >, StateType > & getLocalTransitions ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const RealTimeHeightDeterministicDPDA & other ) const;
diff --git a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
index 585c63a2b98d82e195e95ba042d9269e5745e1d3..10ef820363a5adaa0f98ac35c2dbf3c0555584fa 100644
--- a/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
+++ b/alib2data/src/automaton/PDA/RealTimeHeightDeterministicNPDA.h
@@ -250,9 +250,9 @@ public:
 	const ext::map < ext::pair < StateType, ext::variant < EpsilonType, InputSymbolType > >, ext::set < StateType > > & getLocalTransitions ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const RealTimeHeightDeterministicNPDA & other ) const;
diff --git a/alib2data/src/automaton/PDA/SinglePopDPDA.h b/alib2data/src/automaton/PDA/SinglePopDPDA.h
index dd1d1fc33b3e4fed4d6b21cdc846cd3a6cb87fa5..efb592ac13f891d06fb6c660671f30939bbde19e 100644
--- a/alib2data/src/automaton/PDA/SinglePopDPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopDPDA.h
@@ -174,9 +174,9 @@ public:
 	const ext::map < ext::tuple < StateType, ext::variant < EpsilonType, InputSymbolType >, PushdownStoreSymbolType >, ext::pair < StateType, ext::vector < PushdownStoreSymbolType > > > & getTransitions ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const SinglePopDPDA & other ) const;
diff --git a/alib2data/src/automaton/PDA/SinglePopNPDA.h b/alib2data/src/automaton/PDA/SinglePopNPDA.h
index fcd24d0b038c506d37e52223ed6c04adac0061ff..c30e283c39faff82d8605bcb479be952ca7b12dc 100644
--- a/alib2data/src/automaton/PDA/SinglePopNPDA.h
+++ b/alib2data/src/automaton/PDA/SinglePopNPDA.h
@@ -181,9 +181,9 @@ public:
 	const ext::map < ext::tuple < StateType, ext::variant < EpsilonType, InputSymbolType >, PushdownStoreSymbolType >, ext::set < ext::pair < StateType, ext::vector < PushdownStoreSymbolType > > > > & getTransitions ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const SinglePopNPDA & other ) const;
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
index 70a62bb28e531462eaa5e7261d26d03b1d06681c..8471db4ffef7d084cb46e6ee9e400d7674bb46ac 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownDPDA.h
@@ -242,9 +242,9 @@ public:
 	const ext::map < ext::pair < StateType, InputSymbolType >, StateType > & getLocalTransitions ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const VisiblyPushdownDPDA & other ) const;
diff --git a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
index 3466ed07bf4e6411bb9613748b2ae9602d798531..f82b0d6153502a62ba6bec9774e20ebde54e1d79 100644
--- a/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
+++ b/alib2data/src/automaton/PDA/VisiblyPushdownNPDA.h
@@ -277,9 +277,9 @@ public:
 	const ext::map < ext::pair < StateType, InputSymbolType >, ext::set < StateType > > & getLocalTransitions ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const VisiblyPushdownNPDA & other ) const;
diff --git a/alib2data/src/automaton/TA/DFTA.h b/alib2data/src/automaton/TA/DFTA.h
index a3e4e942dd86ada76eebbb6715a675d12e61563d..1ad2e3eb8b7705c2f2b47c865a2229f7c0a39384 100644
--- a/alib2data/src/automaton/TA/DFTA.h
+++ b/alib2data/src/automaton/TA/DFTA.h
@@ -125,9 +125,9 @@ public:
 	unsigned transitionsSize ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const DFTA & other ) const;
diff --git a/alib2data/src/automaton/TA/NFTA.h b/alib2data/src/automaton/TA/NFTA.h
index 2871a7b85bb0a8cc57a39bafd9d571eb211dbbf9..c382f103f604d26887303477d0e536f19aef9ab3 100644
--- a/alib2data/src/automaton/TA/NFTA.h
+++ b/alib2data/src/automaton/TA/NFTA.h
@@ -143,9 +143,9 @@ public:
 	unsigned transitionsSize ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const NFTA & other ) const;
diff --git a/alib2data/src/automaton/TM/OneTapeDTM.h b/alib2data/src/automaton/TM/OneTapeDTM.h
index 2c6e269ae37ca342f45f1dab5185d6c5b7a94af8..dfbffb08726e3e8e57bd8058241f817c62e0ce4b 100644
--- a/alib2data/src/automaton/TM/OneTapeDTM.h
+++ b/alib2data/src/automaton/TM/OneTapeDTM.h
@@ -162,9 +162,9 @@ public:
 	const ext::map < ext::pair < StateType, SymbolType >, ext::tuple < StateType, SymbolType, Shift > > & getTransitions ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const OneTapeDTM & other ) const;
diff --git a/alib2data/src/grammar/ContextFree/CFG.h b/alib2data/src/grammar/ContextFree/CFG.h
index e371d3c52db8b15e8d7cb8fc0a04c92686e328c3..6d43d7e272bdefc5dd41eb3350ebbfd54a433edc 100644
--- a/alib2data/src/grammar/ContextFree/CFG.h
+++ b/alib2data/src/grammar/ContextFree/CFG.h
@@ -96,9 +96,9 @@ public:
 	}
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const CFG & other ) const;
diff --git a/alib2data/src/grammar/ContextFree/CNF.h b/alib2data/src/grammar/ContextFree/CNF.h
index c6ecb8320d3110a87b95d99e380815b8275b0d91..3bf4c0248dbec7180861f06aa9b3d325b9a3b5d1 100644
--- a/alib2data/src/grammar/ContextFree/CNF.h
+++ b/alib2data/src/grammar/ContextFree/CNF.h
@@ -103,9 +103,9 @@ public:
 	bool getGeneratesEpsilon ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const CNF & other ) const;
diff --git a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
index acab16d262f0f62578a7dee1a22de02f9d223e69..536c84d3e0b4a90f5789d9f2eae484c7379c64f6 100644
--- a/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
+++ b/alib2data/src/grammar/ContextFree/EpsilonFreeCFG.h
@@ -98,9 +98,9 @@ public:
 	bool getGeneratesEpsilon ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const EpsilonFreeCFG & other ) const;
diff --git a/alib2data/src/grammar/ContextFree/GNF.h b/alib2data/src/grammar/ContextFree/GNF.h
index acde0fed8db5d1a289ffe1ce8c25557bd7145e15..ad224bc6f980628ea13318b661fac04a0b5103ea 100644
--- a/alib2data/src/grammar/ContextFree/GNF.h
+++ b/alib2data/src/grammar/ContextFree/GNF.h
@@ -99,9 +99,9 @@ public:
 	bool getGeneratesEpsilon ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const GNF & other ) const;
diff --git a/alib2data/src/grammar/ContextFree/LG.h b/alib2data/src/grammar/ContextFree/LG.h
index fa2722c1cdd399ac84418d38f3644b3545e61abb..4dd3c0436dd3afe01b5397f36177174a0f22b0f0 100644
--- a/alib2data/src/grammar/ContextFree/LG.h
+++ b/alib2data/src/grammar/ContextFree/LG.h
@@ -100,9 +100,9 @@ public:
 	}
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const LG & other ) const;
diff --git a/alib2data/src/grammar/ContextSensitive/CSG.h b/alib2data/src/grammar/ContextSensitive/CSG.h
index da7666cad018e7b0f5571d93722e92c67d294760..e299253c046113983f3a9dc5e81e7f1d5e602852 100644
--- a/alib2data/src/grammar/ContextSensitive/CSG.h
+++ b/alib2data/src/grammar/ContextSensitive/CSG.h
@@ -92,9 +92,9 @@ public:
 	bool getGeneratesEpsilon ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const CSG & other ) const;
diff --git a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
index 5095e0994e97ed00b295922d49f7944c5f5fa76d..15515d11c184aaa8673ee03aff9514fb6b4b50a6 100644
--- a/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
+++ b/alib2data/src/grammar/ContextSensitive/NonContractingGrammar.h
@@ -92,9 +92,9 @@ public:
 	bool getGeneratesEpsilon ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const NonContractingGrammar & other ) const;
diff --git a/alib2data/src/grammar/Regular/LeftLG.h b/alib2data/src/grammar/Regular/LeftLG.h
index 9d157afcc40c002774b676de1ff76725573d16c2..132fc6a314ca050dd98b5c0a00f905ed1ce31e34 100644
--- a/alib2data/src/grammar/Regular/LeftLG.h
+++ b/alib2data/src/grammar/Regular/LeftLG.h
@@ -285,9 +285,9 @@ public:
 	 * @copydoc alib::CommonBase<ObjectBase>::compare ( const ObjectBase & )
 	 */
 	virtual int compare ( const ObjectBase & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	/**
diff --git a/alib2data/src/grammar/Regular/LeftRG.h b/alib2data/src/grammar/Regular/LeftRG.h
index f4a165a914eb41749728f1b448cb4d535ebeac32..f565b014aa67d402c0479a04f8f2aa2bc9f1853b 100644
--- a/alib2data/src/grammar/Regular/LeftRG.h
+++ b/alib2data/src/grammar/Regular/LeftRG.h
@@ -308,9 +308,9 @@ public:
 	 * @copydoc alib::CommonBase<ObjectBase>::compare ( const ObjectBase & )
 	 */
 	virtual int compare ( const ObjectBase & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	/**
diff --git a/alib2data/src/grammar/Regular/RightLG.h b/alib2data/src/grammar/Regular/RightLG.h
index 620794d44cb18ac52d7f931c6bd525de466ffb77..9496badbf8deab3eeca7a5136f5e09b4027ac3f3 100644
--- a/alib2data/src/grammar/Regular/RightLG.h
+++ b/alib2data/src/grammar/Regular/RightLG.h
@@ -285,9 +285,9 @@ public:
 	 * @copydoc alib::CommonBase<ObjectBase>::compare ( const ObjectBase & )
 	 */
 	virtual int compare ( const ObjectBase & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	/**
diff --git a/alib2data/src/grammar/Regular/RightRG.h b/alib2data/src/grammar/Regular/RightRG.h
index fd95f85aff59b6e7ffd7b05d944cd45b16cf80a7..a56ef3353cf35cee7c5c0e236c3c99ddf1ffb4b8 100644
--- a/alib2data/src/grammar/Regular/RightRG.h
+++ b/alib2data/src/grammar/Regular/RightRG.h
@@ -308,9 +308,9 @@ public:
 	 * @copydoc alib::CommonBase<ObjectBase>::compare ( const ObjectBase & )
 	 */
 	virtual int compare ( const ObjectBase & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	/**
diff --git a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
index 5d4b029c95748cc1bd3316f5303ad706fb3b95af..334b54815f1ac38da6b36829d5378ea7751c42e5 100644
--- a/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/ContextPreservingUnrestrictedGrammar.h
@@ -88,9 +88,9 @@ public:
 	}
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ContextPreservingUnrestrictedGrammar & other ) const;
diff --git a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
index 79997c49aa5a3f5af9fa0116050fcc0c37cd2fe3..75c5d9362866748485920040672f3b8aa8b668b1 100644
--- a/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
+++ b/alib2data/src/grammar/Unrestricted/UnrestrictedGrammar.h
@@ -88,9 +88,9 @@ public:
 	}
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const UnrestrictedGrammar & other ) const;
diff --git a/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h b/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h
index 22e62d4aeafc9587012da054af54e90e25d0cd69..9aa18a6d6af0f9bb193d0fd72b1e0f7ca225ca55 100644
--- a/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h
+++ b/alib2data/src/indexes/arbology/CompressedBitParallelTreeIndex.h
@@ -98,9 +98,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const CompressedBitParallelTreeIndex & other ) const;
diff --git a/alib2data/src/indexes/arbology/FullAndLinearIndex.h b/alib2data/src/indexes/arbology/FullAndLinearIndex.h
index 36ab7155d870445a45092b974fe7c95bd3316f3c..55b809eb3231e4c42fc70a8adb97ecee0026fb08 100644
--- a/alib2data/src/indexes/arbology/FullAndLinearIndex.h
+++ b/alib2data/src/indexes/arbology/FullAndLinearIndex.h
@@ -93,9 +93,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const FullAndLinearIndex & other ) const;
diff --git a/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h b/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h
index bad424bbc35e27fc67d141a40b323e28fbd76b4d..c94f1636251d0b4e0122a47c21fa8376718431f6 100644
--- a/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h
+++ b/alib2data/src/indexes/arbology/NonlinearFullAndLinearIndex.h
@@ -99,9 +99,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const NonlinearFullAndLinearIndex & other ) const;
diff --git a/alib2data/src/indexes/stringology/BNDMMatcher.h b/alib2data/src/indexes/stringology/BNDMMatcher.h
index d9393638fa39a618a5bc0e6672945de0f1f52dc6..46bbb544a6ef296d654ff97134886f1727e89d5d 100644
--- a/alib2data/src/indexes/stringology/BNDMMatcher.h
+++ b/alib2data/src/indexes/stringology/BNDMMatcher.h
@@ -94,9 +94,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const BNDMMatcher & other ) const;
diff --git a/alib2data/src/indexes/stringology/BitParallelIndex.h b/alib2data/src/indexes/stringology/BitParallelIndex.h
index f76708a7f366688714e650182da9899dfb52d0c4..5aa8975e136813130031a98400848e451ca2de3c 100644
--- a/alib2data/src/indexes/stringology/BitParallelIndex.h
+++ b/alib2data/src/indexes/stringology/BitParallelIndex.h
@@ -91,9 +91,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const BitParallelIndex & other ) const;
diff --git a/alib2data/src/indexes/stringology/CompressedBitParallelIndex.h b/alib2data/src/indexes/stringology/CompressedBitParallelIndex.h
index 18866e009265ce1898bbbd04fa082252bd31e269..3e0161a250fab9db22e1c460aed04e7fc06dc9a1 100644
--- a/alib2data/src/indexes/stringology/CompressedBitParallelIndex.h
+++ b/alib2data/src/indexes/stringology/CompressedBitParallelIndex.h
@@ -91,9 +91,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const CompressedBitParallelIndex & other ) const;
diff --git a/alib2data/src/indexes/stringology/PositionHeap.h b/alib2data/src/indexes/stringology/PositionHeap.h
index 1327b1bf8c25e6f5c041ebb4da7095b70a3d698a..7cea95e7b42e6e3780f6af405f402656eda7ab3b 100644
--- a/alib2data/src/indexes/stringology/PositionHeap.h
+++ b/alib2data/src/indexes/stringology/PositionHeap.h
@@ -101,9 +101,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PositionHeap & other ) const;
diff --git a/alib2data/src/indexes/stringology/SuffixArray.h b/alib2data/src/indexes/stringology/SuffixArray.h
index ec71d522e301df75c6dc35b716a87a707ddd315b..4194bacb812f0841f1142d9ffce3fb68c4392f62 100644
--- a/alib2data/src/indexes/stringology/SuffixArray.h
+++ b/alib2data/src/indexes/stringology/SuffixArray.h
@@ -95,9 +95,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const SuffixArray & other ) const;
diff --git a/alib2data/src/indexes/stringology/SuffixTrie.h b/alib2data/src/indexes/stringology/SuffixTrie.h
index b6cad15ef1bcfbb4db7c546c55a18d1a8b8dd932..cbc94d67abf2db21c134d8e274af973f23a98596 100644
--- a/alib2data/src/indexes/stringology/SuffixTrie.h
+++ b/alib2data/src/indexes/stringology/SuffixTrie.h
@@ -101,9 +101,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const SuffixTrie & other ) const;
diff --git a/alib2data/src/label/FailStateLabel.h b/alib2data/src/label/FailStateLabel.h
index 78ac0d48088921fdbea82170af81b97f5c670760..ce7ea68ba89e8af357ba2b517b818abe38ee1963 100644
--- a/alib2data/src/label/FailStateLabel.h
+++ b/alib2data/src/label/FailStateLabel.h
@@ -30,9 +30,9 @@ public:
 	virtual LabelBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const FailStateLabel & other ) const;
diff --git a/alib2data/src/label/FinalStateLabel.h b/alib2data/src/label/FinalStateLabel.h
index 68801f99d9aa776dad36cc01854cc5dd94fbb15e..2094cf63bca24108e589de4c87c9744e3c8f9587 100644
--- a/alib2data/src/label/FinalStateLabel.h
+++ b/alib2data/src/label/FinalStateLabel.h
@@ -30,9 +30,9 @@ public:
 	virtual LabelBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const FinalStateLabel & other ) const;
diff --git a/alib2data/src/label/HexavigesimalLabel.h b/alib2data/src/label/HexavigesimalLabel.h
index 1c3700d67b7fd239c57f8b0bd41c2510c99d1174..a179c69aed5174d773105379853dd87b1a8dd691 100644
--- a/alib2data/src/label/HexavigesimalLabel.h
+++ b/alib2data/src/label/HexavigesimalLabel.h
@@ -40,9 +40,9 @@ public:
 	void setData ( int data );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const HexavigesimalLabel & other ) const;
diff --git a/alib2data/src/label/InitialStateLabel.h b/alib2data/src/label/InitialStateLabel.h
index f3e3238a04ec5a4e84e69e1438e566bdac74d084..969850e8f75dd29d49e0df164e07baa496ed4fb1 100644
--- a/alib2data/src/label/InitialStateLabel.h
+++ b/alib2data/src/label/InitialStateLabel.h
@@ -30,9 +30,9 @@ public:
 	virtual LabelBase * plunder ( ) &&;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const InitialStateLabel & other ) const;
diff --git a/alib2data/src/label/ObjectLabel.h b/alib2data/src/label/ObjectLabel.h
index ff1f3fe5a598a4c595fda1e58b65a287ff74ccd0..4b1f820731115f726f48f8239e404fc4565323a5 100644
--- a/alib2data/src/label/ObjectLabel.h
+++ b/alib2data/src/label/ObjectLabel.h
@@ -38,9 +38,9 @@ public:
 	const alib::Object & getData ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const ObjectLabel & other ) const;
diff --git a/alib2data/src/label/PrimitiveLabel.h b/alib2data/src/label/PrimitiveLabel.h
index 2cc83afa8c58d8a071912676944198a92d85a852..ba1bf5fe769826163e5d0122b2dd13570eeaed37 100644
--- a/alib2data/src/label/PrimitiveLabel.h
+++ b/alib2data/src/label/PrimitiveLabel.h
@@ -40,9 +40,9 @@ public:
 	primitive::Primitive & getData ( );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PrimitiveLabel & other ) const;
diff --git a/alib2data/src/label/UniqueLabel.h b/alib2data/src/label/UniqueLabel.h
index 0aec9db45f7f113215bd057c4e026269434ff6df..1c9e476988550a79475abdeb11d8d044b6362d93 100644
--- a/alib2data/src/label/UniqueLabel.h
+++ b/alib2data/src/label/UniqueLabel.h
@@ -42,9 +42,9 @@ public:
 	primitive::Integer & getId ( );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const UniqueLabel & other ) const;
diff --git a/alib2data/src/regexp/formal/FormalRegExp.h b/alib2data/src/regexp/formal/FormalRegExp.h
index 6b3e742cb39cd1d9c57a652e569a1dcb8dbefa58..81104e9de755236918fde1adc80e36fbef424029 100644
--- a/alib2data/src/regexp/formal/FormalRegExp.h
+++ b/alib2data/src/regexp/formal/FormalRegExp.h
@@ -84,9 +84,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const FormalRegExp & other ) const;
diff --git a/alib2data/src/regexp/formal/FormalRegExpAlternation.h b/alib2data/src/regexp/formal/FormalRegExpAlternation.h
index 4857a625443a0ecf225664ed9891bbeddc90ecd7..fbb9de5e64854d3c6733074c1d9389094b4b6475 100644
--- a/alib2data/src/regexp/formal/FormalRegExpAlternation.h
+++ b/alib2data/src/regexp/formal/FormalRegExpAlternation.h
@@ -87,9 +87,9 @@ public:
 	void setRightElement ( const FormalRegExpElement < SymbolType > & element );
 
 	int compare ( const FormalRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRegExpAlternation & ) const;
diff --git a/alib2data/src/regexp/formal/FormalRegExpConcatenation.h b/alib2data/src/regexp/formal/FormalRegExpConcatenation.h
index 0783e23acbcc012314606270515a2fbe0b3e5ef2..c948fcb330ad29a7541c1ba00cc18fce17a4e6d4 100644
--- a/alib2data/src/regexp/formal/FormalRegExpConcatenation.h
+++ b/alib2data/src/regexp/formal/FormalRegExpConcatenation.h
@@ -83,9 +83,9 @@ public:
 	void setRightElement ( const FormalRegExpElement < SymbolType > & element );
 
 	int compare ( const FormalRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRegExpConcatenation & ) const;
diff --git a/alib2data/src/regexp/formal/FormalRegExpEmpty.h b/alib2data/src/regexp/formal/FormalRegExpEmpty.h
index f37cfc16233b6b9a6145247b13408d17cd5a0dab..da7aa2e326485d8ffa967a32991151f6a6a4b579 100644
--- a/alib2data/src/regexp/formal/FormalRegExpEmpty.h
+++ b/alib2data/src/regexp/formal/FormalRegExpEmpty.h
@@ -57,9 +57,9 @@ public:
 	bool checkAlphabet ( const ext::set < SymbolType > & alphabet ) const override;
 
 	int compare ( const FormalRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRegExpEmpty & ) const;
diff --git a/alib2data/src/regexp/formal/FormalRegExpEpsilon.h b/alib2data/src/regexp/formal/FormalRegExpEpsilon.h
index 22079d5a77604d5cc20e1fdb955f214fb2245a14..34ba05fb1c23c839a1db1060c7d21f88825ce958 100644
--- a/alib2data/src/regexp/formal/FormalRegExpEpsilon.h
+++ b/alib2data/src/regexp/formal/FormalRegExpEpsilon.h
@@ -57,9 +57,9 @@ public:
 	bool checkAlphabet ( const ext::set < SymbolType > & alphabet ) const override;
 
 	int compare ( const FormalRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRegExpEpsilon & ) const;
diff --git a/alib2data/src/regexp/formal/FormalRegExpIteration.h b/alib2data/src/regexp/formal/FormalRegExpIteration.h
index bf54ecaef5cbbc1e2d3399cea63b9d56115050ac..c4640722771358d0f21a6ea9480dfe6ccaf7a053 100644
--- a/alib2data/src/regexp/formal/FormalRegExpIteration.h
+++ b/alib2data/src/regexp/formal/FormalRegExpIteration.h
@@ -78,9 +78,9 @@ public:
 	void setElement ( const FormalRegExpElement < SymbolType > & element );
 
 	int compare ( const FormalRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRegExpIteration & ) const;
diff --git a/alib2data/src/regexp/formal/FormalRegExpSymbol.h b/alib2data/src/regexp/formal/FormalRegExpSymbol.h
index 6b36eb4c90abd245c0d4eff16a46f47710507e35..8927aa03a3ac20b891fb4b14347b3a3ea430fea0 100644
--- a/alib2data/src/regexp/formal/FormalRegExpSymbol.h
+++ b/alib2data/src/regexp/formal/FormalRegExpSymbol.h
@@ -60,9 +60,9 @@ public:
 	bool checkAlphabet ( const ext::set < SymbolType > & alphabet ) const override;
 
 	int compare ( const FormalRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRegExpSymbol & ) const;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExp.h b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
index 1e1aaa73fc9475f9952ecbf4904f98462f71d604..147a8d662f3645b9435cb45b480ed113f1169051 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExp.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExp.h
@@ -84,9 +84,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const UnboundedRegExp & other ) const;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h b/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h
index ab7f78e91a4e655828170e1581bcee8dcdfda15f..2958fa9f415bc5b721205f18e1ea1a94f5dd954b 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpAlternation.h
@@ -77,9 +77,9 @@ public:
 	void appendElement ( const UnboundedRegExpElement < SymbolType > & element );
 
 	int compare ( const UnboundedRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const UnboundedRegExpAlternation < SymbolType > & ) const;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h b/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h
index 9e0a02c3f0fcdf6336a8c8d22eb7d99c329193ec..584030cc4485aecbfd0d36a053d37dfae642a5eb 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpConcatenation.h
@@ -77,9 +77,9 @@ public:
 	void appendElement ( const UnboundedRegExpElement < SymbolType > & element );
 
 	int compare ( const UnboundedRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const UnboundedRegExpConcatenation & ) const;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpEmpty.h b/alib2data/src/regexp/unbounded/UnboundedRegExpEmpty.h
index b565c9829640227b49e49ce6d1c252ef874c3eec..dbadb7e98a424d97ffd73c688ae5d96f4b3f65b2 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpEmpty.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpEmpty.h
@@ -57,9 +57,9 @@ public:
 	bool checkAlphabet ( const ext::set < SymbolType > & alphabet ) const override;
 
 	int compare ( const UnboundedRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const UnboundedRegExpEmpty & ) const;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpEpsilon.h b/alib2data/src/regexp/unbounded/UnboundedRegExpEpsilon.h
index 3a2123a9d601bcba5c42a891d49cff7fb7fdff77..4e3c19577615611ac3032d7fbbb973f421f497ab 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpEpsilon.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpEpsilon.h
@@ -57,9 +57,9 @@ public:
 	bool checkAlphabet ( const ext::set < SymbolType > & alphabet ) const override;
 
 	int compare ( const UnboundedRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const UnboundedRegExpEpsilon & ) const;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpIteration.h b/alib2data/src/regexp/unbounded/UnboundedRegExpIteration.h
index 77d69eac77cfefd2ce928dd8f755c5c0efc68363..d205c5db75ff83a6d67d799a166db9e352b0ebe5 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpIteration.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpIteration.h
@@ -77,9 +77,9 @@ public:
 	void setElement ( const UnboundedRegExpElement < SymbolType > & element );
 
 	int compare ( const UnboundedRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const UnboundedRegExpIteration & ) const;
diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h b/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h
index c713cd14460372eac13f3b99ebbff51d8a74cc13..1451ea71e97e8a4716360cf73357c8687034d3f5 100644
--- a/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h
+++ b/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h
@@ -60,9 +60,9 @@ public:
 	bool checkAlphabet ( const ext::set < SymbolType > & alphabet ) const override;
 
 	int compare ( const UnboundedRegExpElement < SymbolType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const UnboundedRegExpSymbol & ) const;
diff --git a/alib2data/src/rte/formal/FormalRTE.h b/alib2data/src/rte/formal/FormalRTE.h
index 1314fc958c074c77cb2e2cecd8ca868c27026987..23544353a644592f02abf3ec7a01b3823b289425 100644
--- a/alib2data/src/rte/formal/FormalRTE.h
+++ b/alib2data/src/rte/formal/FormalRTE.h
@@ -121,9 +121,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const FormalRTE & other ) const;
diff --git a/alib2data/src/rte/formal/FormalRTEAlternation.h b/alib2data/src/rte/formal/FormalRTEAlternation.h
index d8b4d2f8771d09678be2e0fa4f5b8180833a0705..a2182f4916c97a248ed2a950ade4c054e13b5025 100644
--- a/alib2data/src/rte/formal/FormalRTEAlternation.h
+++ b/alib2data/src/rte/formal/FormalRTEAlternation.h
@@ -81,9 +81,9 @@ public:
 	void setRightElement ( FormalRTEElement < SymbolType, RankType > && element );
 
 	virtual int compare ( const FormalRTEElement < SymbolType, RankType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRTEAlternation & ) const;
diff --git a/alib2data/src/rte/formal/FormalRTEEmpty.h b/alib2data/src/rte/formal/FormalRTEEmpty.h
index 49d586950af40fb4d0afed4a6f3db9419dacba13..3c53a3065f0ddcfb43513bc393707ce424a3c265 100644
--- a/alib2data/src/rte/formal/FormalRTEEmpty.h
+++ b/alib2data/src/rte/formal/FormalRTEEmpty.h
@@ -51,9 +51,9 @@ public:
 	virtual bool checkAlphabet ( const ext::set < common::ranked_symbol < SymbolType, RankType > > & alphabetF, const ext::set < common::ranked_symbol < SymbolType, RankType > > & alphabetK ) const override;
 
 	virtual int compare ( const FormalRTEElement < SymbolType, RankType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRTEEmpty & ) const;
diff --git a/alib2data/src/rte/formal/FormalRTEIteration.h b/alib2data/src/rte/formal/FormalRTEIteration.h
index 5c57ca4ae52aa4b3a65ea8915731a0504b0a98a1..dd3e03c0f3897fb97962a913d3798e584232d3f6 100644
--- a/alib2data/src/rte/formal/FormalRTEIteration.h
+++ b/alib2data/src/rte/formal/FormalRTEIteration.h
@@ -81,9 +81,9 @@ public:
 	void setSubstitutionSymbol ( FormalRTESymbolSubst < SymbolType, RankType > element );
 
 	virtual int compare ( const FormalRTEElement < SymbolType, RankType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRTEIteration & ) const;
diff --git a/alib2data/src/rte/formal/FormalRTESubstitution.h b/alib2data/src/rte/formal/FormalRTESubstitution.h
index 79c3d931814af0e8c9a00ae923b18af4516c354e..49f5d090dac6b183bec5348e446f9f1d137c44b8 100644
--- a/alib2data/src/rte/formal/FormalRTESubstitution.h
+++ b/alib2data/src/rte/formal/FormalRTESubstitution.h
@@ -85,9 +85,9 @@ public:
 	void setSubstitutionSymbol ( FormalRTESymbolSubst < SymbolType, RankType > element );
 
 	virtual int compare ( const FormalRTEElement < SymbolType, RankType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	int compare ( const FormalRTESubstitution & ) const;
diff --git a/alib2data/src/rte/formal/FormalRTESymbolAlphabet.h b/alib2data/src/rte/formal/FormalRTESymbolAlphabet.h
index 60808d3423a9799a54e816df006afc35135bb0ee..949322e8cd7bbe0d4b8cd049269cb86b009c81b2 100644
--- a/alib2data/src/rte/formal/FormalRTESymbolAlphabet.h
+++ b/alib2data/src/rte/formal/FormalRTESymbolAlphabet.h
@@ -63,9 +63,9 @@ public:
 	int compare ( const FormalRTESymbolAlphabet & ) const;
 
 	virtual int compare ( const FormalRTEElement < SymbolType, RankType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	/**
diff --git a/alib2data/src/rte/formal/FormalRTESymbolSubst.h b/alib2data/src/rte/formal/FormalRTESymbolSubst.h
index 818120c59c6c573676f3828c5abbd0681c214b44..dffba15bc02a848301cf1b03d83eaa34ba673ba6 100644
--- a/alib2data/src/rte/formal/FormalRTESymbolSubst.h
+++ b/alib2data/src/rte/formal/FormalRTESymbolSubst.h
@@ -56,9 +56,9 @@ public:
 	int compare ( const FormalRTESymbolSubst & ) const;
 
 	virtual int compare ( const FormalRTEElement < SymbolType, RankType > & other ) const override {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	/**
diff --git a/alib2data/src/string/CyclicString.h b/alib2data/src/string/CyclicString.h
index 86f9908bb4fe7b6869bb17ddfaeb8c43cf4d4060..9b3e614ba1c06a533d468cf3f3aed08b987ea76b 100644
--- a/alib2data/src/string/CyclicString.h
+++ b/alib2data/src/string/CyclicString.h
@@ -68,9 +68,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const CyclicString & other ) const;
diff --git a/alib2data/src/string/Epsilon.h b/alib2data/src/string/Epsilon.h
index 7be2645795fd104add146d5cf4c99db40e7c0ea9..2eceda3b3bc4ee72bad11269d3e7022581621aff 100644
--- a/alib2data/src/string/Epsilon.h
+++ b/alib2data/src/string/Epsilon.h
@@ -60,9 +60,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const Epsilon & other ) const;
diff --git a/alib2data/src/string/LinearString.h b/alib2data/src/string/LinearString.h
index 94cc77f5302819a6348935db57ead7410e2fc18f..8580f76e018fd539f4c1edb58c833d814e39ad32 100644
--- a/alib2data/src/string/LinearString.h
+++ b/alib2data/src/string/LinearString.h
@@ -88,9 +88,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const LinearString & other ) const;
diff --git a/alib2data/src/tree/ranked/PostfixRankedTree.h b/alib2data/src/tree/ranked/PostfixRankedTree.h
index 9a772009fce82f4e092ddd7b73d93d5c7f446f16..a371d3101264dbeb51bcc84b7145265e51a0cf85 100644
--- a/alib2data/src/tree/ranked/PostfixRankedTree.h
+++ b/alib2data/src/tree/ranked/PostfixRankedTree.h
@@ -72,9 +72,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PostfixRankedTree & other ) const;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
index 72819f2bcc012cd1f8d170668091e55a14238202..e1da66041fd1aaf6ace7940063a0da0c19172c16 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarNonlinearPattern.h
@@ -105,9 +105,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PrefixRankedBarNonlinearPattern & other ) const;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
index bc2bc9edddb5fb93246daef599df588fd0724e16..7fefba438a99f5ba7ebe5b45646a8882e3b1b5a3 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarPattern.h
@@ -94,9 +94,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PrefixRankedBarPattern & other ) const;
diff --git a/alib2data/src/tree/ranked/PrefixRankedBarTree.h b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
index ebbc6c3d6391dcd3553caf72c5162652cfe493cf..d0d23094946c100459feb61cae906e7ba6e3f680 100644
--- a/alib2data/src/tree/ranked/PrefixRankedBarTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedBarTree.h
@@ -81,9 +81,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PrefixRankedBarTree & other ) const;
diff --git a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
index b8a89a904656587d22c28a034ced1d25ffce4d0a..f5b8a3df9f4a58081743620c0de6adc29f55e7dc 100644
--- a/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedNonlinearPattern.h
@@ -89,9 +89,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PrefixRankedNonlinearPattern & other ) const;
diff --git a/alib2data/src/tree/ranked/PrefixRankedPattern.h b/alib2data/src/tree/ranked/PrefixRankedPattern.h
index a4e82a5fa3ca912917a09e31ad43dd7d0887428c..a7f4757e4b823987b537f5da0b348ebdd3cbba58 100644
--- a/alib2data/src/tree/ranked/PrefixRankedPattern.h
+++ b/alib2data/src/tree/ranked/PrefixRankedPattern.h
@@ -80,9 +80,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PrefixRankedPattern & other ) const;
diff --git a/alib2data/src/tree/ranked/PrefixRankedTree.h b/alib2data/src/tree/ranked/PrefixRankedTree.h
index 78382d3fd3fb65df01ee094b88a3158c71cda566..edefb3d6bbd44fd77dcdc58be4b468507c9a9a25 100644
--- a/alib2data/src/tree/ranked/PrefixRankedTree.h
+++ b/alib2data/src/tree/ranked/PrefixRankedTree.h
@@ -72,9 +72,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PrefixRankedTree & other ) const;
diff --git a/alib2data/src/tree/ranked/RankedNonlinearPattern.h b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
index c708348e7ef9997534e75b5086516997ae293a2a..87f845a74648c601b855ae00ebd96c8338158505 100644
--- a/alib2data/src/tree/ranked/RankedNonlinearPattern.h
+++ b/alib2data/src/tree/ranked/RankedNonlinearPattern.h
@@ -97,9 +97,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const RankedNonlinearPattern & other ) const;
diff --git a/alib2data/src/tree/ranked/RankedPattern.h b/alib2data/src/tree/ranked/RankedPattern.h
index e050e1cdfd0949b721cd7662655cfd3f26452a24..cca9ae27c75312e814a7f4ea9f4ccd98c77d4ff2 100644
--- a/alib2data/src/tree/ranked/RankedPattern.h
+++ b/alib2data/src/tree/ranked/RankedPattern.h
@@ -91,9 +91,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const RankedPattern & other ) const;
diff --git a/alib2data/src/tree/ranked/RankedTree.h b/alib2data/src/tree/ranked/RankedTree.h
index cb32bf0e73c40f432477a800f87dce6065e62084..d22abb58129af40c8bb19981eb5519f6a5bacae4 100644
--- a/alib2data/src/tree/ranked/RankedTree.h
+++ b/alib2data/src/tree/ranked/RankedTree.h
@@ -88,9 +88,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const RankedTree & other ) const;
diff --git a/alib2data/src/tree/unranked/PrefixBarTree.h b/alib2data/src/tree/unranked/PrefixBarTree.h
index 34722ce00dcf809f3c4362e80e603a7ed3cc0849..0f8efc4c5b5ec3a1355e3f5b7ad1107cde783e04 100644
--- a/alib2data/src/tree/unranked/PrefixBarTree.h
+++ b/alib2data/src/tree/unranked/PrefixBarTree.h
@@ -78,9 +78,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const PrefixBarTree & other ) const;
diff --git a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
index a955365a6ad9867e5123ad6fc13108bc4de40ae6..c871dba0f85149381661d8f7b9d2661d4cdd42c5 100644
--- a/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedNonlinearPattern.h
@@ -101,9 +101,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const UnrankedNonlinearPattern & other ) const;
diff --git a/alib2data/src/tree/unranked/UnrankedPattern.h b/alib2data/src/tree/unranked/UnrankedPattern.h
index db8f2367d972965e9c5b35d08908e73711d164d2..f02b92867429b7b3960ecafe38589c80733be1e7 100644
--- a/alib2data/src/tree/unranked/UnrankedPattern.h
+++ b/alib2data/src/tree/unranked/UnrankedPattern.h
@@ -89,9 +89,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const UnrankedPattern & other ) const;
diff --git a/alib2data/src/tree/unranked/UnrankedTree.h b/alib2data/src/tree/unranked/UnrankedTree.h
index 88b9a310898230155a7fbc24b7a408a656370318..ec81bee2509b7d4322dc0a72ccabe437b885227d 100644
--- a/alib2data/src/tree/unranked/UnrankedTree.h
+++ b/alib2data/src/tree/unranked/UnrankedTree.h
@@ -84,9 +84,9 @@ public:
 	virtual void operator >>( std::ostream & out ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const UnrankedTree & other ) const;
diff --git a/alib2data_experimental/src/graph/directed/DirectedGraph.h b/alib2data_experimental/src/graph/directed/DirectedGraph.h
index 9fa1124a98c966a4be05cd650b8943d6b179b103..022186f38f9a0676743d24d90e59fe8132a914f2 100644
--- a/alib2data_experimental/src/graph/directed/DirectedGraph.h
+++ b/alib2data_experimental/src/graph/directed/DirectedGraph.h
@@ -95,9 +95,9 @@ public:
 	// commmon methods
 
 	int compare( const ObjectBase & other ) const override {
-		if (std::type_index( typeid( *this ) ) == std::type_index( typeid( other ) ))
+		if (ext::type_index( typeid( *this ) ) == ext::type_index( typeid( other ) ))
 			return this->compare( (decltype( *this ))other );
-		return std::type_index( typeid( *this ) ) - std::type_index( typeid( other ) );
+		return ext::type_index( typeid( *this ) ) - ext::type_index( typeid( other ) );
 	}
 	int compare( const DirectedGraph & other ) const;
 
diff --git a/alib2data_experimental/src/graph/undirected/UndirectedGraph.h b/alib2data_experimental/src/graph/undirected/UndirectedGraph.h
index a5633fc1cf0810f7f2fe2038c9c185c636afe58d..7f7f10f5d9f2dd171c8afb066bb891951452740d 100644
--- a/alib2data_experimental/src/graph/undirected/UndirectedGraph.h
+++ b/alib2data_experimental/src/graph/undirected/UndirectedGraph.h
@@ -87,9 +87,9 @@ public:
 	// common methods
 
 	int compare( const ObjectBase & other ) const override {
-		if (std::type_index( typeid( *this ) ) == std::type_index( typeid( other ) ))
+		if (ext::type_index( typeid( *this ) ) == ext::type_index( typeid( other ) ))
 			return this->compare( (decltype( *this ))other );
-		return std::type_index( typeid( *this ) ) - std::type_index( typeid( other ) );
+		return ext::type_index( typeid( *this ) ) - ext::type_index( typeid( other ) );
 	}
 	int compare( const UndirectedGraph & other ) const;
 
diff --git a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h
index dfa7aba9b209df93c653b0f3aab96eb0f33a4e8d..b8c930af0a0c039af8e1a86ce9177f00c51771da 100644
--- a/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h
+++ b/alib2data_experimental/src/indexes/suffixTrie/SuffixTrieTerminatingSymbol.h
@@ -88,9 +88,9 @@ public:
 	friend std::ostream & operator <<( std::ostream & out, const SuffixTrieTerminatingSymbol & instance );
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const SuffixTrieTerminatingSymbol & other ) const;
diff --git a/alib2data_experimental/src/label/LR0ItemsLabel.h b/alib2data_experimental/src/label/LR0ItemsLabel.h
index d086b4474a83819eee511124477594525632591b..e0d762e521fe5756608de01ec26eb7f3529d1af0 100644
--- a/alib2data_experimental/src/label/LR0ItemsLabel.h
+++ b/alib2data_experimental/src/label/LR0ItemsLabel.h
@@ -53,9 +53,9 @@ public:
 	}
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const LR0ItemsLabel & other ) const;
diff --git a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
index aae612a9cbd2ad839c95e55c4326ae84005af344..172beb7e08d4262bbbca9b8d2b0e8aac6e683e39 100644
--- a/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
+++ b/alib2data_experimental/src/string/LinearStringTerminatingSymbol.h
@@ -69,9 +69,9 @@ public:
 	bool isEmpty ( ) const;
 
 	virtual int compare ( const ObjectBase & other ) const {
-		if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
+		if ( ext::type_index ( typeid ( * this ) ) == ext::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other );
 
-		return std::type_index ( typeid ( * this ) ) - std::type_index ( typeid ( other ) );
+		return ext::type_index ( typeid ( * this ) ) - ext::type_index ( typeid ( other ) );
 	}
 
 	virtual int compare ( const LinearStringTerminatingSymbol & other ) const;
diff --git a/alib2std/src/extensions/typeindex.cpp b/alib2std/src/extensions/typeindex.cpp
index cf59e91357650e99d567b7c2f5f2510eb94bba38..7cc63488e79b0d348cf1b19fabe4fddb2354ff3f 100644
--- a/alib2std/src/extensions/typeindex.cpp
+++ b/alib2std/src/extensions/typeindex.cpp
@@ -10,18 +10,14 @@
 #include <cstdlib>
 #include <cxxabi.h>
 
-namespace std {
+namespace ext {
 
-std::ostream & operator << ( std::ostream & os, const std::type_index & type ) {
+std::ostream & operator << ( std::ostream & os, const ext::type_index & type ) {
 	os << ext::to_string ( type );
 	return os;
 }
 
-} /* namespace std */
-
-namespace ext {
-
-std::string to_string ( const std::type_index & type ) {
+std::string to_string ( const ext::type_index & type ) {
 	int status;
 
 	char* demangled = abi::__cxa_demangle(type.name(), 0, 0, &status);
diff --git a/alib2std/src/extensions/typeindex.h b/alib2std/src/extensions/typeindex.h
index c698f0c968836331e68e282fb6d0fbbb89a93f5d..061834b7fe58c7cc6253f7ec280aa794d8c53f57 100644
--- a/alib2std/src/extensions/typeindex.h
+++ b/alib2std/src/extensions/typeindex.h
@@ -13,19 +13,21 @@
 
 #include "string.hpp"
 
-namespace std {
+namespace ext {
+
+class type_index : public std::type_index {
+public:
+	using std::type_index::type_index;
+	using std::type_index::operator =;
+};
 
-inline int operator -( const std::type_index & first, const std::type_index & second ) {
+inline int operator -( const ext::type_index & first, const ext::type_index & second ) {
 	return ( first < second ) ? -1 : ( first > second ) ? 1 : 0;
 }
 
-std::ostream & operator << ( std::ostream & os, const std::type_index & type );
-
-} /* namespace std */
-
-namespace ext {
+std::ostream & operator << ( std::ostream & os, const ext::type_index & type );
 
-std::string to_string ( const std::type_index & type );
+std::string to_string ( const ext::type_index & type );
 
 } /* namespace ext */
 
diff --git a/alib2std/src/extensions/typeinfo.cpp b/alib2std/src/extensions/typeinfo.cpp
deleted file mode 100644
index 3ce04b1524eb0c7b1e2e9ced37384a38871ad91d..0000000000000000000000000000000000000000
--- a/alib2std/src/extensions/typeinfo.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * typeinfo.cpp
- *
- * Created on: Apr 14, 2016
- * Author: Jan Travnicek
- */
-
-#include <typeinfo>
-#include <typeindex>
-#include <iostream>
-
-namespace ext {
-
-std::string to_string ( const std::type_info & type ) {
-	return to_string ( std::type_index ( type ) );
-}
-
-} /* namespace ext */
-
-namespace std {
-
-std::ostream & operator << ( std::ostream & os, const std::type_info & type ) {
-	os << ext::to_string ( type );
-	return os;
-}
-
-} /* namespace std */
diff --git a/alib2std/src/extensions/typeinfo.hpp b/alib2std/src/extensions/typeinfo.hpp
index 351ced252b13f61a1e4ac32590a7dde09cb405a5..de1497ccafbd9d32c2831b26d554231bf1dc86d9 100644
--- a/alib2std/src/extensions/typeinfo.hpp
+++ b/alib2std/src/extensions/typeinfo.hpp
@@ -15,14 +15,13 @@
 #include <cstring>
 
 #include "string.hpp"
+#include "typeindex.h"
 
 namespace ext {
 
-std::string to_string ( const std::type_info & type );
-
 template < class T >
 std::string to_string ( ) {
-	return to_string (typeid(T));
+	return ext::to_string ( ext::type_index ( typeid ( T ) ) );
 }
 
 template<typename T>
@@ -41,10 +40,4 @@ bool is_same_type(const char* name) {
 
 } /* namespace ext */
 
-namespace std {
-
-std::ostream & operator << ( std::ostream & os, const std::type_info & type );
-
-} /* namespace std */
-
 #endif /* __TYPEINFO_HPP_ */