diff --git a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp
index ef0522b42a4e5a33f7d4a9250c8022e8b3a4eebc..8e5b822979d6875e6cf1ae6ea003230f9a0b1d0d 100644
--- a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp
+++ b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp
@@ -21,7 +21,7 @@ class ValueOperationAbstractionImpl : virtual public ValueInterface < ReturnType
 	mutable std::optional < ReturnType > m_data;
 
 protected:
-	void setData ( ReturnType data ) {
+	void setData ( ReturnType && data ) {
 		m_data = std::move ( data );
 	}
 
@@ -46,7 +46,7 @@ class ValueOperationAbstractionImpl < const ReturnType > : virtual public ValueI
 	mutable std::optional < ReturnType > m_data;
 
 protected:
-	void setData ( ReturnType data ) {
+	void setData ( ReturnType && data ) {
 		m_data = std::move ( data );
 	}
 
@@ -93,15 +93,15 @@ public:
 
 template < class ReturnType >
 class ValueOperationAbstractionImpl < const ReturnType & > : virtual public ValueInterface < ReturnType > {
-	mutable std::optional < std::reference_wrapper < const ReturnType > > m_data;
+	mutable std::optional < std::reference_wrapper < ReturnType > > m_data;
 
 protected:
 	void setData ( const ReturnType & data ) {
-		m_data = std::reference_wrapper < const ReturnType > ( data );
+		m_data = std::reference_wrapper < ReturnType > ( const_cast < ReturnType & > ( data ) );
 	}
 
 	ReturnType && getValue ( ) const override {
-		return std::move ( const_cast < ReturnType & > ( m_data->get ( ) ) );
+		return std::move ( m_data->get ( ) );
 	}
 
 public:
@@ -143,15 +143,15 @@ public:
 
 template < class ReturnType >
 class ValueOperationAbstractionImpl < const ReturnType && > : virtual public ValueInterface < ReturnType > {
-	mutable std::optional < std::reference_wrapper < const ReturnType > > m_data;
+	mutable std::optional < std::reference_wrapper < ReturnType > > m_data;
 
 protected:
 	void setData ( const ReturnType && data ) {
-		m_data = std::reference_wrapper < const ReturnType > ( data );
+		m_data = std::reference_wrapper < ReturnType > ( const_cast < ReturnType & > ( data ) );
 	}
 
 	ReturnType && getValue ( ) const override {
-		return std::move ( const_cast < ReturnType & > ( m_data->get ( ) ) );
+		return std::move ( m_data->get ( ) );
 	}
 
 public: