diff --git a/src/backends/backendsCommon/test/CompatibilityTests.cpp b/src/backends/backendsCommon/test/CompatibilityTests.cpp
index 915a015..0f889f4 100644
--- a/src/backends/backendsCommon/test/CompatibilityTests.cpp
+++ b/src/backends/backendsCommon/test/CompatibilityTests.cpp
@@ -125,6 +125,8 @@
 {
     auto refBackend  = std::make_unique<RefBackend>();
     BOOST_CHECK(refBackend->HasCapability(armnn::BackendCapability::NonConstWeights));
+
+    BOOST_CHECK(!refBackend->HasCapability(armnn::BackendCapability::AsyncExecution));
 }
 
 #endif
diff --git a/src/backends/cl/ClBackend.cpp b/src/backends/cl/ClBackend.cpp
index 928760e..33aff27 100644
--- a/src/backends/cl/ClBackend.cpp
+++ b/src/backends/cl/ClBackend.cpp
@@ -141,6 +141,16 @@
     return layerSupport;
 }
 
+bool ClBackend::HasCapability(BackendCapability capabilityClass) const
+{
+    auto search = gpuAccCapabilities.find(capabilityClass);
+    if (search != gpuAccCapabilities.end())
+    {
+        return true;
+    }
+    return false;
+}
+
 OptimizationViews ClBackend::OptimizeSubgraphView(const SubgraphView& subgraph,
                                                   const ModelOptions& modelOptions) const
 {
diff --git a/src/backends/cl/ClBackend.hpp b/src/backends/cl/ClBackend.hpp
index 2b19fc5..f9a5745 100644
--- a/src/backends/cl/ClBackend.hpp
+++ b/src/backends/cl/ClBackend.hpp
@@ -9,6 +9,10 @@
 namespace armnn
 {
 
+const std::set<armnn::BackendCapability> gpuAccCapabilities {
+    // add new capabilities here..
+};
+
 class ClBackend : public IBackendInternal
 {
 public:
@@ -49,6 +53,8 @@
 
     IBackendInternal::IBackendSpecificModelContextPtr CreateBackendSpecificModelContext(
         const ModelOptions& modelOptions) const override;
+
+    bool HasCapability(BackendCapability capabilityClass) const override;
 };
 
 } // namespace armnn
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
index d48b32b..a1299fb 100644
--- a/src/backends/neon/NeonBackend.cpp
+++ b/src/backends/neon/NeonBackend.cpp
@@ -131,6 +131,16 @@
     return layerSupport;
 }
 
+bool NeonBackend::HasCapability(BackendCapability capabilityClass) const
+{
+    auto search = cpuAccCapabilities.find(capabilityClass);
+    if (search != cpuAccCapabilities.end())
+    {
+        return true;
+    }
+    return false;
+}
+
 OptimizationViews NeonBackend::OptimizeSubgraphView(const SubgraphView& subgraph) const
 {
     OptimizationViews optimizationViews;
diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp
index 42c6666..34606f9 100644
--- a/src/backends/neon/NeonBackend.hpp
+++ b/src/backends/neon/NeonBackend.hpp
@@ -9,6 +9,10 @@
 namespace armnn
 {
 
+const std::set<armnn::BackendCapability> cpuAccCapabilities {
+    // add new capabilities here..
+};
+
 class NeonBackend : public IBackendInternal
 {
 public:
@@ -47,6 +51,8 @@
 
     IBackendInternal::IBackendSpecificModelContextPtr CreateBackendSpecificModelContext(
         const ModelOptions& modelOptions) const override;
+
+    bool HasCapability(BackendCapability capabilityClass) const override;
 };
 
 } // namespace armnn
diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp
index 53c55ab..85c6a2e 100644
--- a/src/backends/reference/RefBackend.cpp
+++ b/src/backends/reference/RefBackend.cpp
@@ -71,8 +71,8 @@
 
 bool RefBackend::HasCapability(BackendCapability capabilityClass) const
 {
-    auto search = backendCapabilities.find(capabilityClass);
-    if (search != backendCapabilities.end())
+    auto search = cpuRefCapabilities.find(capabilityClass);
+    if (search != cpuRefCapabilities.end())
     {
         return true;
     }
diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp
index c92936c..3143173 100644
--- a/src/backends/reference/RefBackend.hpp
+++ b/src/backends/reference/RefBackend.hpp
@@ -9,7 +9,7 @@
 namespace armnn
 {
 
-const std::set<armnn::BackendCapability> backendCapabilities {
+const std::set<armnn::BackendCapability> cpuRefCapabilities {
     armnn::BackendCapability::NonConstWeights,
 };
 
