diff --git a/src/dynamic/sample/SampleDynamicBackend.cpp b/src/dynamic/sample/SampleDynamicBackend.cpp
index 2ef8faa..7a3475b 100644
--- a/src/dynamic/sample/SampleDynamicBackend.cpp
+++ b/src/dynamic/sample/SampleDynamicBackend.cpp
@@ -44,9 +44,15 @@
     }
 
     IBackendInternal::IWorkloadFactoryPtr CreateWorkloadFactory(
-        class TensorHandleFactoryRegistry& /*tensorHandleFactoryRegistry*/) const override
+        class TensorHandleFactoryRegistry& tensorHandleFactoryRegistry) const override
     {
-        return IWorkloadFactoryPtr{};
+        auto memoryManager = std::make_shared<SampleMemoryManager>();
+
+        tensorHandleFactoryRegistry.RegisterMemoryManager(memoryManager);
+        tensorHandleFactoryRegistry.RegisterFactory(std::make_unique<SampleDynamicTensorHandleFactory>(memoryManager));
+
+        return std::make_unique<SampleDynamicWorkloadFactory>(
+            PolymorphicPointerDowncast<SampleMemoryManager>(memoryManager));
     }
 
     IBackendInternal::IBackendProfilingContextPtr CreateBackendProfilingContext(
@@ -80,7 +86,7 @@
         return optimizationViews;
     }
 
-    void RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) const override
+    void RegisterTensorHandleFactories(class TensorHandleFactoryRegistry& registry) override
     {
         auto memoryManager = std::make_shared<SampleMemoryManager>();
 
diff --git a/src/dynamic/sample/SampleTensorHandle.cpp b/src/dynamic/sample/SampleTensorHandle.cpp
index 48f8cf4..fb4eddc 100644
--- a/src/dynamic/sample/SampleTensorHandle.cpp
+++ b/src/dynamic/sample/SampleTensorHandle.cpp
@@ -21,14 +21,13 @@
 }
 
 SampleTensorHandle::SampleTensorHandle(const TensorInfo& tensorInfo,
-                                       std::shared_ptr<SampleMemoryManager> &memoryManager,
                                        MemorySourceFlags importFlags)
     : m_TensorInfo(tensorInfo),
-      m_MemoryManager(memoryManager),
+      m_MemoryManager(nullptr),
       m_Pool(nullptr),
       m_UnmanagedMemory(nullptr),
       m_ImportFlags(importFlags),
-      m_Imported(false)
+      m_Imported(true)
 {
 
 }
@@ -134,4 +133,18 @@
     return false;
 }
 
+void SampleTensorHandle::CopyOutTo(void* dest) const
+{
+    const void *src = GetPointer();
+    ARMNN_ASSERT(src);
+    memcpy(dest, src, m_TensorInfo.GetNumBytes());
+}
+
+void SampleTensorHandle::CopyInFrom(const void* src)
+{
+    void *dest = GetPointer();
+    ARMNN_ASSERT(dest);
+    memcpy(dest, src, m_TensorInfo.GetNumBytes());
+}
+
 }
diff --git a/src/dynamic/sample/SampleTensorHandle.hpp b/src/dynamic/sample/SampleTensorHandle.hpp
index c08edc6..2a44ed6 100644
--- a/src/dynamic/sample/SampleTensorHandle.hpp
+++ b/src/dynamic/sample/SampleTensorHandle.hpp
@@ -17,9 +17,7 @@
 public:
     SampleTensorHandle(const TensorInfo& tensorInfo, std::shared_ptr<SampleMemoryManager> &memoryManager);
 
-    SampleTensorHandle(const TensorInfo& tensorInfo,
-                       std::shared_ptr<SampleMemoryManager> &memoryManager,
-                       MemorySourceFlags importFlags);
+    SampleTensorHandle(const TensorInfo& tensorInfo, MemorySourceFlags importFlags);
 
     ~SampleTensorHandle();
 
@@ -61,6 +59,10 @@
     virtual bool Import(void* memory, MemorySource source) override;
 
 private:
+    // Only used for testing
+    void CopyOutTo(void*) const override;
+    void CopyInFrom(const void*) override;
+
     void* GetPointer() const;
 
     SampleTensorHandle(const SampleTensorHandle& other) = delete; // noncopyable
