diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2bdab04..37dba7c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,8 @@
 set(additional_cmake_files)
 list(APPEND additional_cmake_files
     cmake/ArmnnVersion.cmake
-    cmake/DelegateVersion.cmake
+    cmake/ClassicDelegateVersion.cmake
+    cmake/OpaqueDelegateVersion.cmake
     cmake/ParserVersion.cmake
     cmake/Utils.cmake
     cmake/GlobalConfig.cmake
@@ -443,12 +444,17 @@
 # Because backends are added as object libraries they won't be linked to armnn when building armnn statically.
 # A target that uses a static armnn library has to link to the object libraries in the variable armnnLibraries
 # manually to include all symbols from backends.
-if (BUILD_ARMNN_TFLITE_DELEGATE)
+if (BUILD_CLASSIC_DELEGATE OR BUILD_OPAQUE_DELEGATE)
     set(ARMNN_SUB_PROJECT ON)
     set(ARMNN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
     add_subdirectory(delegate)
+endif()
+if (BUILD_CLASSIC_DELEGATE)
     add_definitions(-DARMNN_TFLITE_DELEGATE)
 endif()
+if (BUILD_OPAQUE_DELEGATE)
+    add_definitions(-DARMNN_TFLITE_OPAQUE_DELEGATE)
+endif()
 
 if(BUILD_BARE_METAL OR EXECUTE_NETWORK_STATIC)
     add_library_ex(armnn STATIC ${armnn_sources})
diff --git a/build-tool/scripts/build-armnn.sh b/build-tool/scripts/build-armnn.sh
index 865b16f..7e15517 100755
--- a/build-tool/scripts/build-armnn.sh
+++ b/build-tool/scripts/build-armnn.sh
@@ -1,6 +1,7 @@
 #!/bin/bash
+
 #
-# Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+# Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 # SPDX-License-Identifier: MIT
 #
 
@@ -95,7 +96,7 @@
 
   eval "$compile_flags" \
   cmake -DCMAKE_BUILD_TYPE="$build_type" \
-        -DBUILD_ARMNN_TFLITE_DELEGATE="$flag_tflite_delegate" \
+        -DBUILD_CLASSIC_DELEGATE="$flag_tflite_delegate" \
         -DBUILD_TF_LITE_PARSER="$flag_tflite_parser" \
         -DBUILD_ONNX_PARSER="$flag_onnx_parser" \
         -DARMCOMPUTENEON="$flag_neon_backend" \
@@ -467,4 +468,4 @@
 
 build_armnn
 
-exit 0
\ No newline at end of file
+exit 0
diff --git a/cmake/DelegateVersion.cmake b/cmake/ClassicDelegateVersion.cmake
similarity index 70%
rename from cmake/DelegateVersion.cmake
rename to cmake/ClassicDelegateVersion.cmake
index caaede8..fa036f1 100644
--- a/cmake/DelegateVersion.cmake
+++ b/cmake/ClassicDelegateVersion.cmake
@@ -1,15 +1,15 @@
 #
-# Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+# Copyright © 2021,2023 Arm Ltd and Contributors. All rights reserved.
 # SPDX-License-Identifier: MIT
 #
 
 # Read the ArmNN Delegate version components from file
-file(READ ${CMAKE_CURRENT_LIST_DIR}/../delegate/include/Version.hpp delegateVersion)
+file(READ ${CMAKE_CURRENT_LIST_DIR}/../delegate/classic/include/Version.hpp ClassicDelegateVersion)
 
 # Parse the ArmNN Delegate version components
-string(REGEX MATCH "#define DELEGATE_MAJOR_VERSION ([0-9]*)" _ ${delegateVersion})
+string(REGEX MATCH "#define DELEGATE_MAJOR_VERSION ([0-9]*)" _ ${ClassicDelegateVersion})
 set(DELEGATE_MAJOR_VERSION ${CMAKE_MATCH_1})
-string(REGEX MATCH "#define DELEGATE_MINOR_VERSION ([0-9]*)" _ ${delegateVersion})
+string(REGEX MATCH "#define DELEGATE_MINOR_VERSION ([0-9]*)" _ ${ClassicDelegateVersion})
 set(DELEGATE_MINOR_VERSION ${CMAKE_MATCH_1})
 
 # Define LIB version
diff --git a/cmake/GlobalConfig.cmake b/cmake/GlobalConfig.cmake
index 1f24fa5..3337f41 100644
--- a/cmake/GlobalConfig.cmake
+++ b/cmake/GlobalConfig.cmake
@@ -36,8 +36,8 @@
 option(BUILD_PYTHON_SRC "Build Python source package" OFF)
 option(BUILD_STATIC_PIPE_LIBS "Build Static PIPE libraries" OFF)
 option(BUILD_PIPE_ONLY "Build the PIPE libraries only" OFF)
-option(BUILD_ARMNN_TFLITE_DELEGATE "Build the Arm NN TfLite delegate" OFF)
-option(BUILD_ARMNN_TFLITE_OPAQUE_DELEGATE "Build the Arm NN TfLite Opaque delegate" OFF)
+option(BUILD_CLASSIC_DELEGATE "Build the Arm NN TfLite delegate" OFF)
+option(BUILD_OPAQUE_DELEGATE "Build the Arm NN TfLite Opaque delegate" OFF)
 option(BUILD_MEMORY_STRATEGY_BENCHMARK "Build the MemoryBenchmark" OFF)
 option(BUILD_BARE_METAL "Disable features requiring operating system support" OFF)
 option(BUILD_SHARED_LIBS "Determines if Armnn will be built statically or dynamically.
@@ -51,13 +51,18 @@
                                 ARMNNREF=1/0
                                 ARMCOMPUTECL=0
                                 BUILD_ONNX_PARSER=0
-                                BUILD_ARMNN_TFLITE_DELEGATE=0
-                                BUILD_ARMNN_TFLITE_OPAQUE_DELEGATE=0
+                                BUILD_CLASSIC_DELEGATE=0
+                                BUILD_OPAQUE_DELEGATE=0
                                 BUILD_TIMELINE_DECODER=0
                                 BUILD_BASE_PIPE_SERVER=0
                                 BUILD_UNIT_TESTS=0
                                 BUILD_GATORD_MOCK=0" OFF)
 
+if(BUILD_ARMNN_TFLITE_DELEGATE)
+    message(BUILD_ARMNN_TFLITE_DELEGATE option is deprecated, it will be removed in 24.02, please use BUILD_CLASSIC_DELEGATE instead)
+    set(BUILD_CLASSIC_DELEGATE 1)
+endif()
+
 include(SelectLibraryConfigurations)
 
 set(COMPILER_IS_GNU_LIKE 0)
@@ -180,8 +185,8 @@
 endif()
 
 # JNI_BUILD has DBUILD_SHARED_LIBS set to 0 and not finding libs while building
-# hence added NOT BUILD_ARMNN_TFLITE_DELEGATE/BUILD_ARMNN_TFLITE_OPAQUE_DELEGATE condition
-if(NOT BUILD_SHARED_LIBS AND NOT BUILD_ARMNN_TFLITE_DELEGATE AND NOT BUILD_ARMNN_TFLITE_OPAQUE_DELEGATE)
+# hence added NOT BUILD_CLASSIC_DELEGATE/BUILD_OPAQUE_DELEGATE condition
+if(NOT BUILD_SHARED_LIBS AND NOT BUILD_CLASSIC_DELEGATE AND NOT BUILD_OPAQUE_DELEGATE)
     set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib)
 endif()
 
@@ -224,11 +229,11 @@
     include_directories(SYSTEM "${ONNX_GENERATED_SOURCES}")
 endif()
 
-if(BUILD_ARMNN_TFLITE_DELEGATE)
+if(BUILD_CLASSIC_DELEGATE)
     add_definitions(-DARMNN_TFLITE_DELEGATE)
 endif()
 
-if(BUILD_ARMNN_TFLITE_OPAQUE_DELEGATE)
+if(BUILD_OPAQUE_DELEGATE)
     add_definitions(-DARMNN_TFLITE_OPAQUE_DELEGATE)
 endif()
 
diff --git a/cmake/OpaqueDelegateVersion.cmake b/cmake/OpaqueDelegateVersion.cmake
new file mode 100644
index 0000000..d6ae1ba
--- /dev/null
+++ b/cmake/OpaqueDelegateVersion.cmake
@@ -0,0 +1,18 @@
+#
+# Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+# Read the ArmNN Delegate version components from file
+file(READ ${CMAKE_CURRENT_LIST_DIR}/../delegate/opaque/include/Version.hpp opaqueDelegateVersion)
+
+# Parse the ArmNN Delegate version components
+string(REGEX MATCH "#define OPAQUE_DELEGATE_MAJOR_VERSION ([0-9]*)" _ ${opaqueDelegateVersion})
+set(OPAQUE_DELEGATE_MAJOR_VERSION ${CMAKE_MATCH_1})
+string(REGEX MATCH "#define OPAQUE_DELEGATE_MINOR_VERSION ([0-9]*)" _ ${opaqueDelegateVersion})
+set(OPAQUE_DELEGATE_MINOR_VERSION ${CMAKE_MATCH_1})
+
+# Define LIB version
+set(OPAQUE_DELEGATE_LIB_VERSION "${OPAQUE_DELEGATE_MAJOR_VERSION}.${OPAQUE_DELEGATE_MINOR_VERSION}")
+# Define LIB soversion
+set(OPAQUE_DELEGATE_LIB_SOVERSION "${OPAQUE_DELEGATE_MINOR_VERSION}")
\ No newline at end of file
diff --git a/delegate/CMakeLists.txt b/delegate/CMakeLists.txt
index 55bdb7c..f6a5e51 100644
--- a/delegate/CMakeLists.txt
+++ b/delegate/CMakeLists.txt
@@ -7,112 +7,86 @@
 project(armnnDelegate)
 set(CMAKE_CXX_STANDARD 17)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
-
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -Wall -Wextra -Werror -Wold-style-cast -Wno-missing-braces -Wconversion -Wsign-conversion -Wno-comment")
-
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules/")
 
+option(BUILD_UNIT_TESTS "Build unit tests" ON)
+option(BUILD_CLASSIC_DELEGATE "Build classic delegate" ON)
+option(BUILD_OPAQUE_DELEGATE "Build opaque delegate" OFF)
+option(BUILD_SHARED_LIBS "Build share libs" ON)
+option(BUILD_DELEGATE_JNI_INTERFACE "Builds a library to allow accessing the Arm NN delegate from Java code.
+                                     This is an experimental feature." ON)
+
 set(armnnDelegate_sources)
 list(APPEND armnnDelegate_sources
-        include/armnn_delegate.hpp
-        include/DelegateOptions.hpp
-        include/Version.hpp
-        src/armnn_delegate.cpp
-        src/armnn_external_delegate.cpp
-        src/DelegateOptions.cpp
-        src/Activation.hpp
-        src/ArgMinMax.hpp
-        src/BatchMatMul.hpp
-        src/BatchSpace.hpp
-        src/Comparison.hpp
-        src/Convolution.hpp
-        src/Control.hpp
-        src/DelegateUtils.hpp
-        src/ElementwiseBinary.hpp
-        src/ElementwiseUnary.hpp
-        src/Fill.hpp
-        src/FullyConnected.hpp
-        src/Gather.hpp
-        src/GatherNd.hpp
-        src/LogicalBinary.hpp
-        src/Lstm.hpp
-        src/MultiLayerFacade.hpp
-        src/Normalization.hpp
-        src/Pack.hpp
-        src/Pad.hpp
-        src/Pooling.hpp
-        src/Prelu.hpp
-        src/Quantization.hpp
-        src/Redefine.hpp
-        src/Reduce.hpp
-        src/Resize.hpp
-        src/Round.hpp
-        src/Shape.hpp
-        src/SharedFunctions.hpp
-        src/SharedFunctions.cpp
-        src/Slice.hpp
-        src/Softmax.hpp
-        src/SpaceDepth.hpp
-        src/Split.hpp
-        src/Unpack.hpp
-        src/Transpose.hpp)
-
-add_library(armnnDelegate ${armnnDelegate_sources})
-
-target_include_directories(armnnDelegate
-        PUBLIC
-            $<INSTALL_INTERFACE:include>
-            $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
-        PRIVATE
-            ${CMAKE_CURRENT_SOURCE_DIR}/src)
-
-include(GNUInstallDirs)
+        common/include/DelegateOptions.hpp
+        common/src/DelegateOptions.cpp
+        common/src/DelegateUtils.hpp)
 
 ## Add Armnn as a Dependency
 if(NOT ARMNN_SUB_PROJECT)
     find_package(Armnn REQUIRED CONFIG HINTS ${Armnn_DIR})
 endif()
-target_link_libraries(armnnDelegate PUBLIC Armnn::Armnn)
+
+if (BUILD_CLASSIC_DELEGATE)
+    add_subdirectory(classic)
+    add_library(armnnDelegate ${armnnDelegate_sources})
+
+    target_include_directories(armnnDelegate
+            PUBLIC
+                $<INSTALL_INTERFACE:include>
+                $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/common/include>
+            PRIVATE
+                ${CMAKE_CURRENT_SOURCE_DIR}/common/src)
+endif()
+if (BUILD_OPAQUE_DELEGATE)
+    add_subdirectory(opaque)
+    add_library(armnnOpaqueDelegate ${armnnDelegate_sources})
+
+    target_include_directories(armnnOpaqueDelegate
+            PUBLIC
+                $<INSTALL_INTERFACE:include>
+                $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/common/include>
+            PRIVATE
+                ${CMAKE_CURRENT_SOURCE_DIR}/common/src)
+endif()
+
+include(GNUInstallDirs)
+
+if (BUILD_CLASSIC_DELEGATE)
+    target_link_libraries(armnnDelegate PUBLIC Armnn::Armnn)
+
+    ## Add armnnClassicDelegateObject as a Dependency
+    target_link_libraries(armnnDelegate PUBLIC armnnClassicDelegateObject)
+endif()
+if (BUILD_OPAQUE_DELEGATE)
+    target_link_libraries(armnnOpaqueDelegate PUBLIC Armnn::Armnn)
+
+    ## Add armnnOpaqueDelegateObject as a Dependency
+    target_link_libraries(armnnOpaqueDelegate PUBLIC armnnOpaqueDelegateObject)
+endif()
 
 ## Add TfLite dependency
 find_package(TfLiteSrc REQUIRED MODULE)
 find_package(TfLite REQUIRED MODULE)
+if (BUILD_CLASSIC_DELEGATE)
+    target_link_libraries(armnnDelegate PUBLIC ${TfLite_LIB})
 
-target_link_libraries(armnnDelegate PUBLIC ${TfLite_LIB})
-
-#  lpthread and ldl are not required for Android
-if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL Android)
-    target_link_libraries(armnnDelegate PUBLIC -lpthread)
-    target_link_libraries(armnnDelegate PUBLIC -ldl)
+    #  lpthread and ldl are not required for Android
+    if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL Android)
+        target_link_libraries(armnnDelegate PUBLIC -lpthread)
+        target_link_libraries(armnnDelegate PUBLIC -ldl)
+    endif()
 endif()
+if (BUILD_OPAQUE_DELEGATE)
+    target_link_libraries(armnnOpaqueDelegate PUBLIC ${TfLite_LIB})
 
-# Various tflite header files are not warning clean
-# We can't change compilation flags on header files directly, so we need to add them to an interface library first
-add_library(tflite_headers INTERFACE)
-target_include_directories(tflite_headers INTERFACE $<BUILD_INTERFACE:${TfLite_INCLUDE_DIR}>
-                                                    $<INSTALL_INTERFACE:include/tflite_headers>)
-
-target_compile_options(tflite_headers INTERFACE -Wno-conversion
-                                                -Wno-sign-conversion
-                                                -Wno-unused-parameter
-                                                -Wno-unused-function)
-
-target_link_libraries(armnnDelegate PUBLIC tflite_headers)
-
-## Add Flatbuffers dependency
-find_package(Flatbuffers REQUIRED MODULE)
-
-target_link_libraries(armnnDelegate PRIVATE
-        ${Flatbuffers_LIB})
-
-# include/flatbuffers/flatbuffers.h is not warning clean
-# We can't change compilation flags on header files directly, so we need to add them to an interface library first
-add_library(flatbuffer_headers INTERFACE)
-target_include_directories(flatbuffer_headers INTERFACE $<BUILD_INTERFACE:${Flatbuffers_INCLUDE_DIR}>
-                                                 $<INSTALL_INTERFACE:include/flatbuffer_headers>)
-target_compile_options(flatbuffer_headers INTERFACE -Wno-sign-conversion)
-
-target_link_libraries(armnnDelegate PUBLIC flatbuffer_headers)
+    #  lpthread and ldl are not required for Android
+    if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL Android)
+        target_link_libraries(armnnOpaqueDelegate PUBLIC -lpthread)
+        target_link_libraries(armnnOpaqueDelegate PUBLIC -ldl)
+    endif()
+endif()
 
 # Add libraries from armnn third-party libraries
 # Third-party header files are not warning clean
@@ -122,100 +96,113 @@
                                                         $<INSTALL_INTERFACE:include/thirdparty_headers>)
 
 target_compile_options(thirdparty_headers INTERFACE -Wno-old-style-cast)
-target_link_libraries(armnnDelegate PUBLIC thirdparty_headers)
+if (BUILD_CLASSIC_DELEGATE)
+    target_link_libraries(armnnDelegate PUBLIC thirdparty_headers)
+endif()
+if (BUILD_OPAQUE_DELEGATE)
+    target_link_libraries(armnnOpaqueDelegate PUBLIC thirdparty_headers)
+endif()
 
 add_library(profiling_library_headers INTERFACE)
 target_include_directories(profiling_library_headers INTERFACE $<BUILD_INTERFACE:${ARMNN_SOURCE_DIR}/profiling>
                                                               $<INSTALL_INTERFACE:include/profiling_library_headers>)
-target_link_libraries(armnnDelegate PUBLIC profiling_library_headers)
-target_link_libraries(armnnDelegate PUBLIC Armnn::armnnUtils)
 
-set_target_properties(armnnDelegate PROPERTIES VERSION ${DELEGATE_LIB_VERSION} SOVERSION ${DELEGATE_LIB_SOVERSION})
+if (BUILD_CLASSIC_DELEGATE)
+    target_link_libraries(armnnDelegate PUBLIC profiling_library_headers)
+    target_link_libraries(armnnDelegate PUBLIC Armnn::armnnUtils)
 
-option(BUILD_UNIT_TESTS "Build unit tests" ON)
+    set_target_properties(armnnDelegate PROPERTIES VERSION ${DELEGATE_LIB_VERSION} SOVERSION ${DELEGATE_LIB_SOVERSION})
+endif()
+if (BUILD_OPAQUE_DELEGATE)
+    target_link_libraries(armnnOpaqueDelegate PUBLIC profiling_library_headers)
+    target_link_libraries(armnnOpaqueDelegate PUBLIC Armnn::armnnUtils)
+
+    set_target_properties(armnnOpaqueDelegate PROPERTIES VERSION ${OPAQUE_DELEGATE_LIB_VERSION} SOVERSION ${OPAQUE_DELEGATE_LIB_SOVERSION})
+endif()
+
 if(BUILD_UNIT_TESTS)
     set(armnnDelegate_unittest_sources)
     list(APPEND armnnDelegate_unittest_sources
-        src/test/ActivationTest.cpp
-        src/test/ActivationTestHelper.hpp
-        src/test/ArgMinMaxTest.cpp
-        src/test/ArgMinMaxTestHelper.hpp
-        src/test/ArmnnDelegateTest.cpp
-        src/test/BatchMatMulTest.cpp
-        src/test/BatchMatMulTestHelper.hpp
-        src/test/BatchSpaceTest.cpp
-        src/test/BatchSpaceTestHelper.hpp
-        src/test/CastTest.cpp
-        src/test/CastTestHelper.hpp
-        src/test/ComparisonTest.cpp
-        src/test/ComparisonTestHelper.hpp
-        src/test/ControlTest.cpp
-        src/test/ControlTestHelper.hpp
-        src/test/Convolution2dTest.cpp
-        src/test/Convolution3dTest.cpp
-        src/test/ConvolutionTestHelper.hpp
-        src/test/DelegateOptionsTest.cpp
-        src/test/DelegateOptionsTestHelper.hpp
-        src/test/DepthwiseConvolution2dTest.cpp
-        src/test/ElementwiseBinaryTest.cpp
-        src/test/ElementwiseBinaryTestHelper.hpp
-        src/test/ElementwiseUnaryTest.cpp
-        src/test/ElementwiseUnaryTestHelper.hpp
-        src/test/FillTest.cpp
-        src/test/FillTestHelper.hpp
-        src/test/FullyConnectedTest.cpp
-        src/test/FullyConnectedTestHelper.hpp
-        src/test/GatherTest.cpp
-        src/test/GatherTestHelper.hpp
-        src/test/GatherNdTest.cpp
-        src/test/GatherNdTestHelper.hpp
-        src/test/LogicalTest.cpp
-        src/test/LogicalTestHelper.hpp
-        src/test/LstmTest.cpp
-        src/test/LstmTestHelper.hpp
-        src/test/MirrorPadTest.cpp
-        src/test/NormalizationTest.cpp
-        src/test/NormalizationTestHelper.hpp
-        src/test/PackTest.cpp
-        src/test/PackTestHelper.hpp
-        src/test/PadTest.cpp
-        src/test/PadTestHelper.hpp
-        src/test/Pooling2dTest.cpp
-        src/test/Pooling2dTestHelper.hpp
-        src/test/Pooling3dTest.cpp
-        src/test/Pooling3dTestHelper.hpp
-        src/test/PreluTest.cpp
-        src/test/PreluTestHelper.hpp
-        src/test/QuantizationTest.cpp
-        src/test/QuantizationTestHelper.hpp
-        src/test/RedefineTestHelper.hpp
-        src/test/ReduceTest.cpp
-        src/test/ReduceTestHelper.hpp
-        src/test/ReshapeTest.cpp
-        src/test/ResizeTest.cpp
-        src/test/ResizeTestHelper.hpp
-        src/test/RoundTest.cpp
-        src/test/RoundTestHelper.hpp
-        src/test/SoftmaxTest.cpp
-        src/test/SoftmaxTestHelper.hpp
-        src/test/SpaceDepthTest.cpp
-        src/test/SpaceDepthTestHelper.hpp
-        src/test/ShapeTest.cpp
-        src/test/ShapeTestHelper.hpp
-        src/test/SliceTest.cpp
-        src/test/SliceTestHelper.hpp
-        src/test/StridedSliceTest.cpp
-        src/test/StridedSliceTestHelper.hpp
-        src/test/SplitTest.cpp
-        src/test/SplitTestHelper.hpp
-        src/test/TestUtils.hpp
-        src/test/TestUtils.cpp
-        src/test/TransposeTest.cpp
-        src/test/TransposeTestHelper.hpp
-        src/test/UnidirectionalSequenceLstmTest.cpp
-        src/test/UnidirectionalSequenceLstmTestHelper.hpp
-        src/test/UnpackTest.cpp
-        src/test/UnpackTestHelper.hpp)
+        test/ActivationTest.cpp
+        test/ActivationTestHelper.hpp
+        test/ArgMinMaxTest.cpp
+        test/ArgMinMaxTestHelper.hpp
+        test/ArmnnDelegateTest.cpp
+        test/BatchMatMulTest.cpp
+        test/BatchMatMulTestHelper.hpp
+        test/BatchSpaceTest.cpp
+        test/BatchSpaceTestHelper.hpp
+        test/CastTest.cpp
+        test/CastTestHelper.hpp
+        test/ComparisonTest.cpp
+        test/ComparisonTestHelper.hpp
+        test/ControlTest.cpp
+        test/ControlTestHelper.hpp
+        test/Convolution2dTest.cpp
+        test/Convolution3dTest.cpp
+        test/ConvolutionTestHelper.hpp
+        test/DelegateOptionsTest.cpp
+        test/DelegateOptionsTestHelper.hpp
+        test/DepthwiseConvolution2dTest.cpp
+        test/ElementwiseBinaryTest.cpp
+        test/ElementwiseBinaryTestHelper.hpp
+        test/ElementwiseUnaryTest.cpp
+        test/ElementwiseUnaryTestHelper.hpp
+        test/FillTest.cpp
+        test/FillTestHelper.hpp
+        test/FullyConnectedTest.cpp
+        test/FullyConnectedTestHelper.hpp
+        test/GatherTest.cpp
+        test/GatherTestHelper.hpp
+        test/GatherNdTest.cpp
+        test/GatherNdTestHelper.hpp
+        test/LogicalTest.cpp
+        test/LogicalTestHelper.hpp
+        test/LstmTest.cpp
+        test/LstmTestHelper.hpp
+        test/MirrorPadTest.cpp
+        test/NormalizationTest.cpp
+        test/NormalizationTestHelper.hpp
+        test/PackTest.cpp
+        test/PackTestHelper.hpp
+        test/PadTest.cpp
+        test/PadTestHelper.hpp
+        test/Pooling2dTest.cpp
+        test/Pooling2dTestHelper.hpp
+        test/Pooling3dTest.cpp
+        test/Pooling3dTestHelper.hpp
+        test/PreluTest.cpp
+        test/PreluTestHelper.hpp
+        test/QuantizationTest.cpp
+        test/QuantizationTestHelper.hpp
+        test/RedefineTestHelper.hpp
+        test/ReduceTest.cpp
+        test/ReduceTestHelper.hpp
+        test/ReshapeTest.cpp
+        test/ResizeTest.cpp
+        test/ResizeTestHelper.hpp
+        test/RoundTest.cpp
+        test/RoundTestHelper.hpp
+        test/SoftmaxTest.cpp
+        test/SoftmaxTestHelper.hpp
+        test/SpaceDepthTest.cpp
+        test/SpaceDepthTestHelper.hpp
+        test/ShapeTest.cpp
+        test/ShapeTestHelper.hpp
+        test/SliceTest.cpp
+        test/SliceTestHelper.hpp
+        test/StridedSliceTest.cpp
+        test/StridedSliceTestHelper.hpp
+        test/SplitTest.cpp
+        test/SplitTestHelper.hpp
+        test/TestUtils.hpp
+        test/TestUtils.cpp
+        test/TransposeTest.cpp
+        test/TransposeTestHelper.hpp
+        test/UnidirectionalSequenceLstmTest.cpp
+        test/UnidirectionalSequenceLstmTestHelper.hpp
+        test/UnpackTest.cpp
+        test/UnpackTestHelper.hpp)
 
         # There's a known Android NDK bug which causes a subset of NeonLayerTests to
         # fail. We'll exclude these tests in NeonLayerTests_NDK_Bug.cpp if we're doing
@@ -241,28 +228,26 @@
 
         if ( INCLUDE_NDK_BUG_TESTS STREQUAL "ON" )
            list(APPEND armnnDelegate_unittest_sources
-                src/test/NeonDelegateTests_NDK_Issue.cpp
+                test/NeonDelegateTests_NDK_Issue.cpp
                 )
         else()
 
         endif()
+    if (BUILD_CLASSIC_DELEGATE) # For Opaque Delegate Unit Tests add OR BUILD_ARMNN_TFLITE_OPAQUE_DELEGATE here
+        add_executable(DelegateUnitTests ${armnnDelegate_unittest_sources})
 
-    add_executable(DelegateUnitTests ${armnnDelegate_unittest_sources})
+        target_include_directories(DelegateUnitTests SYSTEM PRIVATE "${TF_LITE_SCHEMA_INCLUDE_PATH}")
 
-    # Add half library from armnn third-party libraries
-    target_link_libraries(DelegateUnitTests PRIVATE thirdparty_headers)
+        # Add half library from armnn third-party libraries
+        target_link_libraries(DelegateUnitTests PRIVATE thirdparty_headers)
 
-    target_link_libraries(DelegateUnitTests PRIVATE armnnDelegate)
-    target_link_libraries(DelegateUnitTests PRIVATE Armnn::armnnUtils)
+        target_link_libraries(DelegateUnitTests PRIVATE armnnDelegate)
+        target_link_libraries(DelegateUnitTests PRIVATE Armnn::armnnUtils)
 
-    target_link_libraries(DelegateUnitTests PRIVATE tflite_headers)
-    target_link_libraries(DelegateUnitTests PRIVATE flatbuffer_headers)
-    target_link_libraries(DelegateUnitTests PRIVATE profiling_library_headers)
-
+        target_link_libraries(DelegateUnitTests PRIVATE profiling_library_headers)
+    endif()
 endif()
 
-option(BUILD_DELEGATE_JNI_INTERFACE "Builds a library to allow accessing the Arm NN delegate from Java code.
-                                     This is an experimental feature." Off)
 if(BUILD_DELEGATE_JNI_INTERFACE)
     add_subdirectory(armnnDelegateJNI)
 endif()
@@ -271,6 +256,7 @@
 ## Export targets
 set(armnn_delegate_export_targets)
 list(APPEND armnn_delegate_export_targets
+            armnnClassicDelegateObject
             armnnDelegate
             tflite_headers
             flatbuffer_headers
diff --git a/delegate/armnnDelegateJNI/CMakeLists.txt b/delegate/armnnDelegateJNI/CMakeLists.txt
index 06eb3bf..f16238c 100644
--- a/delegate/armnnDelegateJNI/CMakeLists.txt
+++ b/delegate/armnnDelegateJNI/CMakeLists.txt
@@ -1,5 +1,5 @@
 #
-# Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+# Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 # SPDX-License-Identifier: MIT
 #
 
@@ -33,19 +33,10 @@
 
 add_library(armnn_delegate_jni SHARED ${jni_delegate_sources})
 
-target_include_directories(
-        armnn_delegate_jni
-        PUBLIC
-        ${ARMNN_INCLUDE_DIR}
-        ${ARMNN_DELEGATE_INCLUDE_DIR}
-        ${ARMCOMPUTE_INCLUDE}
-        )
-
-target_link_libraries(
-        armnn_delegate_jni
+target_link_libraries(armnn_delegate_jni
         PRIVATE
-        Armnn::Armnn
-        ArmnnDelegate::ArmnnDelegate
+            Armnn::Armnn
+            ArmnnDelegate::ArmnnDelegate
         )
 
 # A version script is used to hide all symbols that are not required to use the jni interface
diff --git a/delegate/classic/CMakeLists.txt b/delegate/classic/CMakeLists.txt
new file mode 100644
index 0000000..0416713
--- /dev/null
+++ b/delegate/classic/CMakeLists.txt
@@ -0,0 +1,101 @@
+#
+# Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+set(armnnClassicDelegateObject_sources)
+list(APPEND armnnClassicDelegateObject_sources
+        include/armnn_delegate.hpp
+        include/Version.hpp
+        src/armnn_delegate.cpp
+        src/armnn_external_delegate.cpp
+        src/Activation.hpp
+        src/ArgMinMax.hpp
+        src/BatchMatMul.hpp
+        src/BatchSpace.hpp
+        src/Comparison.hpp
+        src/Convolution.hpp
+        src/Control.hpp
+        src/ElementwiseBinary.hpp
+        src/ElementwiseUnary.hpp
+        src/Fill.hpp
+        src/FullyConnected.hpp
+        src/Gather.hpp
+        src/GatherNd.hpp
+        src/LogicalBinary.hpp
+        src/Lstm.hpp
+        src/MultiLayerFacade.hpp
+        src/Normalization.hpp
+        src/Pack.hpp
+        src/Pad.hpp
+        src/Pooling.hpp
+        src/Prelu.hpp
+        src/Quantization.hpp
+        src/Redefine.hpp
+        src/Reduce.hpp
+        src/Resize.hpp
+        src/Round.hpp
+        src/Shape.hpp
+        src/SharedFunctions.hpp
+        src/SharedFunctions.cpp
+        src/Slice.hpp
+        src/Softmax.hpp
+        src/SpaceDepth.hpp
+        src/Split.hpp
+        src/Unpack.hpp
+        src/Transpose.hpp)
+
+add_library(armnnClassicDelegateObject OBJECT ${armnnClassicDelegateObject_sources})
+
+target_include_directories(armnnClassicDelegateObject
+        PUBLIC
+            $<INSTALL_INTERFACE:include>
+            $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+            $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/common/include>
+        PRIVATE
+            ${CMAKE_CURRENT_SOURCE_DIR}/src
+            ${PROJECT_SOURCE_DIR}/common/src)
+
+## Add Tflite dependency
+if(NOT TfLite_INCLUDE_DIR OR NOT TfLite_Schema_INCLUDE_PATH)
+    find_package(TfLiteSrc REQUIRED MODULE)
+endif()
+
+# Various tflite header files are not warning clean
+# We can't change compilation flags on header files directly, so we need to add them to an interface library first
+add_library(tflite_headers INTERFACE)
+target_include_directories(tflite_headers
+        INTERFACE
+            $<BUILD_INTERFACE:${TfLite_INCLUDE_DIR}>
+            $<INSTALL_INTERFACE:include/tflite_headers>)
+
+target_compile_options(tflite_headers
+        INTERFACE
+            -Wno-conversion
+            -Wno-sign-conversion
+            -Wno-unused-parameter
+            -Wno-unused-function)
+
+target_link_libraries(armnnClassicDelegateObject PUBLIC tflite_headers)
+
+## Add Flatbuffers dependency
+find_package(Flatbuffers REQUIRED MODULE)
+
+target_link_libraries(armnnClassicDelegateObject PRIVATE ${Flatbuffers_LIB})
+
+# include/flatbuffers/flatbuffers.h is not warning clean
+# We can't change compilation flags on header files directly, so we need to add them to an interface library first
+add_library(flatbuffer_headers INTERFACE)
+target_include_directories(flatbuffer_headers
+        INTERFACE
+            $<BUILD_INTERFACE:${Flatbuffers_INCLUDE_DIR}>
+            $<INSTALL_INTERFACE:include/flatbuffer_headers>)
+target_compile_options(flatbuffer_headers INTERFACE -Wno-sign-conversion)
+
+target_link_libraries(armnnClassicDelegateObject PUBLIC flatbuffer_headers)
+
+####################################################
+## Export targets
+install(TARGETS armnnClassicDelegateObject
+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
\ No newline at end of file
diff --git a/delegate/classic/include/Version.hpp b/delegate/classic/include/Version.hpp
new file mode 100644
index 0000000..c171d77
--- /dev/null
+++ b/delegate/classic/include/Version.hpp
@@ -0,0 +1,29 @@
+//
+// Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+namespace armnnDelegate
+{
+
+/// Macro utils
+#define STRINGIFY_VALUE(s) STRINGIFY_MACRO(s)
+#define STRINGIFY_MACRO(s) #s
+
+// ArmNN Delegate version components
+#define DELEGATE_MAJOR_VERSION 28
+#define DELEGATE_MINOR_VERSION 0
+#define DELEGATE_PATCH_VERSION 0
+
+/// DELEGATE_VERSION: "X.Y.Z"
+/// where:
+///   X = Major version number
+///   Y = Minor version number
+///   Z = Patch version number
+#define DELEGATE_VERSION STRINGIFY_VALUE(DELEGATE_MAJOR_VERSION) "." \
+                         STRINGIFY_VALUE(DELEGATE_MINOR_VERSION) "." \
+                         STRINGIFY_VALUE(DELEGATE_PATCH_VERSION)
+
+} //namespace armnnDelegate
\ No newline at end of file
diff --git a/delegate/classic/include/armnn_delegate.hpp b/delegate/classic/include/armnn_delegate.hpp
new file mode 100644
index 0000000..8957dc8
--- /dev/null
+++ b/delegate/classic/include/armnn_delegate.hpp
@@ -0,0 +1,141 @@
+//
+// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <DelegateOptions.hpp>
+
+#include <tensorflow/lite/builtin_ops.h>
+#include <tensorflow/lite/c/builtin_op_data.h>
+#include <tensorflow/lite/c/common.h>
+#include <tensorflow/lite/minimal_logging.h>
+#include <tensorflow/lite/version.h>
+
+#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 3)
+#define ARMNN_POST_TFLITE_2_3
+#endif
+
+#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 4)
+#define ARMNN_POST_TFLITE_2_4
+#endif
+
+#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 5)
+#define ARMNN_POST_TFLITE_2_5
+#endif
+
+namespace armnnDelegate
+{
+
+struct DelegateData
+{
+    DelegateData(const std::vector<armnn::BackendId>& backends)
+            : m_Backends(backends)
+            , m_Network(nullptr, nullptr)
+    {}
+
+    const std::vector<armnn::BackendId>       m_Backends;
+    armnn::INetworkPtr                        m_Network;
+    std::vector<armnn::IOutputSlot*>          m_OutputSlotForNode;
+};
+
+// Forward decleration for functions initializing the ArmNN Delegate
+DelegateOptions TfLiteArmnnDelegateOptionsDefault();
+
+TfLiteDelegate* TfLiteArmnnDelegateCreate(armnnDelegate::DelegateOptions options);
+
+void TfLiteArmnnDelegateDelete(TfLiteDelegate* tfLiteDelegate);
+
+TfLiteStatus DoPrepare(TfLiteContext* context, TfLiteDelegate* delegate);
+
+/// ArmNN Delegate
+class Delegate
+{
+    friend class ArmnnSubgraph;
+public:
+    explicit Delegate(armnnDelegate::DelegateOptions options);
+
+    TfLiteIntArray* IdentifyOperatorsToDelegate(TfLiteContext* context);
+
+    TfLiteDelegate* GetDelegate();
+
+    /// Retrieve version in X.Y.Z form
+    static const std::string GetVersion();
+
+private:
+    /**
+     * Returns a pointer to the armnn::IRuntime* this will be shared by all armnn_delegates.
+     */
+    armnn::IRuntime* GetRuntime(const armnn::IRuntime::CreationOptions& options)
+    {
+        static armnn::IRuntimePtr instance = armnn::IRuntime::Create(options);
+        // Instantiated on first use.
+        return instance.get();
+    }
+
+    TfLiteDelegate m_Delegate = {
+            reinterpret_cast<void*>(this),  // .data_
+            DoPrepare,                      // .Prepare
+            nullptr,                        // .CopyFromBufferHandle
+            nullptr,                        // .CopyToBufferHandle
+            nullptr,                        // .FreeBufferHandle
+            kTfLiteDelegateFlagsNone,       // .flags
+            nullptr,                        // .opaque_delegate_builder
+    };
+
+    /// ArmNN Runtime pointer
+    armnn::IRuntime* m_Runtime;
+    /// ArmNN Delegate Options
+    armnnDelegate::DelegateOptions m_Options;
+};
+
+/// ArmnnSubgraph class where parsing the nodes to ArmNN format and creating the ArmNN Graph
+class ArmnnSubgraph
+{
+public:
+    static ArmnnSubgraph* Create(TfLiteContext* tfLiteContext,
+                                 const TfLiteDelegateParams* parameters,
+                                 const Delegate* delegate);
+
+    TfLiteStatus Prepare(TfLiteContext* tfLiteContext);
+
+    TfLiteStatus Invoke(TfLiteContext* tfLiteContext, TfLiteNode* tfLiteNode);
+
+    static TfLiteStatus VisitNode(DelegateData& delegateData,
+                                  TfLiteContext* tfLiteContext,
+                                  TfLiteRegistration* tfLiteRegistration,
+                                  TfLiteNode* tfLiteNode,
+                                  int nodeIndex);
+
+private:
+    ArmnnSubgraph(armnn::NetworkId networkId,
+                  armnn::IRuntime* runtime,
+                  std::vector<armnn::BindingPointInfo>& inputBindings,
+                  std::vector<armnn::BindingPointInfo>& outputBindings)
+        : m_NetworkId(networkId), m_Runtime(runtime), m_InputBindings(inputBindings), m_OutputBindings(outputBindings)
+    {}
+
+    static TfLiteStatus AddInputLayer(DelegateData& delegateData,
+                                      TfLiteContext* tfLiteContext,
+                                      const TfLiteIntArray* inputs,
+                                      std::vector<armnn::BindingPointInfo>& inputBindings);
+
+    static TfLiteStatus AddOutputLayer(DelegateData& delegateData,
+                                       TfLiteContext* tfLiteContext,
+                                       const TfLiteIntArray* outputs,
+                                       std::vector<armnn::BindingPointInfo>& outputBindings);
+
+
+    /// The Network Id
+    armnn::NetworkId m_NetworkId;
+    /// ArmNN Rumtime
+    armnn::IRuntime* m_Runtime;
+
+    // Binding information for inputs and outputs
+    std::vector<armnn::BindingPointInfo> m_InputBindings;
+    std::vector<armnn::BindingPointInfo> m_OutputBindings;
+
+};
+
+} // armnnDelegate namespace
\ No newline at end of file
diff --git a/delegate/src/Activation.hpp b/delegate/classic/src/Activation.hpp
similarity index 99%
rename from delegate/src/Activation.hpp
rename to delegate/classic/src/Activation.hpp
index 59066d2..b86d89b 100644
--- a/delegate/src/Activation.hpp
+++ b/delegate/classic/src/Activation.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <tensorflow/lite/builtin_ops.h>
 #include <tensorflow/lite/c/builtin_op_data.h>
diff --git a/delegate/src/ArgMinMax.hpp b/delegate/classic/src/ArgMinMax.hpp
similarity index 100%
rename from delegate/src/ArgMinMax.hpp
rename to delegate/classic/src/ArgMinMax.hpp
diff --git a/delegate/src/BatchMatMul.hpp b/delegate/classic/src/BatchMatMul.hpp
similarity index 99%
rename from delegate/src/BatchMatMul.hpp
rename to delegate/classic/src/BatchMatMul.hpp
index 49fba05..f56f728 100644
--- a/delegate/src/BatchMatMul.hpp
+++ b/delegate/classic/src/BatchMatMul.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 #include <algorithm>
 #include <iterator>
 #include <string>
diff --git a/delegate/src/BatchSpace.hpp b/delegate/classic/src/BatchSpace.hpp
similarity index 100%
rename from delegate/src/BatchSpace.hpp
rename to delegate/classic/src/BatchSpace.hpp
diff --git a/delegate/src/Comparison.hpp b/delegate/classic/src/Comparison.hpp
similarity index 99%
rename from delegate/src/Comparison.hpp
rename to delegate/classic/src/Comparison.hpp
index 688f90c..6d7700d 100644
--- a/delegate/src/Comparison.hpp
+++ b/delegate/classic/src/Comparison.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 #include <armnn/utility/IgnoreUnused.hpp>
 
 #include <tensorflow/lite/builtin_ops.h>
diff --git a/delegate/src/Control.hpp b/delegate/classic/src/Control.hpp
similarity index 100%
rename from delegate/src/Control.hpp
rename to delegate/classic/src/Control.hpp
diff --git a/delegate/src/Convolution.hpp b/delegate/classic/src/Convolution.hpp
similarity index 99%
rename from delegate/src/Convolution.hpp
rename to delegate/classic/src/Convolution.hpp
index 31cb2ab..f6a5061 100644
--- a/delegate/src/Convolution.hpp
+++ b/delegate/classic/src/Convolution.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 #include "SharedFunctions.hpp"
 
 #include <tensorflow/lite/builtin_ops.h>
diff --git a/delegate/src/ElementwiseBinary.hpp b/delegate/classic/src/ElementwiseBinary.hpp
similarity index 99%
rename from delegate/src/ElementwiseBinary.hpp
rename to delegate/classic/src/ElementwiseBinary.hpp
index fa9021b..e11327b 100644
--- a/delegate/src/ElementwiseBinary.hpp
+++ b/delegate/classic/src/ElementwiseBinary.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 #include "MultiLayerFacade.hpp"
 #include "SharedFunctions.hpp"
 
diff --git a/delegate/src/ElementwiseUnary.hpp b/delegate/classic/src/ElementwiseUnary.hpp
similarity index 98%
rename from delegate/src/ElementwiseUnary.hpp
rename to delegate/classic/src/ElementwiseUnary.hpp
index 4be6fba..562ce1f 100644
--- a/delegate/src/ElementwiseUnary.hpp
+++ b/delegate/classic/src/ElementwiseUnary.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <armnn/utility/Assert.hpp>
 
diff --git a/delegate/src/Fill.hpp b/delegate/classic/src/Fill.hpp
similarity index 97%
rename from delegate/src/Fill.hpp
rename to delegate/classic/src/Fill.hpp
index e79133e..15dc91e 100644
--- a/delegate/src/Fill.hpp
+++ b/delegate/classic/src/Fill.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/FullyConnected.hpp b/delegate/classic/src/FullyConnected.hpp
similarity index 99%
rename from delegate/src/FullyConnected.hpp
rename to delegate/classic/src/FullyConnected.hpp
index 1129951..28d43d0 100644
--- a/delegate/src/FullyConnected.hpp
+++ b/delegate/classic/src/FullyConnected.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 #include "armnnUtils/TensorUtils.hpp"
 #include <armnn/utility/IgnoreUnused.hpp>
 
diff --git a/delegate/src/Gather.hpp b/delegate/classic/src/Gather.hpp
similarity index 98%
rename from delegate/src/Gather.hpp
rename to delegate/classic/src/Gather.hpp
index 9125997..4c9cf82 100644
--- a/delegate/src/Gather.hpp
+++ b/delegate/classic/src/Gather.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 #include <algorithm>
 #include <iterator>
 #include <string>
diff --git a/delegate/src/GatherNd.hpp b/delegate/classic/src/GatherNd.hpp
similarity index 98%
rename from delegate/src/GatherNd.hpp
rename to delegate/classic/src/GatherNd.hpp
index cf526e1..12f0af3 100644
--- a/delegate/src/GatherNd.hpp
+++ b/delegate/classic/src/GatherNd.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 #include <algorithm>
 #include <iterator>
 #include <string>
diff --git a/delegate/src/LogicalBinary.hpp b/delegate/classic/src/LogicalBinary.hpp
similarity index 100%
rename from delegate/src/LogicalBinary.hpp
rename to delegate/classic/src/LogicalBinary.hpp
diff --git a/delegate/src/Lstm.hpp b/delegate/classic/src/Lstm.hpp
similarity index 98%
rename from delegate/src/Lstm.hpp
rename to delegate/classic/src/Lstm.hpp
index 8c1f877..460c61a 100644
--- a/delegate/src/Lstm.hpp
+++ b/delegate/classic/src/Lstm.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <armnn/LstmParams.hpp>
 #include <armnn/Tensor.hpp>
diff --git a/delegate/src/MultiLayerFacade.hpp b/delegate/classic/src/MultiLayerFacade.hpp
similarity index 97%
rename from delegate/src/MultiLayerFacade.hpp
rename to delegate/classic/src/MultiLayerFacade.hpp
index 31a7354..90d0b31 100644
--- a/delegate/src/MultiLayerFacade.hpp
+++ b/delegate/classic/src/MultiLayerFacade.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021,2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021,2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/Normalization.hpp b/delegate/classic/src/Normalization.hpp
similarity index 100%
rename from delegate/src/Normalization.hpp
rename to delegate/classic/src/Normalization.hpp
diff --git a/delegate/src/Pack.hpp b/delegate/classic/src/Pack.hpp
similarity index 97%
rename from delegate/src/Pack.hpp
rename to delegate/classic/src/Pack.hpp
index 57d3b46..99c8b80 100644
--- a/delegate/src/Pack.hpp
+++ b/delegate/classic/src/Pack.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021,2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021,2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/Pad.hpp b/delegate/classic/src/Pad.hpp
similarity index 98%
rename from delegate/src/Pad.hpp
rename to delegate/classic/src/Pad.hpp
index 2ecf2a0..440a3d0 100644
--- a/delegate/src/Pad.hpp
+++ b/delegate/classic/src/Pad.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/Pooling.hpp b/delegate/classic/src/Pooling.hpp
similarity index 99%
rename from delegate/src/Pooling.hpp
rename to delegate/classic/src/Pooling.hpp
index 1178b6d..2de4061 100644
--- a/delegate/src/Pooling.hpp
+++ b/delegate/classic/src/Pooling.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <tensorflow/lite/builtin_ops.h>
 #include <tensorflow/lite/c/builtin_op_data.h>
diff --git a/delegate/src/Prelu.hpp b/delegate/classic/src/Prelu.hpp
similarity index 97%
rename from delegate/src/Prelu.hpp
rename to delegate/classic/src/Prelu.hpp
index 06e74ed..71a04a7 100644
--- a/delegate/src/Prelu.hpp
+++ b/delegate/classic/src/Prelu.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <tensorflow/lite/builtin_ops.h>
 #include <tensorflow/lite/c/builtin_op_data.h>
diff --git a/delegate/src/Quantization.hpp b/delegate/classic/src/Quantization.hpp
similarity index 100%
rename from delegate/src/Quantization.hpp
rename to delegate/classic/src/Quantization.hpp
diff --git a/delegate/src/Redefine.hpp b/delegate/classic/src/Redefine.hpp
similarity index 99%
rename from delegate/src/Redefine.hpp
rename to delegate/classic/src/Redefine.hpp
index 864fb7a..83c42d0 100644
--- a/delegate/src/Redefine.hpp
+++ b/delegate/classic/src/Redefine.hpp
@@ -7,7 +7,7 @@
 
 #include <armnn/utility/IgnoreUnused.hpp>
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <tensorflow/lite/builtin_ops.h>
 #include <tensorflow/lite/c/builtin_op_data.h>
diff --git a/delegate/src/Reduce.hpp b/delegate/classic/src/Reduce.hpp
similarity index 100%
rename from delegate/src/Reduce.hpp
rename to delegate/classic/src/Reduce.hpp
diff --git a/delegate/src/Resize.hpp b/delegate/classic/src/Resize.hpp
similarity index 99%
rename from delegate/src/Resize.hpp
rename to delegate/classic/src/Resize.hpp
index 370f1ab..33c6c6e 100644
--- a/delegate/src/Resize.hpp
+++ b/delegate/classic/src/Resize.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 #include <armnn/utility/IgnoreUnused.hpp>
 
 #include <armnn/Descriptors.hpp>
diff --git a/delegate/src/Round.hpp b/delegate/classic/src/Round.hpp
similarity index 100%
rename from delegate/src/Round.hpp
rename to delegate/classic/src/Round.hpp
diff --git a/delegate/src/Shape.hpp b/delegate/classic/src/Shape.hpp
similarity index 98%
rename from delegate/src/Shape.hpp
rename to delegate/classic/src/Shape.hpp
index d797563..381a874 100644
--- a/delegate/src/Shape.hpp
+++ b/delegate/classic/src/Shape.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <tensorflow/lite/builtin_ops.h>
 #include <tensorflow/lite/c/builtin_op_data.h>
diff --git a/delegate/src/SharedFunctions.cpp b/delegate/classic/src/SharedFunctions.cpp
similarity index 94%
rename from delegate/src/SharedFunctions.cpp
rename to delegate/classic/src/SharedFunctions.cpp
index fef9701..8de7d9c 100644
--- a/delegate/src/SharedFunctions.cpp
+++ b/delegate/classic/src/SharedFunctions.cpp
@@ -6,12 +6,12 @@
 
 #include "SharedFunctions.hpp"
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
-#include <tensorflow/lite/builtin_ops.h>
-#include <tensorflow/lite/c/builtin_op_data.h>
-#include <tensorflow/lite/c/common.h>
-#include <tensorflow/lite/minimal_logging.h>
+#include "tensorflow/lite/builtin_ops.h"
+#include "tensorflow/lite/c/builtin_op_data.h"
+#include "tensorflow/lite/c/common.h"
+#include "tensorflow/lite/minimal_logging.h"
 
 namespace armnnDelegate
 {
diff --git a/delegate/src/SharedFunctions.hpp b/delegate/classic/src/SharedFunctions.hpp
similarity index 100%
rename from delegate/src/SharedFunctions.hpp
rename to delegate/classic/src/SharedFunctions.hpp
diff --git a/delegate/src/Slice.hpp b/delegate/classic/src/Slice.hpp
similarity index 100%
rename from delegate/src/Slice.hpp
rename to delegate/classic/src/Slice.hpp
diff --git a/delegate/src/Softmax.hpp b/delegate/classic/src/Softmax.hpp
similarity index 99%
rename from delegate/src/Softmax.hpp
rename to delegate/classic/src/Softmax.hpp
index 31c6ac3..4fbd508 100644
--- a/delegate/src/Softmax.hpp
+++ b/delegate/classic/src/Softmax.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <tensorflow/lite/builtin_ops.h>
 #include <tensorflow/lite/c/builtin_op_data.h>
diff --git a/delegate/src/SpaceDepth.hpp b/delegate/classic/src/SpaceDepth.hpp
similarity index 100%
rename from delegate/src/SpaceDepth.hpp
rename to delegate/classic/src/SpaceDepth.hpp
diff --git a/delegate/src/Split.hpp b/delegate/classic/src/Split.hpp
similarity index 99%
rename from delegate/src/Split.hpp
rename to delegate/classic/src/Split.hpp
index b183b55..fc193ba 100644
--- a/delegate/src/Split.hpp
+++ b/delegate/classic/src/Split.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <algorithm>
 #include <iterator>
diff --git a/delegate/src/StridedSlice.hpp b/delegate/classic/src/StridedSlice.hpp
similarity index 100%
rename from delegate/src/StridedSlice.hpp
rename to delegate/classic/src/StridedSlice.hpp
diff --git a/delegate/src/Transpose.hpp b/delegate/classic/src/Transpose.hpp
similarity index 100%
rename from delegate/src/Transpose.hpp
rename to delegate/classic/src/Transpose.hpp
diff --git a/delegate/src/UnidirectionalSequenceLstm.hpp b/delegate/classic/src/UnidirectionalSequenceLstm.hpp
similarity index 98%
rename from delegate/src/UnidirectionalSequenceLstm.hpp
rename to delegate/classic/src/UnidirectionalSequenceLstm.hpp
index 9408397..f8689d2 100644
--- a/delegate/src/UnidirectionalSequenceLstm.hpp
+++ b/delegate/classic/src/UnidirectionalSequenceLstm.hpp
@@ -1,11 +1,11 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
 #pragma once
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <armnn/LstmParams.hpp>
 #include <armnn/Tensor.hpp>
diff --git a/delegate/src/Unpack.hpp b/delegate/classic/src/Unpack.hpp
similarity index 98%
rename from delegate/src/Unpack.hpp
rename to delegate/classic/src/Unpack.hpp
index ad541ad..c9b7370 100644
--- a/delegate/src/Unpack.hpp
+++ b/delegate/classic/src/Unpack.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -7,7 +7,7 @@
 
 #include <armnn/utility/IgnoreUnused.hpp>
 
-#include "DelegateUtils.hpp"
+#include <DelegateUtils.hpp>
 
 #include <tensorflow/lite/builtin_ops.h>
 #include <tensorflow/lite/c/builtin_op_data.h>
diff --git a/delegate/src/armnn_delegate.cpp b/delegate/classic/src/armnn_delegate.cpp
similarity index 100%
rename from delegate/src/armnn_delegate.cpp
rename to delegate/classic/src/armnn_delegate.cpp
diff --git a/delegate/src/armnn_external_delegate.cpp b/delegate/classic/src/armnn_external_delegate.cpp
similarity index 96%
rename from delegate/src/armnn_external_delegate.cpp
rename to delegate/classic/src/armnn_external_delegate.cpp
index c387574..444015d 100644
--- a/delegate/src/armnn_external_delegate.cpp
+++ b/delegate/classic/src/armnn_external_delegate.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 #include "armnn_delegate.hpp"
diff --git a/delegate/common/include/DelegateOptions.hpp b/delegate/common/include/DelegateOptions.hpp
new file mode 100644
index 0000000..3737940
--- /dev/null
+++ b/delegate/common/include/DelegateOptions.hpp
@@ -0,0 +1,304 @@
+//
+// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <armnn/ArmNN.hpp>
+#include <armnn/Optional.hpp>
+
+#include <string>
+#include <vector>
+
+namespace armnnDelegate
+{
+
+class DelegateOptions
+{
+public:
+    DelegateOptions(armnn::Compute computeDevice,
+                    const std::vector<armnn::BackendOptions>& backendOptions = {},
+                    armnn::Optional<armnn::LogSeverity> logSeverityLevel = armnn::EmptyOptional());
+
+    DelegateOptions(const std::vector<armnn::BackendId>& backends,
+                    const std::vector<armnn::BackendOptions>& backendOptions = {},
+                    armnn::Optional<armnn::LogSeverity> logSeverityLevel = armnn::EmptyOptional());
+
+    DelegateOptions(armnn::Compute computeDevice,
+                    const armnn::OptimizerOptions& optimizerOptions,
+                    const armnn::Optional<armnn::LogSeverity>& logSeverityLevel = armnn::EmptyOptional(),
+                    const armnn::Optional<armnn::DebugCallbackFunction>& func = armnn::EmptyOptional());
+
+    DelegateOptions(const std::vector<armnn::BackendId>& backends,
+                    const armnn::OptimizerOptions& optimizerOptions,
+                    const armnn::Optional<armnn::LogSeverity>& logSeverityLevel = armnn::EmptyOptional(),
+                    const armnn::Optional<armnn::DebugCallbackFunction>& func = armnn::EmptyOptional());
+
+
+    /**
+     * This constructor processes delegate options in form of command line arguments.
+     * It works in conjunction with the TfLite external delegate plugin.
+     *
+     * Available options:
+     *
+     *    Option key: "backends" \n
+     *    Possible values: ["EthosNPU"/"GpuAcc"/"CpuAcc"/"CpuRef"] \n
+     *    Descriptions: A comma separated list without whitespaces of
+     *                  backends which should be used for execution. Falls
+     *                  back to next backend in list if previous doesn't
+     *                  provide support for operation. e.g. "GpuAcc,CpuAcc"
+     *
+     *    Option key: "dynamic-backends-path" \n
+     *    Possible values: [filenameString] \n
+     *    Descriptions: This is the directory that will be searched for any dynamic backends.
+     *
+     *    Option key: "logging-severity" \n
+     *    Possible values: ["trace"/"debug"/"info"/"warning"/"error"/"fatal"] \n
+     *    Description: Sets the logging severity level for ArmNN. Logging
+     *                 is turned off if this option is not provided.
+     *
+     *    Option key: "gpu-tuning-level" \n
+     *    Possible values: ["0"/"1"/"2"/"3"] \n
+     *    Description: 0=UseOnly(default), 1=RapidTuning, 2=NormalTuning,
+     *                 3=ExhaustiveTuning. Requires option gpu-tuning-file.
+     *                 1,2 and 3 will create a tuning-file, 0 will apply the
+     *                 tunings from an existing file
+     *
+     *    Option key: "gpu-mlgo-tuning-file" \n
+     *    Possible values: [filenameString] \n
+     *    Description: File name for the MLGO tuning file
+     *
+     *    Option key: "gpu-tuning-file" \n
+     *    Possible values: [filenameString] \n
+     *    Description: File name for the tuning file.
+     *
+     *    Option key: "gpu-enable-profiling" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Enables GPU profiling
+     *
+     *    Option key: "gpu-kernel-profiling-enabled" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Enables GPU kernel profiling
+     *
+     *    Option key: "save-cached-network" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Enables saving of the cached network to a file,
+     *                 specified with the cached-network-filepath option
+     *
+     *    Option key: "cached-network-filepath" \n
+     *    Possible values: [filenameString] \n
+     *    Description: If non-empty, the given file will be used to load/save the cached network.
+     *                 If save-cached-network is given then the cached network will be saved to the given file.
+     *                 To save the cached network a file must already exist.
+     *                 If save-cached-network is not given then the cached network will be loaded from the given file.
+     *                 This will remove initial compilation time of kernels and speed up the first execution.
+     *
+     *    Option key: "enable-fast-math" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Enables fast_math options in backends that support it
+     *
+     *    Option key: "number-of-threads" \n
+     *    Possible values: ["1"-"64"] \n
+     *    Description: Assign the number of threads used by the CpuAcc backend.
+     *                 Default is set to 0 (Backend will decide number of threads to use).
+     *
+     *    Option key: "reduce-fp32-to-fp16" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Reduce Fp32 data to Fp16 for faster processing
+     *
+     *    Option key: "reduce-fp32-to-bf16" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: This option is currently ignored. Please enable Fast Math in the CpuAcc or GpuAcc backends.
+     *
+     *    Option key: "debug-data" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Add debug data for easier troubleshooting
+     *
+     *    Option key: "memory-import" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Enable memory import
+     *
+     *    Option key: "enable-internal-profiling" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Enable the internal profiling feature.
+     *
+     *    Option key: "internal-profiling-detail" \n
+     *    Possible values: [1/2] \n
+     *    Description: Set the detail on the internal profiling. 1 = DetailsWithEvents, 2 = DetailsOnly.
+     *
+     *    Option key: "enable-external-profiling" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Enable the external profiling feature.
+     *
+     *    Option key: "timeline-profiling" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Indicates whether external timeline profiling is enabled or not.
+     *
+     *    Option key: "outgoing-capture-file" \n
+     *    Possible values: [filenameString] \n
+     *    Description: Path to a file in which outgoing timeline profiling messages will be stored.
+     *
+     *    Option key: "incoming-capture-file" \n
+     *    Possible values: [filenameString] \n
+     *    Description: Path to a file in which incoming timeline profiling messages will be stored.
+     *
+     *    Option key: "file-only-external-profiling" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Enable profiling output to file only.
+     *
+     *    Option key: "counter-capture-period" \n
+     *    Possible values: Integer, Default is 10000u
+     *    Description: Value in microseconds of the profiling capture period. \n
+     *
+     *    Option key: "profiling-file-format" \n
+     *    Possible values: String of ["binary"] \n
+     *    Description: The format of the file used for outputting profiling data. Currently on "binary" is supported.
+     *
+     *    Option key: "serialize-to-dot" \n
+     *    Possible values: [filenameString] \n
+     *    Description: Serialize the optimized network to the file specified in "dot" format.
+     *
+     *    Option key: "infer-output-shape" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Infers output tensor shape from input tensor shape and validate where applicable.
+     *
+     *    Option key: "allow-expanded-dims" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: If true will disregard dimensions with a size of 1 when validating tensor shapes but tensor
+     *                 sizes must still match. \n
+     *                 This is an Experimental parameter that is incompatible with "infer-output-shape". \n
+     *                 This parameter may be removed in a later update.
+     *
+     *    Option key: "disable-tflite-runtime-fallback" \n
+     *    Possible values: ["true"/"false"] \n
+     *    Description: Disable TfLite Runtime fallback in the Arm NN TfLite delegate.
+     *                 An exception will be thrown if unsupported operators are encountered.
+     *                 This option is only for testing purposes.
+     *
+     * @param[in]     option_keys     Delegate option names
+     * @param[in]     options_values  Delegate option values
+     * @param[in]     num_options     Number of delegate options
+     * @param[in,out] report_error    Error callback function
+     *
+     */
+    DelegateOptions(char const* const* options_keys,
+                    char const* const* options_values,
+                    size_t num_options,
+                    void (*report_error)(const char*));
+
+    const std::vector<armnn::BackendId>& GetBackends() const { return m_Backends; }
+
+    void SetBackends(const std::vector<armnn::BackendId>& backends) { m_Backends = backends; }
+
+    void SetDynamicBackendsPath(const std::string& dynamicBackendsPath)
+    {
+        m_RuntimeOptions.m_DynamicBackendsPath = dynamicBackendsPath;
+    }
+    const std::string& GetDynamicBackendsPath() const
+    {
+        return m_RuntimeOptions.m_DynamicBackendsPath;
+    }
+
+    void SetGpuProfilingState(bool gpuProfilingState)
+    {
+        m_RuntimeOptions.m_EnableGpuProfiling = gpuProfilingState;
+    }
+    bool GetGpuProfilingState()
+    {
+        return m_RuntimeOptions.m_EnableGpuProfiling;
+    }
+
+    const std::vector<armnn::BackendOptions>& GetBackendOptions() const
+    {
+        return m_RuntimeOptions.m_BackendOptions;
+    }
+
+    /// Appends a backend option to the list of backend options
+    void AddBackendOption(const armnn::BackendOptions& option)
+    {
+        m_RuntimeOptions.m_BackendOptions.push_back(option);
+    }
+
+    /// Sets the severity level for logging within ArmNN that will be used on creation of the delegate
+    void SetLoggingSeverity(const armnn::LogSeverity& level) { m_LoggingSeverity = level; }
+    void SetLoggingSeverity(const std::string& level) { m_LoggingSeverity = armnn::StringToLogLevel(level); }
+
+    /// Returns the severity level for logging within ArmNN
+    armnn::LogSeverity GetLoggingSeverity() { return m_LoggingSeverity.value(); }
+
+    bool IsLoggingEnabled() { return m_LoggingSeverity.has_value(); }
+
+    const armnn::OptimizerOptions& GetOptimizerOptions() const { return m_OptimizerOptions; }
+
+    void SetOptimizerOptions(const armnn::OptimizerOptions& optimizerOptions) { m_OptimizerOptions = optimizerOptions; }
+
+    const armnn::Optional<armnn::DebugCallbackFunction>& GetDebugCallbackFunction() const
+    { return m_DebugCallbackFunc; }
+
+    void SetInternalProfilingParams(bool internalProfilingState,
+                                    const armnn::ProfilingDetailsMethod& internalProfilingDetail)
+    { m_InternalProfilingEnabled = internalProfilingState; m_InternalProfilingDetail = internalProfilingDetail; }
+
+    bool GetInternalProfilingState() const { return m_InternalProfilingEnabled; }
+    const armnn::ProfilingDetailsMethod& GetInternalProfilingDetail() const { return m_InternalProfilingDetail; }
+
+    void SetSerializeToDot(const std::string& serializeToDotFile) { m_SerializeToDot = serializeToDotFile; }
+    const std::string& GetSerializeToDot() const { return m_SerializeToDot; }
+
+    /// @Note: This might overwrite options that were set with other setter functions of DelegateOptions
+    void SetRuntimeOptions(const armnn::IRuntime::CreationOptions& runtimeOptions)
+    {
+        m_RuntimeOptions = runtimeOptions;
+    }
+
+    const armnn::IRuntime::CreationOptions& GetRuntimeOptions()
+    {
+        return m_RuntimeOptions;
+    }
+
+    void DisableTfLiteRuntimeFallback(bool fallbackState)
+    {
+        m_DisableTfLiteRuntimeFallback = fallbackState;
+    }
+    bool TfLiteRuntimeFallbackDisabled()
+    {
+        return m_DisableTfLiteRuntimeFallback;
+    }
+
+private:
+    /// Which backend to run Delegate on.
+    /// Examples of possible values are: CpuRef, CpuAcc, GpuAcc.
+    /// CpuRef as default.
+    std::vector<armnn::BackendId> m_Backends = { armnn::Compute::CpuRef };
+
+    /// Creation options for the ArmNN runtime
+    /// Contains options for global settings that are valid for the whole lifetime of ArmNN
+    /// i.e. BackendOptions, DynamicBackendPath, ExternalProfilingOptions and more
+    armnn::IRuntime::CreationOptions m_RuntimeOptions;
+
+    /// Options for the optimization step for the network
+    armnn::OptimizerOptions m_OptimizerOptions;
+
+    /// Internal profiling options. Written to INetworkProperties during model load.
+    /// Indicates whether internal profiling is enabled or not.
+    bool m_InternalProfilingEnabled = false;
+    /// Sets the level of detail output by the profiling. Options are DetailsWithEvents = 1 and DetailsOnly = 2
+    armnn::ProfilingDetailsMethod m_InternalProfilingDetail = armnn::ProfilingDetailsMethod::DetailsWithEvents;
+
+    /// Severity level for logging within ArmNN that will be used on creation of the delegate
+    armnn::Optional<armnn::LogSeverity> m_LoggingSeverity;
+
+    /// A callback function to debug layers performing custom computations on intermediate tensors.
+    /// If a function is not registered, and debug is enabled in OptimizerOptions,
+    /// debug will print information of the intermediate tensors.
+    armnn::Optional<armnn::DebugCallbackFunction> m_DebugCallbackFunc;
+
+    /// If not empty then the optimized model will be serialized to a file with this file name in "dot" format.
+    std::string m_SerializeToDot = "";
+
+    /// Option to disable TfLite Runtime fallback for unsupported operators.
+    bool m_DisableTfLiteRuntimeFallback = false;
+};
+
+} // namespace armnnDelegate
diff --git a/delegate/src/DelegateOptions.cpp b/delegate/common/src/DelegateOptions.cpp
similarity index 100%
rename from delegate/src/DelegateOptions.cpp
rename to delegate/common/src/DelegateOptions.cpp
diff --git a/delegate/src/DelegateUtils.hpp b/delegate/common/src/DelegateUtils.hpp
similarity index 100%
rename from delegate/src/DelegateUtils.hpp
rename to delegate/common/src/DelegateUtils.hpp
diff --git a/delegate/include/DelegateOptions.hpp b/delegate/include/DelegateOptions.hpp
index a3c1edf..1c3ffb6 100644
--- a/delegate/include/DelegateOptions.hpp
+++ b/delegate/include/DelegateOptions.hpp
@@ -3,302 +3,6 @@
 // SPDX-License-Identifier: MIT
 //
 
-#pragma once
-
-#include <armnn/ArmNN.hpp>
-#include <armnn/Optional.hpp>
-
-#include <string>
-#include <vector>
-
-namespace armnnDelegate
-{
-
-class DelegateOptions
-{
-public:
-    DelegateOptions(armnn::Compute computeDevice,
-                    const std::vector<armnn::BackendOptions>& backendOptions = {},
-                    armnn::Optional<armnn::LogSeverity> logSeverityLevel = armnn::EmptyOptional());
-
-    DelegateOptions(const std::vector<armnn::BackendId>& backends,
-                    const std::vector<armnn::BackendOptions>& backendOptions = {},
-                    armnn::Optional<armnn::LogSeverity> logSeverityLevel = armnn::EmptyOptional());
-
-    DelegateOptions(armnn::Compute computeDevice,
-                    const armnn::OptimizerOptions& optimizerOptions,
-                    const armnn::Optional<armnn::LogSeverity>& logSeverityLevel = armnn::EmptyOptional(),
-                    const armnn::Optional<armnn::DebugCallbackFunction>& func = armnn::EmptyOptional());
-
-    DelegateOptions(const std::vector<armnn::BackendId>& backends,
-                    const armnn::OptimizerOptions& optimizerOptions,
-                    const armnn::Optional<armnn::LogSeverity>& logSeverityLevel = armnn::EmptyOptional(),
-                    const armnn::Optional<armnn::DebugCallbackFunction>& func = armnn::EmptyOptional());
-
-
-    /**
-     * This constructor processes delegate options in form of command line arguments.
-     * It works in conjunction with the TfLite external delegate plugin.
-     *
-     * Available options:
-     *
-     *    Option key: "backends" \n
-     *    Possible values: ["EthosNPU"/"GpuAcc"/"CpuAcc"/"CpuRef"] \n
-     *    Descriptions: A comma separated list without whitespaces of
-     *                  backends which should be used for execution. Falls
-     *                  back to next backend in list if previous doesn't
-     *                  provide support for operation. e.g. "GpuAcc,CpuAcc"
-     *
-     *    Option key: "dynamic-backends-path" \n
-     *    Possible values: [filenameString] \n
-     *    Descriptions: This is the directory that will be searched for any dynamic backends.
-     *
-     *    Option key: "logging-severity" \n
-     *    Possible values: ["trace"/"debug"/"info"/"warning"/"error"/"fatal"] \n
-     *    Description: Sets the logging severity level for ArmNN. Logging
-     *                 is turned off if this option is not provided.
-     *
-     *    Option key: "gpu-tuning-level" \n
-     *    Possible values: ["0"/"1"/"2"/"3"] \n
-     *    Description: 0=UseOnly(default), 1=RapidTuning, 2=NormalTuning,
-     *                 3=ExhaustiveTuning. Requires option gpu-tuning-file.
-     *                 1,2 and 3 will create a tuning-file, 0 will apply the
-     *                 tunings from an existing file
-     *
-     *    Option key: "gpu-mlgo-tuning-file" \n
-     *    Possible values: [filenameString] \n
-     *    Description: File name for the MLGO tuning file
-     *
-     *    Option key: "gpu-tuning-file" \n
-     *    Possible values: [filenameString] \n
-     *    Description: File name for the tuning file.
-     *
-     *    Option key: "gpu-enable-profiling" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Enables GPU profiling
-     *
-     *    Option key: "gpu-kernel-profiling-enabled" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Enables GPU kernel profiling
-     *
-     *    Option key: "save-cached-network" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Enables saving of the cached network to a file,
-     *                 specified with the cached-network-filepath option
-     *
-     *    Option key: "cached-network-filepath" \n
-     *    Possible values: [filenameString] \n
-     *    Description: If non-empty, the given file will be used to load/save the cached network.
-     *                 If save-cached-network is given then the cached network will be saved to the given file.
-     *                 To save the cached network a file must already exist.
-     *                 If save-cached-network is not given then the cached network will be loaded from the given file.
-     *                 This will remove initial compilation time of kernels and speed up the first execution.
-     *
-     *    Option key: "enable-fast-math" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Enables fast_math options in backends that support it
-     *
-     *    Option key: "number-of-threads" \n
-     *    Possible values: ["1"-"64"] \n
-     *    Description: Assign the number of threads used by the CpuAcc backend.
-     *                 Default is set to 0 (Backend will decide number of threads to use).
-     *
-     *    Option key: "reduce-fp32-to-fp16" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Reduce Fp32 data to Fp16 for faster processing
-     *
-     *    Option key: "reduce-fp32-to-bf16" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: This option is currently ignored. Please enable Fast Math in the CpuAcc or GpuAcc backends.
-     *
-     *    Option key: "debug-data" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Add debug data for easier troubleshooting
-     *
-     *    Option key: "memory-import" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Enable memory import
-     *
-     *    Option key: "enable-internal-profiling" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Enable the internal profiling feature.
-     *
-     *    Option key: "internal-profiling-detail" \n
-     *    Possible values: [1/2] \n
-     *    Description: Set the detail on the internal profiling. 1 = DetailsWithEvents, 2 = DetailsOnly.
-     *
-     *    Option key: "enable-external-profiling" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Enable the external profiling feature.
-     *
-     *    Option key: "timeline-profiling" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Indicates whether external timeline profiling is enabled or not.
-     *
-     *    Option key: "outgoing-capture-file" \n
-     *    Possible values: [filenameString] \n
-     *    Description: Path to a file in which outgoing timeline profiling messages will be stored.
-     *
-     *    Option key: "incoming-capture-file" \n
-     *    Possible values: [filenameString] \n
-     *    Description: Path to a file in which incoming timeline profiling messages will be stored.
-     *
-     *    Option key: "file-only-external-profiling" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Enable profiling output to file only.
-     *
-     *    Option key: "counter-capture-period" \n
-     *    Possible values: Integer, Default is 10000u
-     *    Description: Value in microseconds of the profiling capture period. \n
-     *
-     *    Option key: "profiling-file-format" \n
-     *    Possible values: String of ["binary"] \n
-     *    Description: The format of the file used for outputting profiling data. Currently on "binary" is supported.
-     *
-     *    Option key: "serialize-to-dot" \n
-     *    Possible values: [filenameString] \n
-     *    Description: Serialize the optimized network to the file specified in "dot" format.
-     *
-     *    Option key: "infer-output-shape" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Infers output tensor shape from input tensor shape and validate where applicable.
-     *
-     *    Option key: "allow-expanded-dims" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: If true will disregard dimensions with a size of 1 when validating tensor shapes but tensor
-     *                 sizes must still match. \n
-     *                 This is an Experimental parameter that is incompatible with "infer-output-shape". \n
-     *                 This parameter may be removed in a later update.
-     *
-     *    Option key: "disable-tflite-runtime-fallback" \n
-     *    Possible values: ["true"/"false"] \n
-     *    Description: Disable TfLite Runtime fallback in the Arm NN TfLite delegate.
-     *                 An exception will be thrown if unsupported operators are encountered.
-     *                 This option is only for testing purposes.
-     *
-     * @param[in]     option_keys     Delegate option names
-     * @param[in]     options_values  Delegate option values
-     * @param[in]     num_options     Number of delegate options
-     * @param[in,out] report_error    Error callback function
-     *
-     */
-    DelegateOptions(char const* const* options_keys,
-                    char const* const* options_values,
-                    size_t num_options,
-                    void (*report_error)(const char*));
-
-    const std::vector<armnn::BackendId>& GetBackends() const { return m_Backends; }
-
-    void SetBackends(const std::vector<armnn::BackendId>& backends) { m_Backends = backends; }
-
-    void SetDynamicBackendsPath(const std::string& dynamicBackendsPath)
-    {
-        m_RuntimeOptions.m_DynamicBackendsPath = dynamicBackendsPath;
-    }
-    const std::string& GetDynamicBackendsPath() const
-    {
-        return m_RuntimeOptions.m_DynamicBackendsPath;
-    }
-
-    void SetGpuProfilingState(bool gpuProfilingState)
-    {
-        m_RuntimeOptions.m_EnableGpuProfiling = gpuProfilingState;
-    }
-    bool GetGpuProfilingState()
-    {
-        return m_RuntimeOptions.m_EnableGpuProfiling;
-    }
-
-    const std::vector<armnn::BackendOptions>& GetBackendOptions() const
-    {
-        return m_RuntimeOptions.m_BackendOptions;
-    }
-
-    /// Appends a backend option to the list of backend options
-    void AddBackendOption(const armnn::BackendOptions& option)
-    {
-        m_RuntimeOptions.m_BackendOptions.push_back(option);
-    }
-
-    /// Sets the severity level for logging within ArmNN that will be used on creation of the delegate
-    void SetLoggingSeverity(const armnn::LogSeverity& level) { m_LoggingSeverity = level; }
-    void SetLoggingSeverity(const std::string& level) { m_LoggingSeverity = armnn::StringToLogLevel(level); }
-
-    /// Returns the severity level for logging within ArmNN
-    armnn::LogSeverity GetLoggingSeverity() { return m_LoggingSeverity.value(); }
-
-    bool IsLoggingEnabled() { return m_LoggingSeverity.has_value(); }
-
-    const armnn::OptimizerOptions& GetOptimizerOptions() const { return m_OptimizerOptions; }
-
-    void SetOptimizerOptions(const armnn::OptimizerOptions& optimizerOptions) { m_OptimizerOptions = optimizerOptions; }
-
-    const armnn::Optional<armnn::DebugCallbackFunction>& GetDebugCallbackFunction() const
-        { return m_DebugCallbackFunc; }
-
-    void SetInternalProfilingParams(bool internalProfilingState,
-                                    const armnn::ProfilingDetailsMethod& internalProfilingDetail)
-        { m_InternalProfilingEnabled = internalProfilingState; m_InternalProfilingDetail = internalProfilingDetail; }
-
-    bool GetInternalProfilingState() const { return m_InternalProfilingEnabled; }
-    const armnn::ProfilingDetailsMethod& GetInternalProfilingDetail() const { return m_InternalProfilingDetail; }
-
-    void SetSerializeToDot(const std::string& serializeToDotFile) { m_SerializeToDot = serializeToDotFile; }
-    const std::string& GetSerializeToDot() const { return m_SerializeToDot; }
-
-    /// @Note: This might overwrite options that were set with other setter functions of DelegateOptions
-    void SetRuntimeOptions(const armnn::IRuntime::CreationOptions& runtimeOptions)
-    {
-        m_RuntimeOptions = runtimeOptions;
-    }
-
-    const armnn::IRuntime::CreationOptions& GetRuntimeOptions()
-    {
-        return m_RuntimeOptions;
-    }
-
-    void DisableTfLiteRuntimeFallback(bool fallbackState)
-    {
-        m_DisableTfLiteRuntimeFallback = fallbackState;
-    }
-    bool TfLiteRuntimeFallbackDisabled()
-    {
-        return m_DisableTfLiteRuntimeFallback;
-    }
-
-private:
-    /// Which backend to run Delegate on.
-    /// Examples of possible values are: CpuRef, CpuAcc, GpuAcc.
-    /// CpuRef as default.
-    std::vector<armnn::BackendId> m_Backends = { armnn::Compute::CpuRef };
-
-    /// Creation options for the ArmNN runtime
-    /// Contains options for global settings that are valid for the whole lifetime of ArmNN
-    /// i.e. BackendOptions, DynamicBackendPath, ExternalProfilingOptions and more
-    armnn::IRuntime::CreationOptions m_RuntimeOptions;
-
-    /// Options for the optimization step for the network
-    armnn::OptimizerOptions m_OptimizerOptions;
-
-    /// Internal profiling options. Written to INetworkProperties during model load.
-    /// Indicates whether internal profiling is enabled or not.
-    bool m_InternalProfilingEnabled = false;
-    /// Sets the level of detail output by the profiling. Options are DetailsWithEvents = 1 and DetailsOnly = 2
-    armnn::ProfilingDetailsMethod m_InternalProfilingDetail = armnn::ProfilingDetailsMethod::DetailsWithEvents;
-
-    /// Severity level for logging within ArmNN that will be used on creation of the delegate
-    armnn::Optional<armnn::LogSeverity> m_LoggingSeverity;
-
-    /// A callback function to debug layers performing custom computations on intermediate tensors.
-    /// If a function is not registered, and debug is enabled in OptimizerOptions,
-    /// debug will print information of the intermediate tensors.
-    armnn::Optional<armnn::DebugCallbackFunction> m_DebugCallbackFunc;
-
-    /// If not empty then the optimized model will be serialized to a file with this file name in "dot" format.
-    std::string m_SerializeToDot = "";
-
-    /// Option to disable TfLite Runtime fallback for unsupported operators.
-    bool m_DisableTfLiteRuntimeFallback = false;
-};
-
-} // namespace armnnDelegate
+#include <armnn/delegate/common/include/DelegateOptions.hpp>
+#pragma message("armnn/delegate/include/DelegateOptions.hpp has been deprecated, it is due for removal in"\
+                " 24.02 release. Please use public interface ")
\ No newline at end of file
diff --git a/delegate/include/Version.hpp b/delegate/include/Version.hpp
index 5550278..687471c 100644
--- a/delegate/include/Version.hpp
+++ b/delegate/include/Version.hpp
@@ -1,29 +1,8 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
-#pragma once
-
-namespace armnnDelegate
-{
-
-/// Macro utils
-#define STRINGIFY_VALUE(s) STRINGIFY_MACRO(s)
-#define STRINGIFY_MACRO(s) #s
-
-// ArmNN Delegate version components
-#define DELEGATE_MAJOR_VERSION 28
-#define DELEGATE_MINOR_VERSION 0
-#define DELEGATE_PATCH_VERSION 0
-
-/// DELEGATE_VERSION: "X.Y.Z"
-/// where:
-///   X = Major version number
-///   Y = Minor version number
-///   Z = Patch version number
-#define DELEGATE_VERSION STRINGIFY_VALUE(DELEGATE_MAJOR_VERSION) "." \
-                         STRINGIFY_VALUE(DELEGATE_MINOR_VERSION) "." \
-                         STRINGIFY_VALUE(DELEGATE_PATCH_VERSION)
-
-} //namespace armnnDelegate
\ No newline at end of file
+#include <armnn/delegate/classic/include/Version.hpp>
+#pragma message("armnn/delegate/include/Version.hpp has been deprecated, it is due for removal in"\
+                " 24.02 release. Please use public interface ")
\ No newline at end of file
diff --git a/delegate/include/armnn_delegate.hpp b/delegate/include/armnn_delegate.hpp
index 9cfc397..fd071eb 100644
--- a/delegate/include/armnn_delegate.hpp
+++ b/delegate/include/armnn_delegate.hpp
@@ -3,141 +3,6 @@
 // SPDX-License-Identifier: MIT
 //
 
-#pragma once
-
-#include "DelegateOptions.hpp"
-
-#include <tensorflow/lite/builtin_ops.h>
-#include <tensorflow/lite/c/builtin_op_data.h>
-#include <tensorflow/lite/c/common.h>
-#include <tensorflow/lite/minimal_logging.h>
-#include <tensorflow/lite/version.h>
-
-#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 3)
-#define ARMNN_POST_TFLITE_2_3
-#endif
-
-#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 4)
-#define ARMNN_POST_TFLITE_2_4
-#endif
-
-#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 5)
-#define ARMNN_POST_TFLITE_2_5
-#endif
-
-namespace armnnDelegate
-{
-
-struct DelegateData
-{
-    DelegateData(const std::vector<armnn::BackendId>& backends)
-        : m_Backends(backends)
-        , m_Network(nullptr, nullptr)
-    {}
-
-    const std::vector<armnn::BackendId>       m_Backends;
-    armnn::INetworkPtr                        m_Network;
-    std::vector<armnn::IOutputSlot*>          m_OutputSlotForNode;
-};
-
-// Forward decleration for functions initializing the ArmNN Delegate
-DelegateOptions TfLiteArmnnDelegateOptionsDefault();
-
-TfLiteDelegate* TfLiteArmnnDelegateCreate(armnnDelegate::DelegateOptions options);
-
-void TfLiteArmnnDelegateDelete(TfLiteDelegate* tfLiteDelegate);
-
-TfLiteStatus DoPrepare(TfLiteContext* context, TfLiteDelegate* delegate);
-
-/// ArmNN Delegate
-class Delegate
-{
-    friend class ArmnnSubgraph;
-public:
-    explicit Delegate(armnnDelegate::DelegateOptions options);
-
-    TfLiteIntArray* IdentifyOperatorsToDelegate(TfLiteContext* context);
-
-    TfLiteDelegate* GetDelegate();
-
-    /// Retrieve version in X.Y.Z form
-    static const std::string GetVersion();
-
-private:
-    /**
-     * Returns a pointer to the armnn::IRuntime* this will be shared by all armnn_delegates.
-     */
-    armnn::IRuntime* GetRuntime(const armnn::IRuntime::CreationOptions& options)
-    {
-        static armnn::IRuntimePtr instance = armnn::IRuntime::Create(options);
-        // Instantiated on first use.
-        return instance.get();
-    }
-
-    TfLiteDelegate m_Delegate = {
-        reinterpret_cast<void*>(this),  // .data_
-        DoPrepare,                      // .Prepare
-        nullptr,                        // .CopyFromBufferHandle
-        nullptr,                        // .CopyToBufferHandle
-        nullptr,                        // .FreeBufferHandle
-        kTfLiteDelegateFlagsNone,       // .flags
-        nullptr,                        // .opaque_delegate_builder
-    };
-
-    /// ArmNN Runtime pointer
-    armnn::IRuntime* m_Runtime;
-    /// ArmNN Delegate Options
-    armnnDelegate::DelegateOptions m_Options;
-};
-
-/// ArmnnSubgraph class where parsing the nodes to ArmNN format and creating the ArmNN Graph
-class ArmnnSubgraph
-{
-public:
-    static ArmnnSubgraph* Create(TfLiteContext* tfLiteContext,
-                                 const TfLiteDelegateParams* parameters,
-                                 const Delegate* delegate);
-
-    TfLiteStatus Prepare(TfLiteContext* tfLiteContext);
-
-    TfLiteStatus Invoke(TfLiteContext* tfLiteContext, TfLiteNode* tfLiteNode);
-
-    static TfLiteStatus VisitNode(DelegateData& delegateData,
-                                  TfLiteContext* tfLiteContext,
-                                  TfLiteRegistration* tfLiteRegistration,
-                                  TfLiteNode* tfLiteNode,
-                                  int nodeIndex);
-
-private:
-    ArmnnSubgraph(armnn::NetworkId networkId,
-                  armnn::IRuntime* runtime,
-                  std::vector<armnn::BindingPointInfo>& inputBindings,
-                  std::vector<armnn::BindingPointInfo>& outputBindings)
-        : m_NetworkId(networkId), m_Runtime(runtime), m_InputBindings(inputBindings), m_OutputBindings(outputBindings)
-    {}
-
-    static TfLiteStatus AddInputLayer(DelegateData& delegateData,
-                                      TfLiteContext* tfLiteContext,
-                                      const TfLiteIntArray* inputs,
-                                      std::vector<armnn::BindingPointInfo>& inputBindings);
-
-    static TfLiteStatus AddOutputLayer(DelegateData& delegateData,
-                                       TfLiteContext* tfLiteContext,
-                                       const TfLiteIntArray* outputs,
-                                       std::vector<armnn::BindingPointInfo>& outputBindings);
-
-
-    /// The Network Id
-    armnn::NetworkId m_NetworkId;
-    /// ArmNN Rumtime
-    armnn::IRuntime* m_Runtime;
-
-    // Binding information for inputs and outputs
-    std::vector<armnn::BindingPointInfo> m_InputBindings;
-    std::vector<armnn::BindingPointInfo> m_OutputBindings;
-
-};
-
-} // armnnDelegate namespace
-
-
+#include <armnn/delegate/classic/include/armnn_delegate.hpp>
+#pragma message("armnn/delegate/include/armnn_delegate.hpp has been deprecated, it is due for removal in"\
+                " 24.02 release. Please use public interface ")
\ No newline at end of file
diff --git a/delegate/opaque/CMakeLists.txt b/delegate/opaque/CMakeLists.txt
new file mode 100644
index 0000000..11b938b
--- /dev/null
+++ b/delegate/opaque/CMakeLists.txt
@@ -0,0 +1,64 @@
+#
+# Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
+# SPDX-License-Identifier: MIT
+#
+
+set(armnnOpaqueDelegateObject_sources)
+list(APPEND armnnOpaqueDelegateObject_sources
+        include/armnn_delegate.hpp
+        include/Version.hpp)
+
+add_library(armnnOpaqueDelegateObject OBJECT ${armnnOpaqueDelegateObject_sources})
+
+target_include_directories(armnnOpaqueDelegateObject
+        PUBLIC
+            $<INSTALL_INTERFACE:include>
+            $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+            $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/common/include>
+        PRIVATE
+            ${CMAKE_CURRENT_SOURCE_DIR}/src
+            ${PROJECT_SOURCE_DIR}/common/src)
+
+## Add Tflite dependency
+if(NOT TfLite_INCLUDE_DIR OR NOT TfLite_Schema_INCLUDE_PATH)
+    find_package(TfLiteSrc REQUIRED MODULE)
+endif()
+
+# Various tflite header files are not warning clean
+# We can't change compilation flags on header files directly, so we need to add them to an interface library first
+add_library(tflite_headers_opaque INTERFACE)
+target_include_directories(tflite_headers_opaque
+        INTERFACE
+            $<BUILD_INTERFACE:${TfLite_INCLUDE_DIR}>
+            $<INSTALL_INTERFACE:include/tflite_headers_opaque>)
+
+target_compile_options(tflite_headers_opaque 
+        INTERFACE 
+            -Wno-conversion
+            -Wno-sign-conversion
+            -Wno-unused-parameter
+            -Wno-unused-function)
+
+target_link_libraries(armnnOpaqueDelegateObject PUBLIC tflite_headers_opaque)
+
+## Add Flatbuffers dependency
+find_package(Flatbuffers REQUIRED MODULE)
+
+target_link_libraries(armnnOpaqueDelegateObject PRIVATE ${Flatbuffers_LIB})
+
+# include/flatbuffers/flatbuffers.h is not warning clean
+# We can't change compilation flags on header files directly, so we need to add them to an interface library first
+add_library(flatbuffer_headers_opaque INTERFACE)
+target_include_directories(flatbuffer_headers_opaque 
+        INTERFACE 
+            $<BUILD_INTERFACE:${Flatbuffers_INCLUDE_DIR}>
+            $<INSTALL_INTERFACE:include/flatbuffer_headers_opaque>)
+target_compile_options(flatbuffer_headers_opaque INTERFACE -Wno-sign-conversion)
+
+target_link_libraries(armnnOpaqueDelegateObject PUBLIC flatbuffer_headers_opaque)
+
+####################################################
+## Export targets
+install(TARGETS armnnOpaqueDelegateObject
+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
\ No newline at end of file
diff --git a/delegate/opaque/include/Version.hpp b/delegate/opaque/include/Version.hpp
new file mode 100644
index 0000000..35c5928
--- /dev/null
+++ b/delegate/opaque/include/Version.hpp
@@ -0,0 +1,29 @@
+//
+// Copyright © 2023 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+namespace armnnDelegate
+{
+
+/// Macro utils
+#define STRINGIFY_VALUE(s) STRINGIFY_MACRO(s)
+#define STRINGIFY_MACRO(s) #s
+
+// ArmNN Delegate version components
+#define OPAQUE_DELEGATE_MAJOR_VERSION 1
+#define OPAQUE_DELEGATE_MINOR_VERSION 0
+#define OPAQUE_DELEGATE_PATCH_VERSION 0
+
+/// DELEGATE_VERSION: "X.Y.Z"
+/// where:
+///   X = Major version number
+///   Y = Minor version number
+///   Z = Patch version number
+#define DELEGATE_VERSION STRINGIFY_VALUE(OPAQUE_DELEGATE_MAJOR_VERSION) "." \
+                         STRINGIFY_VALUE(OPAQUE_DELEGATE_MINOR_VERSION) "." \
+                         STRINGIFY_VALUE(OPAQUE_DELEGATE_PATCH_VERSION)
+
+} //namespace armnnDelegate
\ No newline at end of file
diff --git a/delegate/opaque/include/armnn_delegate.hpp b/delegate/opaque/include/armnn_delegate.hpp
new file mode 100644
index 0000000..8957dc8
--- /dev/null
+++ b/delegate/opaque/include/armnn_delegate.hpp
@@ -0,0 +1,141 @@
+//
+// Copyright © 2020-2023 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <DelegateOptions.hpp>
+
+#include <tensorflow/lite/builtin_ops.h>
+#include <tensorflow/lite/c/builtin_op_data.h>
+#include <tensorflow/lite/c/common.h>
+#include <tensorflow/lite/minimal_logging.h>
+#include <tensorflow/lite/version.h>
+
+#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 3)
+#define ARMNN_POST_TFLITE_2_3
+#endif
+
+#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 4)
+#define ARMNN_POST_TFLITE_2_4
+#endif
+
+#if TF_MAJOR_VERSION > 2 || (TF_MAJOR_VERSION == 2 && TF_MINOR_VERSION > 5)
+#define ARMNN_POST_TFLITE_2_5
+#endif
+
+namespace armnnDelegate
+{
+
+struct DelegateData
+{
+    DelegateData(const std::vector<armnn::BackendId>& backends)
+            : m_Backends(backends)
+            , m_Network(nullptr, nullptr)
+    {}
+
+    const std::vector<armnn::BackendId>       m_Backends;
+    armnn::INetworkPtr                        m_Network;
+    std::vector<armnn::IOutputSlot*>          m_OutputSlotForNode;
+};
+
+// Forward decleration for functions initializing the ArmNN Delegate
+DelegateOptions TfLiteArmnnDelegateOptionsDefault();
+
+TfLiteDelegate* TfLiteArmnnDelegateCreate(armnnDelegate::DelegateOptions options);
+
+void TfLiteArmnnDelegateDelete(TfLiteDelegate* tfLiteDelegate);
+
+TfLiteStatus DoPrepare(TfLiteContext* context, TfLiteDelegate* delegate);
+
+/// ArmNN Delegate
+class Delegate
+{
+    friend class ArmnnSubgraph;
+public:
+    explicit Delegate(armnnDelegate::DelegateOptions options);
+
+    TfLiteIntArray* IdentifyOperatorsToDelegate(TfLiteContext* context);
+
+    TfLiteDelegate* GetDelegate();
+
+    /// Retrieve version in X.Y.Z form
+    static const std::string GetVersion();
+
+private:
+    /**
+     * Returns a pointer to the armnn::IRuntime* this will be shared by all armnn_delegates.
+     */
+    armnn::IRuntime* GetRuntime(const armnn::IRuntime::CreationOptions& options)
+    {
+        static armnn::IRuntimePtr instance = armnn::IRuntime::Create(options);
+        // Instantiated on first use.
+        return instance.get();
+    }
+
+    TfLiteDelegate m_Delegate = {
+            reinterpret_cast<void*>(this),  // .data_
+            DoPrepare,                      // .Prepare
+            nullptr,                        // .CopyFromBufferHandle
+            nullptr,                        // .CopyToBufferHandle
+            nullptr,                        // .FreeBufferHandle
+            kTfLiteDelegateFlagsNone,       // .flags
+            nullptr,                        // .opaque_delegate_builder
+    };
+
+    /// ArmNN Runtime pointer
+    armnn::IRuntime* m_Runtime;
+    /// ArmNN Delegate Options
+    armnnDelegate::DelegateOptions m_Options;
+};
+
+/// ArmnnSubgraph class where parsing the nodes to ArmNN format and creating the ArmNN Graph
+class ArmnnSubgraph
+{
+public:
+    static ArmnnSubgraph* Create(TfLiteContext* tfLiteContext,
+                                 const TfLiteDelegateParams* parameters,
+                                 const Delegate* delegate);
+
+    TfLiteStatus Prepare(TfLiteContext* tfLiteContext);
+
+    TfLiteStatus Invoke(TfLiteContext* tfLiteContext, TfLiteNode* tfLiteNode);
+
+    static TfLiteStatus VisitNode(DelegateData& delegateData,
+                                  TfLiteContext* tfLiteContext,
+                                  TfLiteRegistration* tfLiteRegistration,
+                                  TfLiteNode* tfLiteNode,
+                                  int nodeIndex);
+
+private:
+    ArmnnSubgraph(armnn::NetworkId networkId,
+                  armnn::IRuntime* runtime,
+                  std::vector<armnn::BindingPointInfo>& inputBindings,
+                  std::vector<armnn::BindingPointInfo>& outputBindings)
+        : m_NetworkId(networkId), m_Runtime(runtime), m_InputBindings(inputBindings), m_OutputBindings(outputBindings)
+    {}
+
+    static TfLiteStatus AddInputLayer(DelegateData& delegateData,
+                                      TfLiteContext* tfLiteContext,
+                                      const TfLiteIntArray* inputs,
+                                      std::vector<armnn::BindingPointInfo>& inputBindings);
+
+    static TfLiteStatus AddOutputLayer(DelegateData& delegateData,
+                                       TfLiteContext* tfLiteContext,
+                                       const TfLiteIntArray* outputs,
+                                       std::vector<armnn::BindingPointInfo>& outputBindings);
+
+
+    /// The Network Id
+    armnn::NetworkId m_NetworkId;
+    /// ArmNN Rumtime
+    armnn::IRuntime* m_Runtime;
+
+    // Binding information for inputs and outputs
+    std::vector<armnn::BindingPointInfo> m_InputBindings;
+    std::vector<armnn::BindingPointInfo> m_OutputBindings;
+
+};
+
+} // armnnDelegate namespace
\ No newline at end of file
diff --git a/delegate/src/test/ActivationTest.cpp b/delegate/test/ActivationTest.cpp
similarity index 96%
rename from delegate/src/test/ActivationTest.cpp
rename to delegate/test/ActivationTest.cpp
index 69041d7..8f2f198 100644
--- a/delegate/src/test/ActivationTest.cpp
+++ b/delegate/test/ActivationTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -9,10 +9,7 @@
 
 #include <flatbuffers/flatbuffers.h>
 #include <tensorflow/lite/interpreter.h>
-#include <tensorflow/lite/kernels/register.h>
-#include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
-#include <tensorflow/lite/version.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/ActivationTestHelper.hpp b/delegate/test/ActivationTestHelper.hpp
similarity index 98%
rename from delegate/src/test/ActivationTestHelper.hpp
rename to delegate/test/ActivationTestHelper.hpp
index 6475083..110c684 100644
--- a/delegate/src/test/ActivationTestHelper.hpp
+++ b/delegate/test/ActivationTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ArgMinMaxTest.cpp b/delegate/test/ArgMinMaxTest.cpp
similarity index 97%
rename from delegate/src/test/ArgMinMaxTest.cpp
rename to delegate/test/ArgMinMaxTest.cpp
index bf60a77..1c05503 100644
--- a/delegate/src/test/ArgMinMaxTest.cpp
+++ b/delegate/test/ArgMinMaxTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/ArgMinMaxTestHelper.hpp b/delegate/test/ArgMinMaxTestHelper.hpp
similarity index 99%
rename from delegate/src/test/ArgMinMaxTestHelper.hpp
rename to delegate/test/ArgMinMaxTestHelper.hpp
index 3e607d6..91cf1f8 100644
--- a/delegate/src/test/ArgMinMaxTestHelper.hpp
+++ b/delegate/test/ArgMinMaxTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ArmnnDelegateTest.cpp b/delegate/test/ArmnnDelegateTest.cpp
similarity index 96%
rename from delegate/src/test/ArmnnDelegateTest.cpp
rename to delegate/test/ArmnnDelegateTest.cpp
index bc73dde..c23c702 100644
--- a/delegate/src/test/ArmnnDelegateTest.cpp
+++ b/delegate/test/ArmnnDelegateTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 
 #include <armnn_delegate.hpp>
 
-#include "tensorflow/lite/kernels/builtin_op_kernels.h"
+#include <tensorflow/lite/kernels/builtin_op_kernels.h>
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 
diff --git a/delegate/src/test/BatchMatMulTest.cpp b/delegate/test/BatchMatMulTest.cpp
similarity index 99%
rename from delegate/src/test/BatchMatMulTest.cpp
rename to delegate/test/BatchMatMulTest.cpp
index 06ad2c3..c6d7bc5 100644
--- a/delegate/src/test/BatchMatMulTest.cpp
+++ b/delegate/test/BatchMatMulTest.cpp
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/BatchMatMulTestHelper.hpp b/delegate/test/BatchMatMulTestHelper.hpp
similarity index 99%
rename from delegate/src/test/BatchMatMulTestHelper.hpp
rename to delegate/test/BatchMatMulTestHelper.hpp
index 7437064..32b0a4f 100644
--- a/delegate/src/test/BatchMatMulTestHelper.hpp
+++ b/delegate/test/BatchMatMulTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/BatchSpaceTest.cpp b/delegate/test/BatchSpaceTest.cpp
similarity index 98%
rename from delegate/src/test/BatchSpaceTest.cpp
rename to delegate/test/BatchSpaceTest.cpp
index 47eba45..f4c041d 100644
--- a/delegate/src/test/BatchSpaceTest.cpp
+++ b/delegate/test/BatchSpaceTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/BatchSpaceTestHelper.hpp b/delegate/test/BatchSpaceTestHelper.hpp
similarity index 99%
rename from delegate/src/test/BatchSpaceTestHelper.hpp
rename to delegate/test/BatchSpaceTestHelper.hpp
index d4fa983..597139d 100644
--- a/delegate/src/test/BatchSpaceTestHelper.hpp
+++ b/delegate/test/BatchSpaceTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/CastTest.cpp b/delegate/test/CastTest.cpp
similarity index 95%
rename from delegate/src/test/CastTest.cpp
rename to delegate/test/CastTest.cpp
index a637071..d3c3e29 100644
--- a/delegate/src/test/CastTest.cpp
+++ b/delegate/test/CastTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/CastTestHelper.hpp b/delegate/test/CastTestHelper.hpp
similarity index 98%
rename from delegate/src/test/CastTestHelper.hpp
rename to delegate/test/CastTestHelper.hpp
index 0448e65..be1967c 100644
--- a/delegate/src/test/CastTestHelper.hpp
+++ b/delegate/test/CastTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ComparisonTest.cpp b/delegate/test/ComparisonTest.cpp
similarity index 99%
rename from delegate/src/test/ComparisonTest.cpp
rename to delegate/test/ComparisonTest.cpp
index 95bfe21..b044c27 100644
--- a/delegate/src/test/ComparisonTest.cpp
+++ b/delegate/test/ComparisonTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ComparisonTestHelper.hpp b/delegate/test/ComparisonTestHelper.hpp
similarity index 99%
rename from delegate/src/test/ComparisonTestHelper.hpp
rename to delegate/test/ComparisonTestHelper.hpp
index db337f9..ef9f87a 100644
--- a/delegate/src/test/ComparisonTestHelper.hpp
+++ b/delegate/test/ComparisonTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ControlTest.cpp b/delegate/test/ControlTest.cpp
similarity index 99%
rename from delegate/src/test/ControlTest.cpp
rename to delegate/test/ControlTest.cpp
index 18bbc5a..ec7ff88 100644
--- a/delegate/src/test/ControlTest.cpp
+++ b/delegate/test/ControlTest.cpp
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/ControlTestHelper.hpp b/delegate/test/ControlTestHelper.hpp
similarity index 99%
rename from delegate/src/test/ControlTestHelper.hpp
rename to delegate/test/ControlTestHelper.hpp
index 3e427e6..f68cc07 100644
--- a/delegate/src/test/ControlTestHelper.hpp
+++ b/delegate/test/ControlTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/Convolution2dTest.cpp b/delegate/test/Convolution2dTest.cpp
similarity index 98%
rename from delegate/src/test/Convolution2dTest.cpp
rename to delegate/test/Convolution2dTest.cpp
index 1051079..3459e68 100644
--- a/delegate/src/test/Convolution2dTest.cpp
+++ b/delegate/test/Convolution2dTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020,2023 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/Convolution3dTest.cpp b/delegate/test/Convolution3dTest.cpp
similarity index 98%
rename from delegate/src/test/Convolution3dTest.cpp
rename to delegate/test/Convolution3dTest.cpp
index 06883f1..fe987be 100644
--- a/delegate/src/test/Convolution3dTest.cpp
+++ b/delegate/test/Convolution3dTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/ConvolutionTestHelper.hpp b/delegate/test/ConvolutionTestHelper.hpp
similarity index 99%
rename from delegate/src/test/ConvolutionTestHelper.hpp
rename to delegate/test/ConvolutionTestHelper.hpp
index 70c1da6..2e211b2 100644
--- a/delegate/src/test/ConvolutionTestHelper.hpp
+++ b/delegate/test/ConvolutionTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/DelegateOptionsTest.cpp b/delegate/test/DelegateOptionsTest.cpp
similarity index 99%
rename from delegate/src/test/DelegateOptionsTest.cpp
rename to delegate/test/DelegateOptionsTest.cpp
index 9832313..ecd8c73 100644
--- a/delegate/src/test/DelegateOptionsTest.cpp
+++ b/delegate/test/DelegateOptionsTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/test/DelegateOptionsTestHelper.hpp b/delegate/test/DelegateOptionsTestHelper.hpp
similarity index 99%
rename from delegate/src/test/DelegateOptionsTestHelper.hpp
rename to delegate/test/DelegateOptionsTestHelper.hpp
index 00a3d95..fb5403c 100644
--- a/delegate/src/test/DelegateOptionsTestHelper.hpp
+++ b/delegate/test/DelegateOptionsTestHelper.hpp
@@ -7,14 +7,13 @@
 
 #include <armnn_delegate.hpp>
 
-#include "ConvolutionTestHelper.hpp"
 #include "TestUtils.hpp"
 
 #include <flatbuffers/flatbuffers.h>
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/DepthwiseConvolution2dTest.cpp b/delegate/test/DepthwiseConvolution2dTest.cpp
similarity index 98%
rename from delegate/src/test/DepthwiseConvolution2dTest.cpp
rename to delegate/test/DepthwiseConvolution2dTest.cpp
index ca10f2c..9ee589c 100644
--- a/delegate/src/test/DepthwiseConvolution2dTest.cpp
+++ b/delegate/test/DepthwiseConvolution2dTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ElementwiseBinaryTest.cpp b/delegate/test/ElementwiseBinaryTest.cpp
similarity index 99%
rename from delegate/src/test/ElementwiseBinaryTest.cpp
rename to delegate/test/ElementwiseBinaryTest.cpp
index 8099efe..effed03 100644
--- a/delegate/src/test/ElementwiseBinaryTest.cpp
+++ b/delegate/test/ElementwiseBinaryTest.cpp
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ElementwiseBinaryTestHelper.hpp b/delegate/test/ElementwiseBinaryTestHelper.hpp
similarity index 99%
rename from delegate/src/test/ElementwiseBinaryTestHelper.hpp
rename to delegate/test/ElementwiseBinaryTestHelper.hpp
index 09a715e..47ee7c2 100644
--- a/delegate/src/test/ElementwiseBinaryTestHelper.hpp
+++ b/delegate/test/ElementwiseBinaryTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ElementwiseUnaryTest.cpp b/delegate/test/ElementwiseUnaryTest.cpp
similarity index 98%
rename from delegate/src/test/ElementwiseUnaryTest.cpp
rename to delegate/test/ElementwiseUnaryTest.cpp
index 4d48d6e..6331436 100644
--- a/delegate/src/test/ElementwiseUnaryTest.cpp
+++ b/delegate/test/ElementwiseUnaryTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ElementwiseUnaryTestHelper.hpp b/delegate/test/ElementwiseUnaryTestHelper.hpp
similarity index 99%
rename from delegate/src/test/ElementwiseUnaryTestHelper.hpp
rename to delegate/test/ElementwiseUnaryTestHelper.hpp
index 230d0fc..f6a534a 100644
--- a/delegate/src/test/ElementwiseUnaryTestHelper.hpp
+++ b/delegate/test/ElementwiseUnaryTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/FillTest.cpp b/delegate/test/FillTest.cpp
similarity index 97%
rename from delegate/src/test/FillTest.cpp
rename to delegate/test/FillTest.cpp
index 50f7f53..a12715c 100644
--- a/delegate/src/test/FillTest.cpp
+++ b/delegate/test/FillTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/FillTestHelper.hpp b/delegate/test/FillTestHelper.hpp
similarity index 98%
rename from delegate/src/test/FillTestHelper.hpp
rename to delegate/test/FillTestHelper.hpp
index 8479b72..c8aadb0 100644
--- a/delegate/src/test/FillTestHelper.hpp
+++ b/delegate/test/FillTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/FullyConnectedTest.cpp b/delegate/test/FullyConnectedTest.cpp
similarity index 100%
rename from delegate/src/test/FullyConnectedTest.cpp
rename to delegate/test/FullyConnectedTest.cpp
diff --git a/delegate/src/test/FullyConnectedTestHelper.hpp b/delegate/test/FullyConnectedTestHelper.hpp
similarity index 99%
rename from delegate/src/test/FullyConnectedTestHelper.hpp
rename to delegate/test/FullyConnectedTestHelper.hpp
index a3f009a..d6bbd93 100644
--- a/delegate/src/test/FullyConnectedTestHelper.hpp
+++ b/delegate/test/FullyConnectedTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/GatherNdTest.cpp b/delegate/test/GatherNdTest.cpp
similarity index 95%
rename from delegate/src/test/GatherNdTest.cpp
rename to delegate/test/GatherNdTest.cpp
index 2b4fd42..066248f 100644
--- a/delegate/src/test/GatherNdTest.cpp
+++ b/delegate/test/GatherNdTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/GatherNdTestHelper.hpp b/delegate/test/GatherNdTestHelper.hpp
similarity index 99%
rename from delegate/src/test/GatherNdTestHelper.hpp
rename to delegate/test/GatherNdTestHelper.hpp
index c2cf9ff..7b1595b 100644
--- a/delegate/src/test/GatherNdTestHelper.hpp
+++ b/delegate/test/GatherNdTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/GatherTest.cpp b/delegate/test/GatherTest.cpp
similarity index 95%
rename from delegate/src/test/GatherTest.cpp
rename to delegate/test/GatherTest.cpp
index 6dd0151..e4012b4 100644
--- a/delegate/src/test/GatherTest.cpp
+++ b/delegate/test/GatherTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/GatherTestHelper.hpp b/delegate/test/GatherTestHelper.hpp
similarity index 99%
rename from delegate/src/test/GatherTestHelper.hpp
rename to delegate/test/GatherTestHelper.hpp
index 4763e06..41e3b55 100644
--- a/delegate/src/test/GatherTestHelper.hpp
+++ b/delegate/test/GatherTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/LogicalTest.cpp b/delegate/test/LogicalTest.cpp
similarity index 97%
rename from delegate/src/test/LogicalTest.cpp
rename to delegate/test/LogicalTest.cpp
index 9fa2d3d..57bbd31 100644
--- a/delegate/src/test/LogicalTest.cpp
+++ b/delegate/test/LogicalTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -9,7 +9,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/LogicalTestHelper.hpp b/delegate/test/LogicalTestHelper.hpp
similarity index 99%
rename from delegate/src/test/LogicalTestHelper.hpp
rename to delegate/test/LogicalTestHelper.hpp
index 2a1ff2b..2f2ae7b 100644
--- a/delegate/src/test/LogicalTestHelper.hpp
+++ b/delegate/test/LogicalTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/LstmTest.cpp b/delegate/test/LstmTest.cpp
similarity index 98%
rename from delegate/src/test/LstmTest.cpp
rename to delegate/test/LstmTest.cpp
index 1fa9f0c..1034a01 100644
--- a/delegate/src/test/LstmTest.cpp
+++ b/delegate/test/LstmTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <doctest/doctest.h>
 
 namespace armnnDelegate
diff --git a/delegate/src/test/LstmTestHelper.hpp b/delegate/test/LstmTestHelper.hpp
similarity index 99%
rename from delegate/src/test/LstmTestHelper.hpp
rename to delegate/test/LstmTestHelper.hpp
index 082d5de..14776ca 100644
--- a/delegate/src/test/LstmTestHelper.hpp
+++ b/delegate/test/LstmTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 #include <tensorflow/lite/c/common.h>
 
diff --git a/delegate/src/test/MirrorPadTest.cpp b/delegate/test/MirrorPadTest.cpp
similarity index 98%
rename from delegate/src/test/MirrorPadTest.cpp
rename to delegate/test/MirrorPadTest.cpp
index ca66181..14c4755 100644
--- a/delegate/src/test/MirrorPadTest.cpp
+++ b/delegate/test/MirrorPadTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/NeonDelegateTests_NDK_Issue.cpp b/delegate/test/NeonDelegateTests_NDK_Issue.cpp
similarity index 94%
rename from delegate/src/test/NeonDelegateTests_NDK_Issue.cpp
rename to delegate/test/NeonDelegateTests_NDK_Issue.cpp
index a437a08..5dad598 100644
--- a/delegate/src/test/NeonDelegateTests_NDK_Issue.cpp
+++ b/delegate/test/NeonDelegateTests_NDK_Issue.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -9,7 +9,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/NormalizationTest.cpp b/delegate/test/NormalizationTest.cpp
similarity index 95%
rename from delegate/src/test/NormalizationTest.cpp
rename to delegate/test/NormalizationTest.cpp
index e33dcf0..b3a6f4b 100644
--- a/delegate/src/test/NormalizationTest.cpp
+++ b/delegate/test/NormalizationTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/test/NormalizationTestHelper.hpp b/delegate/test/NormalizationTestHelper.hpp
similarity index 99%
rename from delegate/src/test/NormalizationTestHelper.hpp
rename to delegate/test/NormalizationTestHelper.hpp
index 510b578..eafdf84 100644
--- a/delegate/src/test/NormalizationTestHelper.hpp
+++ b/delegate/test/NormalizationTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/PackTest.cpp b/delegate/test/PackTest.cpp
similarity index 98%
rename from delegate/src/test/PackTest.cpp
rename to delegate/test/PackTest.cpp
index aea903b..1e7eb69 100644
--- a/delegate/src/test/PackTest.cpp
+++ b/delegate/test/PackTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/PackTestHelper.hpp b/delegate/test/PackTestHelper.hpp
similarity index 99%
rename from delegate/src/test/PackTestHelper.hpp
rename to delegate/test/PackTestHelper.hpp
index a9e2ee1..0fd2f19 100644
--- a/delegate/src/test/PackTestHelper.hpp
+++ b/delegate/test/PackTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/PadTest.cpp b/delegate/test/PadTest.cpp
similarity index 99%
rename from delegate/src/test/PadTest.cpp
rename to delegate/test/PadTest.cpp
index 4721b68..be54ede 100644
--- a/delegate/src/test/PadTest.cpp
+++ b/delegate/test/PadTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/PadTestHelper.hpp b/delegate/test/PadTestHelper.hpp
similarity index 99%
rename from delegate/src/test/PadTestHelper.hpp
rename to delegate/test/PadTestHelper.hpp
index e96bc4b..d049c52 100644
--- a/delegate/src/test/PadTestHelper.hpp
+++ b/delegate/test/PadTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/Pooling2dTest.cpp b/delegate/test/Pooling2dTest.cpp
similarity index 99%
rename from delegate/src/test/Pooling2dTest.cpp
rename to delegate/test/Pooling2dTest.cpp
index fd52aee..ea87a29 100644
--- a/delegate/src/test/Pooling2dTest.cpp
+++ b/delegate/test/Pooling2dTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/Pooling2dTestHelper.hpp b/delegate/test/Pooling2dTestHelper.hpp
similarity index 99%
rename from delegate/src/test/Pooling2dTestHelper.hpp
rename to delegate/test/Pooling2dTestHelper.hpp
index c7457db..6de85b6 100644
--- a/delegate/src/test/Pooling2dTestHelper.hpp
+++ b/delegate/test/Pooling2dTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/Pooling3dTest.cpp b/delegate/test/Pooling3dTest.cpp
similarity index 98%
rename from delegate/src/test/Pooling3dTest.cpp
rename to delegate/test/Pooling3dTest.cpp
index c0a1862..85202e1 100644
--- a/delegate/src/test/Pooling3dTest.cpp
+++ b/delegate/test/Pooling3dTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/Pooling3dTestHelper.hpp b/delegate/test/Pooling3dTestHelper.hpp
similarity index 99%
rename from delegate/src/test/Pooling3dTestHelper.hpp
rename to delegate/test/Pooling3dTestHelper.hpp
index 47e00f7..dd90e4b 100644
--- a/delegate/src/test/Pooling3dTestHelper.hpp
+++ b/delegate/test/Pooling3dTestHelper.hpp
@@ -15,7 +15,7 @@
 #include <tensorflow/lite/kernels/custom_ops_register.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/PreluTest.cpp b/delegate/test/PreluTest.cpp
similarity index 96%
rename from delegate/src/test/PreluTest.cpp
rename to delegate/test/PreluTest.cpp
index d9e08d2..40bf1dd 100644
--- a/delegate/src/test/PreluTest.cpp
+++ b/delegate/test/PreluTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/PreluTestHelper.hpp b/delegate/test/PreluTestHelper.hpp
similarity index 99%
rename from delegate/src/test/PreluTestHelper.hpp
rename to delegate/test/PreluTestHelper.hpp
index b50c377..0721c13 100644
--- a/delegate/src/test/PreluTestHelper.hpp
+++ b/delegate/test/PreluTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/QuantizationTest.cpp b/delegate/test/QuantizationTest.cpp
similarity index 98%
rename from delegate/src/test/QuantizationTest.cpp
rename to delegate/test/QuantizationTest.cpp
index fbc2903..0210602 100644
--- a/delegate/src/test/QuantizationTest.cpp
+++ b/delegate/test/QuantizationTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/QuantizationTestHelper.hpp b/delegate/test/QuantizationTestHelper.hpp
similarity index 99%
rename from delegate/src/test/QuantizationTestHelper.hpp
rename to delegate/test/QuantizationTestHelper.hpp
index a8b1022..af898f3 100644
--- a/delegate/src/test/QuantizationTestHelper.hpp
+++ b/delegate/test/QuantizationTestHelper.hpp
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/RedefineTestHelper.hpp b/delegate/test/RedefineTestHelper.hpp
similarity index 99%
rename from delegate/src/test/RedefineTestHelper.hpp
rename to delegate/test/RedefineTestHelper.hpp
index 7f811d5..ce60db0 100644
--- a/delegate/src/test/RedefineTestHelper.hpp
+++ b/delegate/test/RedefineTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ReduceTest.cpp b/delegate/test/ReduceTest.cpp
similarity index 98%
rename from delegate/src/test/ReduceTest.cpp
rename to delegate/test/ReduceTest.cpp
index 9c11c87..5c031d9 100644
--- a/delegate/src/test/ReduceTest.cpp
+++ b/delegate/test/ReduceTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/ReduceTestHelper.hpp b/delegate/test/ReduceTestHelper.hpp
similarity index 99%
rename from delegate/src/test/ReduceTestHelper.hpp
rename to delegate/test/ReduceTestHelper.hpp
index f500736..fedf7ee 100644
--- a/delegate/src/test/ReduceTestHelper.hpp
+++ b/delegate/test/ReduceTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ReshapeTest.cpp b/delegate/test/ReshapeTest.cpp
similarity index 98%
rename from delegate/src/test/ReshapeTest.cpp
rename to delegate/test/ReshapeTest.cpp
index 11449e2..c3df8b2 100644
--- a/delegate/src/test/ReshapeTest.cpp
+++ b/delegate/test/ReshapeTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/ResizeTest.cpp b/delegate/test/ResizeTest.cpp
similarity index 96%
rename from delegate/src/test/ResizeTest.cpp
rename to delegate/test/ResizeTest.cpp
index 394ad6c..2011387 100644
--- a/delegate/src/test/ResizeTest.cpp
+++ b/delegate/test/ResizeTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ResizeTestHelper.hpp b/delegate/test/ResizeTestHelper.hpp
similarity index 99%
rename from delegate/src/test/ResizeTestHelper.hpp
rename to delegate/test/ResizeTestHelper.hpp
index 6937a4b..ab7de14 100644
--- a/delegate/src/test/ResizeTestHelper.hpp
+++ b/delegate/test/ResizeTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/RoundTest.cpp b/delegate/test/RoundTest.cpp
similarity index 92%
rename from delegate/src/test/RoundTest.cpp
rename to delegate/test/RoundTest.cpp
index 9d323f3..b4f0446 100644
--- a/delegate/src/test/RoundTest.cpp
+++ b/delegate/test/RoundTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/RoundTestHelper.hpp b/delegate/test/RoundTestHelper.hpp
similarity index 98%
rename from delegate/src/test/RoundTestHelper.hpp
rename to delegate/test/RoundTestHelper.hpp
index 6638607..dc14abf 100644
--- a/delegate/src/test/RoundTestHelper.hpp
+++ b/delegate/test/RoundTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/ShapeTest.cpp b/delegate/test/ShapeTest.cpp
similarity index 93%
rename from delegate/src/test/ShapeTest.cpp
rename to delegate/test/ShapeTest.cpp
index b49910a..309b071 100644
--- a/delegate/src/test/ShapeTest.cpp
+++ b/delegate/test/ShapeTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/test/ShapeTestHelper.hpp b/delegate/test/ShapeTestHelper.hpp
similarity index 99%
rename from delegate/src/test/ShapeTestHelper.hpp
rename to delegate/test/ShapeTestHelper.hpp
index 9b3d574..54e27ac 100644
--- a/delegate/src/test/ShapeTestHelper.hpp
+++ b/delegate/test/ShapeTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/SliceTest.cpp b/delegate/test/SliceTest.cpp
similarity index 95%
rename from delegate/src/test/SliceTest.cpp
rename to delegate/test/SliceTest.cpp
index 1d7133f..88a70de 100644
--- a/delegate/src/test/SliceTest.cpp
+++ b/delegate/test/SliceTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/test/SliceTestHelper.hpp b/delegate/test/SliceTestHelper.hpp
similarity index 99%
rename from delegate/src/test/SliceTestHelper.hpp
rename to delegate/test/SliceTestHelper.hpp
index 94c076b..c938fad 100644
--- a/delegate/src/test/SliceTestHelper.hpp
+++ b/delegate/test/SliceTestHelper.hpp
@@ -14,7 +14,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/SoftmaxTest.cpp b/delegate/test/SoftmaxTest.cpp
similarity index 95%
rename from delegate/src/test/SoftmaxTest.cpp
rename to delegate/test/SoftmaxTest.cpp
index 3339c09..27f7809 100644
--- a/delegate/src/test/SoftmaxTest.cpp
+++ b/delegate/test/SoftmaxTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/SoftmaxTestHelper.hpp b/delegate/test/SoftmaxTestHelper.hpp
similarity index 99%
rename from delegate/src/test/SoftmaxTestHelper.hpp
rename to delegate/test/SoftmaxTestHelper.hpp
index f3367f9..15177b7 100644
--- a/delegate/src/test/SoftmaxTestHelper.hpp
+++ b/delegate/test/SoftmaxTestHelper.hpp
@@ -12,7 +12,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/SpaceDepthTest.cpp b/delegate/test/SpaceDepthTest.cpp
similarity index 97%
rename from delegate/src/test/SpaceDepthTest.cpp
rename to delegate/test/SpaceDepthTest.cpp
index f80e749..8a8bbae 100644
--- a/delegate/src/test/SpaceDepthTest.cpp
+++ b/delegate/test/SpaceDepthTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/SpaceDepthTestHelper.hpp b/delegate/test/SpaceDepthTestHelper.hpp
similarity index 99%
rename from delegate/src/test/SpaceDepthTestHelper.hpp
rename to delegate/test/SpaceDepthTestHelper.hpp
index 737e199..6e8e39d 100644
--- a/delegate/src/test/SpaceDepthTestHelper.hpp
+++ b/delegate/test/SpaceDepthTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/SplitTest.cpp b/delegate/test/SplitTest.cpp
similarity index 98%
rename from delegate/src/test/SplitTest.cpp
rename to delegate/test/SplitTest.cpp
index 5940516..b54ce21 100644
--- a/delegate/src/test/SplitTest.cpp
+++ b/delegate/test/SplitTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/SplitTestHelper.hpp b/delegate/test/SplitTestHelper.hpp
similarity index 99%
rename from delegate/src/test/SplitTestHelper.hpp
rename to delegate/test/SplitTestHelper.hpp
index 3c5f50f..503fbc8 100644
--- a/delegate/src/test/SplitTestHelper.hpp
+++ b/delegate/test/SplitTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/StridedSliceTest.cpp b/delegate/test/StridedSliceTest.cpp
similarity index 98%
rename from delegate/src/test/StridedSliceTest.cpp
rename to delegate/test/StridedSliceTest.cpp
index 43aea8a..5b6d7ef 100644
--- a/delegate/src/test/StridedSliceTest.cpp
+++ b/delegate/test/StridedSliceTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/test/StridedSliceTestHelper.hpp b/delegate/test/StridedSliceTestHelper.hpp
similarity index 99%
rename from delegate/src/test/StridedSliceTestHelper.hpp
rename to delegate/test/StridedSliceTestHelper.hpp
index ef944d7..fde7e16 100644
--- a/delegate/src/test/StridedSliceTestHelper.hpp
+++ b/delegate/test/StridedSliceTestHelper.hpp
@@ -14,7 +14,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/TestUtils.cpp b/delegate/test/TestUtils.cpp
similarity index 98%
rename from delegate/src/test/TestUtils.cpp
rename to delegate/test/TestUtils.cpp
index 9dce446..2689c2e 100644
--- a/delegate/src/test/TestUtils.cpp
+++ b/delegate/test/TestUtils.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/test/TestUtils.hpp b/delegate/test/TestUtils.hpp
similarity index 98%
rename from delegate/src/test/TestUtils.hpp
rename to delegate/test/TestUtils.hpp
index 5d4a0ed..95dd257 100644
--- a/delegate/src/test/TestUtils.hpp
+++ b/delegate/test/TestUtils.hpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/test/TransposeTest.cpp b/delegate/test/TransposeTest.cpp
similarity index 91%
rename from delegate/src/test/TransposeTest.cpp
rename to delegate/test/TransposeTest.cpp
index 67751e3..c210128 100644
--- a/delegate/src/test/TransposeTest.cpp
+++ b/delegate/test/TransposeTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2020, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
diff --git a/delegate/src/test/TransposeTestHelper.hpp b/delegate/test/TransposeTestHelper.hpp
similarity index 99%
rename from delegate/src/test/TransposeTestHelper.hpp
rename to delegate/test/TransposeTestHelper.hpp
index 4479c48..99bb60b 100644
--- a/delegate/src/test/TransposeTestHelper.hpp
+++ b/delegate/test/TransposeTestHelper.hpp
@@ -11,7 +11,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/delegate/src/test/UnidirectionalSequenceLstmTest.cpp b/delegate/test/UnidirectionalSequenceLstmTest.cpp
similarity index 99%
rename from delegate/src/test/UnidirectionalSequenceLstmTest.cpp
rename to delegate/test/UnidirectionalSequenceLstmTest.cpp
index 4bee715..6d896d7 100644
--- a/delegate/src/test/UnidirectionalSequenceLstmTest.cpp
+++ b/delegate/test/UnidirectionalSequenceLstmTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021, 2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <doctest/doctest.h>
 
 namespace armnnDelegate
diff --git a/delegate/src/test/UnidirectionalSequenceLstmTestHelper.hpp b/delegate/test/UnidirectionalSequenceLstmTestHelper.hpp
similarity index 99%
rename from delegate/src/test/UnidirectionalSequenceLstmTestHelper.hpp
rename to delegate/test/UnidirectionalSequenceLstmTestHelper.hpp
index 10555ac..0ff04e7 100644
--- a/delegate/src/test/UnidirectionalSequenceLstmTestHelper.hpp
+++ b/delegate/test/UnidirectionalSequenceLstmTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 #include <tensorflow/lite/c/common.h>
 
diff --git a/delegate/src/test/UnpackTest.cpp b/delegate/test/UnpackTest.cpp
similarity index 97%
rename from delegate/src/test/UnpackTest.cpp
rename to delegate/test/UnpackTest.cpp
index c036f64..7c4b12a 100644
--- a/delegate/src/test/UnpackTest.cpp
+++ b/delegate/test/UnpackTest.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
+// Copyright © 2021,2023 Arm Ltd and Contributors. All rights reserved.
 // SPDX-License-Identifier: MIT
 //
 
@@ -8,7 +8,7 @@
 #include <armnn_delegate.hpp>
 
 #include <flatbuffers/flatbuffers.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 
 #include <doctest/doctest.h>
 
diff --git a/delegate/src/test/UnpackTestHelper.hpp b/delegate/test/UnpackTestHelper.hpp
similarity index 99%
rename from delegate/src/test/UnpackTestHelper.hpp
rename to delegate/test/UnpackTestHelper.hpp
index 0e12d72..a4c6bc0 100644
--- a/delegate/src/test/UnpackTestHelper.hpp
+++ b/delegate/test/UnpackTestHelper.hpp
@@ -13,7 +13,7 @@
 #include <tensorflow/lite/interpreter.h>
 #include <tensorflow/lite/kernels/register.h>
 #include <tensorflow/lite/model.h>
-#include <tensorflow/lite/schema/schema_generated.h>
+#include <schema_generated.h>
 #include <tensorflow/lite/version.h>
 
 #include <doctest/doctest.h>
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 4c89267..102d744 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -141,7 +141,7 @@
 if (BUILD_ARMNN_SERIALIZER
         OR BUILD_TF_LITE_PARSER
         OR BUILD_ONNX_PARSER
-        OR BUILD_ARMNN_TFLITE_DELEGATE)
+        OR BUILD_CLASSIC_DELEGATE)
     set(ExecuteNetwork_sources
         ExecuteNetwork/IExecutor.hpp
         ExecuteNetwork/ArmNNExecutor.cpp
@@ -154,7 +154,7 @@
         NetworkExecutionUtils/NetworkExecutionUtils.cpp
         NetworkExecutionUtils/NetworkExecutionUtils.hpp)
 
-    if(BUILD_ARMNN_TFLITE_DELEGATE)
+    if(BUILD_CLASSIC_DELEGATE)
         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-comment")
         set(ExecuteNetwork_sources
             ${ExecuteNetwork_sources}
@@ -186,7 +186,7 @@
         if (BUILD_ONNX_PARSER)
             target_link_libraries(ExecuteNetwork armnnOnnxParser)
         endif()
-        if (BUILD_ARMNN_TFLITE_DELEGATE)
+        if (BUILD_CLASSIC_DELEGATE)
             target_link_libraries(ExecuteNetwork ArmnnDelegate::ArmnnDelegate)
         endif()
         target_link_libraries(ExecuteNetwork armnn)
