diff --git a/src/language/node_processor/FunctionProcessor.hpp b/src/language/node_processor/FunctionProcessor.hpp
index 7c1e06917fab5ba5c2261ab963e8aa214174d43d..41e856d47b78f3a5a0b5c60885bf13cbdecdc3e8 100644
--- a/src/language/node_processor/FunctionProcessor.hpp
+++ b/src/language/node_processor/FunctionProcessor.hpp
@@ -10,9 +10,12 @@
 
 #include <node_processor/ASTNodeExpressionListProcessor.hpp>
 
-struct IFunctionArgumentConverter
+class IFunctionArgumentConverter
 {
+ public:
   virtual DataVariant convert(ExecutionPolicy& exec_policy, DataVariant&& value) = 0;
+
+  virtual ~IFunctionArgumentConverter() = default;
 };
 
 template <typename ExpectedValueType, typename ProvidedValueType>
@@ -105,7 +108,7 @@ class FunctionProcessor : public INodeProcessor
         m_argument_converters[i]->convert(context_exec_policy, std::move(argument_values[i]));
       }
     } else {
-      m_argument_converters[0]->convert(context_exec_policy, std::move(m_argument_node.execute(context_exec_policy)));
+      m_argument_converters[0]->convert(context_exec_policy, m_argument_node.execute(context_exec_policy));
     }
 
     if (m_function_expression_processors.size() == 1) {