diff --git a/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp b/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp
index 9ac23b85d6864cdaeb8115dcd98595914e204054..2942a8232fb8891a6f7eb682cf48f5020463265f 100644
--- a/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp
+++ b/alib2common/src/abstraction/AnyaryOperationAbstraction.hpp
@@ -21,7 +21,7 @@ protected:
 
 private:
 	virtual bool attachInput ( const std::shared_ptr < OperationAbstraction > & input, unsigned index, bool move ) override {
-		std::shared_ptr < ValueProvider < ParamType > > validData = std::dynamic_pointer_cast < ValueProvider < ParamType > > ( input );
+		std::shared_ptr < ValueProvider < ParamType > > validData = std::dynamic_pointer_cast < ValueProvider < ParamType > > ( input->getProxyAbstraction ( ) );
 		if ( validData ) {
 			if ( m_params.size ( ) < index + 1 )
 				m_params.resize ( index + 1 );
diff --git a/alib2common/src/abstraction/NaryOperationAbstraction.hpp b/alib2common/src/abstraction/NaryOperationAbstraction.hpp
index f82fba29321b02f06d1f39641a12c332f41f9af6..9f34be8e3780db3897478a4636474443637d12ef 100644
--- a/alib2common/src/abstraction/NaryOperationAbstraction.hpp
+++ b/alib2common/src/abstraction/NaryOperationAbstraction.hpp
@@ -30,7 +30,7 @@ private:
 			if ( param != nullptr )
 				return false;
 
-			typename std::decay < decltype ( param )>::type validData = std::dynamic_pointer_cast < typename std::decay < decltype ( param ) >::type::element_type > ( input );
+			typename std::decay < decltype ( param )>::type validData = std::dynamic_pointer_cast < typename std::decay < decltype ( param ) >::type::element_type > ( input->getProxyAbstraction ( ) );
 			if ( validData ) {
 				m_moves [ index ] = move;
 				param = validData;
diff --git a/alib2common/src/abstraction/OperationAbstraction.hpp b/alib2common/src/abstraction/OperationAbstraction.hpp
index 44fb7ccfa7f4e4c09e74c0b69d47a34ce7875219..26cfb5468f8a8da1d6a81cbf546b3110c0548998 100644
--- a/alib2common/src/abstraction/OperationAbstraction.hpp
+++ b/alib2common/src/abstraction/OperationAbstraction.hpp
@@ -45,6 +45,9 @@ public:
 		return ext::to_string ( getRuntimeReturnTypeIndex ( ) );
 	}
 
+	virtual std::shared_ptr < abstraction::OperationAbstraction > getProxyAbstraction ( ) {
+		return shared_from_this();
+	}
 };
 
 } /* namespace abstraction */