diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5f82b94af2a98dfb6700fb098a6b2a84adf7b9a8..384d2d96f54921cd675a60acf2d167937449f0c0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv)
 
 # settings c++ standard for the framework
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # checking build type and setting up a variable
diff --git a/include/vkcv/Buffer.hpp b/include/vkcv/Buffer.hpp
index f5cd183d21c4ae9a5849ff09fc54af70667c12c6..992093061e254ce7c71d382a60f07ce08ca71cfd 100644
--- a/include/vkcv/Buffer.hpp
+++ b/include/vkcv/Buffer.hpp
@@ -16,7 +16,7 @@ namespace vkcv {
 		friend class Core;
 	public:
 		// explicit destruction of default constructor
-		Buffer<T>() = delete;
+		Buffer() = delete;
 		
 		[[nodiscard]]
 		const BufferHandle& getHandle() const {
@@ -39,7 +39,7 @@ namespace vkcv {
 		}
 
         [[nodiscard]]
-        const vk::Buffer getVulkanHandle() const {
+		vk::Buffer getVulkanHandle() const {
             return m_manager->getBuffer(m_handle);
         }
 		
@@ -67,7 +67,7 @@ namespace vkcv {
 		const size_t m_count;
 		const BufferMemoryType m_memoryType;
 		
-		Buffer<T>(BufferManager* manager, BufferHandle handle, BufferType type, size_t count, BufferMemoryType memoryType) :
+		Buffer(BufferManager* manager, BufferHandle handle, BufferType type, size_t count, BufferMemoryType memoryType) :
 				m_manager(manager),
 				m_handle(handle),
 				m_type(type),
diff --git a/include/vkcv/Event.hpp b/include/vkcv/Event.hpp
index 604e3a444dc3bffd2841cb69cd99746d59af523d..a17de57201f8e62bf258aad1e5a26e4766204d4b 100644
--- a/include/vkcv/Event.hpp
+++ b/include/vkcv/Event.hpp
@@ -3,7 +3,7 @@
 #include <functional>
 
 #ifndef __MINGW32__
-#include <mutex>
+#include <semaphore>
 #endif
 
 #include <vector>
@@ -34,7 +34,7 @@ namespace vkcv {
         uint32_t m_id_counter;
 	
 #ifndef __MINGW32__
-		std::mutex m_mutex;
+		std::binary_semaphore m_semaphore;
 #endif
 
     public:
@@ -84,7 +84,7 @@ namespace vkcv {
          */
         void lock() {
 #ifndef __MINGW32__
-			m_mutex.lock();
+			m_semaphore.acquire();
 #endif
         }
 	
@@ -93,15 +93,12 @@ namespace vkcv {
 		*/
         void unlock() {
 #ifndef __MINGW32__
-			m_mutex.unlock();
+			m_semaphore.release();
 #endif
         }
 
-        explicit event(bool locked = false) {
-        	if (locked) {
-        		lock();
-        	}
-        }
+        explicit event(bool locked = false) :
+		m_semaphore(locked? 1 : 0) {}
 
         event(const event &other) = delete;
 
diff --git a/modules/asset_loader/CMakeLists.txt b/modules/asset_loader/CMakeLists.txt
index 870c16279b1578224a966a4a123a465413333555..151ae350f4afa0ed60612dcc67d0fb61bedc8bb3 100644
--- a/modules/asset_loader/CMakeLists.txt
+++ b/modules/asset_loader/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_asset_loader)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_asset_loader_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/camera/CMakeLists.txt b/modules/camera/CMakeLists.txt
index 60cfca4cf97cef30d989bdab064e20547764041c..55d29aabe041d16d497cba5668d8468ab2053560 100644
--- a/modules/camera/CMakeLists.txt
+++ b/modules/camera/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_camera)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_camera_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/gui/CMakeLists.txt b/modules/gui/CMakeLists.txt
index 3b5202ccfe454f38745c53ac711cc05095ef88a1..87724ff9b8e1924d054789f63fb0c4460444a362 100644
--- a/modules/gui/CMakeLists.txt
+++ b/modules/gui/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_gui)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_gui_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/material/CMakeLists.txt b/modules/material/CMakeLists.txt
index ed3804531d36f9850bbb5d334e4fed9b43d92434..bbcb7c5a32324df8318ea5ed1cf1c228f50f068d 100644
--- a/modules/material/CMakeLists.txt
+++ b/modules/material/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_material)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_material_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/meshlet/CMakeLists.txt b/modules/meshlet/CMakeLists.txt
index d576466d3d125d3a19640088a9b5725ac7a46b97..05fdba47c7085eb320de5cb18447546749473b32 100644
--- a/modules/meshlet/CMakeLists.txt
+++ b/modules/meshlet/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_meshlet)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_meshlet_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/scene/CMakeLists.txt b/modules/scene/CMakeLists.txt
index 5edf9a29ad929b3c07b79d4f1ffcb7f1cf2fcd99..2d81fde86b57666121f80083e04a7d53f0561940 100644
--- a/modules/scene/CMakeLists.txt
+++ b/modules/scene/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_scene)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_scene_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/shader_compiler/CMakeLists.txt b/modules/shader_compiler/CMakeLists.txt
index 11c1e460575709dd9c9c16fdd02b6b923cc33045..a9181ccdb0a7ea1d117b58ce26b94390d9cdd305 100644
--- a/modules/shader_compiler/CMakeLists.txt
+++ b/modules/shader_compiler/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_shader_compiler)
 
 # setting c++ standard for the module
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_shader_compiler_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/testing/CMakeLists.txt b/modules/testing/CMakeLists.txt
index a22e547646fd4ef59860245d51365b98df59b578..26814f3a138d573e217b4d77966533343f85cf2a 100644
--- a/modules/testing/CMakeLists.txt
+++ b/modules/testing/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_testing)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_testing_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/modules/upscaling/CMakeLists.txt b/modules/upscaling/CMakeLists.txt
index 0767e5c4d2d60c001ac9d6792efcd623456284a8..dcab962919434a875e9384f649fbde7ccb9b0725 100644
--- a/modules/upscaling/CMakeLists.txt
+++ b/modules/upscaling/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(vkcv_upscaling)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 set(vkcv_upscaling_source ${PROJECT_SOURCE_DIR}/src)
diff --git a/projects/bindless_textures/CMakeLists.txt b/projects/bindless_textures/CMakeLists.txt
index 08cc636af2495afa3bb69cc7b652cc20eb4fa117..4fee446461da3de2d3d951c63e44425a7150a722 100644
--- a/projects/bindless_textures/CMakeLists.txt
+++ b/projects/bindless_textures/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(bindless_textures)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/bindless_textures/src/main.cpp b/projects/bindless_textures/src/main.cpp
index a2e9ff5eed65d44f329c8986b64d6d8588a92d30..555e3dc65016b0e383fc57ebc3618a35485e9519 100644
--- a/projects/bindless_textures/src/main.cpp
+++ b/projects/bindless_textures/src/main.cpp
@@ -223,7 +223,7 @@ int main(int argc, const char** argv) {
 
     vkcv::camera::CameraManager cameraManager(core.getWindow(windowHandle));
     uint32_t camIndex0 = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
-	uint32_t camIndex1 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
+	cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
 	
 	cameraManager.getCamera(camIndex0).setPosition(glm::vec3(0, 0, -3));
 
diff --git a/projects/first_mesh/CMakeLists.txt b/projects/first_mesh/CMakeLists.txt
index 6455e75d88eee276fb89b9f7a1b3462fcbc54da2..345324ac1d2c836b174c90d16c710491ee477f93 100644
--- a/projects/first_mesh/CMakeLists.txt
+++ b/projects/first_mesh/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(first_mesh)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/first_scene/CMakeLists.txt b/projects/first_scene/CMakeLists.txt
index 21d6857e3b0086e31cc941659c7e8b3c57440922..d55476f5fa62639aeaec7a3859f2f63f9c937aed 100644
--- a/projects/first_scene/CMakeLists.txt
+++ b/projects/first_scene/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(first_scene)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/first_triangle/CMakeLists.txt b/projects/first_triangle/CMakeLists.txt
index ba8c83c06fc804082e6a0a14c3c0414899ef3057..cf1fdb9022fc8332210a44946911fbfab3f5559a 100644
--- a/projects/first_triangle/CMakeLists.txt
+++ b/projects/first_triangle/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(first_triangle)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/indirect_dispatch/CMakeLists.txt b/projects/indirect_dispatch/CMakeLists.txt
index 7bc86cbc8470352f13bbfcc62f793b0a99d92884..ac8501f17b65212f87d00998dbf9bc4d5c044619 100644
--- a/projects/indirect_dispatch/CMakeLists.txt
+++ b/projects/indirect_dispatch/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(indirect_dispatch)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/indirect_draw/CMakeLists.txt b/projects/indirect_draw/CMakeLists.txt
index a1bc8073a4105b291f0b3177cb6d252f8ce9e9a4..83119e02b2d5419f7fdf5c04363218b57fc4217a 100644
--- a/projects/indirect_draw/CMakeLists.txt
+++ b/projects/indirect_draw/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(indirect_draw)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/mesh_shader/CMakeLists.txt b/projects/mesh_shader/CMakeLists.txt
index 1aa5d5ff3977a47dce75a38329216d550b1b9311..9e132e555136a7dfdd7d8fc15e06547d8059aff5 100644
--- a/projects/mesh_shader/CMakeLists.txt
+++ b/projects/mesh_shader/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(mesh_shader)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/particle_simulation/CMakeLists.txt b/projects/particle_simulation/CMakeLists.txt
index 2a665202c521ac10ae94905cb7580205e897eef9..41ce6ca2f4042285ad42d81e79f04d7b53c837e7 100644
--- a/projects/particle_simulation/CMakeLists.txt
+++ b/projects/particle_simulation/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(particle_simulation)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/path_tracer/CMakeLists.txt b/projects/path_tracer/CMakeLists.txt
index 2b8edc208c70a5e8e74c6c28221f783a68a3ec6c..b4ad74c3e31d17861644b6255fda718b783c28c9 100644
--- a/projects/path_tracer/CMakeLists.txt
+++ b/projects/path_tracer/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(path_tracer)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/rtx_ambient_occlusion/CMakeLists.txt b/projects/rtx_ambient_occlusion/CMakeLists.txt
index 414279c3fead126a7c7f581f0dc7c42c11158a9e..e7d9be987b6352eda6dc70051051b74063eac8a0 100644
--- a/projects/rtx_ambient_occlusion/CMakeLists.txt
+++ b/projects/rtx_ambient_occlusion/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(rtx_ambient_occlusion)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/rtx_ambient_occlusion/src/RTX/ASManager.cpp b/projects/rtx_ambient_occlusion/src/RTX/ASManager.cpp
index c09e669dc94b05235dbb2f6e5f0b40d274e1c182..186379a63a5844bf43bdf0e9d1ee7572d8077f52 100644
--- a/projects/rtx_ambient_occlusion/src/RTX/ASManager.cpp
+++ b/projects/rtx_ambient_occlusion/src/RTX/ASManager.cpp
@@ -114,7 +114,7 @@ namespace vkcv::rtx {
         vk::PhysicalDeviceMemoryProperties physicalDeviceMemoryProperties = m_core->getContext().getPhysicalDevice().getMemoryProperties();
 
         uint32_t memoryTypeIndex = -1;
-        for (int i = 0; i < physicalDeviceMemoryProperties.memoryTypeCount; i++) {
+        for (size_t i = 0; i < physicalDeviceMemoryProperties.memoryTypeCount; i++) {
             if ((memoryRequirements2.memoryRequirements.memoryTypeBits & (1 << i))
                     && (physicalDeviceMemoryProperties.memoryTypes[i].propertyFlags & buffer.memoryPropertyFlagBits) == buffer.memoryPropertyFlagBits) {
                 memoryTypeIndex = i;
diff --git a/projects/rtx_ambient_occlusion/src/RTX/ASManager.hpp b/projects/rtx_ambient_occlusion/src/RTX/ASManager.hpp
index 42ef7fc03c58a223b510e2a41d710f463dba0c6b..9a1374356cf4afdb04b0231f3c65e823ebe26dac 100644
--- a/projects/rtx_ambient_occlusion/src/RTX/ASManager.hpp
+++ b/projects/rtx_ambient_occlusion/src/RTX/ASManager.hpp
@@ -141,7 +141,7 @@ namespace vkcv::rtx {
             copyFromCPUToGPU(stagingBuffer, targetBuffer);
 
             return targetBuffer;
-        };
+        }
 
         /**
         * @brief A helper function used by @#ASManager::makeBufferFromData. Creates a fully initialized @#RTXBuffer object
diff --git a/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp b/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp
index 59f3da21409993bf6a460000a49c2ed67cb6d178..00533bc3668a54f245777c7bca4abb56afd3f056 100644
--- a/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp
+++ b/projects/rtx_ambient_occlusion/src/RTX/RTX.cpp
@@ -50,7 +50,7 @@ namespace vkcv::rtx {
 
         m_shaderGroupBaseAlignment =  rayTracingProperties.shaderGroupBaseAlignment;
         uint8_t* mapped = (uint8_t*) m_core->getContext().getDevice().mapMemory(m_shaderBindingTableBuffer.deviceMemory, 0, shaderBindingTableSize);
-        for (int i = 0; i < shaderCount; i++) {
+        for (size_t i = 0; i < shaderCount; i++) {
             memcpy(mapped, (uint8_t*)shaderHandleStorage + (i * rayTracingProperties.shaderGroupHandleSize), rayTracingProperties.shaderGroupHandleSize);
             mapped += m_shaderGroupBaseAlignment;
         }
@@ -97,7 +97,6 @@ namespace vkcv::rtx {
     {
         //TLAS-Descriptor-Write
         TopLevelAccelerationStructure tlas = m_asManager->getTLAS();
-        RTXBuffer tlasBuffer = tlas.tlasBuffer;
         vk::WriteDescriptorSetAccelerationStructureKHR AccelerationDescriptor = {};
         AccelerationDescriptor.accelerationStructureCount = 1;
         const TopLevelAccelerationStructure constTLAS = tlas;
diff --git a/projects/saf_r/CMakeLists.txt b/projects/saf_r/CMakeLists.txt
index 61ede8ae5a5cedac78ff5781aec20973854a3df7..158bf7a984ada2711bd3e9655e25f3f3cbce16d3 100644
--- a/projects/saf_r/CMakeLists.txt
+++ b/projects/saf_r/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(saf_r)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/saf_r/src/main.cpp b/projects/saf_r/src/main.cpp
index 3fef073a00f8263cc08ce17f033170d0f4031dc4..354ea7a6c97b37b88ff7b484b13d878f09ae4d0f 100644
--- a/projects/saf_r/src/main.cpp
+++ b/projects/saf_r/src/main.cpp
@@ -150,9 +150,6 @@ int main(int argc, const char** argv) {
                                           vkcv::BufferDescriptorWrite(1,sphereBuffer.getHandle())};
     core.writeDescriptorSet(computeDescriptorSet, computeWrites);
 
-
-	const auto& context = core.getContext();
-
 	auto safrIndexBuffer = core.createBuffer<uint16_t>(vkcv::BufferType::INDEX, 3, vkcv::BufferMemoryType::DEVICE_LOCAL);
 	uint16_t indices[3] = { 0, 1, 2 };
 	safrIndexBuffer.fill(&indices[0], sizeof(indices));
diff --git a/projects/sph/CMakeLists.txt b/projects/sph/CMakeLists.txt
index 592aa4409ae3e01f4054f430bab7c424d25219d0..8be89e0891d697bc22088e54dbeea5541d7f2065 100644
--- a/projects/sph/CMakeLists.txt
+++ b/projects/sph/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(sph)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/projects/sph/src/main.cpp b/projects/sph/src/main.cpp
index 255fb0e73f068ff9e5e8ce892897a1325631b6e1..616a84069369ba9cdee3d2d6221b11cb39eb7fa1 100644
--- a/projects/sph/src/main.cpp
+++ b/projects/sph/src/main.cpp
@@ -206,7 +206,6 @@ int main(int argc, const char **argv) {
     vkcv::DescriptorSetUsage descriptorUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle);
 
     auto pos = glm::vec2(0.f);
-    auto spawnPosition = glm::vec3(0.f);
 
     std::vector<vkcv::DrawcallInfo> drawcalls;
     drawcalls.push_back(vkcv::DrawcallInfo(renderMesh, {descriptorUsage}, numberParticles));
diff --git a/projects/voxelization/CMakeLists.txt b/projects/voxelization/CMakeLists.txt
index d2f533b0f9c7313ddcc6046fb29378c3a507d1fe..9597f9493b91ef48a5932fb22da7dce791dc450c 100644
--- a/projects/voxelization/CMakeLists.txt
+++ b/projects/voxelization/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
 project(voxelization)
 
 # setting c++ standard for the project
-set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # this should fix the execution path to load local files from the project
diff --git a/src/vkcv/DescriptorManager.cpp b/src/vkcv/DescriptorManager.cpp
index f273e958b12892d6f2c9cc92a4ca07de3f6b29c7..8343fde6650bd811d85fb44f867c8d832a9380d6 100644
--- a/src/vkcv/DescriptorManager.cpp
+++ b/src/vkcv/DescriptorManager.cpp
@@ -118,9 +118,7 @@ namespace vkcv
         uint32_t sumVariableDescriptorCounts = 0;
         for (auto bindingElem : setLayout.descriptorBindings)
         {
-            DescriptorBinding binding = bindingElem.second;
-            uint32_t bindingID = bindingElem.first;
-
+            auto binding = bindingElem.second;
             if(binding.variableCount)
                 sumVariableDescriptorCounts += binding.descriptorCount;
         }
diff --git a/src/vkcv/Window.cpp b/src/vkcv/Window.cpp
index 2b49ea32b21dc5d2497f6844c17baf8c3454640e..f6f9aa6950b767c31bdd1608782c5b7b7f7071ed 100644
--- a/src/vkcv/Window.cpp
+++ b/src/vkcv/Window.cpp
@@ -58,7 +58,7 @@ namespace vkcv {
 	static std::vector<GLFWwindow*> s_Windows;
 
 	void Window_onGamepadEvent(int gamepadIndex) {
-			Window::getFocusedWindow().e_gamepad(gamepadIndex);
+		Window::getFocusedWindow().e_gamepad(gamepadIndex);
 	}
 	
 	static GLFWwindow* createGLFWWindow(const char *windowTitle, int width, int height, bool resizable) {
@@ -160,7 +160,6 @@ namespace vkcv {
 	}
 
     void Window::pollEvents() {
-
     	for (auto glfwWindow : s_Windows) {
 			auto window = static_cast<Window *>(glfwGetWindowUserPointer(glfwWindow));
 			
@@ -175,11 +174,6 @@ namespace vkcv {
 
 		glfwPollEvents();
 
-		// fixes subtle mouse stutter, which is made visible by motion blur
-		// FIXME: proper solution
-		// probably caused by main thread locking events before glfw callbacks are executed
-		std::this_thread::sleep_for(std::chrono::milliseconds(1));
-
 		for (int gamepadIndex = GLFW_JOYSTICK_1; gamepadIndex <= GLFW_JOYSTICK_LAST; gamepadIndex++) {
 			if (glfwJoystickPresent(gamepadIndex)) {
 				Window_onGamepadEvent(gamepadIndex);