diff --git a/arm_compute/runtime/CL/functions/CLSplit.h b/arm_compute/runtime/CL/functions/CLSplit.h
index 7e22f52..87265a4 100644
--- a/arm_compute/runtime/CL/functions/CLSplit.h
+++ b/arm_compute/runtime/CL/functions/CLSplit.h
@@ -24,9 +24,11 @@
 #ifndef ARM_COMPUTE_CLSPLIT_H
 #define ARM_COMPUTE_CLSPLIT_H
 
+#include "arm_compute/core/CL/ICLTensor.h"
 #include "arm_compute/core/Types.h"
 
 #include "arm_compute/runtime/CL/functions/CLSlice.h"
+#include "arm_compute/runtime/CPP/functions/CPPSplit.h"
 #include "arm_compute/runtime/IFunction.h"
 
 #include <memory>
@@ -34,43 +36,12 @@
 
 namespace arm_compute
 {
-// Forward declarations
-class ICLTensor;
-
 /** Basic function to split a tensor along a given axis */
-class CLSplit : public IFunction
+class CLSplit : public CPPSplit<CLSlice, ICLTensor>
 {
 public:
-    /** Default constructor */
-    CLSplit();
-    /** Initialise the kernel's input and outputs.
-     *
-     * @param[in]  input   The input tensor. Data types supported: All.
-     * @param[out] outputs A vector containing the output tensors. Data types supported: Same as @p input.
-     *                     The output tensors should match the input tensor dimensions for all shape dimensions apart
-     *                     from the split dimension.
-     * @param[in]  axis    Axis on which to split the input.
-     */
-    void configure(const ICLTensor *input, const std::vector<ICLTensor *> &outputs, unsigned int axis);
-    /** Static function to check if given info will lead to a valid configuration of @ref CLSplit
-     *
-     * @param[in] input   The input tensor info. Data types supported: All.
-     * @param[in] outputs A vector containing the output tensors' info. Data types supported: Same as @p input.
-     *                    The output tensors should match the input tensor dimensions for all shape dimensions apart
-     *                    from the split dimension
-     * @param[in] axis    Axis on which to split the input.
-     *
-     * @return a status
-     */
-    static Status validate(const ITensorInfo *input, const std::vector<ITensorInfo *> &outputs, unsigned int axis);
-
     // Inherited methods overridden:
     void run() override;
-
-private:
-    std::vector<ICLTensor *> _outputs_vector;
-    std::vector<CLSlice>     _slice_functions;
-    unsigned int             _num_outputs;
 };
 } // namespace arm_compute
 #endif /* ARM_COMPUTE_CLSPLIT_H */
