diff --git a/alib2common/src/abstraction/AlgorithmAbstraction.hpp b/alib2common/src/abstraction/AlgorithmAbstraction.hpp
index 08ec27b27cff93a4e8d816e279e4d8b4cad431e9..0ccb2a3f719743f1b4f4b110915e5f7366a4a65b 100644
--- a/alib2common/src/abstraction/AlgorithmAbstraction.hpp
+++ b/alib2common/src/abstraction/AlgorithmAbstraction.hpp
@@ -9,7 +9,6 @@
 #define _ALGORITHM_ABSTRACTION_HPP_
 
 #include <abstraction/NaryOperationAbstraction.hpp>
-#include <tuple>
 #include <memory>
 #include <abstraction/Registry.h>
 
diff --git a/alib2common/src/abstraction/AlgorithmRegistry.hpp b/alib2common/src/abstraction/AlgorithmRegistry.hpp
index ae0c0b63d0041be774d223b5eb8d5cae6503e195..d0f4b8eb530567b11197d74746b492a1a6cf9836 100644
--- a/alib2common/src/abstraction/AlgorithmRegistry.hpp
+++ b/alib2common/src/abstraction/AlgorithmRegistry.hpp
@@ -14,6 +14,7 @@
 #include <string>
 #include <set>
 #include <map>
+#include <tuple>
 #include <algorithm>
 
 #include <exception/CommonException.h>
diff --git a/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp b/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp
index 180363e540df8871031b4c2f002a6afe552f9d85..9ac23b85d6864cdaeb8115dcd98595914e204054 100644
--- a/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp
+++ b/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp
@@ -9,7 +9,6 @@
 #define _ANYARY_OPERATION_ABSTRACTION_HPP_
 
 #include <abstraction/ValueOperationAbstraction.hpp>
-#include <tuple>
 #include <memory>
 #include <abstraction/Registry.h>
 
diff --git a/alib2common/src/abstraction/CastAbstraction.hpp b/alib2common/src/abstraction/CastAbstraction.hpp
index 66388e3d5b6763c04c1f8c82827a946274bac50d..0f97f9aaebca1c484c813804257ee5750eb29c0a 100644
--- a/alib2common/src/abstraction/CastAbstraction.hpp
+++ b/alib2common/src/abstraction/CastAbstraction.hpp
@@ -9,7 +9,6 @@
 #define _CAST_ABSTRACTION_HPP_
 
 #include <abstraction/UnaryOperationAbstraction.hpp>
-#include <tuple>
 
 namespace abstraction {
 
diff --git a/alib2common/src/abstraction/CastRegistry.hpp b/alib2common/src/abstraction/CastRegistry.hpp
index ab4b03720b866b783e518eb511251325a6b2ae04..e53379211b138e395acf67c6dbc6f0306fbb69b3 100644
--- a/alib2common/src/abstraction/CastRegistry.hpp
+++ b/alib2common/src/abstraction/CastRegistry.hpp
@@ -61,7 +61,7 @@ public:
 	template < class TargetType, class ParamType >
 	static void registerCast ( std::string target, std::string param, bool normalize ) {
 		if ( ! getEntries ( ).insert ( std::make_pair ( std::make_pair ( target, param ), std::unique_ptr < Entry > ( new DefaultEntryImpl < TargetType, ParamType > ( normalize ) ) ) ).second )
-			throw ::exception::CommonException ( "Entry from " + param + " to " + target + " already registered." );
+			throw exception::CommonException ( "Entry from " + param + " to " + target + " already registered." );
 	}
 
 	template < class TargetType, class ParamType >
@@ -75,7 +75,7 @@ public:
 	template < class TargetType, class ParamType >
 	static void registerCastAlgorithm ( std::string target, std::string param, TargetType ( * callback ) ( const ParamType & ), bool normalize ) {
 		if ( ! getEntries ( ).insert ( std::make_pair ( std::make_pair ( target, param ), std::unique_ptr < Entry > ( new AlgorithmEntryImpl < TargetType, const ParamType & > ( callback, normalize ) ) ) ).second )
-			throw ::exception::CommonException ( "Entry from " + param + " to " + target + " already registered." );
+			throw exception::CommonException ( "Entry from " + param + " to " + target + " already registered." );
 	}
 
 	template < class TargetType, class ParamType >
@@ -89,7 +89,7 @@ public:
 	template < class TargetType, class ParamType >
 	static void registerCastAlgorithm ( std::string target, std::string param, TargetType ( * callback ) ( ParamType ), bool normalize ) {
 		if ( ! getEntries ( ).insert ( std::make_pair ( std::make_pair ( target, param ), std::unique_ptr < Entry > ( new AlgorithmEntryImpl < TargetType, ParamType > ( callback, normalize ) ) ) ).second )
-			throw ::exception::CommonException ( "Entry from " + param + " to " + target + " already registered." );
+			throw exception::CommonException ( "Entry from " + param + " to " + target + " already registered." );
 	}
 
 	template < class TargetType, class ParamType >
diff --git a/alib2common/src/abstraction/ContainerRegistry.cpp b/alib2common/src/abstraction/ContainerRegistry.cpp
index e3a3793aefa7aeea8eff967c2a77de706b160f22..d017710736c6734500bd0e6db574635f6e127aa5 100644
--- a/alib2common/src/abstraction/ContainerRegistry.cpp
+++ b/alib2common/src/abstraction/ContainerRegistry.cpp
@@ -6,7 +6,6 @@
  */
 
 #include <abstraction/ContainerRegistry.hpp>
-#include <foreach>
 #include <algorithm>
 
 namespace abstraction {
diff --git a/alib2common/src/abstraction/ContainerRegistry.hpp b/alib2common/src/abstraction/ContainerRegistry.hpp
index 24962f7eb2fd6be5d16a76c4c70f53f28262842e..3822153c28f480cea0d69ba8509c0dc90c3410e5 100644
--- a/alib2common/src/abstraction/ContainerRegistry.hpp
+++ b/alib2common/src/abstraction/ContainerRegistry.hpp
@@ -13,6 +13,7 @@
 #include <vector>
 #include <string>
 #include <set>
+#include <map>
 
 #include <exception/CommonException.h>
 #include <abstraction/OperationAbstraction.hpp>
diff --git a/alib2common/src/abstraction/DowncastAbstraction.hpp b/alib2common/src/abstraction/DowncastAbstraction.hpp
index 91b15da440ddbba9d517f514708343f7a5dfeac7..6524b3ae64c51845e5f544f4c26a07b31f79dbd8 100644
--- a/alib2common/src/abstraction/DowncastAbstraction.hpp
+++ b/alib2common/src/abstraction/DowncastAbstraction.hpp
@@ -9,7 +9,6 @@
 #define _DOWNCAST_ABSTRACTION_HPP_
 
 #include <abstraction/UnaryOperationAbstraction.hpp>
-#include <memory>
 
 namespace abstraction {
 
diff --git a/alib2common/src/abstraction/DowncastRegistry.hpp b/alib2common/src/abstraction/DowncastRegistry.hpp
index a073e5788aad07655134f141c622345834eeeefb..d70ab37a796cb05c590c9534812d3125c397e323 100644
--- a/alib2common/src/abstraction/DowncastRegistry.hpp
+++ b/alib2common/src/abstraction/DowncastRegistry.hpp
@@ -44,7 +44,7 @@ public:
 		std::string concrete = ext::to_string < ConcreteType > ( );
 		std::string base = ext::to_string < BaseType > ( );
 		if ( ! getEntries ( ).insert ( std::make_pair ( std::make_pair ( concrete, base ), std::unique_ptr < Entry > ( new EntryImpl < ConcreteType, BaseType > ( ) ) ) ).second )
-			throw ::exception::CommonException ( "Downcasting for " + base + " to " + concrete + " already registered." );
+			throw exception::CommonException ( "Downcasting for " + base + " to " + concrete + " already registered." );
 	}
 
 	static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( const std::string & concrete, const std::string & base );
diff --git a/alib2common/src/abstraction/ImmediateValueAbstraction.hpp b/alib2common/src/abstraction/ImmediateValueAbstraction.hpp
index 8db823793f007fe66b197aff9f86e2cf51f092fa..bdaaca0a8e1d93073e620a7b8c95b4893140e0af 100644
--- a/alib2common/src/abstraction/ImmediateValueAbstraction.hpp
+++ b/alib2common/src/abstraction/ImmediateValueAbstraction.hpp
@@ -9,7 +9,6 @@
 #define _IMMEDIATE_VALUE_ABSTRACTION_HPP_
 
 #include <abstraction/NullaryOperationAbstraction.hpp>
-#include <tuple>
 
 namespace abstraction {
 
diff --git a/alib2common/src/abstraction/NormalizeAbstraction.hpp b/alib2common/src/abstraction/NormalizeAbstraction.hpp
index 5997c1938b0045d612f2e2790d7da6094a6ba09b..2baeb7b6e426103679bd70a630e5fe0fca5c5f55 100644
--- a/alib2common/src/abstraction/NormalizeAbstraction.hpp
+++ b/alib2common/src/abstraction/NormalizeAbstraction.hpp
@@ -9,7 +9,6 @@
 #define _NORMALIZE_ABSTRACTION_HPP_
 
 #include <abstraction/UnaryOperationAbstraction.hpp>
-#include <tuple>
 
 #include <core/normalize.hpp>
 
diff --git a/alib2common/src/abstraction/OperationAbstraction.hpp b/alib2common/src/abstraction/OperationAbstraction.hpp
index d37e9f12b2dc0ab14c2d2c6bfed83493b372bc5b..44fb7ccfa7f4e4c09e74c0b69d47a34ce7875219 100644
--- a/alib2common/src/abstraction/OperationAbstraction.hpp
+++ b/alib2common/src/abstraction/OperationAbstraction.hpp
@@ -10,10 +10,7 @@
 
 #include <memory>
 #include <string>
-#include <tuple>
-#include <functional>
-
-#include <exception/CommonException.h>
+#include <typeindex>
 
 namespace abstraction {
 
diff --git a/alib2common/src/abstraction/Registry.h b/alib2common/src/abstraction/Registry.h
index 9c7fd569c11d9bb6c29ae404d765c777d0068fef..ae3fc81cae8e54701e8bddf6286695b62703cff5 100644
--- a/alib2common/src/abstraction/Registry.h
+++ b/alib2common/src/abstraction/Registry.h
@@ -13,6 +13,7 @@
 #include <abstraction/common/AlgorithmCategories.hpp>
 
 #include <pair>
+#include <tuple>
 
 namespace abstraction {
 
diff --git a/alib2common/src/abstraction/SetAbstraction.hpp b/alib2common/src/abstraction/SetAbstraction.hpp
index cf1395b7880d7d75ecdd73a77f8074c0ce9d1801..c25caca61e33bbd367aa1367dd24c7aefe3a1d1c 100644
--- a/alib2common/src/abstraction/SetAbstraction.hpp
+++ b/alib2common/src/abstraction/SetAbstraction.hpp
@@ -9,10 +9,7 @@
 #define _SET_ABSTRACTION_HPP_
 
 #include <abstraction/AnyaryOperationAbstraction.hpp>
-#include <tuple>
 #include <memory>
-#include <abstraction/Registry.h>
-#include <foreach>
 
 namespace abstraction {
 
diff --git a/alib2common/src/abstraction/ValueOperationAbstraction.hpp b/alib2common/src/abstraction/ValueOperationAbstraction.hpp
index 82a482882d05262c75f372863bf9c9aa28e23a58..1b14620b4771f7fadcec6b41ef9e8c61cba3472c 100644
--- a/alib2common/src/abstraction/ValueOperationAbstraction.hpp
+++ b/alib2common/src/abstraction/ValueOperationAbstraction.hpp
@@ -13,7 +13,6 @@
 #include <memory>
 #include <typeindex>
 #include <variant>
-#include <abstraction/Registry.h>
 #include <abstraction/ValueProvider.hpp>
 
 namespace abstraction {
diff --git a/alib2common/src/abstraction/ValuePrinterAbstraction.hpp b/alib2common/src/abstraction/ValuePrinterAbstraction.hpp
index 553c98167edda0a89faf15c3ba681cddeef04e1c..c5bafe2c40bb49c57332b9ec7fa20bdafb2411dc 100644
--- a/alib2common/src/abstraction/ValuePrinterAbstraction.hpp
+++ b/alib2common/src/abstraction/ValuePrinterAbstraction.hpp
@@ -10,7 +10,6 @@
 
 #include <abstraction/UnaryOperationAbstraction.hpp>
 #include <abstraction/NullaryOperationAbstraction.hpp>
-#include <tuple>
 
 namespace abstraction {
 
diff --git a/alib2common/src/abstraction/ValuePrinterRegistry.hpp b/alib2common/src/abstraction/ValuePrinterRegistry.hpp
index d3851708e77fc9d59cb5d9191f0adeafd981daf7..c36fd4254e2d80452b017877d8bc4503958484f5 100644
--- a/alib2common/src/abstraction/ValuePrinterRegistry.hpp
+++ b/alib2common/src/abstraction/ValuePrinterRegistry.hpp
@@ -12,7 +12,6 @@
 #include <string>
 #include <map>
 
-#include <exception/CommonException.h>
 #include <abstraction/OperationAbstraction.hpp>
 
 namespace abstraction {
diff --git a/alib2common/src/abstraction/common/CastHelper.cpp b/alib2common/src/abstraction/common/CastHelper.cpp
index a7711e356118d1b66419f30bf1b708ac8a1d24e7..a613d7a20a1e6c9bc06d364de56a510b78a8592d 100644
--- a/alib2common/src/abstraction/common/CastHelper.cpp
+++ b/alib2common/src/abstraction/common/CastHelper.cpp
@@ -1,5 +1,6 @@
 #include <abstraction/Registry.h>
 #include <abstraction/common/CastHelper.h>
+#include <exception/CommonException.h>
 
 namespace abstraction {