diff --git a/src/backends/reference/workloads/RefElementwiseWorkload.hpp b/src/backends/reference/workloads/RefElementwiseWorkload.hpp
index a5ff376..3719049 100644
--- a/src/backends/reference/workloads/RefElementwiseWorkload.hpp
+++ b/src/backends/reference/workloads/RefElementwiseWorkload.hpp
@@ -20,56 +20,14 @@
           typename ParentDescriptor,
           typename armnn::StringMapping::Id DebugString>
 class RefElementwiseWorkload
-{
-    // Needs specialization. The default is empty on purpose.
-};
-
-template <typename ParentDescriptor, typename Functor>
-class BaseFloat32ElementwiseWorkload : public Float32Workload<ParentDescriptor>
+    : public TypedWorkload<ParentDescriptor, DataType>
 {
 public:
-    using Float32Workload<ParentDescriptor>::Float32Workload;
-    void ExecuteImpl(const char * debugString) const;
-};
 
-template <typename Functor,
-          typename ParentDescriptor,
-          typename armnn::StringMapping::Id DebugString>
-class RefElementwiseWorkload<Functor, armnn::DataType::Float32, ParentDescriptor, DebugString>
-    : public BaseFloat32ElementwiseWorkload<ParentDescriptor, Functor>
-{
-public:
-    using BaseFloat32ElementwiseWorkload<ParentDescriptor, Functor>::BaseFloat32ElementwiseWorkload;
+    using TypedWorkload<ParentDescriptor, DataType>::m_Data;
+    using TypedWorkload<ParentDescriptor, DataType>::TypedWorkload;
 
-    virtual void Execute() const override
-    {
-        using Parent = BaseFloat32ElementwiseWorkload<ParentDescriptor, Functor>;
-        Parent::ExecuteImpl(StringMapping::Instance().Get(DebugString));
-    }
-};
-
-template <typename ParentDescriptor, typename Functor>
-class BaseUint8ElementwiseWorkload : public Uint8Workload<ParentDescriptor>
-{
-public:
-    using Uint8Workload<ParentDescriptor>::Uint8Workload;
-    void ExecuteImpl(const char * debugString) const;
-};
-
-template <typename Functor,
-          typename ParentDescriptor,
-          typename armnn::StringMapping::Id DebugString>
-class RefElementwiseWorkload<Functor, armnn::DataType::QuantisedAsymm8, ParentDescriptor, DebugString>
-    : public BaseUint8ElementwiseWorkload<ParentDescriptor, Functor>
-{
-public:
-    using BaseUint8ElementwiseWorkload<ParentDescriptor, Functor>::BaseUint8ElementwiseWorkload;
-
-    virtual void Execute() const override
-    {
-        using Parent = BaseUint8ElementwiseWorkload<ParentDescriptor, Functor>;
-        Parent::ExecuteImpl(StringMapping::Instance().Get(DebugString));
-    }
+    void Execute() const override;
 };
 
 using RefAdditionFloat32Workload =
@@ -120,7 +78,6 @@
                           DivisionQueueDescriptor,
                           StringMapping::RefDivisionWorkload_Execute>;
 
-
 using RefMaximumFloat32Workload =
     RefElementwiseWorkload<armnn::maximum<float>,
                           DataType::Float32,
