diff --git a/alib2abstraction/src/factory/NormalizeFactory.hpp b/alib2abstraction/src/factory/NormalizeFactory.hpp
index dcbcd0bb5aac27b4c6045ba6e697a7ff43f52381..61bcf57eae5d5e039bc34936784aea2538306435 100644
--- a/alib2abstraction/src/factory/NormalizeFactory.hpp
+++ b/alib2abstraction/src/factory/NormalizeFactory.hpp
@@ -46,19 +46,19 @@ public:
 	template < class DesignatedType >
 	static object::Object normalize ( DesignatedType && arg ) {
 		if constexpr ( std::is_same_v < DesignatedType, object::Object > ) {
-			return std::move ( arg );
+			return std::forward < DesignatedType > ( arg );
 		} else if constexpr ( is_variant_v < DesignatedType > ) {
 			auto visitor = [] < class T > ( T && element ) {
-				return factory::NormalizeFactory::normalize < T > ( std::move ( element ) );
+				return factory::NormalizeFactory::normalize < T > ( std::forward < T > ( element ) );
 			};
-			return ext::visit ( visitor, std::move ( arg ) );
+			return ext::visit ( visitor, std::forward < DesignatedType > ( arg ) );
 		} else {
 			using normalizedType = typename std::decay < typename std::result_of < decltype ( & core::type_util < DesignatedType >::normalize ) ( DesignatedType && ) >::type >::type;
 
 			if constexpr ( std::is_same_v < normalizedType, DesignatedType > ) {
-				return object::ObjectFactory < >::construct ( std::move ( arg ) );
+				return object::ObjectFactory < >::construct ( std::forward < DesignatedType > ( arg ) );
 			} else {
-				return object::ObjectFactory < >::construct ( core::type_util < DesignatedType >::normalize ( std::move ( arg ) ) );
+				return object::ObjectFactory < >::construct ( core::type_util < DesignatedType >::normalize ( std::forward < DesignatedType > ( arg ) ) );
 			}
 		}
 	}