diff --git a/arm_compute/runtime/NEON/INESimpleFunctionNoBorder.h b/arm_compute/runtime/NEON/INESimpleFunctionNoBorder.h
index 6765b5f..d0c3a9b 100644
--- a/arm_compute/runtime/NEON/INESimpleFunctionNoBorder.h
+++ b/arm_compute/runtime/NEON/INESimpleFunctionNoBorder.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 ARM Limited.
+ * Copyright (c) 2018-2019 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -26,6 +26,7 @@
 
 #include "arm_compute/core/NEON/INEKernel.h"
 #include "arm_compute/runtime/IFunction.h"
+#include "arm_compute/runtime/IRuntimeContext.h"
 
 #include <memory>
 
@@ -35,14 +36,26 @@
 class INESimpleFunctionNoBorder : public IFunction
 {
 public:
-    /** Constructor */
-    INESimpleFunctionNoBorder();
+    /** Constructor
+     *
+     * @param[in] ctx Runtime context to be used by the function
+     */
+    INESimpleFunctionNoBorder(IRuntimeContext *ctx = nullptr);
+    /** Prevent instances of this class from being copied (As this class contains pointers) */
+    INESimpleFunctionNoBorder(const INESimpleFunctionNoBorder &) = delete;
+    /** Default move constructor */
+    INESimpleFunctionNoBorder(INESimpleFunctionNoBorder &&) = default;
+    /** Prevent instances of this class from being copied (As this class contains pointers) */
+    INESimpleFunctionNoBorder &operator=(const INESimpleFunctionNoBorder &) = delete;
+    /** Default move assignment operator */
+    INESimpleFunctionNoBorder &operator=(INESimpleFunctionNoBorder &&) = default;
 
     // Inherited methods overridden:
     void run() override final;
 
 protected:
     std::unique_ptr<INEKernel> _kernel; /**< Kernel to run */
+    IRuntimeContext           *_ctx;    /**< Context to use */
 };
 } // namespace arm_compute
 #endif /*__ARM_COMPUTE_INESIMPLEFUNCTIONNOBORDER_H__ */
diff --git a/arm_compute/runtime/NEON/functions/NEActivationLayer.h b/arm_compute/runtime/NEON/functions/NEActivationLayer.h
index c0b5f7a..d383da4 100644
--- a/arm_compute/runtime/NEON/functions/NEActivationLayer.h
+++ b/arm_compute/runtime/NEON/functions/NEActivationLayer.h
@@ -30,6 +30,7 @@
 
 namespace arm_compute
 {
+// Forward declarations
 class ITensor;
 
 /** Basic function to run @ref NEActivationLayerKernel
@@ -39,6 +40,19 @@
 class NEActivationLayer : public INESimpleFunctionNoBorder
 {
 public:
+    /** Constructor
+     *
+     * @param[in] ctx Runtime context to be used by the function
+     */
+    NEActivationLayer(IRuntimeContext *ctx = nullptr);
+    /** Prevent instances of this class from being copied (As this class contains pointers) */
+    NEActivationLayer(const NEActivationLayer &) = delete;
+    /** Default move constructor */
+    NEActivationLayer(NEActivationLayer &&) = default;
+    /** Prevent instances of this class from being copied (As this class contains pointers) */
+    NEActivationLayer &operator=(const NEActivationLayer &) = delete;
+    /** Default move assignment operator */
+    NEActivationLayer &operator=(NEActivationLayer &&) = default;
     /** Set the input and output tensor.
      *
      * @note If the output tensor is a nullptr or is equal to the input, the activation function will be performed in-place
