diff --git a/alib2abstraction/src/abstraction/WrapperAbstraction.hpp b/alib2abstraction/src/abstraction/WrapperAbstraction.hpp
index 4045fcdc6081f96e836ac457f9d3758d6ff021ea..1fd55d4437a408f089bf723d7cd8fadfa1c60abe 100644
--- a/alib2abstraction/src/abstraction/WrapperAbstraction.hpp
+++ b/alib2abstraction/src/abstraction/WrapperAbstraction.hpp
@@ -14,7 +14,7 @@ class UnspecifiedType {
 
 template < size_t NumberOfParams >
 class WrapperAbstractionImpl : public OperationAbstraction {
-	std::shared_ptr < OperationAbstraction > m_abstraction;
+	std::unique_ptr < OperationAbstraction > m_abstraction;
 	ext::array < std::shared_ptr < abstraction::Value >, NumberOfParams > m_params;
 
 protected:
@@ -22,13 +22,13 @@ protected:
 		return m_params;
 	}
 
-	virtual std::shared_ptr < abstraction::OperationAbstraction > evalAbstractionFunction ( ) = 0;
+	virtual std::unique_ptr < abstraction::OperationAbstraction > evalAbstractionFunction ( ) = 0;
 
-	std::shared_ptr < OperationAbstraction > & getAbstraction ( ) {
+	std::unique_ptr < OperationAbstraction > & getAbstraction ( ) {
 		return m_abstraction;
 	}
 
-	const std::shared_ptr < OperationAbstraction > & getAbstraction ( ) const {
+	const std::unique_ptr < OperationAbstraction > & getAbstraction ( ) const {
 		return m_abstraction;
 	}
 
@@ -106,13 +106,13 @@ namespace abstraction {
 
 template < class ... ParamTypes >
 class WrapperAbstraction : public WrapperAbstractionImpl < sizeof ... ( ParamTypes ) > {
-	std::function < std::shared_ptr < abstraction::OperationAbstraction > ( ParamTypes ... ) > m_WrapperFinder;
+	std::function < std::unique_ptr < abstraction::OperationAbstraction > ( ParamTypes ... ) > m_WrapperFinder;
 
 public:
-	explicit WrapperAbstraction ( std::function < std::shared_ptr < abstraction::OperationAbstraction > ( ParamTypes ... ) > wrapperFinder ) : m_WrapperFinder ( std::move ( wrapperFinder ) ) {
+	explicit WrapperAbstraction ( std::function < std::unique_ptr < abstraction::OperationAbstraction > ( ParamTypes ... ) > wrapperFinder ) : m_WrapperFinder ( std::move ( wrapperFinder ) ) {
 	}
 
-	std::shared_ptr < abstraction::OperationAbstraction > evalAbstractionFunction ( ) override {
+	std::unique_ptr < abstraction::OperationAbstraction > evalAbstractionFunction ( ) override {
 		return abstraction::apply < ParamTypes ... > ( m_WrapperFinder, this->getParams ( ) );
 	}