diff --git a/alib2str/src/abstraction/StringReaderAbstraction.hpp b/alib2str/src/abstraction/StringReaderAbstraction.hpp
index ab07251e71b365900116c1fe5ac47eed75a741c6..46af4599613decf87f5217aa5ed530c73b9788d9 100644
--- a/alib2str/src/abstraction/StringReaderAbstraction.hpp
+++ b/alib2str/src/abstraction/StringReaderAbstraction.hpp
@@ -8,26 +8,21 @@
 #ifndef _STRING_READER_ABSTRACTION_HPP_
 #define _STRING_READER_ABSTRACTION_HPP_
 
-#include <abstraction/NullaryOperationAbstraction.hpp>
-#include <tuple>
-#include <exception/CommonException.h>
+#include <abstraction/UnaryOperationAbstraction.hpp>
 #include <factory/StringDataFactory.hpp>
 
 namespace abstraction {
 
 template < class ReturnType >
-class StringReaderAbstraction : public NullaryOperationAbstraction < ReturnType > {
+class StringReaderAbstraction : public UnaryOperationAbstraction < ReturnType, std::string && > {
 	std::string m_string;
 
 public:
-	StringReaderAbstraction ( std::string str ) : m_string ( std::move ( str ) ) {
-	}
-
 	virtual bool run ( ) override {
 		if ( this->isReady ( ) )
 			return true;
 
-		ReturnType res = alib::StringDataFactory::fromString ( std::move ( m_string ) );
+		ReturnType res = alib::StringDataFactory::fromString ( std::get < 0 > ( this->m_params )->getRValueReference ( ) );
 		this->m_data = std::move ( res );
 		return true;
 	}
diff --git a/alib2str/src/abstraction/StringReaderRegistry.cpp b/alib2str/src/abstraction/StringReaderRegistry.cpp
index 1046d296def135599cd11e4dbb8269e762052907..cd00e8baf7c155871282411e1b8a7c091020f436 100644
--- a/alib2str/src/abstraction/StringReaderRegistry.cpp
+++ b/alib2str/src/abstraction/StringReaderRegistry.cpp
@@ -9,9 +9,10 @@
 
 namespace abstraction {
 
-std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::getAbstraction ( std::string str ) {
+std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::getAbstraction ( const std::string & str ) {
+	std::stringstream ss ( str );
+
 	auto lambda = [ & ] ( const std::pair < std::function < bool ( std::istream & ) >, std::unique_ptr < Entry > > & entry ) {
-		std::stringstream ss ( str );
 		return entry.first ( ss );
 	};
 
@@ -19,7 +20,7 @@ std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::getA
 	if ( callback == getEntries ( ).end ( ) )
 		throw exception::CommonException ( "Entry not available." );
 
-	return callback->second->getAbstraction ( std::move ( str ) );
+	return callback->second->getAbstraction ( );
 }
 
 } /* namespace abstraction */
diff --git a/alib2str/src/abstraction/StringReaderRegistry.hpp b/alib2str/src/abstraction/StringReaderRegistry.hpp
index f4a4833e1294c0b7fea945f2044ff591daf69ea9..2b91d8539f66aca7e535e6d32b8ebd0e87dd977f 100644
--- a/alib2str/src/abstraction/StringReaderRegistry.hpp
+++ b/alib2str/src/abstraction/StringReaderRegistry.hpp
@@ -21,7 +21,7 @@ namespace abstraction {
 class StringReaderRegistry {
 	class Entry {
 	public:
-		virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string data ) const = 0;
+		virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( ) const = 0;
 
 	};
 
@@ -31,7 +31,7 @@ class StringReaderRegistry {
 		EntryImpl ( ) {
 		}
 
-		virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string data ) const override;
+		virtual std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( ) const override;
 	};
 
 	static ext::deque < std::pair < std::function < bool ( std::istream & ) >, std::unique_ptr < Entry > > > & getEntries ( ) {
@@ -45,7 +45,7 @@ public:
 		getEntries ( ).push_back ( std::make_pair ( alib::stringApi < ReturnType >::first, std::unique_ptr < Entry > ( new EntryImpl < ReturnType > ( ) ) ) );
 	}
 
-	static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( std::string data );
+	static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( const std::string & data );
 };
 
 } /* namespace abstraction */
@@ -55,8 +55,8 @@ public:
 namespace abstraction {
 
 template < class Return >
-std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::EntryImpl < Return >::getAbstraction ( std::string data ) const {
-	return std::make_shared < abstraction::StringReaderAbstraction < Return > > ( std::move ( data ) );
+std::shared_ptr < abstraction::OperationAbstraction > StringReaderRegistry::EntryImpl < Return >::getAbstraction ( ) const {
+	return std::make_shared < abstraction::StringReaderAbstraction < Return > > ( );
 }
 
 } /* namespace abstraction */
diff --git a/alib2str/src/abstraction/StringWriterAbstraction.hpp b/alib2str/src/abstraction/StringWriterAbstraction.hpp
index 788b02afcc495aada12218c67323cc24ee229356..1ae64f805232ffef7621d3a9731e7f89c7c2da0b 100644
--- a/alib2str/src/abstraction/StringWriterAbstraction.hpp
+++ b/alib2str/src/abstraction/StringWriterAbstraction.hpp
@@ -9,13 +9,12 @@
 #define _STRING_WRITER_ABSTRACTION_HPP_
 
 #include <abstraction/UnaryOperationAbstraction.hpp>
-#include <tuple>
 #include <factory/StringDataFactory.hpp>
 
 namespace abstraction {
 
 template < class ParamType >
-class StringWriterAbstraction : public UnaryOperationAbstraction < std::string, ParamType > {
+class StringWriterAbstraction : public UnaryOperationAbstraction < std::string, const ParamType & > {
 public:
 	virtual bool run ( ) override {
 		if ( ! this->inputsReady ( ) )
diff --git a/alib2xml/src/abstraction/XmlComposerAbstraction.hpp b/alib2xml/src/abstraction/XmlComposerAbstraction.hpp
index 604af3be511b7fc0c4629dfcc0012269aa909513..e308e8fba0f67deeba5b5755af38864be6c0cd93 100644
--- a/alib2xml/src/abstraction/XmlComposerAbstraction.hpp
+++ b/alib2xml/src/abstraction/XmlComposerAbstraction.hpp
@@ -14,7 +14,7 @@
 namespace abstraction {
 
 template < class ParamType >
-class XmlComposerAbstraction : public UnaryOperationAbstraction < ext::deque < sax::Token >, ParamType > {
+class XmlComposerAbstraction : public UnaryOperationAbstraction < ext::deque < sax::Token >, const ParamType & > {
 public:
 	virtual bool run ( ) override {
 		if ( ! this->inputsReady ( ) )