IVGCVSW-1946: Remove armnn/src from the include paths

Change-Id: I663a0a0fccb43ee960ec070121a59df9db0bb04e
diff --git a/src/backends/aclCommon/ArmComputeTensorUtils.cpp b/src/backends/aclCommon/ArmComputeTensorUtils.cpp
index d48408c..9fb78f8 100644
--- a/src/backends/aclCommon/ArmComputeTensorUtils.cpp
+++ b/src/backends/aclCommon/ArmComputeTensorUtils.cpp
@@ -2,8 +2,8 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
 
 #include "armnn/Exceptions.hpp"
 #include <armnn/Descriptors.hpp>
diff --git a/src/backends/aclCommon/CMakeLists.txt b/src/backends/aclCommon/CMakeLists.txt
index 9282e10..83c7c87 100644
--- a/src/backends/aclCommon/CMakeLists.txt
+++ b/src/backends/aclCommon/CMakeLists.txt
@@ -28,6 +28,6 @@
 endif()
 
 add_library(armnnAclCommon OBJECT ${armnnAclCommon_sources})
-target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnAclCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/aclCommon/memory/BaseMemoryManager.hpp b/src/backends/aclCommon/memory/BaseMemoryManager.hpp
index 2afc1cb..a6ffff7 100644
--- a/src/backends/aclCommon/memory/BaseMemoryManager.hpp
+++ b/src/backends/aclCommon/memory/BaseMemoryManager.hpp
@@ -4,7 +4,7 @@
 //
 #pragma once
 
-#include <backends/WorkloadFactory.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
 #ifdef ARMCOMPUTENEON_ENABLED
 #include <arm_compute/runtime/MemoryGroup.h>
diff --git a/src/backends/aclCommon/test/CMakeLists.txt b/src/backends/aclCommon/test/CMakeLists.txt
index 4378276..637b724 100644
--- a/src/backends/aclCommon/test/CMakeLists.txt
+++ b/src/backends/aclCommon/test/CMakeLists.txt
@@ -10,6 +10,6 @@
 )
 
 add_library(armnnAclCommonUnitTests OBJECT ${armnnAclCommonUnitTests_sources})
-target_include_directories(armnnAclCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnAclCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnAclCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnAclCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/aclCommon/test/CreateWorkloadClNeon.hpp b/src/backends/aclCommon/test/CreateWorkloadClNeon.hpp
index a79cfe6..ec2072d 100644
--- a/src/backends/aclCommon/test/CreateWorkloadClNeon.hpp
+++ b/src/backends/aclCommon/test/CreateWorkloadClNeon.hpp
@@ -4,17 +4,17 @@
 //
 #pragma once
 
-#include <armnn/test/CreateWorkload.hpp>
+#include <test/CreateWorkload.hpp>
 
-#include <backends/MemCopyWorkload.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
+#include <backendsCommon/MemCopyWorkload.hpp>
+#include <reference/RefWorkloadFactory.hpp>
 
 #if ARMCOMPUTECL_ENABLED
-#include <backends/cl/ClTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
 #endif
 
 #if ARMCOMPUTENEON_ENABLED
-#include <backends/neon/NeonTensorHandle.hpp>
+#include <neon/NeonTensorHandle.hpp>
 #endif
 
 using namespace armnn;
diff --git a/src/backends/aclCommon/test/MemCopyTestImpl.hpp b/src/backends/aclCommon/test/MemCopyTestImpl.hpp
index 322cb07..6cafaad 100644
--- a/src/backends/aclCommon/test/MemCopyTestImpl.hpp
+++ b/src/backends/aclCommon/test/MemCopyTestImpl.hpp
@@ -4,11 +4,11 @@
 //
 #pragma once
 
-#include <backends/test/LayerTests.hpp>
-#include <backends/test/TensorCopyUtils.hpp>
-#include <backends/test/WorkloadTestUtils.hpp>
+#include <backendsCommon/test/LayerTests.hpp>
+#include <backendsCommon/test/TensorCopyUtils.hpp>
+#include <backendsCommon/test/WorkloadTestUtils.hpp>
 
-#include <armnn/test/TensorHelpers.hpp>
+#include <test/TensorHelpers.hpp>
 
 #include <boost/multi_array.hpp>
 
diff --git a/src/backends/aclCommon/test/MemCopyTests.cpp b/src/backends/aclCommon/test/MemCopyTests.cpp
index d8b407d..3d4236d 100644
--- a/src/backends/aclCommon/test/MemCopyTests.cpp
+++ b/src/backends/aclCommon/test/MemCopyTests.cpp
@@ -3,13 +3,13 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/cl/ClWorkloadFactory.hpp>
-#include <backends/neon/NeonWorkloadFactory.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClWorkloadFactory.hpp>
+#include <neon/NeonWorkloadFactory.hpp>
 
 #if ARMCOMPUTECL_ENABLED && ARMCOMPUTENEON_ENABLED
-#include <backends/aclCommon/test/MemCopyTestImpl.hpp>
-#include <backends/cl/test/ClContextControlFixture.hpp>
+#include <aclCommon/test/MemCopyTestImpl.hpp>
+#include <cl/test/ClContextControlFixture.hpp>
 #endif
 
 #include <boost/test/unit_test.hpp>
diff --git a/src/backends/backends.cmake b/src/backends/backends.cmake
index caa8b8a..c82de8d 100644
--- a/src/backends/backends.cmake
+++ b/src/backends/backends.cmake
@@ -3,10 +3,6 @@
 # SPDX-License-Identifier: MIT
 #
 
-add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends)
-list(APPEND armnnLibraries armnnBackendsCommon)
-list(APPEND armnnUnitTestLibraries armnnBackendsCommonUnitTests)
-
 # single place to use wildcards, so we can include
 # yet unknown backend modules and corresponding common libraries
 FILE(GLOB commonIncludes ${PROJECT_SOURCE_DIR}/src/backends/*/common.cmake)
diff --git a/src/backends/BackendContextRegistry.cpp b/src/backends/backendsCommon/BackendContextRegistry.cpp
similarity index 100%
rename from src/backends/BackendContextRegistry.cpp
rename to src/backends/backendsCommon/BackendContextRegistry.cpp
diff --git a/src/backends/BackendContextRegistry.hpp b/src/backends/backendsCommon/BackendContextRegistry.hpp
similarity index 99%
rename from src/backends/BackendContextRegistry.hpp
rename to src/backends/backendsCommon/BackendContextRegistry.hpp
index c48d5b2..23830a0 100644
--- a/src/backends/BackendContextRegistry.hpp
+++ b/src/backends/backendsCommon/BackendContextRegistry.hpp
@@ -4,10 +4,11 @@
 //
 #pragma once
 
-#include <armnn/Types.hpp>
-#include <armnn/IRuntime.hpp>
-#include "RegistryCommon.hpp"
 #include "IBackendContext.hpp"
+#include "RegistryCommon.hpp"
+
+#include <armnn/IRuntime.hpp>
+#include <armnn/Types.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/BackendRegistry.cpp b/src/backends/backendsCommon/BackendRegistry.cpp
similarity index 100%
rename from src/backends/BackendRegistry.cpp
rename to src/backends/backendsCommon/BackendRegistry.cpp
diff --git a/src/backends/BackendRegistry.hpp b/src/backends/backendsCommon/BackendRegistry.hpp
similarity index 99%
rename from src/backends/BackendRegistry.hpp
rename to src/backends/backendsCommon/BackendRegistry.hpp
index 8f8ad37..ba2d26a 100644
--- a/src/backends/BackendRegistry.hpp
+++ b/src/backends/backendsCommon/BackendRegistry.hpp
@@ -4,9 +4,10 @@
 //
 #pragma once
 
-#include <armnn/Types.hpp>
-#include "RegistryCommon.hpp"
 #include "IBackendInternal.hpp"
+#include "RegistryCommon.hpp"
+
+#include <armnn/Types.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/CMakeLists.txt b/src/backends/backendsCommon/CMakeLists.txt
similarity index 97%
rename from src/backends/CMakeLists.txt
rename to src/backends/backendsCommon/CMakeLists.txt
index 481d21a..cb89aeb 100644
--- a/src/backends/CMakeLists.txt
+++ b/src/backends/backendsCommon/CMakeLists.txt
@@ -41,6 +41,6 @@
 endif()
 
 add_library(armnnBackendsCommon OBJECT ${armnnBackendsCommon_sources})
-target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnBackendsCommon PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/CpuTensorHandle.cpp b/src/backends/backendsCommon/CpuTensorHandle.cpp
similarity index 97%
rename from src/backends/CpuTensorHandle.cpp
rename to src/backends/backendsCommon/CpuTensorHandle.cpp
index 4059a1d..46a7cb8 100644
--- a/src/backends/CpuTensorHandle.cpp
+++ b/src/backends/backendsCommon/CpuTensorHandle.cpp
@@ -3,7 +3,8 @@
 // SPDX-License-Identifier: MIT
 //
 #include <armnn/Exceptions.hpp>
-#include <backends/CpuTensorHandle.hpp>
+
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include <cstring>
 
diff --git a/src/backends/CpuTensorHandle.hpp b/src/backends/backendsCommon/CpuTensorHandle.hpp
similarity index 98%
rename from src/backends/CpuTensorHandle.hpp
rename to src/backends/backendsCommon/CpuTensorHandle.hpp
index 2a686fe..4138812 100644
--- a/src/backends/CpuTensorHandle.hpp
+++ b/src/backends/backendsCommon/CpuTensorHandle.hpp
@@ -5,8 +5,10 @@
 #pragma once
 
 #include "CpuTensorHandleFwd.hpp"
+
 #include <armnn/TypesUtils.hpp>
-#include <backends/OutputHandler.hpp>
+
+#include <backendsCommon/OutputHandler.hpp>
 
 #include <algorithm>
 
diff --git a/src/backends/CpuTensorHandleFwd.hpp b/src/backends/backendsCommon/CpuTensorHandleFwd.hpp
similarity index 100%
rename from src/backends/CpuTensorHandleFwd.hpp
rename to src/backends/backendsCommon/CpuTensorHandleFwd.hpp
diff --git a/src/backends/IBackendContext.hpp b/src/backends/backendsCommon/IBackendContext.hpp
similarity index 100%
rename from src/backends/IBackendContext.hpp
rename to src/backends/backendsCommon/IBackendContext.hpp
diff --git a/src/backends/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp
similarity index 100%
rename from src/backends/IBackendInternal.hpp
rename to src/backends/backendsCommon/IBackendInternal.hpp
diff --git a/src/backends/ILayerSupport.cpp b/src/backends/backendsCommon/ILayerSupport.cpp
similarity index 100%
rename from src/backends/ILayerSupport.cpp
rename to src/backends/backendsCommon/ILayerSupport.cpp
diff --git a/src/backends/ITensorHandle.hpp b/src/backends/backendsCommon/ITensorHandle.hpp
similarity index 100%
rename from src/backends/ITensorHandle.hpp
rename to src/backends/backendsCommon/ITensorHandle.hpp
diff --git a/src/backends/LayerSupportRegistry.cpp b/src/backends/backendsCommon/LayerSupportRegistry.cpp
similarity index 100%
rename from src/backends/LayerSupportRegistry.cpp
rename to src/backends/backendsCommon/LayerSupportRegistry.cpp
diff --git a/src/backends/LayerSupportRegistry.hpp b/src/backends/backendsCommon/LayerSupportRegistry.hpp
similarity index 100%
rename from src/backends/LayerSupportRegistry.hpp
rename to src/backends/backendsCommon/LayerSupportRegistry.hpp
diff --git a/src/backends/MakeWorkloadHelper.hpp b/src/backends/backendsCommon/MakeWorkloadHelper.hpp
similarity index 100%
rename from src/backends/MakeWorkloadHelper.hpp
rename to src/backends/backendsCommon/MakeWorkloadHelper.hpp
diff --git a/src/backends/MemCopyWorkload.cpp b/src/backends/backendsCommon/MemCopyWorkload.cpp
similarity index 99%
rename from src/backends/MemCopyWorkload.cpp
rename to src/backends/backendsCommon/MemCopyWorkload.cpp
index 29f629a..0fa04f8 100644
--- a/src/backends/MemCopyWorkload.cpp
+++ b/src/backends/backendsCommon/MemCopyWorkload.cpp
@@ -2,13 +2,17 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
+
 #include "MemCopyWorkload.hpp"
+
 #include "CpuTensorHandle.hpp"
+
 #include <TypeUtils.hpp>
 
-#include <cstring>
 #include <boost/cast.hpp>
 
+#include <cstring>
+
 namespace armnn
 {
 
diff --git a/src/backends/MemCopyWorkload.hpp b/src/backends/backendsCommon/MemCopyWorkload.hpp
similarity index 99%
rename from src/backends/MemCopyWorkload.hpp
rename to src/backends/backendsCommon/MemCopyWorkload.hpp
index 782ce83..bcbba16 100644
--- a/src/backends/MemCopyWorkload.hpp
+++ b/src/backends/backendsCommon/MemCopyWorkload.hpp
@@ -7,6 +7,7 @@
 #include "CpuTensorHandleFwd.hpp"
 #include "Workload.hpp"
 #include "WorkloadUtils.hpp"
+
 #include <utility>
 
 namespace armnn
diff --git a/src/backends/OutputHandler.cpp b/src/backends/backendsCommon/OutputHandler.cpp
similarity index 94%
rename from src/backends/OutputHandler.cpp
rename to src/backends/backendsCommon/OutputHandler.cpp
index 5516c22..2df2fb5 100644
--- a/src/backends/OutputHandler.cpp
+++ b/src/backends/backendsCommon/OutputHandler.cpp
@@ -2,15 +2,17 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
+
 #include "OutputHandler.hpp"
 
+#include "ITensorHandle.hpp"
+#include "WorkloadDataCollector.hpp"
+
+#include <backendsCommon/WorkloadFactory.hpp>
+
 #include <boost/assert.hpp>
 #include <boost/log/trivial.hpp>
 
-#include <backends/WorkloadFactory.hpp>
-#include "WorkloadDataCollector.hpp"
-#include "ITensorHandle.hpp"
-
 namespace armnn
 {
 
diff --git a/src/backends/OutputHandler.hpp b/src/backends/backendsCommon/OutputHandler.hpp
similarity index 97%
rename from src/backends/OutputHandler.hpp
rename to src/backends/backendsCommon/OutputHandler.hpp
index ad4a293..240b369 100644
--- a/src/backends/OutputHandler.hpp
+++ b/src/backends/backendsCommon/OutputHandler.hpp
@@ -4,22 +4,22 @@
 //
 #pragma once
 
-#include <backends/WorkloadDataFwd.hpp>
+#include "ITensorHandle.hpp"
 
-#include <string>
-#include <vector>
+#include <armnn/Descriptors.hpp>
+#include <armnn/INetwork.hpp>
+#include <armnn/Tensor.hpp>
+#include <armnn/Types.hpp>
+
+#include <backendsCommon/WorkloadDataFwd.hpp>
 
 #include <memory>
 #include <set>
+#include <string>
+#include <vector>
 
 #include <boost/assert.hpp>
 
-#include <armnn/INetwork.hpp>
-#include <armnn/Types.hpp>
-#include <armnn/Descriptors.hpp>
-#include <armnn/Tensor.hpp>
-#include "ITensorHandle.hpp"
-
 namespace armnn
 {
 
diff --git a/src/backends/RegistryCommon.hpp b/src/backends/backendsCommon/RegistryCommon.hpp
similarity index 99%
rename from src/backends/RegistryCommon.hpp
rename to src/backends/backendsCommon/RegistryCommon.hpp
index 044a9e4..3dbfad2 100644
--- a/src/backends/RegistryCommon.hpp
+++ b/src/backends/backendsCommon/RegistryCommon.hpp
@@ -6,6 +6,7 @@
 
 #include <armnn/BackendId.hpp>
 #include <armnn/Exceptions.hpp>
+
 #include <functional>
 #include <memory>
 #include <sstream>
diff --git a/src/backends/StringMapping.cpp b/src/backends/backendsCommon/StringMapping.cpp
similarity index 100%
rename from src/backends/StringMapping.cpp
rename to src/backends/backendsCommon/StringMapping.cpp
diff --git a/src/backends/StringMapping.hpp b/src/backends/backendsCommon/StringMapping.hpp
similarity index 100%
rename from src/backends/StringMapping.hpp
rename to src/backends/backendsCommon/StringMapping.hpp
diff --git a/src/backends/Workload.hpp b/src/backends/backendsCommon/Workload.hpp
similarity index 99%
rename from src/backends/Workload.hpp
rename to src/backends/backendsCommon/Workload.hpp
index 4cfffd4..309d53f 100644
--- a/src/backends/Workload.hpp
+++ b/src/backends/backendsCommon/Workload.hpp
@@ -6,8 +6,10 @@
 
 #include "WorkloadData.hpp"
 #include "WorkloadInfo.hpp"
+
+#include <Profiling.hpp>
+
 #include <algorithm>
-#include "Profiling.hpp"
 
 namespace armnn
 {
diff --git a/src/backends/WorkloadData.cpp b/src/backends/backendsCommon/WorkloadData.cpp
similarity index 99%
rename from src/backends/WorkloadData.cpp
rename to src/backends/backendsCommon/WorkloadData.cpp
index 495d4ec..62cbd05 100644
--- a/src/backends/WorkloadData.cpp
+++ b/src/backends/backendsCommon/WorkloadData.cpp
@@ -7,9 +7,9 @@
 #include "CpuTensorHandle.hpp"
 
 #include <algorithm>
+#include <iomanip>
 #include <string>
 #include <sstream>
-#include <iomanip>
 
 #include <boost/format.hpp>
 
diff --git a/src/backends/WorkloadData.hpp b/src/backends/backendsCommon/WorkloadData.hpp
similarity index 98%
rename from src/backends/WorkloadData.hpp
rename to src/backends/backendsCommon/WorkloadData.hpp
index 867d9f2..7fb8855 100644
--- a/src/backends/WorkloadData.hpp
+++ b/src/backends/backendsCommon/WorkloadData.hpp
@@ -4,18 +4,18 @@
 //
 #pragma once
 
+#include "CpuTensorHandleFwd.hpp"
 #include "WorkloadDataFwd.hpp"
 
-#include <armnn/Types.hpp>
-#include <armnn/Tensor.hpp>
+#include <InternalTypes.hpp>
+
 #include <armnn/Descriptors.hpp>
 #include <armnn/Exceptions.hpp>
-#include <backends/WorkloadInfo.hpp>
+#include <armnn/Types.hpp>
+#include <armnn/Tensor.hpp>
 
-#include <InternalTypes.hpp>
-#include <backends/OutputHandler.hpp>
-
-#include "CpuTensorHandleFwd.hpp"
+#include <backendsCommon/OutputHandler.hpp>
+#include <backendsCommon/WorkloadInfo.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/WorkloadDataCollector.hpp b/src/backends/backendsCommon/WorkloadDataCollector.hpp
similarity index 100%
rename from src/backends/WorkloadDataCollector.hpp
rename to src/backends/backendsCommon/WorkloadDataCollector.hpp
diff --git a/src/backends/WorkloadDataFwd.hpp b/src/backends/backendsCommon/WorkloadDataFwd.hpp
similarity index 100%
rename from src/backends/WorkloadDataFwd.hpp
rename to src/backends/backendsCommon/WorkloadDataFwd.hpp
diff --git a/src/backends/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp
similarity index 99%
rename from src/backends/WorkloadFactory.cpp
rename to src/backends/backendsCommon/WorkloadFactory.cpp
index e9c2ab7..83a20e8 100644
--- a/src/backends/WorkloadFactory.cpp
+++ b/src/backends/backendsCommon/WorkloadFactory.cpp
@@ -2,19 +2,23 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <backends/WorkloadFactory.hpp>
-#include <backends/LayerSupportRegistry.hpp>
+
+#include "CpuTensorHandle.hpp"
+
+#include <Layer.hpp>
+#include <LayersFwd.hpp>
 
 #include <armnn/Types.hpp>
 #include <armnn/LayerSupport.hpp>
-#include <Layer.hpp>
-#include <LayersFwd.hpp>
-#include "CpuTensorHandle.hpp"
+
+#include <backendsCommon/LayerSupportRegistry.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
 #include <boost/cast.hpp>
-#include <cstring>
 #include <boost/iterator/transform_iterator.hpp>
 
+#include <cstring>
+
 namespace armnn
 {
 
diff --git a/src/backends/WorkloadFactory.hpp b/src/backends/backendsCommon/WorkloadFactory.hpp
similarity index 98%
rename from src/backends/WorkloadFactory.hpp
rename to src/backends/backendsCommon/WorkloadFactory.hpp
index 96906cb..34c1349 100644
--- a/src/backends/WorkloadFactory.hpp
+++ b/src/backends/backendsCommon/WorkloadFactory.hpp
@@ -4,11 +4,13 @@
 //
 #pragma once
 
-#include <memory>
 #include <armnn/TensorFwd.hpp>
 #include <armnn/Optional.hpp>
-#include <backends/OutputHandler.hpp>
-#include <backends/Workload.hpp>
+
+#include <backendsCommon/OutputHandler.hpp>
+#include <backendsCommon/Workload.hpp>
+
+#include <memory>
 
 namespace armnn
 {
diff --git a/src/backends/WorkloadInfo.hpp b/src/backends/backendsCommon/WorkloadInfo.hpp
similarity index 100%
rename from src/backends/WorkloadInfo.hpp
rename to src/backends/backendsCommon/WorkloadInfo.hpp
diff --git a/src/backends/WorkloadUtils.hpp b/src/backends/backendsCommon/WorkloadUtils.hpp
similarity index 98%
rename from src/backends/WorkloadUtils.hpp
rename to src/backends/backendsCommon/WorkloadUtils.hpp
index 65c58ea..b7e0e06 100644
--- a/src/backends/WorkloadUtils.hpp
+++ b/src/backends/backendsCommon/WorkloadUtils.hpp
@@ -5,9 +5,10 @@
 
 #pragma once
 
-#include "armnn/Tensor.hpp"
 #include "ITensorHandle.hpp"
 
+#include <armnn/Tensor.hpp>
+
 #include <boost/cast.hpp>
 
 namespace armnn
diff --git a/src/backends/backendsCommon/common.cmake b/src/backends/backendsCommon/common.cmake
new file mode 100644
index 0000000..347d602
--- /dev/null
+++ b/src/backends/backendsCommon/common.cmake
@@ -0,0 +1,8 @@
+#
+# Copyright © 2017 Arm Ltd. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+add_subdirectory(${PROJECT_SOURCE_DIR}/src/backends/backendsCommon)
+list(APPEND armnnLibraries armnnBackendsCommon)
+list(APPEND armnnUnitTestLibraries armnnBackendsCommonUnitTests)
diff --git a/src/backends/common.mk b/src/backends/backendsCommon/common.mk
similarity index 100%
rename from src/backends/common.mk
rename to src/backends/backendsCommon/common.mk
diff --git a/src/backends/test/ActivationFixture.hpp b/src/backends/backendsCommon/test/ActivationFixture.hpp
similarity index 97%
rename from src/backends/test/ActivationFixture.hpp
rename to src/backends/backendsCommon/test/ActivationFixture.hpp
index 5028b25..8ff77f6 100644
--- a/src/backends/test/ActivationFixture.hpp
+++ b/src/backends/backendsCommon/test/ActivationFixture.hpp
@@ -7,7 +7,7 @@
 #include "TensorCopyUtils.hpp"
 #include "WorkloadTestUtils.hpp"
 
-#include <armnn/test/TensorHelpers.hpp>
+#include <test/TensorHelpers.hpp>
 
 #include <boost/numeric/conversion/cast.hpp>
 #include <boost/multi_array.hpp>
diff --git a/src/backends/test/ActivationTestImpl.hpp b/src/backends/backendsCommon/test/ActivationTestImpl.hpp
similarity index 99%
rename from src/backends/test/ActivationTestImpl.hpp
rename to src/backends/backendsCommon/test/ActivationTestImpl.hpp
index 6371645..3b3ee93 100644
--- a/src/backends/test/ActivationTestImpl.hpp
+++ b/src/backends/backendsCommon/test/ActivationTestImpl.hpp
@@ -4,16 +4,17 @@
 //
 #pragma once
 
+#include "ActivationFixture.hpp"
+#include "QuantizeHelper.hpp"
+
 #include <armnn/ArmNN.hpp>
 #include <armnn/Tensor.hpp>
 #include <armnn/TypesUtils.hpp>
 
-#include <test/TensorHelpers.hpp>
-#include "QuantizeHelper.hpp"
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
-#include "ActivationFixture.hpp"
+#include <test/TensorHelpers.hpp>
 
 #include <algorithm>
 
diff --git a/src/backends/test/BackendIdTests.cpp b/src/backends/backendsCommon/test/BackendIdTests.cpp
similarity index 99%
rename from src/backends/test/BackendIdTests.cpp
rename to src/backends/backendsCommon/test/BackendIdTests.cpp
index 0ef0a20..e11c13e 100644
--- a/src/backends/test/BackendIdTests.cpp
+++ b/src/backends/backendsCommon/test/BackendIdTests.cpp
@@ -2,11 +2,12 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <boost/test/unit_test.hpp>
 
 #include <armnn/BackendId.hpp>
 #include <armnn/Types.hpp>
 
+#include <boost/test/unit_test.hpp>
+
 using namespace armnn;
 
 BOOST_AUTO_TEST_SUITE(BackendIdTests)
diff --git a/src/backends/test/BackendRegistryTests.cpp b/src/backends/backendsCommon/test/BackendRegistryTests.cpp
similarity index 97%
rename from src/backends/test/BackendRegistryTests.cpp
rename to src/backends/backendsCommon/test/BackendRegistryTests.cpp
index bfeefda..4afe273 100644
--- a/src/backends/test/BackendRegistryTests.cpp
+++ b/src/backends/backendsCommon/test/BackendRegistryTests.cpp
@@ -2,11 +2,13 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <boost/test/unit_test.hpp>
 
-#include <backends/BackendRegistry.hpp>
 #include <armnn/Types.hpp>
 
+#include <backendsCommon/BackendRegistry.hpp>
+
+#include <boost/test/unit_test.hpp>
+
 namespace
 {
 
diff --git a/src/backends/test/BatchNormTestImpl.hpp b/src/backends/backendsCommon/test/BatchNormTestImpl.hpp
similarity index 97%
rename from src/backends/test/BatchNormTestImpl.hpp
rename to src/backends/backendsCommon/test/BatchNormTestImpl.hpp
index 166c444..2360fd5 100644
--- a/src/backends/test/BatchNormTestImpl.hpp
+++ b/src/backends/backendsCommon/test/BatchNormTestImpl.hpp
@@ -7,13 +7,12 @@
 #include <armnn/ArmNN.hpp>
 #include <armnn/Tensor.hpp>
 
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
+#include <backendsCommon/test/QuantizeHelper.hpp>
+
 #include <test/TensorHelpers.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
-
-#include <backends/test/QuantizeHelper.hpp>
-
 template<typename T>
 LayerTestResult<T, 4> BatchNormTestImpl(armnn::IWorkloadFactory& workloadFactory,
                                         const armnn::TensorShape& inputOutputTensorShape,
diff --git a/src/backends/test/CMakeLists.txt b/src/backends/backendsCommon/test/CMakeLists.txt
similarity index 96%
rename from src/backends/test/CMakeLists.txt
rename to src/backends/backendsCommon/test/CMakeLists.txt
index 39038cf..ae94ad5 100644
--- a/src/backends/test/CMakeLists.txt
+++ b/src/backends/backendsCommon/test/CMakeLists.txt
@@ -36,6 +36,6 @@
 )
 
 add_library(armnnBackendsCommonUnitTests OBJECT ${armnnBackendsCommonUnitTests_sources})
-target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
-target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
\ No newline at end of file
+target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnBackendsCommonUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
\ No newline at end of file
diff --git a/src/backends/test/Conv2dTestImpl.hpp b/src/backends/backendsCommon/test/Conv2dTestImpl.hpp
similarity index 99%
rename from src/backends/test/Conv2dTestImpl.hpp
rename to src/backends/backendsCommon/test/Conv2dTestImpl.hpp
index 3791fb0..aa3a44d 100755
--- a/src/backends/test/Conv2dTestImpl.hpp
+++ b/src/backends/backendsCommon/test/Conv2dTestImpl.hpp
@@ -12,8 +12,8 @@
 #include <test/TensorHelpers.hpp>
 #include "QuantizeHelper.hpp"
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 #include "Permute.hpp"
 #include <boost/numeric/conversion/cast.hpp>
 
diff --git a/src/backends/test/ConvertFp16ToFp32TestImpl.hpp b/src/backends/backendsCommon/test/ConvertFp16ToFp32TestImpl.hpp
similarity index 95%
rename from src/backends/test/ConvertFp16ToFp32TestImpl.hpp
rename to src/backends/backendsCommon/test/ConvertFp16ToFp32TestImpl.hpp
index 2455e96..a63f0cb 100644
--- a/src/backends/test/ConvertFp16ToFp32TestImpl.hpp
+++ b/src/backends/backendsCommon/test/ConvertFp16ToFp32TestImpl.hpp
@@ -8,13 +8,13 @@
 #include <armnn/ArmNN.hpp>
 #include <armnn/Tensor.hpp>
 #include <armnn/TypesUtils.hpp>
-#include <armnnUtils/Half.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
+#include <Half.hpp>
+
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include <test/TensorHelpers.hpp>
 
-
 LayerTestResult<float, 4> SimpleConvertFp16ToFp32Test(armnn::IWorkloadFactory& workloadFactory)
 {
     using namespace half_float::literal;
diff --git a/src/backends/test/ConvertFp32ToFp16TestImpl.hpp b/src/backends/backendsCommon/test/ConvertFp32ToFp16TestImpl.hpp
similarity index 95%
rename from src/backends/test/ConvertFp32ToFp16TestImpl.hpp
rename to src/backends/backendsCommon/test/ConvertFp32ToFp16TestImpl.hpp
index 4eee274..3513823 100644
--- a/src/backends/test/ConvertFp32ToFp16TestImpl.hpp
+++ b/src/backends/backendsCommon/test/ConvertFp32ToFp16TestImpl.hpp
@@ -5,12 +5,13 @@
 
 #pragma once
 
+#include <Half.hpp>
+
 #include <armnn/ArmNN.hpp>
 #include <armnn/Tensor.hpp>
 #include <armnn/TypesUtils.hpp>
-#include <armnnUtils/Half.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include <test/TensorHelpers.hpp>
 
diff --git a/src/backends/test/EndToEndTestImpl.hpp b/src/backends/backendsCommon/test/EndToEndTestImpl.hpp
similarity index 98%
rename from src/backends/test/EndToEndTestImpl.hpp
rename to src/backends/backendsCommon/test/EndToEndTestImpl.hpp
index 5f17f78..e16116e 100644
--- a/src/backends/test/EndToEndTestImpl.hpp
+++ b/src/backends/backendsCommon/test/EndToEndTestImpl.hpp
@@ -6,7 +6,7 @@
 
 #include <armnn/ArmNN.hpp>
 
-#include <backends/test/QuantizeHelper.hpp>
+#include <backendsCommon/test/QuantizeHelper.hpp>
 
 #include <vector>
 
diff --git a/src/backends/test/FullyConnectedTestImpl.hpp b/src/backends/backendsCommon/test/FullyConnectedTestImpl.hpp
similarity index 100%
rename from src/backends/test/FullyConnectedTestImpl.hpp
rename to src/backends/backendsCommon/test/FullyConnectedTestImpl.hpp
diff --git a/src/backends/test/IsLayerSupportedTestImpl.hpp b/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp
similarity index 99%
rename from src/backends/test/IsLayerSupportedTestImpl.hpp
rename to src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp
index 722d82d..2c992bc 100644
--- a/src/backends/test/IsLayerSupportedTestImpl.hpp
+++ b/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp
@@ -4,7 +4,9 @@
 //
 #pragma once
 
-#include "Graph.hpp"
+#include <Graph.hpp>
+
+#include <backendsCommon/WorkloadFactory.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 
diff --git a/src/backends/test/JsonPrinterTestImpl.hpp b/src/backends/backendsCommon/test/JsonPrinterTestImpl.hpp
similarity index 99%
rename from src/backends/test/JsonPrinterTestImpl.hpp
rename to src/backends/backendsCommon/test/JsonPrinterTestImpl.hpp
index 47e0ec7..a286b28 100644
--- a/src/backends/test/JsonPrinterTestImpl.hpp
+++ b/src/backends/backendsCommon/test/JsonPrinterTestImpl.hpp
@@ -3,10 +3,11 @@
 // SPDX-License-Identifier: MIT
 //
 
+#include <Profiling.hpp>
+
 #include <armnn/Descriptors.hpp>
 #include <armnn/IRuntime.hpp>
 #include <armnn/INetwork.hpp>
-#include <armnn/Profiling.hpp>
 
 #include <boost/test/unit_test.hpp>
 #include <boost/algorithm/string.hpp>
diff --git a/src/backends/test/LayerReleaseConstantDataTest.cpp b/src/backends/backendsCommon/test/LayerReleaseConstantDataTest.cpp
similarity index 98%
rename from src/backends/test/LayerReleaseConstantDataTest.cpp
rename to src/backends/backendsCommon/test/LayerReleaseConstantDataTest.cpp
index 7549dfd..fc32fdc 100644
--- a/src/backends/test/LayerReleaseConstantDataTest.cpp
+++ b/src/backends/backendsCommon/test/LayerReleaseConstantDataTest.cpp
@@ -3,16 +3,17 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <boost/test/unit_test.hpp>
-#include <boost/cast.hpp>
-
-#include <backends/WorkloadData.hpp>
 #include <Graph.hpp>
 
-#include <utility>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/cl/ClWorkloadFactory.hpp>
+#include <cl/ClWorkloadFactory.hpp>
+
+#include <boost/cast.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <utility>
 
 using namespace armnn;
 using namespace std;
diff --git a/src/backends/test/LayerTests.cpp b/src/backends/backendsCommon/test/LayerTests.cpp
similarity index 99%
rename from src/backends/test/LayerTests.cpp
rename to src/backends/backendsCommon/test/LayerTests.cpp
index b5fd629..12a7063 100755
--- a/src/backends/test/LayerTests.cpp
+++ b/src/backends/backendsCommon/test/LayerTests.cpp
@@ -13,8 +13,8 @@
 
 #include <armnn/LayerSupport.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
 #include <algorithm>
 #include <boost/cast.hpp>
diff --git a/src/backends/test/LayerTests.hpp b/src/backends/backendsCommon/test/LayerTests.hpp
similarity index 99%
rename from src/backends/test/LayerTests.hpp
rename to src/backends/backendsCommon/test/LayerTests.hpp
index 26dec60..57383d3 100644
--- a/src/backends/test/LayerTests.hpp
+++ b/src/backends/backendsCommon/test/LayerTests.hpp
@@ -4,12 +4,14 @@
 //
 #pragma once
 
-#include "armnn/ArmNN.hpp"
-#include "armnn/Tensor.hpp"
-#include "armnnUtils/Half.hpp"
+#include <armnn/ArmNN.hpp>
+#include <armnn/Tensor.hpp>
+
+#include <Half.hpp>
 
 #include <boost/multi_array.hpp>
 #include <boost/assert.hpp>
+
 #include <array>
 
 // Layer callables.
diff --git a/src/backends/test/LstmTestImpl.hpp b/src/backends/backendsCommon/test/LstmTestImpl.hpp
similarity index 99%
rename from src/backends/test/LstmTestImpl.hpp
rename to src/backends/backendsCommon/test/LstmTestImpl.hpp
index a7e595c..758f294d 100644
--- a/src/backends/test/LstmTestImpl.hpp
+++ b/src/backends/backendsCommon/test/LstmTestImpl.hpp
@@ -4,15 +4,16 @@
 //
 #pragma once
 
+#include "QuantizeHelper.hpp"
+
 #include <armnn/ArmNN.hpp>
 #include <armnn/Tensor.hpp>
 #include <armnn/TypesUtils.hpp>
 
 #include <test/TensorHelpers.hpp>
-#include "QuantizeHelper.hpp"
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float, 2> LstmNoCifgNoPeepholeNoProjectionTestImpl(armnn::IWorkloadFactory& workloadFactory,
                                                                    const boost::multi_array<float, 2>& input,
diff --git a/src/backends/test/NormTestImpl.hpp b/src/backends/backendsCommon/test/NormTestImpl.hpp
similarity index 99%
rename from src/backends/test/NormTestImpl.hpp
rename to src/backends/backendsCommon/test/NormTestImpl.hpp
index de954b9..0d8d434 100644
--- a/src/backends/test/NormTestImpl.hpp
+++ b/src/backends/backendsCommon/test/NormTestImpl.hpp
@@ -7,8 +7,8 @@
 #include <armnn/LayerSupport.hpp>
 #include "armnn/Types.hpp"
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
 LayerTestResult<float,4> SimpleNormalizationTestImpl(armnn::IWorkloadFactory& workloadFactory,
                                                      armnn::NormalizationAlgorithmChannel normChannel,
diff --git a/src/backends/test/OptimizedNetworkTests.cpp b/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp
similarity index 98%
rename from src/backends/test/OptimizedNetworkTests.cpp
rename to src/backends/backendsCommon/test/OptimizedNetworkTests.cpp
index 72a35f9..8d88241 100644
--- a/src/backends/test/OptimizedNetworkTests.cpp
+++ b/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp
@@ -4,10 +4,11 @@
 //
 
 #include <armnn/ArmNN.hpp>
-#include <armnn/Graph.hpp>
-#include <armnn/Network.hpp>
 
-#include <backends/reference/RefWorkloadFactory.hpp>
+#include <Graph.hpp>
+#include <Network.hpp>
+
+#include <reference/RefWorkloadFactory.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/test/PermuteTestImpl.hpp b/src/backends/backendsCommon/test/PermuteTestImpl.hpp
similarity index 98%
rename from src/backends/test/PermuteTestImpl.hpp
rename to src/backends/backendsCommon/test/PermuteTestImpl.hpp
index 9e5dda4..529f9d3 100644
--- a/src/backends/test/PermuteTestImpl.hpp
+++ b/src/backends/backendsCommon/test/PermuteTestImpl.hpp
@@ -4,15 +4,16 @@
 //
 #pragma once
 
+#include "QuantizeHelper.hpp"
+
 #include <armnn/ArmNN.hpp>
 #include <armnn/Tensor.hpp>
 #include <armnn/TypesUtils.hpp>
 
 #include <test/TensorHelpers.hpp>
-#include "QuantizeHelper.hpp"
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
 template<typename T>
 LayerTestResult<T, 4> SimplePermuteTestImpl(
diff --git a/src/backends/test/Pooling2dTestImpl.hpp b/src/backends/backendsCommon/test/Pooling2dTestImpl.hpp
similarity index 99%
rename from src/backends/test/Pooling2dTestImpl.hpp
rename to src/backends/backendsCommon/test/Pooling2dTestImpl.hpp
index eea4232..ded45ab 100644
--- a/src/backends/test/Pooling2dTestImpl.hpp
+++ b/src/backends/backendsCommon/test/Pooling2dTestImpl.hpp
@@ -4,19 +4,23 @@
 //
 #pragma once
 
-#include <string>
-#include <armnn/ArmNN.hpp>
-
-#include <test/TensorHelpers.hpp>
 #include "QuantizeHelper.hpp"
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
-#include <backends/WorkloadInfo.hpp>
-#include <algorithm>
-#include "Permute.hpp"
+#include <armnn/ArmNN.hpp>
+
+#include <Permute.hpp>
+
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
+#include <backendsCommon/WorkloadInfo.hpp>
+
+#include <test/TensorHelpers.hpp>
+
 #include <boost/numeric/conversion/cast.hpp>
 
+#include <algorithm>
+#include <string>
+
 template<typename T>
 LayerTestResult<T, 4> SimplePooling2dTestImpl(armnn::IWorkloadFactory& workloadFactory,
                                               armnn::Pooling2dDescriptor descriptor,
diff --git a/src/backends/test/QuantizeHelper.hpp b/src/backends/backendsCommon/test/QuantizeHelper.hpp
similarity index 100%
rename from src/backends/test/QuantizeHelper.hpp
rename to src/backends/backendsCommon/test/QuantizeHelper.hpp
diff --git a/src/backends/test/ReshapeTestImpl.hpp b/src/backends/backendsCommon/test/ReshapeTestImpl.hpp
similarity index 97%
rename from src/backends/test/ReshapeTestImpl.hpp
rename to src/backends/backendsCommon/test/ReshapeTestImpl.hpp
index 198de53..fee992d 100644
--- a/src/backends/test/ReshapeTestImpl.hpp
+++ b/src/backends/backendsCommon/test/ReshapeTestImpl.hpp
@@ -4,15 +4,16 @@
 //
 #pragma once
 
+#include "QuantizeHelper.hpp"
+
 #include <armnn/ArmNN.hpp>
 #include <armnn/Tensor.hpp>
 #include <armnn/TypesUtils.hpp>
 
-#include <test/TensorHelpers.hpp>
-#include "QuantizeHelper.hpp"
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
+#include <test/TensorHelpers.hpp>
 
 template<typename T>
 LayerTestResult<T, 4> SimpleReshapeTestImpl(
diff --git a/src/backends/test/RuntimeTestImpl.hpp b/src/backends/backendsCommon/test/RuntimeTestImpl.hpp
similarity index 97%
rename from src/backends/test/RuntimeTestImpl.hpp
rename to src/backends/backendsCommon/test/RuntimeTestImpl.hpp
index 671f94b..b446fc4 100644
--- a/src/backends/test/RuntimeTestImpl.hpp
+++ b/src/backends/backendsCommon/test/RuntimeTestImpl.hpp
@@ -5,7 +5,8 @@
 #pragma once
 
 #include <armnn/ArmNN.hpp>
-#include <armnn/Runtime.hpp>
+
+#include <Runtime.hpp>
 
 namespace
 {
diff --git a/src/backends/test/SoftmaxTestImpl.hpp b/src/backends/backendsCommon/test/SoftmaxTestImpl.hpp
similarity index 97%
rename from src/backends/test/SoftmaxTestImpl.hpp
rename to src/backends/backendsCommon/test/SoftmaxTestImpl.hpp
index 0bca8be..1e145a1 100644
--- a/src/backends/test/SoftmaxTestImpl.hpp
+++ b/src/backends/backendsCommon/test/SoftmaxTestImpl.hpp
@@ -4,15 +4,16 @@
 //
 #pragma once
 
+#include "QuantizeHelper.hpp"
+
 #include <armnn/ArmNN.hpp>
 #include <armnn/Tensor.hpp>
 #include <armnn/TypesUtils.hpp>
 
-#include <test/TensorHelpers.hpp>
-#include "QuantizeHelper.hpp"
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
+#include <test/TensorHelpers.hpp>
 
 #include <algorithm>
 
diff --git a/src/backends/test/SplitterTestImpl.hpp b/src/backends/backendsCommon/test/SplitterTestImpl.hpp
similarity index 98%
rename from src/backends/test/SplitterTestImpl.hpp
rename to src/backends/backendsCommon/test/SplitterTestImpl.hpp
index 396cc1b..677950c 100644
--- a/src/backends/test/SplitterTestImpl.hpp
+++ b/src/backends/backendsCommon/test/SplitterTestImpl.hpp
@@ -7,14 +7,12 @@
 #include <armnn/ArmNN.hpp>
 #include <armnn/Tensor.hpp>
 
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
+#include <backendsCommon/test/QuantizeHelper.hpp>
+
 #include <test/TensorHelpers.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
-
-#include <backends/test/QuantizeHelper.hpp>
-
-
 template<typename T>
 std::vector<LayerTestResult<T,3>> SplitterTestCommon(armnn::IWorkloadFactory& workloadFactory,
                                                      float qScale = 0.0f,
diff --git a/src/backends/test/TensorCopyUtils.cpp b/src/backends/backendsCommon/test/TensorCopyUtils.cpp
similarity index 95%
rename from src/backends/test/TensorCopyUtils.cpp
rename to src/backends/backendsCommon/test/TensorCopyUtils.cpp
index 7e17e8b..acc28c9 100644
--- a/src/backends/test/TensorCopyUtils.cpp
+++ b/src/backends/backendsCommon/test/TensorCopyUtils.cpp
@@ -5,24 +5,24 @@
 
 #include "TensorCopyUtils.hpp"
 
-#include <armnnUtils/Half.hpp>
-
+#include <Half.hpp>
 
 #ifdef ARMCOMPUTECL_ENABLED
-#include <backends/cl/ClTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
 #endif
 
 #if ARMCOMPUTENEON_ENABLED
-#include <backends/neon/NeonTensorHandle.hpp>
+#include <neon/NeonTensorHandle.hpp>
 #endif
 
 #if ARMCOMPUTECLENABLED || ARMCOMPUTENEON_ENABLED
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 #endif
 
-#include <backends/CpuTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include <boost/cast.hpp>
+
 #include <algorithm>
 #include <cstring>
 
diff --git a/src/backends/test/TensorCopyUtils.hpp b/src/backends/backendsCommon/test/TensorCopyUtils.hpp
similarity index 89%
rename from src/backends/test/TensorCopyUtils.hpp
rename to src/backends/backendsCommon/test/TensorCopyUtils.hpp
index 4a3ba64..2187523 100644
--- a/src/backends/test/TensorCopyUtils.hpp
+++ b/src/backends/backendsCommon/test/TensorCopyUtils.hpp
@@ -5,7 +5,8 @@
 #pragma once
 
 #include <armnn/Tensor.hpp>
-#include <backends/ITensorHandle.hpp>
+
+#include <backendsCommon/ITensorHandle.hpp>
 
 void CopyDataToITensorHandle(armnn::ITensorHandle* tensorHandle, const void* mem);
 
diff --git a/src/backends/test/WorkloadDataValidation.cpp b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp
similarity index 98%
rename from src/backends/test/WorkloadDataValidation.cpp
rename to src/backends/backendsCommon/test/WorkloadDataValidation.cpp
index 7e3a90f..3664d56 100644
--- a/src/backends/test/WorkloadDataValidation.cpp
+++ b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp
@@ -2,15 +2,18 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <boost/test/unit_test.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/Workload.hpp>
-#include <backends/reference/workloads/RefWorkloads.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
+
+#include "WorkloadTestUtils.hpp"
 
 #include <armnn/Exceptions.hpp>
 
-#include "WorkloadTestUtils.hpp"
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/Workload.hpp>
+
+#include <reference/workloads/RefWorkloads.hpp>
+#include <reference/RefWorkloadFactory.hpp>
+
+#include <boost/test/unit_test.hpp>
 
 using namespace armnn;
 
diff --git a/src/backends/test/WorkloadTestUtils.hpp b/src/backends/backendsCommon/test/WorkloadTestUtils.hpp
similarity index 96%
rename from src/backends/test/WorkloadTestUtils.hpp
rename to src/backends/backendsCommon/test/WorkloadTestUtils.hpp
index 97f8ebd..05f6dde 100644
--- a/src/backends/test/WorkloadTestUtils.hpp
+++ b/src/backends/backendsCommon/test/WorkloadTestUtils.hpp
@@ -6,6 +6,8 @@
 
 #include <armnn/Tensor.hpp>
 
+#include <backendsCommon/WorkloadInfo.hpp>
+
 namespace armnn
 {
 class ITensorHandle;
diff --git a/src/backends/cl/CMakeLists.txt b/src/backends/cl/CMakeLists.txt
index a0f1e4d..3025458 100644
--- a/src/backends/cl/CMakeLists.txt
+++ b/src/backends/cl/CMakeLists.txt
@@ -32,7 +32,7 @@
 endif()
 
 add_library(armnnClBackend OBJECT ${armnnClBackend_sources})
-target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnClBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
 
diff --git a/src/backends/cl/ClBackend.cpp b/src/backends/cl/ClBackend.cpp
index da91de8..5d5cad5 100644
--- a/src/backends/cl/ClBackend.cpp
+++ b/src/backends/cl/ClBackend.cpp
@@ -7,7 +7,7 @@
 #include "ClBackendId.hpp"
 #include "ClWorkloadFactory.hpp"
 
-#include <backends/BackendRegistry.hpp>
+#include <backendsCommon/BackendRegistry.hpp>
 #include <boost/log/trivial.hpp>
 
 namespace armnn
diff --git a/src/backends/cl/ClBackend.hpp b/src/backends/cl/ClBackend.hpp
index 201702e..381d808 100644
--- a/src/backends/cl/ClBackend.hpp
+++ b/src/backends/cl/ClBackend.hpp
@@ -4,7 +4,7 @@
 //
 #pragma once
 
-#include <backends/IBackendInternal.hpp>
+#include <backendsCommon/IBackendInternal.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/cl/ClBackendContext.cpp b/src/backends/cl/ClBackendContext.cpp
index 4d1be33..7789415 100644
--- a/src/backends/cl/ClBackendContext.cpp
+++ b/src/backends/cl/ClBackendContext.cpp
@@ -7,7 +7,7 @@
 #include "ClBackendId.hpp"
 #include "ClContextControl.hpp"
 
-#include <backends/BackendContextRegistry.hpp>
+#include <backendsCommon/BackendContextRegistry.hpp>
 #include <boost/log/trivial.hpp>
 
 #include <mutex>
diff --git a/src/backends/cl/ClBackendContext.hpp b/src/backends/cl/ClBackendContext.hpp
index 3df403e..4aaa8a9 100644
--- a/src/backends/cl/ClBackendContext.hpp
+++ b/src/backends/cl/ClBackendContext.hpp
@@ -4,7 +4,7 @@
 //
 #pragma once
 
-#include <backends/IBackendContext.hpp>
+#include <backendsCommon/IBackendContext.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/cl/ClLayerSupport.cpp b/src/backends/cl/ClLayerSupport.cpp
index ebb90a5..ab62eee 100644
--- a/src/backends/cl/ClLayerSupport.cpp
+++ b/src/backends/cl/ClLayerSupport.cpp
@@ -7,10 +7,10 @@
 #include "ClBackendId.hpp"
 
 #include <armnn/Descriptors.hpp>
-#include <armnn/InternalTypes.hpp>
-#include <armnn/LayerSupportCommon.hpp>
+#include <InternalTypes.hpp>
+#include <LayerSupportCommon.hpp>
 
-#include <backends/LayerSupportRegistry.hpp>
+#include <backendsCommon/LayerSupportRegistry.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 
diff --git a/src/backends/cl/ClTensorHandle.hpp b/src/backends/cl/ClTensorHandle.hpp
index 556e447..0f1f583 100644
--- a/src/backends/cl/ClTensorHandle.hpp
+++ b/src/backends/cl/ClTensorHandle.hpp
@@ -4,8 +4,8 @@
 //
 #pragma once
 
-#include <backends/OutputHandler.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backendsCommon/OutputHandler.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/CL/CLTensor.h>
 #include <arm_compute/runtime/CL/CLSubTensor.h>
diff --git a/src/backends/cl/ClWorkloadFactory.cpp b/src/backends/cl/ClWorkloadFactory.cpp
index ae9d471..e205cf1 100644
--- a/src/backends/cl/ClWorkloadFactory.cpp
+++ b/src/backends/cl/ClWorkloadFactory.cpp
@@ -9,7 +9,7 @@
 #include <armnn/Utils.hpp>
 
 #include <string>
-#include <backends/CpuTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 #include <Layer.hpp>
 
 #ifdef ARMCOMPUTECL_ENABLED
@@ -17,16 +17,16 @@
 #include <arm_compute/runtime/CL/CLBufferAllocator.h>
 #include <arm_compute/runtime/CL/CLScheduler.h>
 
-#include <backends/MemCopyWorkload.hpp>
+#include <backendsCommon/MemCopyWorkload.hpp>
 
-#include <backends/aclCommon/memory/IPoolManager.hpp>
+#include <aclCommon/memory/IPoolManager.hpp>
 
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/cl/workloads/ClWorkloads.hpp>
-#include <backends/cl/workloads/ClWorkloadUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <cl/workloads/ClWorkloads.hpp>
+#include <cl/workloads/ClWorkloadUtils.hpp>
 #endif
 
-#include <backends/MakeWorkloadHelper.hpp>
+#include <backendsCommon/MakeWorkloadHelper.hpp>
 
 #include <boost/polymorphic_cast.hpp>
 #include <boost/format.hpp>
diff --git a/src/backends/cl/ClWorkloadFactory.hpp b/src/backends/cl/ClWorkloadFactory.hpp
index bd4ab50..ff7e56c 100644
--- a/src/backends/cl/ClWorkloadFactory.hpp
+++ b/src/backends/cl/ClWorkloadFactory.hpp
@@ -7,8 +7,8 @@
 #include <armnn/IRuntime.hpp>
 #include <armnn/Optional.hpp>
 
-#include <backends/OutputHandler.hpp>
-#include <backends/aclCommon/memory/BaseMemoryManager.hpp>
+#include <backendsCommon/OutputHandler.hpp>
+#include <aclCommon/memory/BaseMemoryManager.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/cl/OpenClTimer.hpp b/src/backends/cl/OpenClTimer.hpp
index 0dc9ff7..5539e88 100644
--- a/src/backends/cl/OpenClTimer.hpp
+++ b/src/backends/cl/OpenClTimer.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <armnn/Instrument.hpp>
+#include <Instrument.hpp>
 
 #include <arm_compute/runtime/CL/CLScheduler.h>
 #include <arm_compute/core/CL/OpenCL.h>
diff --git a/src/backends/cl/test/CMakeLists.txt b/src/backends/cl/test/CMakeLists.txt
index c017377..574edf4 100644
--- a/src/backends/cl/test/CMakeLists.txt
+++ b/src/backends/cl/test/CMakeLists.txt
@@ -17,6 +17,6 @@
 )
 
 add_library(armnnClBackendUnitTests OBJECT ${armnnClBackendUnitTests_sources})
-target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnClBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/cl/test/ClContextControlFixture.hpp b/src/backends/cl/test/ClContextControlFixture.hpp
index fd53e3f..52e3414 100644
--- a/src/backends/cl/test/ClContextControlFixture.hpp
+++ b/src/backends/cl/test/ClContextControlFixture.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/cl/ClContextControl.hpp>
+#include <cl/ClContextControl.hpp>
 
 template<bool ProfilingEnabled>
 struct ClContextControlFixtureBase
diff --git a/src/backends/cl/test/ClCreateWorkloadTests.cpp b/src/backends/cl/test/ClCreateWorkloadTests.cpp
index 2a705de..72a2eb2 100644
--- a/src/backends/cl/test/ClCreateWorkloadTests.cpp
+++ b/src/backends/cl/test/ClCreateWorkloadTests.cpp
@@ -5,14 +5,14 @@
 
 #include "ClContextControlFixture.hpp"
 
-#include <backends/MemCopyWorkload.hpp>
+#include <backendsCommon/MemCopyWorkload.hpp>
 
-#include <backends/aclCommon/test/CreateWorkloadClNeon.hpp>
+#include <aclCommon/test/CreateWorkloadClNeon.hpp>
 
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/cl/ClWorkloadFactory.hpp>
-#include <backends/cl/workloads/ClWorkloads.hpp>
-#include <backends/cl/workloads/ClWorkloadUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <cl/ClWorkloadFactory.hpp>
+#include <cl/workloads/ClWorkloads.hpp>
+#include <cl/workloads/ClWorkloadUtils.hpp>
 
 boost::test_tools::predicate_result CompareIClTensorHandleShape(IClTensorHandle*                    tensorHandle,
                                                                 std::initializer_list<unsigned int> expectedDimensions)
diff --git a/src/backends/cl/test/ClEndToEndTests.cpp b/src/backends/cl/test/ClEndToEndTests.cpp
index d6fd887..b374079 100644
--- a/src/backends/cl/test/ClEndToEndTests.cpp
+++ b/src/backends/cl/test/ClEndToEndTests.cpp
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <backends/test/EndToEndTestImpl.hpp>
+#include <backendsCommon/test/EndToEndTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/cl/test/ClJsonPrinterTests.cpp b/src/backends/cl/test/ClJsonPrinterTests.cpp
index f0b4b7a..6a27e8c 100644
--- a/src/backends/cl/test/ClJsonPrinterTests.cpp
+++ b/src/backends/cl/test/ClJsonPrinterTests.cpp
@@ -5,8 +5,8 @@
 
 #include <armnn/BackendId.hpp>
 
-#include <backends/cl/test/ClContextControlFixture.hpp>
-#include <backends/test/JsonPrinterTestImpl.hpp>
+#include <cl/test/ClContextControlFixture.hpp>
+#include <backendsCommon/test/JsonPrinterTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/cl/test/ClLayerSupportTests.cpp b/src/backends/cl/test/ClLayerSupportTests.cpp
index 513366e..0019afe 100644
--- a/src/backends/cl/test/ClLayerSupportTests.cpp
+++ b/src/backends/cl/test/ClLayerSupportTests.cpp
@@ -3,15 +3,15 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <armnn/layers/ConvertFp16ToFp32Layer.hpp>
-#include <armnn/layers/ConvertFp32ToFp16Layer.hpp>
-#include <armnn/test/TensorHelpers.hpp>
+#include <layers/ConvertFp16ToFp32Layer.hpp>
+#include <layers/ConvertFp32ToFp16Layer.hpp>
+#include <test/TensorHelpers.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/cl/ClWorkloadFactory.hpp>
-#include <backends/cl/test/ClContextControlFixture.hpp>
-#include <backends/test/IsLayerSupportedTestImpl.hpp>
-#include <backends/test/LayerTests.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <cl/ClWorkloadFactory.hpp>
+#include <cl/test/ClContextControlFixture.hpp>
+#include <backendsCommon/test/IsLayerSupportedTestImpl.hpp>
+#include <backendsCommon/test/LayerTests.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/cl/test/ClLayerTests.cpp b/src/backends/cl/test/ClLayerTests.cpp
index 3ff3c09..102ebbd 100755
--- a/src/backends/cl/test/ClLayerTests.cpp
+++ b/src/backends/cl/test/ClLayerTests.cpp
@@ -8,13 +8,13 @@
 #include "test/TensorHelpers.hpp"
 #include "test/UnitTests.hpp"
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/cl/ClLayerSupport.hpp>
-#include <backends/cl/ClWorkloadFactory.hpp>
-#include <backends/cl/workloads/ClWorkloadUtils.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/test/ActivationFixture.hpp>
-#include <backends/test/LayerTests.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <cl/ClLayerSupport.hpp>
+#include <cl/ClWorkloadFactory.hpp>
+#include <cl/workloads/ClWorkloadUtils.hpp>
+#include <reference/RefWorkloadFactory.hpp>
+#include <backendsCommon/test/ActivationFixture.hpp>
+#include <backendsCommon/test/LayerTests.hpp>
 
 #include <arm_compute/core/CL/CLKernelLibrary.h>
 #include <arm_compute/runtime/CL/CLScheduler.h>
diff --git a/src/backends/cl/test/ClMemCopyTests.cpp b/src/backends/cl/test/ClMemCopyTests.cpp
index 2635495..93b8df1 100644
--- a/src/backends/cl/test/ClMemCopyTests.cpp
+++ b/src/backends/cl/test/ClMemCopyTests.cpp
@@ -3,9 +3,9 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <backends/cl/ClWorkloadFactory.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/aclCommon/test/MemCopyTestImpl.hpp>
+#include <cl/ClWorkloadFactory.hpp>
+#include <reference/RefWorkloadFactory.hpp>
+#include <aclCommon/test/MemCopyTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/cl/test/ClOptimizedNetworkTests.cpp b/src/backends/cl/test/ClOptimizedNetworkTests.cpp
index b39a4b1..cd8a770 100644
--- a/src/backends/cl/test/ClOptimizedNetworkTests.cpp
+++ b/src/backends/cl/test/ClOptimizedNetworkTests.cpp
@@ -4,11 +4,11 @@
 //
 
 #include <armnn/ArmNN.hpp>
-#include <armnn/Network.hpp>
+#include <Network.hpp>
 
-#include <armnn/test/GraphUtils.hpp>
+#include <test/GraphUtils.hpp>
 
-#include <backends/cl/ClWorkloadFactory.hpp>
+#include <cl/ClWorkloadFactory.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/cl/test/ClRuntimeTests.cpp b/src/backends/cl/test/ClRuntimeTests.cpp
index d29cd5b..c6da261 100644
--- a/src/backends/cl/test/ClRuntimeTests.cpp
+++ b/src/backends/cl/test/ClRuntimeTests.cpp
@@ -3,11 +3,11 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <armnn/test/RuntimeTests.hpp>
+#include <test/RuntimeTests.hpp>
 
-#include <armnnUtils/LeakChecking.hpp>
+#include <LeakChecking.hpp>
 
-#include <backends/test/RuntimeTestImpl.hpp>
+#include <backendsCommon/test/RuntimeTestImpl.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 #include <boost/test/unit_test.hpp>
diff --git a/src/backends/cl/test/Fp16SupportTest.cpp b/src/backends/cl/test/Fp16SupportTest.cpp
index e8d4591..dac1ebc 100644
--- a/src/backends/cl/test/Fp16SupportTest.cpp
+++ b/src/backends/cl/test/Fp16SupportTest.cpp
@@ -7,12 +7,12 @@
 #include <armnn/Descriptors.hpp>
 #include <armnn/IRuntime.hpp>
 #include <armnn/INetwork.hpp>
-#include <armnnUtils/Half.hpp>
+#include <Half.hpp>
 
 #include <Graph.hpp>
 #include <Optimizer.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/test/QuantizeHelper.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/test/QuantizeHelper.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 #include <boost/test/unit_test.hpp>
diff --git a/src/backends/cl/test/OpenClTimerTest.cpp b/src/backends/cl/test/OpenClTimerTest.cpp
index 70ceac2..0c40a86 100644
--- a/src/backends/cl/test/OpenClTimerTest.cpp
+++ b/src/backends/cl/test/OpenClTimerTest.cpp
@@ -5,17 +5,17 @@
 
 #if (defined(__aarch64__)) || (defined(__x86_64__)) // disable test failing on FireFly/Armv7
 
-#include <armnn/test/TensorHelpers.hpp>
+#include <test/TensorHelpers.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
-#include <backends/cl/ClContextControl.hpp>
-#include <backends/cl/ClWorkloadFactory.hpp>
-#include <backends/cl/OpenClTimer.hpp>
+#include <cl/ClContextControl.hpp>
+#include <cl/ClWorkloadFactory.hpp>
+#include <cl/OpenClTimer.hpp>
 
-#include <backends/test/TensorCopyUtils.hpp>
-#include <backends/test/WorkloadTestUtils.hpp>
+#include <backendsCommon/test/TensorCopyUtils.hpp>
+#include <backendsCommon/test/WorkloadTestUtils.hpp>
 
 #include <arm_compute/runtime/CL/CLScheduler.h>
 
diff --git a/src/backends/cl/workloads/CMakeLists.txt b/src/backends/cl/workloads/CMakeLists.txt
index 86c3804..901dd74 100644
--- a/src/backends/cl/workloads/CMakeLists.txt
+++ b/src/backends/cl/workloads/CMakeLists.txt
@@ -61,6 +61,6 @@
 )
 
 add_library(armnnClBackendWorkloads OBJECT ${armnnClBackendWorkloads_sources})
-target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnClBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/cl/workloads/ClActivationWorkload.cpp b/src/backends/cl/workloads/ClActivationWorkload.cpp
index 188ad32..9b65856 100644
--- a/src/backends/cl/workloads/ClActivationWorkload.cpp
+++ b/src/backends/cl/workloads/ClActivationWorkload.cpp
@@ -7,10 +7,10 @@
 
 #include "ClWorkloadUtils.hpp"
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/cl/ClLayerSupport.hpp>
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <cl/ClLayerSupport.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/cl/workloads/ClActivationWorkload.hpp b/src/backends/cl/workloads/ClActivationWorkload.hpp
index c1f6de2..4fdd497 100644
--- a/src/backends/cl/workloads/ClActivationWorkload.hpp
+++ b/src/backends/cl/workloads/ClActivationWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClAdditionWorkload.cpp b/src/backends/cl/workloads/ClAdditionWorkload.cpp
index 6ec207a..18e2400 100644
--- a/src/backends/cl/workloads/ClAdditionWorkload.cpp
+++ b/src/backends/cl/workloads/ClAdditionWorkload.cpp
@@ -5,9 +5,9 @@
 
 #include "ClAdditionWorkload.hpp"
 
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClAdditionWorkload.hpp b/src/backends/cl/workloads/ClAdditionWorkload.hpp
index d165bd9..7a0228d 100644
--- a/src/backends/cl/workloads/ClAdditionWorkload.hpp
+++ b/src/backends/cl/workloads/ClAdditionWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClBatchNormalizationFloatWorkload.cpp b/src/backends/cl/workloads/ClBatchNormalizationFloatWorkload.cpp
index 1f3f9b5..c0f6cdf 100644
--- a/src/backends/cl/workloads/ClBatchNormalizationFloatWorkload.cpp
+++ b/src/backends/cl/workloads/ClBatchNormalizationFloatWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClBatchNormalizationFloatWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/cl/ClLayerSupport.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClLayerSupport.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClBatchNormalizationFloatWorkload.hpp b/src/backends/cl/workloads/ClBatchNormalizationFloatWorkload.hpp
index 804591c..cdd679b 100644
--- a/src/backends/cl/workloads/ClBatchNormalizationFloatWorkload.hpp
+++ b/src/backends/cl/workloads/ClBatchNormalizationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClConstantWorkload.cpp b/src/backends/cl/workloads/ClConstantWorkload.cpp
index eee6dbd..39ae14e 100644
--- a/src/backends/cl/workloads/ClConstantWorkload.cpp
+++ b/src/backends/cl/workloads/ClConstantWorkload.cpp
@@ -5,10 +5,10 @@
 
 #include "ClConstantWorkload.hpp"
 
-#include <armnnUtils/Half.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <Half.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClConstantWorkload.hpp b/src/backends/cl/workloads/ClConstantWorkload.hpp
index ccdbf06..374831f 100644
--- a/src/backends/cl/workloads/ClConstantWorkload.hpp
+++ b/src/backends/cl/workloads/ClConstantWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClConvertFp16ToFp32Workload.cpp b/src/backends/cl/workloads/ClConvertFp16ToFp32Workload.cpp
index b489ced..d2e86f8 100644
--- a/src/backends/cl/workloads/ClConvertFp16ToFp32Workload.cpp
+++ b/src/backends/cl/workloads/ClConvertFp16ToFp32Workload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "ClConvertFp16ToFp32Workload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClConvertFp16ToFp32Workload.hpp b/src/backends/cl/workloads/ClConvertFp16ToFp32Workload.hpp
index f5f230d..e8c619d 100644
--- a/src/backends/cl/workloads/ClConvertFp16ToFp32Workload.hpp
+++ b/src/backends/cl/workloads/ClConvertFp16ToFp32Workload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClConvertFp32ToFp16Workload.cpp b/src/backends/cl/workloads/ClConvertFp32ToFp16Workload.cpp
index 781607f..3f528a1 100644
--- a/src/backends/cl/workloads/ClConvertFp32ToFp16Workload.cpp
+++ b/src/backends/cl/workloads/ClConvertFp32ToFp16Workload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "ClConvertFp32ToFp16Workload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClConvertFp32ToFp16Workload.hpp b/src/backends/cl/workloads/ClConvertFp32ToFp16Workload.hpp
index 28d0bfa..b817156 100644
--- a/src/backends/cl/workloads/ClConvertFp32ToFp16Workload.hpp
+++ b/src/backends/cl/workloads/ClConvertFp32ToFp16Workload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClConvolution2dWorkload.cpp b/src/backends/cl/workloads/ClConvolution2dWorkload.cpp
index 7c876ab..f3810cf 100644
--- a/src/backends/cl/workloads/ClConvolution2dWorkload.cpp
+++ b/src/backends/cl/workloads/ClConvolution2dWorkload.cpp
@@ -7,12 +7,12 @@
 
 #include "ClWorkloadUtils.hpp"
 
-#include <backends/cl/ClLayerSupport.hpp>
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/cl/ClLayerSupport.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <cl/ClLayerSupport.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <cl/ClLayerSupport.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include <arm_compute/runtime/CL/functions/CLConvolutionLayer.h>
 
diff --git a/src/backends/cl/workloads/ClConvolution2dWorkload.hpp b/src/backends/cl/workloads/ClConvolution2dWorkload.hpp
index a5de876..6d7e9f3 100644
--- a/src/backends/cl/workloads/ClConvolution2dWorkload.hpp
+++ b/src/backends/cl/workloads/ClConvolution2dWorkload.hpp
@@ -8,7 +8,7 @@
 #include <armnn/Tensor.hpp>
 #include <armnn/Descriptors.hpp>
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/functions/CLConvolutionLayer.h>
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
diff --git a/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp
index 6b159f1..aa5d5a1 100644
--- a/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp
+++ b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.cpp
@@ -8,10 +8,10 @@
 #include "TypeUtils.hpp"
 #include "ClWorkloadUtils.hpp"
 
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include <arm_compute/runtime/CL/functions/CLDepthwiseConvolutionLayer.h>
 
diff --git a/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.hpp b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.hpp
index cde9f50..fc277b9 100644
--- a/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.hpp
+++ b/src/backends/cl/workloads/ClDepthwiseConvolutionWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/IFunction.h>
 #include <arm_compute/core/Error.h>
diff --git a/src/backends/cl/workloads/ClDivisionFloatWorkload.cpp b/src/backends/cl/workloads/ClDivisionFloatWorkload.cpp
index 324d8bd..2a27f8a 100644
--- a/src/backends/cl/workloads/ClDivisionFloatWorkload.cpp
+++ b/src/backends/cl/workloads/ClDivisionFloatWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "ClDivisionFloatWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClDivisionFloatWorkload.hpp b/src/backends/cl/workloads/ClDivisionFloatWorkload.hpp
index 1aa7ec6..754e5b4 100644
--- a/src/backends/cl/workloads/ClDivisionFloatWorkload.hpp
+++ b/src/backends/cl/workloads/ClDivisionFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClFloorFloatWorkload.cpp b/src/backends/cl/workloads/ClFloorFloatWorkload.cpp
index 457d19e..68a89c7 100644
--- a/src/backends/cl/workloads/ClFloorFloatWorkload.cpp
+++ b/src/backends/cl/workloads/ClFloorFloatWorkload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "ClFloorFloatWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClFloorFloatWorkload.hpp b/src/backends/cl/workloads/ClFloorFloatWorkload.hpp
index 513862a..bfe32df 100644
--- a/src/backends/cl/workloads/ClFloorFloatWorkload.hpp
+++ b/src/backends/cl/workloads/ClFloorFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp b/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp
index 7b2ecf0..60eb138 100644
--- a/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp
+++ b/src/backends/cl/workloads/ClFullyConnectedWorkload.cpp
@@ -4,11 +4,11 @@
 //
 
 #include "ClFullyConnectedWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/cl/ClLayerSupport.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
+#include <cl/ClLayerSupport.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClFullyConnectedWorkload.hpp b/src/backends/cl/workloads/ClFullyConnectedWorkload.hpp
index 0c90472..af672c8 100644
--- a/src/backends/cl/workloads/ClFullyConnectedWorkload.hpp
+++ b/src/backends/cl/workloads/ClFullyConnectedWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
diff --git a/src/backends/cl/workloads/ClL2NormalizationFloatWorkload.cpp b/src/backends/cl/workloads/ClL2NormalizationFloatWorkload.cpp
index 0dd0603..f827137 100644
--- a/src/backends/cl/workloads/ClL2NormalizationFloatWorkload.cpp
+++ b/src/backends/cl/workloads/ClL2NormalizationFloatWorkload.cpp
@@ -4,9 +4,9 @@
 //
 
 #include "ClL2NormalizationFloatWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClL2NormalizationFloatWorkload.hpp b/src/backends/cl/workloads/ClL2NormalizationFloatWorkload.hpp
index f7b7911..a16a8f6 100644
--- a/src/backends/cl/workloads/ClL2NormalizationFloatWorkload.hpp
+++ b/src/backends/cl/workloads/ClL2NormalizationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClLstmFloatWorkload.cpp b/src/backends/cl/workloads/ClLstmFloatWorkload.cpp
index 177368b..2a66445 100644
--- a/src/backends/cl/workloads/ClLstmFloatWorkload.cpp
+++ b/src/backends/cl/workloads/ClLstmFloatWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClLstmFloatWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/cl/ClLayerSupport.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <cl/ClLayerSupport.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/CL/functions/CLLSTMLayer.h>
 
diff --git a/src/backends/cl/workloads/ClLstmFloatWorkload.hpp b/src/backends/cl/workloads/ClLstmFloatWorkload.hpp
index 352d774..6a0c41f 100644
--- a/src/backends/cl/workloads/ClLstmFloatWorkload.hpp
+++ b/src/backends/cl/workloads/ClLstmFloatWorkload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClMeanWorkload.cpp b/src/backends/cl/workloads/ClMeanWorkload.cpp
index 7e9649b..960fca2 100644
--- a/src/backends/cl/workloads/ClMeanWorkload.cpp
+++ b/src/backends/cl/workloads/ClMeanWorkload.cpp
@@ -5,8 +5,8 @@
 
 #include "ClMeanWorkload.hpp"
 
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClMeanWorkload.hpp b/src/backends/cl/workloads/ClMeanWorkload.hpp
index c9f0356..c46d18b 100644
--- a/src/backends/cl/workloads/ClMeanWorkload.hpp
+++ b/src/backends/cl/workloads/ClMeanWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClMergerWorkload.hpp b/src/backends/cl/workloads/ClMergerWorkload.hpp
index a6deb2e..948fb58 100644
--- a/src/backends/cl/workloads/ClMergerWorkload.hpp
+++ b/src/backends/cl/workloads/ClMergerWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/cl/workloads/ClMultiplicationWorkload.cpp b/src/backends/cl/workloads/ClMultiplicationWorkload.cpp
index c0bcdbc..f4e7b83 100644
--- a/src/backends/cl/workloads/ClMultiplicationWorkload.cpp
+++ b/src/backends/cl/workloads/ClMultiplicationWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "ClMultiplicationWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 #include "ClWorkloadUtils.hpp"
 
 namespace armnn
diff --git a/src/backends/cl/workloads/ClMultiplicationWorkload.hpp b/src/backends/cl/workloads/ClMultiplicationWorkload.hpp
index 0586be9..2dd6bfe 100644
--- a/src/backends/cl/workloads/ClMultiplicationWorkload.hpp
+++ b/src/backends/cl/workloads/ClMultiplicationWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClNormalizationFloatWorkload.cpp b/src/backends/cl/workloads/ClNormalizationFloatWorkload.cpp
index f3cc6ec..5f2fd7a 100644
--- a/src/backends/cl/workloads/ClNormalizationFloatWorkload.cpp
+++ b/src/backends/cl/workloads/ClNormalizationFloatWorkload.cpp
@@ -4,11 +4,11 @@
 //
 
 #include "ClNormalizationFloatWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/cl/ClLayerSupport.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <cl/ClLayerSupport.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 #include "ClWorkloadUtils.hpp"
 
 using namespace armnn::armcomputetensorutils;
diff --git a/src/backends/cl/workloads/ClNormalizationFloatWorkload.hpp b/src/backends/cl/workloads/ClNormalizationFloatWorkload.hpp
index f30be91..4789efc 100644
--- a/src/backends/cl/workloads/ClNormalizationFloatWorkload.hpp
+++ b/src/backends/cl/workloads/ClNormalizationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClPadWorkload.cpp b/src/backends/cl/workloads/ClPadWorkload.cpp
index 44c0eea..4d55493 100644
--- a/src/backends/cl/workloads/ClPadWorkload.cpp
+++ b/src/backends/cl/workloads/ClPadWorkload.cpp
@@ -5,8 +5,8 @@
 
 #include "ClPadWorkload.hpp"
 
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 #include <arm_compute/core/Types.h>
 
 #include "ClWorkloadUtils.hpp"
diff --git a/src/backends/cl/workloads/ClPadWorkload.hpp b/src/backends/cl/workloads/ClPadWorkload.hpp
index 70f6c42..e87cbb7 100644
--- a/src/backends/cl/workloads/ClPadWorkload.hpp
+++ b/src/backends/cl/workloads/ClPadWorkload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/WorkloadData.hpp>
-#include <backends/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
 #include <arm_compute/runtime/CL/functions/CLPadLayer.h>
 
 namespace armnn {
diff --git a/src/backends/cl/workloads/ClPermuteWorkload.cpp b/src/backends/cl/workloads/ClPermuteWorkload.cpp
index 39fa56f..bec80e5 100644
--- a/src/backends/cl/workloads/ClPermuteWorkload.cpp
+++ b/src/backends/cl/workloads/ClPermuteWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "ClPermuteWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/core/Error.h>
 
diff --git a/src/backends/cl/workloads/ClPermuteWorkload.hpp b/src/backends/cl/workloads/ClPermuteWorkload.hpp
index 43de302..58aa7ea 100644
--- a/src/backends/cl/workloads/ClPermuteWorkload.hpp
+++ b/src/backends/cl/workloads/ClPermuteWorkload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 #include <armnn/TypesUtils.hpp>
 #include <arm_compute/runtime/CL/functions/CLPermute.h>
diff --git a/src/backends/cl/workloads/ClPooling2dWorkload.cpp b/src/backends/cl/workloads/ClPooling2dWorkload.cpp
index b54afd2..f4b0356 100644
--- a/src/backends/cl/workloads/ClPooling2dWorkload.cpp
+++ b/src/backends/cl/workloads/ClPooling2dWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "ClPooling2dWorkload.hpp"
-#include <backends/cl/ClLayerSupport.hpp>
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClLayerSupport.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClPooling2dWorkload.hpp b/src/backends/cl/workloads/ClPooling2dWorkload.hpp
index 0812e33..01c9753 100644
--- a/src/backends/cl/workloads/ClPooling2dWorkload.hpp
+++ b/src/backends/cl/workloads/ClPooling2dWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClReshapeWorkload.cpp b/src/backends/cl/workloads/ClReshapeWorkload.cpp
index 47cea94..db1702a 100644
--- a/src/backends/cl/workloads/ClReshapeWorkload.cpp
+++ b/src/backends/cl/workloads/ClReshapeWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "ClReshapeWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClReshapeWorkload.hpp b/src/backends/cl/workloads/ClReshapeWorkload.hpp
index f949f76..a7b464e 100644
--- a/src/backends/cl/workloads/ClReshapeWorkload.hpp
+++ b/src/backends/cl/workloads/ClReshapeWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClResizeBilinearFloatWorkload.cpp b/src/backends/cl/workloads/ClResizeBilinearFloatWorkload.cpp
index c4f0a04..3e2f895 100644
--- a/src/backends/cl/workloads/ClResizeBilinearFloatWorkload.cpp
+++ b/src/backends/cl/workloads/ClResizeBilinearFloatWorkload.cpp
@@ -4,11 +4,11 @@
 //
 
 #include "ClResizeBilinearFloatWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/cl/ClLayerSupport.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <cl/ClLayerSupport.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClResizeBilinearFloatWorkload.hpp b/src/backends/cl/workloads/ClResizeBilinearFloatWorkload.hpp
index f29f416..07ddcec 100644
--- a/src/backends/cl/workloads/ClResizeBilinearFloatWorkload.hpp
+++ b/src/backends/cl/workloads/ClResizeBilinearFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClSoftmaxBaseWorkload.cpp b/src/backends/cl/workloads/ClSoftmaxBaseWorkload.cpp
index eb05a19..48dd398 100644
--- a/src/backends/cl/workloads/ClSoftmaxBaseWorkload.cpp
+++ b/src/backends/cl/workloads/ClSoftmaxBaseWorkload.cpp
@@ -5,7 +5,7 @@
 
 #include "ClSoftmaxBaseWorkload.hpp"
 
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/CL/functions/CLSoftmaxLayer.h>
 
diff --git a/src/backends/cl/workloads/ClSoftmaxFloatWorkload.cpp b/src/backends/cl/workloads/ClSoftmaxFloatWorkload.cpp
index ed012cc..bb56802 100644
--- a/src/backends/cl/workloads/ClSoftmaxFloatWorkload.cpp
+++ b/src/backends/cl/workloads/ClSoftmaxFloatWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "ClSoftmaxFloatWorkload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClSoftmaxFloatWorkload.hpp b/src/backends/cl/workloads/ClSoftmaxFloatWorkload.hpp
index b400b3c..0da8dda 100644
--- a/src/backends/cl/workloads/ClSoftmaxFloatWorkload.hpp
+++ b/src/backends/cl/workloads/ClSoftmaxFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
diff --git a/src/backends/cl/workloads/ClSoftmaxUint8Workload.cpp b/src/backends/cl/workloads/ClSoftmaxUint8Workload.cpp
index d06306e..c386e38 100644
--- a/src/backends/cl/workloads/ClSoftmaxUint8Workload.cpp
+++ b/src/backends/cl/workloads/ClSoftmaxUint8Workload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "ClSoftmaxUint8Workload.hpp"
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClSoftmaxUint8Workload.hpp b/src/backends/cl/workloads/ClSoftmaxUint8Workload.hpp
index 4786faf..ea46734 100644
--- a/src/backends/cl/workloads/ClSoftmaxUint8Workload.hpp
+++ b/src/backends/cl/workloads/ClSoftmaxUint8Workload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 #include "arm_compute/runtime/MemoryManagerOnDemand.h"
diff --git a/src/backends/cl/workloads/ClSplitterWorkload.hpp b/src/backends/cl/workloads/ClSplitterWorkload.hpp
index ffc02c0..9503359 100644
--- a/src/backends/cl/workloads/ClSplitterWorkload.hpp
+++ b/src/backends/cl/workloads/ClSplitterWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/cl/workloads/ClSubtractionWorkload.cpp b/src/backends/cl/workloads/ClSubtractionWorkload.cpp
index e23dab0..38154eb 100644
--- a/src/backends/cl/workloads/ClSubtractionWorkload.cpp
+++ b/src/backends/cl/workloads/ClSubtractionWorkload.cpp
@@ -5,9 +5,9 @@
 
 #include "ClSubtractionWorkload.hpp"
 
-#include <backends/cl/ClTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/ClTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include "ClWorkloadUtils.hpp"
 
diff --git a/src/backends/cl/workloads/ClSubtractionWorkload.hpp b/src/backends/cl/workloads/ClSubtractionWorkload.hpp
index 3a4210d..ba89456 100644
--- a/src/backends/cl/workloads/ClSubtractionWorkload.hpp
+++ b/src/backends/cl/workloads/ClSubtractionWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/cl/workloads/ClWorkloadUtils.hpp b/src/backends/cl/workloads/ClWorkloadUtils.hpp
index ca0de8d..3bee242 100644
--- a/src/backends/cl/workloads/ClWorkloadUtils.hpp
+++ b/src/backends/cl/workloads/ClWorkloadUtils.hpp
@@ -4,11 +4,11 @@
 //
 #pragma once
 
-#include <armnnUtils/Half.hpp>
+#include <Half.hpp>
 
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/cl/OpenClTimer.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <cl/OpenClTimer.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include <arm_compute/runtime/CL/CLFunctions.h>
 
diff --git a/src/backends/neon/CMakeLists.txt b/src/backends/neon/CMakeLists.txt
index b5e6ff3..0f7759d 100644
--- a/src/backends/neon/CMakeLists.txt
+++ b/src/backends/neon/CMakeLists.txt
@@ -30,7 +30,7 @@
 endif()
 
 add_library(armnnNeonBackend OBJECT ${armnnNeonBackend_sources})
-target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnNeonBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
 
diff --git a/src/backends/neon/NeonBackend.cpp b/src/backends/neon/NeonBackend.cpp
index f8d7bb0..1e9f633 100644
--- a/src/backends/neon/NeonBackend.cpp
+++ b/src/backends/neon/NeonBackend.cpp
@@ -7,7 +7,7 @@
 #include "NeonBackendId.hpp"
 #include "NeonWorkloadFactory.hpp"
 
-#include <backends/BackendRegistry.hpp>
+#include <backendsCommon/BackendRegistry.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/NeonBackend.hpp b/src/backends/neon/NeonBackend.hpp
index d74962b..27ad94d 100644
--- a/src/backends/neon/NeonBackend.hpp
+++ b/src/backends/neon/NeonBackend.hpp
@@ -4,7 +4,7 @@
 //
 #pragma once
 
-#include <backends/IBackendInternal.hpp>
+#include <backendsCommon/IBackendInternal.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/NeonLayerSupport.cpp b/src/backends/neon/NeonLayerSupport.cpp
index 71a5be3..4704135 100644
--- a/src/backends/neon/NeonLayerSupport.cpp
+++ b/src/backends/neon/NeonLayerSupport.cpp
@@ -7,12 +7,12 @@
 #include "NeonBackendId.hpp"
 
 #include <armnn/Descriptors.hpp>
-#include <armnn/InternalTypes.hpp>
-#include <armnn/LayerSupportCommon.hpp>
+#include <InternalTypes.hpp>
+#include <LayerSupportCommon.hpp>
 #include <armnn/Tensor.hpp>
 #include <armnn/Types.hpp>
 
-#include <backends/LayerSupportRegistry.hpp>
+#include <backendsCommon/LayerSupportRegistry.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 
diff --git a/src/backends/neon/NeonTensorHandle.hpp b/src/backends/neon/NeonTensorHandle.hpp
index 6554278..63e2a78 100644
--- a/src/backends/neon/NeonTensorHandle.hpp
+++ b/src/backends/neon/NeonTensorHandle.hpp
@@ -4,8 +4,8 @@
 //
 #pragma once
 
-#include <backends/OutputHandler.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backendsCommon/OutputHandler.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/runtime/MemoryGroup.h>
 #include <arm_compute/runtime/IMemoryGroup.h>
diff --git a/src/backends/neon/NeonWorkloadFactory.cpp b/src/backends/neon/NeonWorkloadFactory.cpp
index 81d088b..fc38906 100644
--- a/src/backends/neon/NeonWorkloadFactory.cpp
+++ b/src/backends/neon/NeonWorkloadFactory.cpp
@@ -5,21 +5,21 @@
 #include "NeonWorkloadFactory.hpp"
 #include "NeonBackendId.hpp"
 #include <armnn/Utils.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 #include <Layer.hpp>
 
 #ifdef ARMCOMPUTENEON_ENABLED
 #include <arm_compute/runtime/Allocator.h>
 
-#include <backends/MemCopyWorkload.hpp>
+#include <backendsCommon/MemCopyWorkload.hpp>
 #include "NeonTensorHandle.hpp"
 #include "workloads/NeonWorkloadUtils.hpp"
 #include "workloads/NeonWorkloads.hpp"
 
-#include <backends/aclCommon/memory/IPoolManager.hpp>
+#include <aclCommon/memory/IPoolManager.hpp>
 #endif
 
-#include <backends/MakeWorkloadHelper.hpp>
+#include <backendsCommon/MakeWorkloadHelper.hpp>
 
 #include <boost/polymorphic_cast.hpp>
 
diff --git a/src/backends/neon/NeonWorkloadFactory.hpp b/src/backends/neon/NeonWorkloadFactory.hpp
index da83693..abcd033 100644
--- a/src/backends/neon/NeonWorkloadFactory.hpp
+++ b/src/backends/neon/NeonWorkloadFactory.hpp
@@ -5,8 +5,8 @@
 #pragma once
 
 #include <armnn/Optional.hpp>
-#include <backends/OutputHandler.hpp>
-#include <backends/aclCommon/memory/BaseMemoryManager.hpp>
+#include <backendsCommon/OutputHandler.hpp>
+#include <aclCommon/memory/BaseMemoryManager.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 
diff --git a/src/backends/neon/test/CMakeLists.txt b/src/backends/neon/test/CMakeLists.txt
index 999bd4f..a1ac1e0 100644
--- a/src/backends/neon/test/CMakeLists.txt
+++ b/src/backends/neon/test/CMakeLists.txt
@@ -16,6 +16,6 @@
 )
 
 add_library(armnnNeonBackendUnitTests OBJECT ${armnnNeonBackendUnitTests_sources})
-target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnNeonBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp
index 8d5574c..5cd305c 100644
--- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp
+++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp
@@ -3,14 +3,14 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <backends/MemCopyWorkload.hpp>
+#include <backendsCommon/MemCopyWorkload.hpp>
 
-#include <backends/aclCommon/test/CreateWorkloadClNeon.hpp>
+#include <aclCommon/test/CreateWorkloadClNeon.hpp>
 
-#include <backends/neon/NeonWorkloadFactory.hpp>
-#include <backends/neon/NeonTensorHandle.hpp>
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
-#include <backends/neon/workloads/NeonWorkloads.hpp>
+#include <neon/NeonWorkloadFactory.hpp>
+#include <neon/NeonTensorHandle.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloads.hpp>
 
 BOOST_AUTO_TEST_SUITE(CreateWorkloadNeon)
 
diff --git a/src/backends/neon/test/NeonEndToEndTests.cpp b/src/backends/neon/test/NeonEndToEndTests.cpp
index f9aa8a5..3b7e309 100644
--- a/src/backends/neon/test/NeonEndToEndTests.cpp
+++ b/src/backends/neon/test/NeonEndToEndTests.cpp
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <backends/test/EndToEndTestImpl.hpp>
+#include <backendsCommon/test/EndToEndTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/neon/test/NeonJsonPrinterTests.cpp b/src/backends/neon/test/NeonJsonPrinterTests.cpp
index 6213c14..24cfefa 100644
--- a/src/backends/neon/test/NeonJsonPrinterTests.cpp
+++ b/src/backends/neon/test/NeonJsonPrinterTests.cpp
@@ -5,7 +5,7 @@
 
 #include <armnn/BackendId.hpp>
 
-#include <backends/test/JsonPrinterTestImpl.hpp>
+#include <backendsCommon/test/JsonPrinterTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/neon/test/NeonLayerSupportTests.cpp b/src/backends/neon/test/NeonLayerSupportTests.cpp
index db7897f..893f11e 100644
--- a/src/backends/neon/test/NeonLayerSupportTests.cpp
+++ b/src/backends/neon/test/NeonLayerSupportTests.cpp
@@ -3,14 +3,14 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <armnn/layers/ConvertFp16ToFp32Layer.hpp>
-#include <armnn/layers/ConvertFp32ToFp16Layer.hpp>
-#include <armnn/test/TensorHelpers.hpp>
+#include <layers/ConvertFp16ToFp32Layer.hpp>
+#include <layers/ConvertFp32ToFp16Layer.hpp>
+#include <test/TensorHelpers.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/neon/NeonWorkloadFactory.hpp>
-#include <backends/test/IsLayerSupportedTestImpl.hpp>
-#include <backends/test/LayerTests.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <neon/NeonWorkloadFactory.hpp>
+#include <backendsCommon/test/IsLayerSupportedTestImpl.hpp>
+#include <backendsCommon/test/LayerTests.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/neon/test/NeonLayerTests.cpp b/src/backends/neon/test/NeonLayerTests.cpp
index 53dad94..4a1c5f9 100644
--- a/src/backends/neon/test/NeonLayerTests.cpp
+++ b/src/backends/neon/test/NeonLayerTests.cpp
@@ -3,17 +3,17 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <armnn/test/TensorHelpers.hpp>
-#include <armnn/test/UnitTests.hpp>
+#include <test/TensorHelpers.hpp>
+#include <test/UnitTests.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/neon/NeonLayerSupport.hpp>
-#include <backends/neon/NeonWorkloadFactory.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/test/ActivationFixture.hpp>
-#include <backends/test/LayerTests.hpp>
-#include <backends/test/TensorCopyUtils.hpp>
-#include <backends/test/WorkloadTestUtils.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <neon/NeonLayerSupport.hpp>
+#include <neon/NeonWorkloadFactory.hpp>
+#include <reference/RefWorkloadFactory.hpp>
+#include <backendsCommon/test/ActivationFixture.hpp>
+#include <backendsCommon/test/LayerTests.hpp>
+#include <backendsCommon/test/TensorCopyUtils.hpp>
+#include <backendsCommon/test/WorkloadTestUtils.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/neon/test/NeonMemCopyTests.cpp b/src/backends/neon/test/NeonMemCopyTests.cpp
index 2b96d7c..a37a07e 100644
--- a/src/backends/neon/test/NeonMemCopyTests.cpp
+++ b/src/backends/neon/test/NeonMemCopyTests.cpp
@@ -3,9 +3,9 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <backends/neon/NeonWorkloadFactory.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/aclCommon/test/MemCopyTestImpl.hpp>
+#include <neon/NeonWorkloadFactory.hpp>
+#include <reference/RefWorkloadFactory.hpp>
+#include <aclCommon/test/MemCopyTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/neon/test/NeonOptimizedNetworkTests.cpp b/src/backends/neon/test/NeonOptimizedNetworkTests.cpp
index ae657ba..3bf1eb8 100644
--- a/src/backends/neon/test/NeonOptimizedNetworkTests.cpp
+++ b/src/backends/neon/test/NeonOptimizedNetworkTests.cpp
@@ -4,10 +4,10 @@
 //
 
 #include <armnn/ArmNN.hpp>
-#include <armnn/Graph.hpp>
-#include <armnn/Network.hpp>
+#include <Graph.hpp>
+#include <Network.hpp>
 
-#include <backends/neon/NeonWorkloadFactory.hpp>
+#include <neon/NeonWorkloadFactory.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/neon/test/NeonRuntimeTests.cpp b/src/backends/neon/test/NeonRuntimeTests.cpp
index 6e6b1e9..129cd1a 100644
--- a/src/backends/neon/test/NeonRuntimeTests.cpp
+++ b/src/backends/neon/test/NeonRuntimeTests.cpp
@@ -3,11 +3,11 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <armnn/test/RuntimeTests.hpp>
+#include <test/RuntimeTests.hpp>
 
-#include <armnnUtils/LeakChecking.hpp>
+#include <LeakChecking.hpp>
 
-#include <backends/test/RuntimeTestImpl.hpp>
+#include <backendsCommon/test/RuntimeTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/neon/test/NeonTimerTest.cpp b/src/backends/neon/test/NeonTimerTest.cpp
index 06f19c6..11b319a 100644
--- a/src/backends/neon/test/NeonTimerTest.cpp
+++ b/src/backends/neon/test/NeonTimerTest.cpp
@@ -5,17 +5,17 @@
 
 #include <armnn/ArmNN.hpp>
 
-#include <armnn/test/TensorHelpers.hpp>
+#include <test/TensorHelpers.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/WorkloadFactory.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
 
-#include <backends/neon/NeonTimer.hpp>
-#include <backends/neon/NeonWorkloadFactory.hpp>
+#include <neon/NeonTimer.hpp>
+#include <neon/NeonWorkloadFactory.hpp>
 
-#include <backends/test/LayerTests.hpp>
-#include <backends/test/TensorCopyUtils.hpp>
-#include <backends/test/WorkloadTestUtils.hpp>
+#include <backendsCommon/test/LayerTests.hpp>
+#include <backendsCommon/test/TensorCopyUtils.hpp>
+#include <backendsCommon/test/WorkloadTestUtils.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/neon/workloads/CMakeLists.txt b/src/backends/neon/workloads/CMakeLists.txt
index cf47d66..f6e8d1c 100644
--- a/src/backends/neon/workloads/CMakeLists.txt
+++ b/src/backends/neon/workloads/CMakeLists.txt
@@ -53,6 +53,6 @@
 )
 
 add_library(armnnNeonBackendWorkloads OBJECT ${armnnNeonBackendWorkloads_sources})
-target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnNeonBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/neon/workloads/NeonActivationWorkload.cpp b/src/backends/neon/workloads/NeonActivationWorkload.cpp
index c1c240f..6e95678 100644
--- a/src/backends/neon/workloads/NeonActivationWorkload.cpp
+++ b/src/backends/neon/workloads/NeonActivationWorkload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "NeonActivationWorkload.hpp"
-#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonActivationWorkload.hpp b/src/backends/neon/workloads/NeonActivationWorkload.hpp
index b120f94..fc7c646 100644
--- a/src/backends/neon/workloads/NeonActivationWorkload.hpp
+++ b/src/backends/neon/workloads/NeonActivationWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp b/src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp
index 445e32e..45de4dd 100644
--- a/src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonAdditionFloatWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "NeonAdditionFloatWorkload.hpp"
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp b/src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp
index 769492e..1eab666 100644
--- a/src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonAdditionFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.cpp
index 95cfdce..e576c64 100644
--- a/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "NeonBatchNormalizationFloatWorkload.hpp"
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 #include <armnn/ArmNN.hpp>
 
 namespace armnn
diff --git a/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.hpp b/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.hpp
index 59c7404..a6289bd 100644
--- a/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonBatchNormalizationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonConstantWorkload.cpp b/src/backends/neon/workloads/NeonConstantWorkload.cpp
index a348547..08f0390 100644
--- a/src/backends/neon/workloads/NeonConstantWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConstantWorkload.cpp
@@ -6,11 +6,11 @@
 #include "NeonConstantWorkload.hpp"
 
 #include <arm_compute/core/Types.h>
-#include <armnnUtils/Half.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/neon/NeonTensorHandle.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/Workload.hpp>
+#include <Half.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <neon/NeonTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <boost/cast.hpp>
 
diff --git a/src/backends/neon/workloads/NeonConstantWorkload.hpp b/src/backends/neon/workloads/NeonConstantWorkload.hpp
index 7206963..18c1547 100644
--- a/src/backends/neon/workloads/NeonConstantWorkload.hpp
+++ b/src/backends/neon/workloads/NeonConstantWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
index c8a3f27..a86b108 100644
--- a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
+++ b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.cpp
@@ -6,8 +6,8 @@
 #include "NeonConvertFp16ToFp32Workload.hpp"
 #include <FloatingPointConverter.hpp>
 
-#include <armnnUtils/Half.hpp>
-#include <backends/WorkloadUtils.hpp>
+#include <Half.hpp>
+#include <backendsCommon/WorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp
index dcf6998..6db3701 100644
--- a/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp
+++ b/src/backends/neon/workloads/NeonConvertFp16ToFp32Workload.hpp
@@ -5,9 +5,9 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
index 6bcf6e0..4b6f97b 100644
--- a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
+++ b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.cpp
@@ -5,10 +5,10 @@
 
 #include "NeonConvertFp32ToFp16Workload.hpp"
 
-#include <armnnUtils/Half.hpp>
+#include <Half.hpp>
 #include <FloatingPointConverter.hpp>
 #include <Profiling.hpp>
-#include <backends/WorkloadUtils.hpp>
+#include <backendsCommon/WorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp
index b819a8c..3b8f33b 100644
--- a/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp
+++ b/src/backends/neon/workloads/NeonConvertFp32ToFp16Workload.hpp
@@ -5,9 +5,9 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
index c26cdea..781c91a 100644
--- a/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonConvolution2dWorkload.cpp
@@ -5,12 +5,12 @@
 
 #include "NeonConvolution2dWorkload.hpp"
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/neon/NeonLayerSupport.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <neon/NeonLayerSupport.hpp>
 
 #include <armnn/Types.hpp>
-#include <armnnUtils/Half.hpp>
+#include <Half.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonConvolution2dWorkload.hpp b/src/backends/neon/workloads/NeonConvolution2dWorkload.hpp
index 573bb1a..daf9a43 100644
--- a/src/backends/neon/workloads/NeonConvolution2dWorkload.hpp
+++ b/src/backends/neon/workloads/NeonConvolution2dWorkload.hpp
@@ -5,11 +5,11 @@
 
 #pragma once
 
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/neon/NeonLayerSupport.hpp>
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
-#include <backends/Workload.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <neon/NeonLayerSupport.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
diff --git a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp
index 8b1feaa..1b4887e 100644
--- a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.cpp
@@ -5,9 +5,9 @@
 
 #include "NeonDepthwiseConvolutionWorkload.hpp"
 
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/neon/NeonLayerSupport.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <neon/NeonLayerSupport.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.hpp b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.hpp
index fb93fe8..b5f2ae9 100644
--- a/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.hpp
+++ b/src/backends/neon/workloads/NeonDepthwiseConvolutionWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp b/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp
index 478aa94..a4ce476 100644
--- a/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonFloorFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
index 51fd7af..e432a6b 100644
--- a/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
+++ b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
@@ -5,9 +5,9 @@
 
 #include "NeonFullyConnectedWorkload.hpp"
 
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp b/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp
index 9ffac96..ec1661d 100644
--- a/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp
+++ b/src/backends/neon/workloads/NeonFullyConnectedWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
diff --git a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
index 17c39bc..754155d 100644
--- a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "NeonL2NormalizationFloatWorkload.hpp"
-#include <backends/aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
index 70ab385..35d0282 100644
--- a/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonL2NormalizationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 #include <memory>
diff --git a/src/backends/neon/workloads/NeonLstmFloatWorkload.cpp b/src/backends/neon/workloads/NeonLstmFloatWorkload.cpp
index 7745cec..d03454b 100644
--- a/src/backends/neon/workloads/NeonLstmFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonLstmFloatWorkload.cpp
@@ -6,9 +6,9 @@
 #include "NeonLstmFloatWorkload.hpp"
 #include "NeonWorkloadUtils.hpp"
 
-#include "backends/CpuTensorHandle.hpp"
-#include "backends/aclCommon/ArmComputeTensorUtils.hpp"
-#include "backends/neon/NeonTensorHandle.hpp"
+#include "backendsCommon/CpuTensorHandle.hpp"
+#include "aclCommon/ArmComputeTensorUtils.hpp"
+#include "neon/NeonTensorHandle.hpp"
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp b/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp
index d21462b..f87f24d 100644
--- a/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonLstmFloatWorkload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 #include "arm_compute/graph/Tensor.h"
 #include "arm_compute/runtime/NEON/functions/NELSTMLayer.h"
diff --git a/src/backends/neon/workloads/NeonMergerWorkload.hpp b/src/backends/neon/workloads/NeonMergerWorkload.hpp
index ce7241d..7103d8a 100644
--- a/src/backends/neon/workloads/NeonMergerWorkload.hpp
+++ b/src/backends/neon/workloads/NeonMergerWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonMultiplicationFloatWorkload.hpp b/src/backends/neon/workloads/NeonMultiplicationFloatWorkload.hpp
index 0a99c8c..8fa3171 100644
--- a/src/backends/neon/workloads/NeonMultiplicationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonMultiplicationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp
index 1894048..854ecd3 100644
--- a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp
@@ -4,9 +4,9 @@
 //
 
 #include "NeonNormalizationFloatWorkload.hpp"
-#include <backends/neon/NeonLayerSupport.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <neon/NeonLayerSupport.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 using namespace armnn::armcomputetensorutils;
 
diff --git a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp
index c6f64c6..89eba57 100644
--- a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 namespace armnn
diff --git a/src/backends/neon/workloads/NeonPermuteWorkload.cpp b/src/backends/neon/workloads/NeonPermuteWorkload.cpp
index cf4e791..d2e62ee 100644
--- a/src/backends/neon/workloads/NeonPermuteWorkload.cpp
+++ b/src/backends/neon/workloads/NeonPermuteWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "NeonPermuteWorkload.hpp"
-#include <backends/neon/NeonTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <neon/NeonTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 #include <arm_compute/core/Error.h>
 
diff --git a/src/backends/neon/workloads/NeonPermuteWorkload.hpp b/src/backends/neon/workloads/NeonPermuteWorkload.hpp
index 299df80..37db490 100644
--- a/src/backends/neon/workloads/NeonPermuteWorkload.hpp
+++ b/src/backends/neon/workloads/NeonPermuteWorkload.hpp
@@ -5,9 +5,9 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 #include <armnn/TypesUtils.hpp>
 #include <arm_compute/runtime/NEON/functions/NEPermute.h>
diff --git a/src/backends/neon/workloads/NeonPooling2dWorkload.cpp b/src/backends/neon/workloads/NeonPooling2dWorkload.cpp
index a4ed33b..b8acf36 100644
--- a/src/backends/neon/workloads/NeonPooling2dWorkload.cpp
+++ b/src/backends/neon/workloads/NeonPooling2dWorkload.cpp
@@ -4,10 +4,10 @@
 //
 
 #include "NeonPooling2dWorkload.hpp"
-#include <backends/neon/NeonLayerSupport.hpp>
-#include <backends/neon/NeonTensorHandle.hpp>
-#include <backends/aclCommon/ArmComputeUtils.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <neon/NeonLayerSupport.hpp>
+#include <neon/NeonTensorHandle.hpp>
+#include <aclCommon/ArmComputeUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonPooling2dWorkload.hpp b/src/backends/neon/workloads/NeonPooling2dWorkload.hpp
index 848221c..b2379f7 100644
--- a/src/backends/neon/workloads/NeonPooling2dWorkload.hpp
+++ b/src/backends/neon/workloads/NeonPooling2dWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonReshapeWorkload.hpp b/src/backends/neon/workloads/NeonReshapeWorkload.hpp
index 8fd278b..38b6c51 100644
--- a/src/backends/neon/workloads/NeonReshapeWorkload.hpp
+++ b/src/backends/neon/workloads/NeonReshapeWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.cpp b/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.cpp
index 0e11d82..b97cf84 100644
--- a/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.cpp
@@ -5,7 +5,7 @@
 
 #include "NeonSoftmaxBaseWorkload.hpp"
 
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.hpp b/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.hpp
index 446392c..6e96c2d 100644
--- a/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSoftmaxBaseWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonSoftmaxFloatWorkload.hpp b/src/backends/neon/workloads/NeonSoftmaxFloatWorkload.hpp
index 83f2922..9c11b27 100644
--- a/src/backends/neon/workloads/NeonSoftmaxFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSoftmaxFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 #include <memory>
diff --git a/src/backends/neon/workloads/NeonSoftmaxUint8Workload.hpp b/src/backends/neon/workloads/NeonSoftmaxUint8Workload.hpp
index 0d72514..b3bcbf3 100644
--- a/src/backends/neon/workloads/NeonSoftmaxUint8Workload.hpp
+++ b/src/backends/neon/workloads/NeonSoftmaxUint8Workload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 #include <arm_compute/runtime/MemoryManagerOnDemand.h>
 
 namespace armnn
diff --git a/src/backends/neon/workloads/NeonSplitterWorkload.hpp b/src/backends/neon/workloads/NeonSplitterWorkload.hpp
index 11c1767..2a7ee19 100644
--- a/src/backends/neon/workloads/NeonSplitterWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSplitterWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonSubtractionFloatWorkload.cpp b/src/backends/neon/workloads/NeonSubtractionFloatWorkload.cpp
index 2acb829..1eae0a4 100644
--- a/src/backends/neon/workloads/NeonSubtractionFloatWorkload.cpp
+++ b/src/backends/neon/workloads/NeonSubtractionFloatWorkload.cpp
@@ -4,8 +4,8 @@
 //
 
 #include "NeonSubtractionFloatWorkload.hpp"
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonSubtractionFloatWorkload.hpp b/src/backends/neon/workloads/NeonSubtractionFloatWorkload.hpp
index 98aeb4c..0901699 100644
--- a/src/backends/neon/workloads/NeonSubtractionFloatWorkload.hpp
+++ b/src/backends/neon/workloads/NeonSubtractionFloatWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/neon/workloads/NeonWorkloadUtils.hpp>
+#include <neon/workloads/NeonWorkloadUtils.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/neon/workloads/NeonWorkloadUtils.hpp b/src/backends/neon/workloads/NeonWorkloadUtils.hpp
index 48ec753..17e14cd 100644
--- a/src/backends/neon/workloads/NeonWorkloadUtils.hpp
+++ b/src/backends/neon/workloads/NeonWorkloadUtils.hpp
@@ -4,11 +4,11 @@
 //
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/aclCommon/ArmComputeTensorUtils.hpp>
-#include <backends/neon/NeonTensorHandle.hpp>
-#include <backends/neon/NeonTimer.hpp>
-#include <backends/CpuTensorHandle.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <neon/NeonTensorHandle.hpp>
+#include <neon/NeonTimer.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 #include <arm_compute/runtime/NEON/NEFunctions.h>
 
 #include <Half.hpp>
diff --git a/src/backends/reference/CMakeLists.txt b/src/backends/reference/CMakeLists.txt
index e2656d5..1799275 100644
--- a/src/backends/reference/CMakeLists.txt
+++ b/src/backends/reference/CMakeLists.txt
@@ -14,9 +14,9 @@
 )
 
 add_library(armnnRefBackend OBJECT ${armnnRefBackend_sources})
-target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnRefBackend PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
 
 add_subdirectory(workloads)
 
diff --git a/src/backends/reference/RefBackend.cpp b/src/backends/reference/RefBackend.cpp
index 3aa4f03..91fc3c9 100644
--- a/src/backends/reference/RefBackend.cpp
+++ b/src/backends/reference/RefBackend.cpp
@@ -7,7 +7,7 @@
 #include "RefBackendId.hpp"
 #include "RefWorkloadFactory.hpp"
 
-#include <backends/BackendRegistry.hpp>
+#include <backendsCommon/BackendRegistry.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/RefBackend.hpp b/src/backends/reference/RefBackend.hpp
index 1949e77..e2f264d 100644
--- a/src/backends/reference/RefBackend.hpp
+++ b/src/backends/reference/RefBackend.hpp
@@ -4,7 +4,7 @@
 //
 #pragma once
 
-#include <backends/IBackendInternal.hpp>
+#include <backendsCommon/IBackendInternal.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/RefLayerSupport.cpp b/src/backends/reference/RefLayerSupport.cpp
index 79d4ab0..1e8fa75 100644
--- a/src/backends/reference/RefLayerSupport.cpp
+++ b/src/backends/reference/RefLayerSupport.cpp
@@ -6,11 +6,11 @@
 #include "RefLayerSupport.hpp"
 #include "RefBackendId.hpp"
 
-#include <armnn/InternalTypes.hpp>
-#include <armnn/LayerSupportCommon.hpp>
+#include <InternalTypes.hpp>
+#include <LayerSupportCommon.hpp>
 #include <armnn/Types.hpp>
 
-#include <backends/LayerSupportRegistry.hpp>
+#include <backendsCommon/LayerSupportRegistry.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 
diff --git a/src/backends/reference/RefWorkloadFactory.cpp b/src/backends/reference/RefWorkloadFactory.cpp
index 3af8156..177c5ed 100644
--- a/src/backends/reference/RefWorkloadFactory.cpp
+++ b/src/backends/reference/RefWorkloadFactory.cpp
@@ -2,9 +2,9 @@
 // Copyright © 2017 Arm Ltd. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/MemCopyWorkload.hpp>
-#include <backends/MakeWorkloadHelper.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <backendsCommon/MemCopyWorkload.hpp>
+#include <backendsCommon/MakeWorkloadHelper.hpp>
 #include "RefWorkloadFactory.hpp"
 #include "RefBackendId.hpp"
 #include "workloads/RefWorkloads.hpp"
diff --git a/src/backends/reference/RefWorkloadFactory.hpp b/src/backends/reference/RefWorkloadFactory.hpp
index 2e51ec3..e9b298d 100644
--- a/src/backends/reference/RefWorkloadFactory.hpp
+++ b/src/backends/reference/RefWorkloadFactory.hpp
@@ -5,8 +5,8 @@
 #pragma once
 
 #include <armnn/Optional.hpp>
-#include <backends/WorkloadFactory.hpp>
-#include <backends/OutputHandler.hpp>
+#include <backendsCommon/WorkloadFactory.hpp>
+#include <backendsCommon/OutputHandler.hpp>
 
 #include <boost/core/ignore_unused.hpp>
 
diff --git a/src/backends/reference/test/CMakeLists.txt b/src/backends/reference/test/CMakeLists.txt
index 1eec594..aee6216 100644
--- a/src/backends/reference/test/CMakeLists.txt
+++ b/src/backends/reference/test/CMakeLists.txt
@@ -14,6 +14,6 @@
 )
 
 add_library(armnnRefBackendUnitTests OBJECT ${armnnRefBackendUnitTests_sources})
-target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnRefBackendUnitTests PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/reference/test/RefCreateWorkloadTests.cpp b/src/backends/reference/test/RefCreateWorkloadTests.cpp
index d932270..d03fe5c 100644
--- a/src/backends/reference/test/RefCreateWorkloadTests.cpp
+++ b/src/backends/reference/test/RefCreateWorkloadTests.cpp
@@ -3,11 +3,11 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <armnn/test/CreateWorkload.hpp>
+#include <test/CreateWorkload.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/reference/workloads/RefWorkloads.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <reference/RefWorkloadFactory.hpp>
+#include <reference/workloads/RefWorkloads.hpp>
 
 namespace
 {
diff --git a/src/backends/reference/test/RefEndToEndTests.cpp b/src/backends/reference/test/RefEndToEndTests.cpp
index 8938d6f..dc2ffb8 100644
--- a/src/backends/reference/test/RefEndToEndTests.cpp
+++ b/src/backends/reference/test/RefEndToEndTests.cpp
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <backends/test/EndToEndTestImpl.hpp>
+#include <backendsCommon/test/EndToEndTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/reference/test/RefJsonPrinterTests.cpp b/src/backends/reference/test/RefJsonPrinterTests.cpp
index ee668a2..4d48443 100644
--- a/src/backends/reference/test/RefJsonPrinterTests.cpp
+++ b/src/backends/reference/test/RefJsonPrinterTests.cpp
@@ -5,7 +5,7 @@
 
 #include <armnn/BackendId.hpp>
 
-#include <backends/test/JsonPrinterTestImpl.hpp>
+#include <backendsCommon/test/JsonPrinterTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/reference/test/RefLayerSupportTests.cpp b/src/backends/reference/test/RefLayerSupportTests.cpp
index be3f3f8..b7fbc68 100644
--- a/src/backends/reference/test/RefLayerSupportTests.cpp
+++ b/src/backends/reference/test/RefLayerSupportTests.cpp
@@ -3,14 +3,14 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <armnn/layers/ConvertFp16ToFp32Layer.hpp>
-#include <armnn/layers/ConvertFp32ToFp16Layer.hpp>
-#include <armnn/test/TensorHelpers.hpp>
+#include <layers/ConvertFp16ToFp32Layer.hpp>
+#include <layers/ConvertFp32ToFp16Layer.hpp>
+#include <test/TensorHelpers.hpp>
 
-#include <backends/CpuTensorHandle.hpp>
-#include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/test/LayerTests.hpp>
-#include <backends/test/IsLayerSupportedTestImpl.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
+#include <reference/RefWorkloadFactory.hpp>
+#include <backendsCommon/test/LayerTests.hpp>
+#include <backendsCommon/test/IsLayerSupportedTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/reference/test/RefLayerTests.cpp b/src/backends/reference/test/RefLayerTests.cpp
index d481b82..e79953f 100644
--- a/src/backends/reference/test/RefLayerTests.cpp
+++ b/src/backends/reference/test/RefLayerTests.cpp
@@ -3,11 +3,11 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "test/TensorHelpers.hpp"
-#include "test/UnitTests.hpp"
+#include <test/TensorHelpers.hpp>
+#include <test/UnitTests.hpp>
 
-#include <backends/reference/RefWorkloadFactory.hpp>
-#include <backends/test/LayerTests.hpp>
+#include <reference/RefWorkloadFactory.hpp>
+#include <backendsCommon/test/LayerTests.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/reference/test/RefOptimizedNetworkTests.cpp b/src/backends/reference/test/RefOptimizedNetworkTests.cpp
index 63615e6..907e795 100644
--- a/src/backends/reference/test/RefOptimizedNetworkTests.cpp
+++ b/src/backends/reference/test/RefOptimizedNetworkTests.cpp
@@ -4,10 +4,10 @@
 //
 
 #include <armnn/ArmNN.hpp>
-#include <armnn/Graph.hpp>
-#include <armnn/Network.hpp>
+#include <Graph.hpp>
+#include <Network.hpp>
 
-#include <backends/reference/RefWorkloadFactory.hpp>
+#include <reference/RefWorkloadFactory.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/reference/test/RefRuntimeTests.cpp b/src/backends/reference/test/RefRuntimeTests.cpp
index 2536627..ae49366 100644
--- a/src/backends/reference/test/RefRuntimeTests.cpp
+++ b/src/backends/reference/test/RefRuntimeTests.cpp
@@ -3,11 +3,11 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <armnn/test/RuntimeTests.hpp>
+#include <test/RuntimeTests.hpp>
 
-#include <armnnUtils/LeakChecking.hpp>
+#include <LeakChecking.hpp>
 
-#include <backends/test/RuntimeTestImpl.hpp>
+#include <backendsCommon/test/RuntimeTestImpl.hpp>
 
 #include <boost/test/unit_test.hpp>
 
diff --git a/src/backends/reference/workloads/CMakeLists.txt b/src/backends/reference/workloads/CMakeLists.txt
index bf65639..7dc7289 100644
--- a/src/backends/reference/workloads/CMakeLists.txt
+++ b/src/backends/reference/workloads/CMakeLists.txt
@@ -107,6 +107,6 @@
 )
 
 add_library(armnnRefBackendWorkloads OBJECT ${armnnRefBackendWorkloads_sources})
-target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src)
 target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnn)
 target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/armnnUtils)
+target_include_directories(armnnRefBackendWorkloads PRIVATE ${PROJECT_SOURCE_DIR}/src/backends)
diff --git a/src/backends/reference/workloads/Mean.cpp b/src/backends/reference/workloads/Mean.cpp
index 0db67a0..530aade 100644
--- a/src/backends/reference/workloads/Mean.cpp
+++ b/src/backends/reference/workloads/Mean.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "Mean.hpp"
-#include "backends/WorkloadData.hpp"
+#include "backendsCommon/WorkloadData.hpp"
 
 #include <boost/numeric/conversion/cast.hpp>
 
diff --git a/src/backends/reference/workloads/Merger.hpp b/src/backends/reference/workloads/Merger.hpp
index 61c1311..76d807c 100644
--- a/src/backends/reference/workloads/Merger.hpp
+++ b/src/backends/reference/workloads/Merger.hpp
@@ -7,7 +7,7 @@
 
 #include "RefWorkloadUtils.hpp"
 
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 #include <armnn/Tensor.hpp>
 
 namespace armnn
diff --git a/src/backends/reference/workloads/Pad.cpp b/src/backends/reference/workloads/Pad.cpp
index a50fa23..7a928a1 100644
--- a/src/backends/reference/workloads/Pad.cpp
+++ b/src/backends/reference/workloads/Pad.cpp
@@ -4,7 +4,7 @@
 //
 
 #include "Pad.hpp"
-#include "backends/WorkloadData.hpp"
+#include "backendsCommon/WorkloadData.hpp"
 #include <boost/numeric/conversion/cast.hpp>
 #include "TensorBufferArrayView.hpp"
 #include <cmath>
diff --git a/src/backends/reference/workloads/RefActivationFloat32Workload.hpp b/src/backends/reference/workloads/RefActivationFloat32Workload.hpp
index 73be6b0..dd65697 100644
--- a/src/backends/reference/workloads/RefActivationFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefActivationFloat32Workload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefActivationUint8Workload.hpp b/src/backends/reference/workloads/RefActivationUint8Workload.hpp
index 4b8cc1a..66f5e32 100644
--- a/src/backends/reference/workloads/RefActivationUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefActivationUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefArithmeticWorkload.hpp b/src/backends/reference/workloads/RefArithmeticWorkload.hpp
index be89a32..7560617 100644
--- a/src/backends/reference/workloads/RefArithmeticWorkload.hpp
+++ b/src/backends/reference/workloads/RefArithmeticWorkload.hpp
@@ -6,9 +6,9 @@
 #pragma once
 
 #include <armnn/Types.hpp>
-#include <backends/StringMapping.hpp>
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/StringMapping.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefBaseConstantWorkload.hpp b/src/backends/reference/workloads/RefBaseConstantWorkload.hpp
index 9d125e4..82ee11f 100644
--- a/src/backends/reference/workloads/RefBaseConstantWorkload.hpp
+++ b/src/backends/reference/workloads/RefBaseConstantWorkload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 #include <armnn/Types.hpp>
 
diff --git a/src/backends/reference/workloads/RefBatchNormalizationFloat32Workload.hpp b/src/backends/reference/workloads/RefBatchNormalizationFloat32Workload.hpp
index b51d94f..9f92899 100644
--- a/src/backends/reference/workloads/RefBatchNormalizationFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefBatchNormalizationFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefBatchNormalizationUint8Workload.hpp b/src/backends/reference/workloads/RefBatchNormalizationUint8Workload.hpp
index 854ba1a..7c288a5 100644
--- a/src/backends/reference/workloads/RefBatchNormalizationUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefBatchNormalizationUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp b/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp
index b01246b..886e77a 100644
--- a/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp
+++ b/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.cpp
@@ -8,7 +8,7 @@
 #include "RefWorkloadUtils.hpp"
 #include "FloatingPointConverter.hpp"
 
-#include <armnnUtils/Half.hpp>
+#include <Half.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.hpp b/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.hpp
index 475b47f..7c58e9f 100644
--- a/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.hpp
+++ b/src/backends/reference/workloads/RefConvertFp16ToFp32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp b/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp
index 99e3541..33270ad 100644
--- a/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp
+++ b/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.cpp
@@ -9,7 +9,7 @@
 #include "RefWorkloadUtils.hpp"
 #include "Profiling.hpp"
 
-#include "armnnUtils/Half.hpp"
+#include "Half.hpp"
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.hpp b/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.hpp
index 2d55609..283766d 100644
--- a/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.hpp
+++ b/src/backends/reference/workloads/RefConvertFp32ToFp16Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefConvolution2dFloat32Workload.hpp b/src/backends/reference/workloads/RefConvolution2dFloat32Workload.hpp
index 4f2700d..5ff743d 100644
--- a/src/backends/reference/workloads/RefConvolution2dFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefConvolution2dFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefConvolution2dUint8Workload.hpp b/src/backends/reference/workloads/RefConvolution2dUint8Workload.hpp
index bbd77ce..a58f23a 100644
--- a/src/backends/reference/workloads/RefConvolution2dUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefConvolution2dUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefDepthwiseConvolution2dFloat32Workload.hpp b/src/backends/reference/workloads/RefDepthwiseConvolution2dFloat32Workload.hpp
index 516d809..d09497c 100644
--- a/src/backends/reference/workloads/RefDepthwiseConvolution2dFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefDepthwiseConvolution2dFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefDepthwiseConvolution2dUint8Workload.hpp b/src/backends/reference/workloads/RefDepthwiseConvolution2dUint8Workload.hpp
index 3cb82c4..d35b43c 100644
--- a/src/backends/reference/workloads/RefDepthwiseConvolution2dUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefDepthwiseConvolution2dUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.hpp b/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.hpp
index 89a907b..62fb8e8 100644
--- a/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefFakeQuantizationFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefFloorFloat32Workload.hpp b/src/backends/reference/workloads/RefFloorFloat32Workload.hpp
index ffc4541..3f540d0 100644
--- a/src/backends/reference/workloads/RefFloorFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefFloorFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefFullyConnectedFloat32Workload.hpp b/src/backends/reference/workloads/RefFullyConnectedFloat32Workload.hpp
index c296f99..6a05024 100644
--- a/src/backends/reference/workloads/RefFullyConnectedFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefFullyConnectedFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefFullyConnectedUint8Workload.hpp b/src/backends/reference/workloads/RefFullyConnectedUint8Workload.hpp
index 3a15d99..679ad86 100644
--- a/src/backends/reference/workloads/RefFullyConnectedUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefFullyConnectedUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefL2NormalizationFloat32Workload.hpp b/src/backends/reference/workloads/RefL2NormalizationFloat32Workload.hpp
index b2e3795..50ece0e 100644
--- a/src/backends/reference/workloads/RefL2NormalizationFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefL2NormalizationFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefLstmFloat32Workload.hpp b/src/backends/reference/workloads/RefLstmFloat32Workload.hpp
index 79781c6..1f634d3 100644
--- a/src/backends/reference/workloads/RefLstmFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefLstmFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefMeanFloat32Workload.hpp b/src/backends/reference/workloads/RefMeanFloat32Workload.hpp
index a4c559f..153ebe1 100644
--- a/src/backends/reference/workloads/RefMeanFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefMeanFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include "backends/Workload.hpp"
-#include "backends/WorkloadData.hpp"
+#include "backendsCommon/Workload.hpp"
+#include "backendsCommon/WorkloadData.hpp"
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefMeanUint8Workload.hpp b/src/backends/reference/workloads/RefMeanUint8Workload.hpp
index 21cf72b..f53b8a4 100644
--- a/src/backends/reference/workloads/RefMeanUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefMeanUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include "backends/Workload.hpp"
-#include "backends/WorkloadData.hpp"
+#include "backendsCommon/Workload.hpp"
+#include "backendsCommon/WorkloadData.hpp"
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefMergerFloat32Workload.hpp b/src/backends/reference/workloads/RefMergerFloat32Workload.hpp
index 0c65923..8d7b270 100644
--- a/src/backends/reference/workloads/RefMergerFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefMergerFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefMergerUint8Workload.hpp b/src/backends/reference/workloads/RefMergerUint8Workload.hpp
index f19bd22..df23af0 100644
--- a/src/backends/reference/workloads/RefMergerUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefMergerUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefNormalizationFloat32Workload.hpp b/src/backends/reference/workloads/RefNormalizationFloat32Workload.hpp
index 2358c60..9dff187 100644
--- a/src/backends/reference/workloads/RefNormalizationFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefNormalizationFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefPadWorkload.hpp b/src/backends/reference/workloads/RefPadWorkload.hpp
index 938fcf2..8c6d013 100644
--- a/src/backends/reference/workloads/RefPadWorkload.hpp
+++ b/src/backends/reference/workloads/RefPadWorkload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 #include <armnn/TypesUtils.hpp>
 
diff --git a/src/backends/reference/workloads/RefPermuteWorkload.hpp b/src/backends/reference/workloads/RefPermuteWorkload.hpp
index 50caa3e..a2d3233 100644
--- a/src/backends/reference/workloads/RefPermuteWorkload.hpp
+++ b/src/backends/reference/workloads/RefPermuteWorkload.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
+#include <backendsCommon/Workload.hpp>
 
 #include <armnn/TypesUtils.hpp>
 
diff --git a/src/backends/reference/workloads/RefPooling2dFloat32Workload.hpp b/src/backends/reference/workloads/RefPooling2dFloat32Workload.hpp
index 6387cb2..e347cec 100644
--- a/src/backends/reference/workloads/RefPooling2dFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefPooling2dFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefPooling2dUint8Workload.hpp b/src/backends/reference/workloads/RefPooling2dUint8Workload.hpp
index 3802051..9f91024 100644
--- a/src/backends/reference/workloads/RefPooling2dUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefPooling2dUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefReshapeFloat32Workload.hpp b/src/backends/reference/workloads/RefReshapeFloat32Workload.hpp
index 62de71a..75024b3 100644
--- a/src/backends/reference/workloads/RefReshapeFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefReshapeFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefReshapeUint8Workload.hpp b/src/backends/reference/workloads/RefReshapeUint8Workload.hpp
index 25d1001..c3d31f8 100644
--- a/src/backends/reference/workloads/RefReshapeUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefReshapeUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefResizeBilinearFloat32Workload.hpp b/src/backends/reference/workloads/RefResizeBilinearFloat32Workload.hpp
index 1a8b5ba..84d3a51 100644
--- a/src/backends/reference/workloads/RefResizeBilinearFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefResizeBilinearFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefResizeBilinearUint8Workload.hpp b/src/backends/reference/workloads/RefResizeBilinearUint8Workload.hpp
index 50a0c50..6380441 100644
--- a/src/backends/reference/workloads/RefResizeBilinearUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefResizeBilinearUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefSoftmaxFloat32Workload.hpp b/src/backends/reference/workloads/RefSoftmaxFloat32Workload.hpp
index 8af0cc5..82ddfac 100644
--- a/src/backends/reference/workloads/RefSoftmaxFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefSoftmaxFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefSoftmaxUint8Workload.hpp b/src/backends/reference/workloads/RefSoftmaxUint8Workload.hpp
index fe6a0d1..bb7b214 100644
--- a/src/backends/reference/workloads/RefSoftmaxUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefSoftmaxUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefSplitterFloat32Workload.hpp b/src/backends/reference/workloads/RefSplitterFloat32Workload.hpp
index 5d6ef65..502eb35 100644
--- a/src/backends/reference/workloads/RefSplitterFloat32Workload.hpp
+++ b/src/backends/reference/workloads/RefSplitterFloat32Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefSplitterUint8Workload.hpp b/src/backends/reference/workloads/RefSplitterUint8Workload.hpp
index 5dac92a..d9b6aaf 100644
--- a/src/backends/reference/workloads/RefSplitterUint8Workload.hpp
+++ b/src/backends/reference/workloads/RefSplitterUint8Workload.hpp
@@ -5,8 +5,8 @@
 
 #pragma once
 
-#include <backends/Workload.hpp>
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/Workload.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 
 namespace armnn
 {
diff --git a/src/backends/reference/workloads/RefWorkloadUtils.hpp b/src/backends/reference/workloads/RefWorkloadUtils.hpp
index 67a1f5e..feb4329 100644
--- a/src/backends/reference/workloads/RefWorkloadUtils.hpp
+++ b/src/backends/reference/workloads/RefWorkloadUtils.hpp
@@ -5,11 +5,11 @@
 
 #pragma once
 
-#include <backends/CpuTensorHandle.hpp>
+#include <backendsCommon/CpuTensorHandle.hpp>
 
 #include <armnn/Tensor.hpp>
 #include <armnn/Types.hpp>
-#include <armnnUtils/Half.hpp>
+#include <Half.hpp>
 
 #include <boost/polymorphic_cast.hpp>
 
diff --git a/src/backends/reference/workloads/Splitter.hpp b/src/backends/reference/workloads/Splitter.hpp
index 4d6f673..0e522d5 100644
--- a/src/backends/reference/workloads/Splitter.hpp
+++ b/src/backends/reference/workloads/Splitter.hpp
@@ -7,7 +7,7 @@
 
 #include "RefWorkloadUtils.hpp"
 
-#include <backends/WorkloadData.hpp>
+#include <backendsCommon/WorkloadData.hpp>
 #include <armnn/Tensor.hpp>
 
 #include <boost/assert.hpp>