diff --git a/modules/rtx/include/vkcv/rtx/ASManager.hpp b/modules/rtx/include/vkcv/rtx/ASManager.hpp
index 99d2fc5eaba27c5777105de3e82f579a7c4770e2..49dcb92433be38ac6d8a0196012ef39ca81a2171 100644
--- a/modules/rtx/include/vkcv/rtx/ASManager.hpp
+++ b/modules/rtx/include/vkcv/rtx/ASManager.hpp
@@ -6,7 +6,6 @@ namespace vkcv::rtx {
 
     class ASManager {
     private:
-        vkcv::BufferHandle m_buffer;
         Core* m_core;
 
     public:
@@ -21,6 +20,6 @@ namespace vkcv::rtx {
          * @param[in] vertexBuffer The vertex buffer.
          * @param[in] indexBuffer The index buffer.
          */
-        void buildBLAS(Buffer<uint8_t> &vertexBuffer, Buffer<uint8_t> &indexBuffer);
+        void buildBLAS(Buffer<uint16_t> &vertexBuffer, Buffer<uint16_t> &indexBuffer);
     };
 }
\ No newline at end of file
diff --git a/modules/rtx/include/vkcv/rtx/RTX.hpp b/modules/rtx/include/vkcv/rtx/RTX.hpp
index d33217b82c282d7a9b247b1e94d0bd684acd43d2..13469b5bdc0c482aaf5af0c2079a8b80b0ffc460 100644
--- a/modules/rtx/include/vkcv/rtx/RTX.hpp
+++ b/modules/rtx/include/vkcv/rtx/RTX.hpp
@@ -42,7 +42,7 @@ namespace vkcv::rtx {
          * @param vertexBuffer
          * @param indexBuffer
          */
-        void init(Core* core, Buffer<uint8_t> &vertexBuffer, Buffer<uint8_t> &indexBuffer);
+        void init(Core* core, Buffer<uint16_t> &vertexBuffer, Buffer<uint16_t> &indexBuffer);
     };
 
 }
diff --git a/modules/rtx/src/vkcv/rtx/ASManager.cpp b/modules/rtx/src/vkcv/rtx/ASManager.cpp
index 048bac145aae5ec0b6358efe8268013511753732..d732c1dadc071b69a58a8211103e052751b64a49 100644
--- a/modules/rtx/src/vkcv/rtx/ASManager.cpp
+++ b/modules/rtx/src/vkcv/rtx/ASManager.cpp
@@ -11,17 +11,17 @@ namespace vkcv::rtx {
 
     }
 
-    void ASManager::buildBLAS(Buffer<uint8_t> &vertexBuffer, Buffer<uint8_t> &indexBuffer) {
-        // INFO: Es scheint, dass wir einen DispatchLoaderDynamic brauchen, damit Funktionen wie .getBufferAddressKHR keine Linker Error schmeissen.
-        // Die Frage ist, wieso? und wie koennen wir das problem evtl. anders behandeln? Mit dem DispatchLoaderDynamic gehen zwar die Fehler weg,
-        // aber die Anwendung crasht...
+    void ASManager::buildBLAS(Buffer<uint16_t> &vertexBuffer, Buffer<uint16_t> &indexBuffer) {
+        // INFO: It seems that we need a dynamic dispatch loader because Vulkan is an ASs ...
+        vk::DispatchLoaderDynamic dld( (PFN_vkGetInstanceProcAddr) m_core->getContext().getInstance().getProcAddr("vkGetInstanceProcAddr") );
+        dld.init(m_core->getContext().getInstance());
 
         vk::BufferDeviceAddressInfo vertexBufferDeviceAddressInfo(vertexBuffer.getVulkanHandle());
-        vk::DeviceAddress vertexBufferAddress = m_core->getContext().getDevice().getBufferAddressKHR(vertexBufferDeviceAddressInfo);
+        vk::DeviceAddress vertexBufferAddress = m_core->getContext().getDevice().getBufferAddressKHR(vertexBufferDeviceAddressInfo, dld);
         vk::DeviceOrHostAddressConstKHR vertexDeviceOrHostAddressConst(vertexBufferAddress);
 
         vk::BufferDeviceAddressInfo indexBufferDeviceAddressInfo(indexBuffer.getVulkanHandle());
-        vk::DeviceAddress indexBufferAddress = m_core->getContext().getDevice().getBufferAddressKHR(indexBufferDeviceAddressInfo);
+        vk::DeviceAddress indexBufferAddress = m_core->getContext().getDevice().getBufferAddressKHR(indexBufferDeviceAddressInfo, dld);
         vk::DeviceOrHostAddressConstKHR indexDeviceOrHostAddressConst(indexBufferAddress);
 
         // Specify triangle mesh data // TODO: Check if valid entries ...
@@ -30,7 +30,7 @@ namespace vkcv::rtx {
                 vertexDeviceOrHostAddressConst, // vertex buffer address (vk::DeviceOrHostAddressConstKHR)
                 3 * sizeof(float), // vertex stride (vk::DeviceSize)
                 uint32_t(vertexBuffer.getCount() - 1), // maxVertex (uint32_t)
-                vk::IndexType::eUint8EXT, // indexType (vk::IndexType)
+                vk::IndexType::eUint16, // indexType (vk::IndexType) --> INFO: UINT16 oder UINT32!
                 indexDeviceOrHostAddressConst, // indexData (vk::DeviceOrHostAddressConstKHR)
                 {} // transformData (vk::DeviceOrHostAddressConstKHR)
         );
@@ -65,11 +65,12 @@ namespace vkcv::rtx {
                 vk::AccelerationStructureBuildTypeKHR::eDevice, // build on device instead of host
                 &asBuildInfo, // pointer to build info
                 &asRangeInfo.primitiveCount, // array of number of primitives per geometry
-                &asBuildSizesInfo  // output pointer to store sizes
+                &asBuildSizesInfo,  // output pointer to store sizes
+                dld
                 );
 
         // Allocate the AS TODO: which type do we need for the buffer??
-        Buffer<vk::AccelerationStructureKHR> asBuffer = m_core->createBuffer<vk::AccelerationStructureKHR>(BufferType::RT_ACCELERATION, asBuildSizesInfo.accelerationStructureSize, BufferMemoryType::DEVICE_LOCAL);
+        Buffer<vk::AccelerationStructureKHR> asBuffer = m_core->createBuffer<vk::AccelerationStructureKHR>(BufferType::RT_ACCELERATION_VERTEX, asBuildSizesInfo.accelerationStructureSize, BufferMemoryType::DEVICE_LOCAL);
         //        core->createBuffer<>()
 
         // Create an empty AS object
@@ -86,12 +87,15 @@ namespace vkcv::rtx {
         vk::Result res = m_core->getContext().getDevice().createAccelerationStructureKHR(
                 &asCreateInfo, // AS create info
                 nullptr, // allocator callbacks
-                &blas // the AS
+                &blas, // the AS
+                dld
         );
         if(res != vk::Result::eSuccess) {
             vkcv_log(vkcv::LogLevel::ERROR, "The Bottom Level Acceleration Structure could not be builded!");
         }
         asBuildInfo.setDstAccelerationStructure(blas);
+
+        // TODO: destroy accelerationstructure when closing app
     }
 
 }
\ No newline at end of file
diff --git a/modules/rtx/src/vkcv/rtx/RTX.cpp b/modules/rtx/src/vkcv/rtx/RTX.cpp
index ba79add844efab3adf028ebaf7d8b49a0dae12d2..b4e07e7132f9851407933f851aafab33cd323d75 100644
--- a/modules/rtx/src/vkcv/rtx/RTX.cpp
+++ b/modules/rtx/src/vkcv/rtx/RTX.cpp
@@ -22,7 +22,7 @@ namespace vkcv::rtx {
         };
     }
 
-    void RTXModule::init(Core* core, Buffer<uint8_t> &vertexBuffer, Buffer<uint8_t> &indexBuffer) {
+    void RTXModule::init(Core* core, Buffer<uint16_t> &vertexBuffer, Buffer<uint16_t> &indexBuffer) {
 
         // build acceleration structures BLAS then TLAS --> see ASManager
         ASManager asManager(core);
diff --git a/projects/rtx/src/main.cpp b/projects/rtx/src/main.cpp
index 350db2343f5bd557bd320e16baf2daaa6e886847..b9bb30acb84bcd790a684bb3e12d628c93eb8b9d 100644
--- a/projects/rtx/src/main.cpp
+++ b/projects/rtx/src/main.cpp
@@ -71,24 +71,34 @@ int main(int argc, const char** argv) {
 	}
 
 	assert(!mesh.vertexGroups.empty());
-	auto vertexBuffer = core.createBuffer<uint8_t>(
-	        vkcv::BufferType::VERTEX,
+	auto vertexBuffer = core.createBuffer<uint16_t>(
+	        vkcv::BufferType::RT_ACCELERATION_VERTEX,
 	        mesh.vertexGroups[0].vertexBuffer.data.size(),
 	        vkcv::BufferMemoryType::DEVICE_LOCAL
 	        );
 
-	vk::Buffer vertexBufferHandle = vertexBuffer.getVulkanHandle();
+	std::vector<uint16_t> vertices = {};
 
+	for (int i=0; i<mesh.vertexGroups[0].vertexBuffer.data.size(); i++) {
+	    vertices.emplace_back((uint16_t)mesh.vertexGroups[0].vertexBuffer.data[i]);
+	}
 
-	vertexBuffer.fill(mesh.vertexGroups[0].vertexBuffer.data);
+	vertexBuffer.fill(vertices);
 
-	auto indexBuffer = core.createBuffer<uint8_t>(
-	        vkcv::BufferType::INDEX,
+	auto indexBuffer = core.createBuffer<uint16_t>(
+	        vkcv::BufferType::RT_ACCELERATION_INDEX,
 	        mesh.vertexGroups[0].indexBuffer.data.size(),
 	        vkcv::BufferMemoryType::DEVICE_LOCAL
 	        );
 
-	indexBuffer.fill(mesh.vertexGroups[0].indexBuffer.data);
+	std::vector<uint16_t> indices = {};
+
+	for (int i=0; i<mesh.vertexGroups[0].vertexBuffer.data.size(); i++) {
+	    indices.emplace_back((uint16_t)mesh.vertexGroups[0].indexBuffer.data[i]);
+	}
+
+	indexBuffer.fill(indices);
+
 
 	// init RTXModule
     rtxModule.init(&core, vertexBuffer, indexBuffer);