diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index ecc6c71..d6862be 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -825,7 +825,7 @@
     /* create image view */
     view.image = obj();
     m_textureView.init(*m_device, view);
-    m_descriptorInfo.imageView = m_textureView.obj();
+    m_descriptorInfo.imageView = m_textureView.handle();
 
     data = stagingImage.map();
 
@@ -906,7 +906,7 @@
     view_info.range  = allocationSize;
     m_bufferView.init(*m_device, view_info);
 
-    this->m_descriptorInfo.bufferView = m_bufferView.obj();
+    this->m_descriptorInfo.bufferView = m_bufferView.handle();
 }
 
 void VkConstantBufferObj::Bind(VkCmdBuffer cmdBuffer, VkDeviceSize offset, uint32_t binding)
@@ -1022,7 +1022,7 @@
     view_info.range  = allocationSize;
     m_bufferView.init(*m_device, view_info);
 
-    this->m_descriptorInfo.bufferView = m_bufferView.obj();
+    this->m_descriptorInfo.bufferView = m_bufferView.handle();
 }
 
 void VkIndexBufferObj::Bind(VkCmdBuffer cmdBuffer, VkDeviceSize offset)
@@ -1539,6 +1539,6 @@
     view_info.image = obj();
     m_attachmentView.init(*m_device, view_info);
 
-    m_attachmentBindInfo.view = m_attachmentView.obj();
+    m_attachmentBindInfo.view = m_attachmentView.handle();
     m_attachmentBindInfo.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
 }
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 5105495..9a82f3e 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -305,7 +305,7 @@
             };
             m_targetView.init(*m_device, createView);
         }
-        return m_targetView.obj();
+        return m_targetView.handle();
     }
 
     void SetLayout(VkCommandBufferObj *cmd_buf, VkImageAspect aspect, VkImageLayout image_layout);
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index 32a8e44..f24fdde 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -690,10 +690,11 @@
     EXPECT(vkQueueBindSparseBufferMemory(queue, obj(), 1, &bindInfo) == VK_SUCCESS);
 }
 
+NON_DISPATCHABLE_HANDLE_DTOR(BufferView, vkDestroyObject, VK_OBJECT_TYPE_BUFFER_VIEW)
+
 void BufferView::init(const Device &dev, const VkBufferViewCreateInfo &info)
 {
-    DERIVED_OBJECT_TYPE_INIT(vkCreateBufferView, dev, VK_OBJECT_TYPE_BUFFER_VIEW, &info);
-    alloc_memory();
+    NON_DISPATCHABLE_HANDLE_INIT(vkCreateBufferView, dev, &info);
 }
 
 void Image::init(const Device &dev, const VkImageCreateInfo &info)
@@ -751,16 +752,18 @@
                                     VK_IMAGE_USAGE_DEPTH_STENCIL_BIT)));
 }
 
+NON_DISPATCHABLE_HANDLE_DTOR(ImageView, vkDestroyObject, VK_OBJECT_TYPE_IMAGE_VIEW)
+
 void ImageView::init(const Device &dev, const VkImageViewCreateInfo &info)
 {
-    DERIVED_OBJECT_TYPE_INIT(vkCreateImageView, dev, VK_OBJECT_TYPE_IMAGE_VIEW, &info);
-    alloc_memory();
+    NON_DISPATCHABLE_HANDLE_INIT(vkCreateImageView, dev, &info);
 }
 
+NON_DISPATCHABLE_HANDLE_DTOR(AttachmentView, vkDestroyObject, VK_OBJECT_TYPE_ATTACHMENT_VIEW)
+
 void AttachmentView::init(const Device &dev, const VkAttachmentViewCreateInfo &info)
 {
-    DERIVED_OBJECT_TYPE_INIT(vkCreateAttachmentView, dev, VK_OBJECT_TYPE_ATTACHMENT_VIEW, &info);
-    alloc_memory();
+    NON_DISPATCHABLE_HANDLE_INIT(vkCreateAttachmentView, dev, &info);
 }
 
 void ShaderModule::init(const Device &dev, const VkShaderModuleCreateInfo &info)
diff --git a/tests/vktestbinding.h b/tests/vktestbinding.h
index 25268fb..bcdaa65 100644
--- a/tests/vktestbinding.h
+++ b/tests/vktestbinding.h
@@ -448,8 +448,10 @@
     VkBufferCreateInfo create_info_;
 };
 
-class BufferView : public DerivedObject<VkBufferView, Object, VK_OBJECT_TYPE_BUFFER_VIEW> {
+class BufferView : public internal::NonDispHandle<VkBufferView> {
 public:
+    ~BufferView();
+
     // vkCreateBufferView()
     void init(const Device &dev, const VkBufferViewCreateInfo &info);
 };
@@ -517,14 +519,19 @@
     VkFlags format_features_;
 };
 
-class ImageView : public DerivedObject<VkImageView, Object, VK_OBJECT_TYPE_IMAGE_VIEW> {
+class ImageView : public internal::NonDispHandle<VkImageView> {
 public:
+    ~ImageView();
+
     // vkCreateImageView()
     void init(const Device &dev, const VkImageViewCreateInfo &info);
 };
 
-class AttachmentView : public DerivedObject<VkAttachmentView, Object, VK_OBJECT_TYPE_ATTACHMENT_VIEW> {
+//class AttachmentView : public DerivedObject<VkAttachmentView, Object, VK_OBJECT_TYPE_ATTACHMENT_VIEW> {
+class AttachmentView : public internal::NonDispHandle<VkAttachmentView> {
 public:
+    ~AttachmentView();
+
     // vkCreateAttachmentView()
     void init(const Device &dev, const VkAttachmentViewCreateInfo &info);
 };
