diff --git a/alib2abstraction/src/abstraction/CastAbstraction.hpp b/alib2abstraction/src/abstraction/CastAbstraction.hpp
index 63a1675d75fe5ca68d0fddd2957ba55748662164..a4602833ccd86062c9c9cc2236108fd043b26658 100644
--- a/alib2abstraction/src/abstraction/CastAbstraction.hpp
+++ b/alib2abstraction/src/abstraction/CastAbstraction.hpp
@@ -17,7 +17,7 @@ class CastAbstraction : public UnaryOperationAbstraction < ReturnType, const Par
 public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) );
-		this->m_data = ReturnType ( retrieveValue < const ParamType & > ( param.first, param.second ) );
+		this->setData ( ReturnType ( retrieveValue < const ParamType & > ( param.first, param.second ) ) );
 
 		return true;
 	}
diff --git a/alib2abstraction/src/abstraction/ImmediateValueAbstraction.hpp b/alib2abstraction/src/abstraction/ImmediateValueAbstraction.hpp
index 919a5388a485eadfcfacaef40452da1f7c1e5d7c..b14b7d6b49205686f3f9ddcd81b94d4d90246dd0 100644
--- a/alib2abstraction/src/abstraction/ImmediateValueAbstraction.hpp
+++ b/alib2abstraction/src/abstraction/ImmediateValueAbstraction.hpp
@@ -16,7 +16,7 @@ template < class ReturnType >
 class ImmediateValueAbstraction : public NullaryOperationAbstraction < ReturnType > {
 public:
 	ImmediateValueAbstraction ( ReturnType result ) {
-		this->m_data = ReturnType ( result );
+		this->setData ( ReturnType ( result ) );
 	}
 
 	bool run ( ) override {
diff --git a/alib2abstraction/src/abstraction/NormalizeAbstraction.hpp b/alib2abstraction/src/abstraction/NormalizeAbstraction.hpp
index c75bdf2dfa5a9c52a2a5e552d11a078c2ce715c6..55b22ff3bd6b9305ad32078d7ae92b81875b5b4b 100644
--- a/alib2abstraction/src/abstraction/NormalizeAbstraction.hpp
+++ b/alib2abstraction/src/abstraction/NormalizeAbstraction.hpp
@@ -20,9 +20,7 @@ public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & rawParam = std::get < 0 > ( this->getParams ( ) );
 		ParamType && param = retrieveValue < ParamType && > ( rawParam.first, rawParam.second );
-		ReturnType res = factory::NormalizeFactory::normalize ( std::move ( param ) );
-
-		this->m_data = std::move ( res );
+		this->setData ( factory::NormalizeFactory::normalize ( std::move ( param ) ) );
 
 		return true;
 	}
diff --git a/alib2abstraction/src/abstraction/ReferenceAbstraction.hpp b/alib2abstraction/src/abstraction/ReferenceAbstraction.hpp
index a186d25cd6c1987e48c86eb6befc68349b37d650..9c4064a141f7fcdda24fd807dbebda391044ddd0 100644
--- a/alib2abstraction/src/abstraction/ReferenceAbstraction.hpp
+++ b/alib2abstraction/src/abstraction/ReferenceAbstraction.hpp
@@ -17,7 +17,7 @@ class ReferenceAbstraction : public UnaryOperationAbstraction < Type *, Type & >
 public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) );
-		this->m_data = & retrieveValue < Type & > ( param.first, param.second );
+		this->setData ( & retrieveValue < Type & > ( param.first, param.second ) );
 
 		return true;
 	}
diff --git a/alib2abstraction/src/abstraction/SetAbstraction.hpp b/alib2abstraction/src/abstraction/SetAbstraction.hpp
index 7ac4b6587599d4655c99999d8974d2cd4b25a806..70293c46c99937f6a66612b4a9d9180b72385c4a 100644
--- a/alib2abstraction/src/abstraction/SetAbstraction.hpp
+++ b/alib2abstraction/src/abstraction/SetAbstraction.hpp
@@ -23,7 +23,7 @@ public:
 			theSet.insert ( abstraction::retrieveValue < ParamType > ( param.first, param.second ) );
 		}
 
-		this->m_data = theSet;
+		this->setData ( std::move ( theSet ) );
 
 		return true;
 	}
diff --git a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp
index 24895c582352b15f625a888832d0eb6396016423..a6d17f47f1d17a9c51c8293b89014ed5953d79a3 100644
--- a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp
+++ b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp
@@ -25,6 +25,8 @@ class UnspecifiedType {
 
 template < class ReturnType >
 class ValueOperationAbstraction : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < ReturnType & >, public ValueProvider < const ReturnType & >, public ValueProvider < ReturnType && >, public ValueProvider < const ReturnType && > {
+	mutable std::optional < ReturnType > m_data;
+
 protected:
 	bool isConst ( ) const override {
 		return false;
@@ -46,13 +48,15 @@ protected:
 		return m_data.value ( );
 	}
 
-	mutable std::optional < ReturnType > m_data;
+	void setData ( ReturnType data ) {
+		m_data = std::move ( data );
+	}
 
 public:
 	template < typename ... ParamTypes, typename Callable >
 	inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) {
 		if ( ! cached ( ) )
-			m_data = abstraction::apply < ParamTypes ... > ( callback, inputs );
+			setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) );
 	}
 
 	ext::type_index getReturnTypeIndex ( ) const override {
@@ -74,6 +78,8 @@ public:
 
 template < class ReturnType >
 class ValueOperationAbstraction < const ReturnType > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < const ReturnType & >, public ValueProvider < const ReturnType && > {
+	mutable std::optional < ReturnType > m_data;
+
 protected:
 	bool isConst ( ) const override {
 		return true;
@@ -95,13 +101,15 @@ protected:
 		return m_data.value ( );
 	}
 
-	mutable std::optional < ReturnType > m_data;
+	void setData ( ReturnType data ) {
+		m_data = std::move ( data );
+	}
 
 public:
 	template < typename ... ParamTypes, typename Callable >
 	inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) {
 		if ( ! cached ( ) )
-			m_data = abstraction::apply < ParamTypes ... > ( callback, inputs );
+			setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) );
 	}
 
 	ext::type_index getReturnTypeIndex ( ) const override {
@@ -123,6 +131,8 @@ public:
 
 template < class ReturnType >
 class ValueOperationAbstraction < ReturnType & > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < ReturnType & >, public ValueProvider < const ReturnType & >, public ValueProvider < ReturnType && >, public ValueProvider < const ReturnType && > {
+	mutable std::optional < std::reference_wrapper < ReturnType > > m_data;
+
 protected:
 	bool isConst ( ) const override {
 		return false;
@@ -144,13 +154,15 @@ protected:
 		return m_data->get ( );
 	}
 
-	mutable std::optional < std::reference_wrapper < ReturnType > > m_data;
+	void setData ( ReturnType & data ) {
+		m_data = std::reference_wrapper < ReturnType > ( data );
+	}
 
 public:
 	template < typename ... ParamTypes, typename Callable >
 	inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) {
 		if ( ! cached ( ) )
-			m_data = std::reference_wrapper < ReturnType > ( abstraction::apply < ParamTypes ... > ( callback, inputs ) );
+			setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) );
 	}
 
 	ext::type_index getReturnTypeIndex ( ) const override {
@@ -172,6 +184,8 @@ public:
 
 template < class ReturnType >
 class ValueOperationAbstraction < const ReturnType & > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < const ReturnType & >, public ValueProvider < const ReturnType && > {
+	mutable std::optional < std::reference_wrapper < const ReturnType > > m_data;
+
 protected:
 	bool isConst ( ) const override {
 		return true;
@@ -193,13 +207,15 @@ protected:
 		return m_data->get ( );
 	}
 
-	mutable std::optional < std::reference_wrapper < const ReturnType > > m_data;
+	void setData ( const ReturnType & data ) {
+		m_data = std::reference_wrapper < const ReturnType > ( data );
+	}
 
 public:
 	template < typename ... ParamTypes, typename Callable >
 	inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) {
 		if ( ! cached ( ) )
-			m_data = std::reference_wrapper < const ReturnType > ( abstraction::apply < ParamTypes ... > ( callback, inputs ) );
+			setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) );
 	}
 
 	ext::type_index getReturnTypeIndex ( ) const override {
@@ -221,6 +237,8 @@ public:
 
 template < class ReturnType >
 class ValueOperationAbstraction < ReturnType && > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < const ReturnType & >, public ValueProvider < ReturnType && >, public ValueProvider < const ReturnType && > {
+	mutable std::optional < std::reference_wrapper < ReturnType > > m_data;
+
 protected:
 	bool isConst ( ) const override {
 		return false;
@@ -242,15 +260,15 @@ protected:
 		return m_data->get ( );
 	}
 
-	mutable std::optional < std::reference_wrapper < ReturnType > > m_data;
+	void setData ( ReturnType && data ) {
+		m_data = std::reference_wrapper < ReturnType > ( data );
+	}
 
 public:
 	template < typename ... ParamTypes, typename Callable >
 	inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) {
-		if ( ! cached ( ) ) {
-			ReturnType && res = abstraction::apply < ParamTypes ... > ( callback, inputs );
-			m_data = std::reference_wrapper < ReturnType > ( res );
-		}
+		if ( ! cached ( ) )
+			setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) );
 	}
 
 	ext::type_index getReturnTypeIndex ( ) const override {
@@ -272,6 +290,8 @@ public:
 
 template < class ReturnType >
 class ValueOperationAbstraction < const ReturnType && > : public OperationAbstraction, public ValueProvider < ReturnType >, public ValueProvider < const ReturnType & >, public ValueProvider < const ReturnType && > {
+	mutable std::optional < std::reference_wrapper < const ReturnType > > m_data;
+
 protected:
 	bool isConst ( ) const override {
 		return true;
@@ -293,15 +313,15 @@ protected:
 		return m_data->get ( );
 	}
 
-	mutable std::optional < std::reference_wrapper < const ReturnType > > m_data;
+	void setData ( const ReturnType && data ) {
+		m_data = std::reference_wrapper < const ReturnType > ( data );
+	}
 
 public:
 	template < typename ... ParamTypes, typename Callable >
 	inline void run_helper ( Callable callback, const ext::array < std::pair < std::shared_ptr < OperationAbstraction >, bool >, sizeof ... ( ParamTypes ) > & inputs ) {
-		if ( ! cached ( ) ) {
-			const ReturnType && res = abstraction::apply < ParamTypes ... > ( callback, inputs );
-			m_data = std::reference_wrapper < const ReturnType > ( res );
-		}
+		if ( ! cached ( ) )
+			setData ( abstraction::apply < ParamTypes ... > ( callback, inputs ) );
 	}
 
 	ext::type_index getReturnTypeIndex ( ) const override {
diff --git a/alib2abstraction/src/registry/AlgorithmRegistry.hpp b/alib2abstraction/src/registry/AlgorithmRegistry.hpp
index 416913d2b43b7d92e14cbf30cea9ebc4c49d43ba..414ef798f84b402f1329a4312bd09a05f22a0918 100644
--- a/alib2abstraction/src/registry/AlgorithmRegistry.hpp
+++ b/alib2abstraction/src/registry/AlgorithmRegistry.hpp
@@ -168,7 +168,7 @@ public:
 	}
 
 	template < class Algo, class ObjectType, class ReturnType, class ... ParamTypes >
-	static void registerMethod ( ReturnType ( ObjectType:: * callback ) ( ParamTypes ... ), std::string methodName, std::array < std::string, sizeof ... ( ParamTypes ) > paramNames ) {
+	static void registerMethod ( ReturnType ( ObjectType:: * callback ) ( ParamTypes ... ), const std::string & methodName, std::array < std::string, sizeof ... ( ParamTypes ) > paramNames ) {
 		std::string algorithm = ext::to_string < Algo > ( ) + "::" + methodName;
 		ext::vector < std::string > templateParams;
 
@@ -176,7 +176,7 @@ public:
 	}
 
 	template < class Algo, class ObjectType, class ReturnType, class ... ParamTypes >
-	static void registerMethod ( ReturnType ( ObjectType:: * callback ) ( ParamTypes ... ) const, std::string methodName, std::array < std::string, sizeof ... ( ParamTypes ) > paramNames ) {
+	static void registerMethod ( ReturnType ( ObjectType:: * callback ) ( ParamTypes ... ) const, const std::string & methodName, std::array < std::string, sizeof ... ( ParamTypes ) > paramNames ) {
 		std::string algorithm = ext::to_string < Algo > ( ) + "::" + methodName;
 		ext::vector < std::string > templateParams;
 
diff --git a/alib2raw/src/abstraction/RawReaderAbstraction.hpp b/alib2raw/src/abstraction/RawReaderAbstraction.hpp
index 7c23b37e3d947d9c6b1856ca0cd880a8fd06fdc3..a0960151e5b043e6bb939bc1f702699034dbdba5 100644
--- a/alib2raw/src/abstraction/RawReaderAbstraction.hpp
+++ b/alib2raw/src/abstraction/RawReaderAbstraction.hpp
@@ -18,8 +18,7 @@ class RawReaderAbstraction : public UnaryOperationAbstraction < ReturnType, std:
 public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) );
-		ReturnType res = factory::RawDataFactory::fromString ( abstraction::retrieveValue < std::string && > ( param.first, param.second ) );
-		this->m_data = std::move ( res );
+		this->setData ( factory::RawDataFactory::fromString ( abstraction::retrieveValue < std::string && > ( param.first, param.second ) ) );
 		return true;
 	}
 };
diff --git a/alib2raw/src/abstraction/RawWriterAbstraction.hpp b/alib2raw/src/abstraction/RawWriterAbstraction.hpp
index 50128d233cf4f8aeb07cb7a8c656bca1b156104e..3e786c549a9f038490976ce99dc8ab10d929cf8a 100644
--- a/alib2raw/src/abstraction/RawWriterAbstraction.hpp
+++ b/alib2raw/src/abstraction/RawWriterAbstraction.hpp
@@ -18,7 +18,7 @@ class RawWriterAbstraction : public UnaryOperationAbstraction < std::string, con
 public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) );
-		this->m_data = factory::RawDataFactory::toString ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) );
+		this->setData ( factory::RawDataFactory::toString ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) ) );
 		return true;
 	}
 };
diff --git a/alib2str/src/abstraction/StringReaderAbstraction.hpp b/alib2str/src/abstraction/StringReaderAbstraction.hpp
index 4faed98d069073d2b8f1a23e70abe6155d34d65a..6827665adc5c2922d23d6727047608ec4a6d13e6 100644
--- a/alib2str/src/abstraction/StringReaderAbstraction.hpp
+++ b/alib2str/src/abstraction/StringReaderAbstraction.hpp
@@ -18,8 +18,7 @@ class StringReaderAbstraction : public UnaryOperationAbstraction < ReturnType, s
 public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) );
-		ReturnType res = factory::StringDataFactory::fromString ( abstraction::retrieveValue < std::string && > ( param.first, param.second ) );
-		this->m_data = std::move ( res );
+		this->setData ( factory::StringDataFactory::fromString ( abstraction::retrieveValue < std::string && > ( param.first, param.second ) ) );
 		return true;
 	}
 };
diff --git a/alib2str/src/abstraction/StringWriterAbstraction.hpp b/alib2str/src/abstraction/StringWriterAbstraction.hpp
index 15cb5872024ad5236daec5396631ab64e87a9723..9bfd3228073237a46f205b8d958c43d1127df8b7 100644
--- a/alib2str/src/abstraction/StringWriterAbstraction.hpp
+++ b/alib2str/src/abstraction/StringWriterAbstraction.hpp
@@ -18,7 +18,7 @@ class StringWriterAbstraction : public UnaryOperationAbstraction < std::string,
 public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) );
-		this->m_data = factory::StringDataFactory::toString ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) );
+		this->setData ( factory::StringDataFactory::toString ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) ) );
 		return true;
 	}
 };
diff --git a/alib2xml/src/abstraction/XmlComposerAbstraction.hpp b/alib2xml/src/abstraction/XmlComposerAbstraction.hpp
index 0a50924bdbcea1228e73f673b9ba5bc6a41b13b5..5da461dc9258783e777dec19580fa0b5f844537d 100644
--- a/alib2xml/src/abstraction/XmlComposerAbstraction.hpp
+++ b/alib2xml/src/abstraction/XmlComposerAbstraction.hpp
@@ -18,7 +18,7 @@ class XmlComposerAbstraction : public UnaryOperationAbstraction < ext::deque < s
 public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) );
-		this->m_data = factory::XmlDataFactory::toTokens ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) );
+		this->setData ( factory::XmlDataFactory::toTokens ( abstraction::retrieveValue < const ParamType & > ( param.first, param.second ) ) );
 		return true;
 	}
 };
diff --git a/alib2xml/src/abstraction/XmlParserAbstraction.hpp b/alib2xml/src/abstraction/XmlParserAbstraction.hpp
index 2e5e1ab3fc53305acc1645f33e0ffff7d1c6a5a6..ddea4287ac9ffb57e9f90feee052d48441cc49dd 100644
--- a/alib2xml/src/abstraction/XmlParserAbstraction.hpp
+++ b/alib2xml/src/abstraction/XmlParserAbstraction.hpp
@@ -20,8 +20,7 @@ class XmlParserAbstraction : public UnaryOperationAbstraction < ReturnType, ext:
 public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) );
-		ReturnType res = factory::XmlDataFactory::fromTokens ( abstraction::retrieveValue < ext::deque < sax::Token > && > ( param.first, param.second ) );
-		this->m_data = std::move ( res );
+		this->setData ( factory::XmlDataFactory::fromTokens ( abstraction::retrieveValue < ext::deque < sax::Token > && > ( param.first, param.second ) ) );
 		return true;
 	}
 };
diff --git a/alib2xml/src/abstraction/XmlTokensParserAbstraction.hpp b/alib2xml/src/abstraction/XmlTokensParserAbstraction.hpp
index c1f194f144ad0d15be3a2279aaad0c7075a57268..d6b2cae41f9ba74a432b8b89c891665f85d79975 100644
--- a/alib2xml/src/abstraction/XmlTokensParserAbstraction.hpp
+++ b/alib2xml/src/abstraction/XmlTokensParserAbstraction.hpp
@@ -17,7 +17,7 @@ class XmlTokensParserAbstraction : public UnaryOperationAbstraction < ext::deque
 public:
 	bool run ( ) override {
 		std::pair < std::shared_ptr < OperationAbstraction >, bool > & param = std::get < 0 > ( this->getParams ( ) );
-		this->m_data = sax::SaxParseInterface::parseFile ( abstraction::retrieveValue < const std::string & > ( param.first, param.second ) );
+		this->setData ( sax::SaxParseInterface::parseFile ( abstraction::retrieveValue < const std::string & > ( param.first, param.second ) ) );
 		return true;
 	}
 };