IVGCVSW-7555 Restructure Delegate

* New folders created:
  * common is for common code where TfLite API is not used
  * classic is for existing delegate implementations
  * opaque is for new opaque delegate implementation,
  * tests is for shared between existing Delegate and Opaque Delegate which have test utils to work which delegate to use.
* Existing delegate is built to libarmnnDelegate.so and opaque delegate is built as libarmnnOpaqueDelegate.so
* Opaque structure is introduced but no API is added yet.
* CmakeList.txt and delegate/CMakeList.txt have been modified and 2 new CmakeList.txt added
* Rename BUILD_ARMNN_TFLITE_DELEGATE as BUILD_CLASSIC_DELEGATE
* Rename BUILD_ARMNN_TFLITE_OPAQUE_DELEGATE as BUILD_OPAQUE_DELEGATE

Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Change-Id: Ib682b9ad0ac8d8acdc4ec6d9099bb0008a9fe8ed
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)